From be60e3058af332ba30f118d233ba36f1887f66a2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 14 Apr 2009 08:04:28 -0700 Subject: [PATCH] mds: flush log in do_cap_update if there are unissued but wanted caps --- src/mds/Locker.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 11dda5de31bf8..a191f00be9ea1 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -1816,11 +1816,13 @@ bool Locker::_do_cap_update(CInode *in, Capability *cap, mds->mdlog->submit_entry(le); mds->mdlog->wait_for_sync(new C_Locker_FileUpdate_finish(this, in, mut, change_max, client, cap, ack)); - // only flush immediately if the lock is unstable + // only flush immediately if the lock is unstable, or unissued caps are wanted, or max_size is + // changing if (((dirty & (CEPH_CAP_FILE_EXCL|CEPH_CAP_FILE_WR)) && !in->filelock.is_stable()) || ((dirty & CEPH_CAP_AUTH_EXCL) && !in->authlock.is_stable()) || ((dirty & CEPH_CAP_XATTR_EXCL) && !in->xattrlock.is_stable()) || - change_max) + change_max || + (cap->wanted() & ~cap->pending())) mds->mdlog->flush(); return true; -- 2.39.5