Changeset 44 for trunk/samba/source/tdb/common/traverse.c
- Timestamp:
- Jun 29, 2007, 1:34:14 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/samba/source/tdb/common/traverse.c
r1 r44 264 264 tdb->travlocks.lock_rw = F_RDLCK; 265 265 266 /* Grab first record: locks chain and returned record. */ 266 267 if (tdb_next_lock(tdb, &tdb->travlocks, &rec) <= 0) 267 268 return tdb_null; … … 269 270 key.dsize = rec.key_len; 270 271 key.dptr =tdb_alloc_read(tdb,tdb->travlocks.off+sizeof(rec),key.dsize); 271 if (tdb_unlock(tdb, BUCKET(tdb->travlocks.hash), F_WRLCK) != 0) 272 273 /* Unlock the hash chain of the record we just read. */ 274 if (tdb_unlock(tdb, tdb->travlocks.hash, tdb->travlocks.lock_rw) != 0) 272 275 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_firstkey: error occurred while tdb_unlocking!\n")); 273 276 return key; … … 284 287 /* Is locked key the old key? If so, traverse will be reliable. */ 285 288 if (tdb->travlocks.off) { 286 if (tdb_lock(tdb,tdb->travlocks.hash, F_WRLCK))289 if (tdb_lock(tdb,tdb->travlocks.hash,tdb->travlocks.lock_rw)) 287 290 return tdb_null; 288 291 if (tdb_rec_read(tdb, tdb->travlocks.off, &rec) == -1 … … 295 298 return tdb_null; 296 299 } 297 if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0) {300 if (tdb_unlock(tdb, tdb->travlocks.hash, tdb->travlocks.lock_rw) != 0) { 298 301 SAFE_FREE(k); 299 302 return tdb_null; … … 307 310 if (!tdb->travlocks.off) { 308 311 /* No previous element: do normal find, and lock record */ 309 tdb->travlocks.off = tdb_find_lock_hash(tdb, oldkey, tdb->hash_fn(&oldkey), F_WRLCK, &rec);312 tdb->travlocks.off = tdb_find_lock_hash(tdb, oldkey, tdb->hash_fn(&oldkey), tdb->travlocks.lock_rw, &rec); 310 313 if (!tdb->travlocks.off) 311 314 return tdb_null; … … 325 328 key.dsize); 326 329 /* Unlock the chain of this new record */ 327 if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0)330 if (tdb_unlock(tdb, tdb->travlocks.hash, tdb->travlocks.lock_rw) != 0) 328 331 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_nextkey: WARNING tdb_unlock failed!\n")); 329 332 } 330 333 /* Unlock the chain of old record */ 331 if (tdb_unlock(tdb, BUCKET(oldhash), F_WRLCK) != 0)334 if (tdb_unlock(tdb, BUCKET(oldhash), tdb->travlocks.lock_rw) != 0) 332 335 TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_nextkey: WARNING tdb_unlock failed!\n")); 333 336 return key; 334 337 } 335
Note:
See TracChangeset
for help on using the changeset viewer.