summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2012-11-19 10:43:39 +0800
committerSage Weil <sage@inktank.com>2012-12-01 12:52:22 -0800
commit8f674899a855f79cfe24f3f820c6cae9820e406a (patch)
treec164dd2d93d074e2793f28cf34e20db96b6ff3ac
parentff170ecfe2fd8572a98abdeaf4c15a7350556d37 (diff)
downloadceph-8f674899a855f79cfe24f3f820c6cae9820e406a.tar.gz
mds: call eval() after caps are exported
For an inode just changed authority, if the new auth MDS want to change a lock in the inode from 'sync' to 'lock' state before caps are exported. The lock in replica can be in 'sync->lock' state because client caps prevent it from transitting to 'lock' state. So we should call eval() after clearing client caps. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
-rw-r--r--src/mds/Migrator.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mds/Migrator.cc b/src/mds/Migrator.cc
index b66b54cbc83..a804eab7731 100644
--- a/src/mds/Migrator.cc
+++ b/src/mds/Migrator.cc
@@ -1051,6 +1051,7 @@ void Migrator::finish_export_inode_caps(CInode *in)
mds->send_message_client_counted(m, it->first);
}
in->clear_client_caps_after_export();
+ mds->locker->eval(in, CEPH_CAP_LOCKS);
}
void Migrator::finish_export_inode(CInode *in, utime_t now, list<Context*>& finished)