From 1d72d1888a290fc303fd09bab63bbfa3946d1629 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 16 Mar 2010 14:28:05 -0700 Subject: [PATCH] mds: fix SimpleLock::try_clear_more() We were dropping gather state on the floor, which resulted in general confusion and errors like this 10.03.16 14:17:17.622280 mds0.locker handle_simple_lock lock(a=lockack dn 1000000019c/NEWS1_1B.PRN snap head) on (dn xlock x=1 by 0x307c050) [dentry #1/clients/client2/~dmtmp/WORDPRO/NEWS1_1B.PRN [2,head] auth{1=1} (dn xlock x=1 by 0x307c050) v=90 inode=0x7f2fe90a7980 | nref=5 0x7f2fe0349b80] mds/Locker.cc: In function 'void Locker::handle_simple_lock(SimpleLock*, MLock*)': mds/Locker.cc:2424: FAILED assert(lock->get_state() == 7 || lock->get_state() == 12) 1: (Locker::handle_simple_lock(SimpleLock*, MLock*)+0x374) [0x8607bc] 2: (Locker::handle_lock(MLock*)+0x18b) [0x861b91] 3: (Locker::dispatch(Message*)+0x41) [0x86470b] 4: (MDS::_dispatch(Message*)+0x1b42) [0x72ce68] 5: (MDS::ms_dispatch(Message*)+0x2f) [0x72e1e9] 6: (Messenger::ms_deliver_dispatch(Message*)+0x55) [0x72086b] 7: (SimpleMessenger::dispatch_entry()+0x4f4) [0x70d50e] 8: (SimpleMessenger::DispatchThread::entry()+0x29) [0x7095bd] 9: (Thread::_entry_func(void*)+0x20) [0x71a9e1] 10: /lib/libpthread.so.0 [0x7f2fe8d6573a] 11: (clone()+0x6d) [0x7f2fe7f906dd] NOTE: a copy of the executable, or `objdump -rdS ` is needed to interpret this. --- src/mds/SimpleLock.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mds/SimpleLock.h b/src/mds/SimpleLock.h index 383e648c7a0d5..3561f1857f728 100644 --- a/src/mds/SimpleLock.h +++ b/src/mds/SimpleLock.h @@ -158,6 +158,7 @@ private: bool empty() { return + gather_set.empty() && num_wrlock == 0 && num_xlock == 0 && xlock_by == NULL && -- 2.39.5