From: Yan, Zheng Date: Thu, 13 Mar 2014 01:53:04 +0000 (+0800) Subject: mds: rdlock dirfragtree lock when renaming directory X-Git-Tag: v0.79~111^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=91c88c1ea15a2a33a9738cb77ac059546db9fb96;p=ceph.git mds: rdlock dirfragtree lock when renaming directory This make sure inode importer and inode exporter have consistent view of dirfrags. Signed-off-by: Yan, Zheng --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 8624da20a818..4b6b752ccb7d 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -5656,6 +5656,8 @@ void Server::handle_client_rename(MDRequest *mdr) dout(10) << " will remote_wrlock srcdir scatterlocks on mds." << srcdirauth << dendl; remote_wrlocks[&srcdn->get_dir()->inode->filelock] = srcdirauth; remote_wrlocks[&srcdn->get_dir()->inode->nestlock] = srcdirauth; + if (srci->is_dir()) + rdlocks.insert(&srci->dirfragtreelock); } else { wrlocks.insert(&srcdn->get_dir()->inode->filelock); wrlocks.insert(&srcdn->get_dir()->inode->nestlock);