diff options
author | Yan, Zheng <zheng.z.yan@intel.com> | 2012-11-19 10:43:39 +0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-12-01 12:52:22 -0800 |
commit | 8f674899a855f79cfe24f3f820c6cae9820e406a (patch) | |
tree | c164dd2d93d074e2793f28cf34e20db96b6ff3ac | |
parent | ff170ecfe2fd8572a98abdeaf4c15a7350556d37 (diff) | |
download | ceph-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.cc | 1 |
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) |