refs #61, fix locking bug, add write list lock before reintegrating PAIRs into the cachetable on a open

This commit is contained in:
Zardosht Kasheff 2013-10-04 11:34:49 -04:00
parent 4cba362f5c
commit 77903f0860

View file

@ -428,11 +428,13 @@ int toku_cachetable_openfd_with_filenum (CACHEFILE *cfptr, CACHETABLE ct, int fd
bjm_init(&existing_cf->bjm);
// now we need to move all the PAIRs in it back into the cachetable
ct->list.write_list_lock();
for (PAIR curr_pair = existing_cf->cf_head; curr_pair; curr_pair = curr_pair->cf_next) {
pair_lock(curr_pair);
ct->list.add_to_cachetable_only(curr_pair);
pair_unlock(curr_pair);
}
ct->list.write_list_unlock();
// move the cachefile back to the list of active cachefiles
ct->cf_list.remove_stale_cf_unlocked(existing_cf);
ct->cf_list.add_cf_unlocked(existing_cf);