From 6dd9f2c156c4500ed763d86231cc97561ba9537e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 26 Nov 2008 09:58:32 -0800 Subject: [PATCH] mds: initialize CInode::loner_cap when twiddling filelock states after reconnect loner_cap must either be defined or not defined to match the lock states. --- src/mds/MDCache.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 7ceec8ea470c6..46050e48dc724 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -3500,8 +3500,10 @@ void MDCache::process_reconnected_caps() if (in->is_auth()) { // wr? if (issued & (CEPH_CAP_WR|CEPH_CAP_WRBUFFER)) { + in->loner_cap = -1; if (issued & (CEPH_CAP_RDCACHE|CEPH_CAP_WRBUFFER)) { in->filelock.set_state(LOCK_LONER); + in->choose_loner(); } else { in->filelock.set_state(LOCK_MIXED); } @@ -3509,6 +3511,7 @@ void MDCache::process_reconnected_caps() } else { // note that client should perform stale/reap cleanup during reconnect. assert((issued & (CEPH_CAP_WR|CEPH_CAP_WRBUFFER)) == 0); // ???? + in->loner_cap = -1; if (in->filelock.is_xlocked()) in->filelock.set_state(LOCK_LOCK); else -- 2.39.5