mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 22:34:18 +01:00
refs #61, fix locking bug, add write list lock before reintegrating PAIRs into the cachetable on a open
This commit is contained in:
parent
4cba362f5c
commit
77903f0860
1 changed files with 2 additions and 0 deletions
|
@ -428,11 +428,13 @@ int toku_cachetable_openfd_with_filenum (CACHEFILE *cfptr, CACHETABLE ct, int fd
|
||||||
bjm_init(&existing_cf->bjm);
|
bjm_init(&existing_cf->bjm);
|
||||||
|
|
||||||
// now we need to move all the PAIRs in it back into the cachetable
|
// 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) {
|
for (PAIR curr_pair = existing_cf->cf_head; curr_pair; curr_pair = curr_pair->cf_next) {
|
||||||
pair_lock(curr_pair);
|
pair_lock(curr_pair);
|
||||||
ct->list.add_to_cachetable_only(curr_pair);
|
ct->list.add_to_cachetable_only(curr_pair);
|
||||||
pair_unlock(curr_pair);
|
pair_unlock(curr_pair);
|
||||||
}
|
}
|
||||||
|
ct->list.write_list_unlock();
|
||||||
// move the cachefile back to the list of active cachefiles
|
// move the cachefile back to the list of active cachefiles
|
||||||
ct->cf_list.remove_stale_cf_unlocked(existing_cf);
|
ct->cf_list.remove_stale_cf_unlocked(existing_cf);
|
||||||
ct->cf_list.add_cf_unlocked(existing_cf);
|
ct->cf_list.add_cf_unlocked(existing_cf);
|
||||||
|
|
Loading…
Add table
Reference in a new issue