]> pd.if.org Git - btree/commitdiff
fix latch protocol in bt_atomicload
authorunknown <karl@E04.petzent.com>
Mon, 29 Sep 2014 17:24:01 +0000 (10:24 -0700)
committerunknown <karl@E04.petzent.com>
Mon, 29 Sep 2014 17:24:01 +0000 (10:24 -0700)
threadskv8.c

index 02ac19847c5cbf3eb3cf6991a281049d73b728f1..44411881f67455309eede48bb81ef3ae46e81d77 100644 (file)
@@ -2325,17 +2325,19 @@ uint slot;
          bt_unlockpage(bt, BtLockRead, set->latch);
          bt_lockpage(bt, BtLockAtomic, set->latch);
          bt_lockpage(bt, BtLockRead, set->latch);
-         bt_unlockpage(bt, BtLockAccess, set->latch);
 
          if( !set->page->kill )
-          if( slot = bt_findslot (set->page, key, len) )
+          if( slot = bt_findslot (set->page, key, len) ) {
+               bt_unlockpage(bt, BtLockAccess, set->latch);
                return slot;
+          }
 
          bt_unlockpage(bt, BtLockAtomic, set->latch);
          }
 
        //  slide right into next page
 
+       bt_unlockpage(bt, BtLockAccess, set->latch);
        page_no = bt_getid(set->page->right);
        prevlatch = set->latch;
   }