From bed844f15e31ac83fbf647d3f2e556c02820b5e7 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 19 Dec 2008 14:53:43 -0800 Subject: [PATCH] mds: misc filelock fixes --- src/mds/FileLock.h | 3 +++ src/mds/Locker.cc | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mds/FileLock.h b/src/mds/FileLock.h index 25462ce29c62f..2891746c7c90b 100644 --- a/src/mds/FileLock.h +++ b/src/mds/FileLock.h @@ -241,6 +241,9 @@ class FileLock : public ScatterLock { case LOCK_SYNC_MIXED: case LOCK_MIXED: return CEPH_CAP_PIN | CEPH_CAP_RD | CEPH_CAP_LAZYIO; + case LOCK_MIXED_SYNC: + case LOCK_MIXED_SYNC2: + return CEPH_CAP_PIN | CEPH_CAP_RDCACHE | CEPH_CAP_LAZYIO; } assert(0); return 0; diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 4d5c1ded48475..a264afa2723b1 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -3119,7 +3119,7 @@ void Locker::file_wrlock_finish(FileLock *lock, Mutation *mut) if (!lock->is_wrlocked()) { if (!lock->is_stable()) file_eval_gather(lock); - else + else if (lock->get_parent()->is_auth()) file_eval(lock); } } @@ -3696,7 +3696,8 @@ void Locker::file_loner(FileLock *lock) } int gather = 0; - if (in->is_replicated()) { + if (in->is_replicated() && + lock->get_state() != LOCK_LOCK_LONER) { // if we were lock, replicas are already lock. send_lock_message(lock, LOCK_AC_LOCK); lock->init_gather(); gather++; -- 2.39.5