From: Sage Weil Date: Mon, 7 Apr 2008 21:35:49 +0000 (-0700) Subject: mds: wrlock dir mtime on create, even if neg dentry exists X-Git-Tag: v0.3~239^2~81^2^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1bc66c3790c8e86fdad94b24ac7ba147bcef30dc;p=ceph.git mds: wrlock dir mtime on create, even if neg dentry exists --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 16dabc7915c..fce1e38269a 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -1389,11 +1389,11 @@ CDentry* Server::rdlock_path_xlock_dentry(MDRequest *mdr, bool okexist, bool mus for (int i=0; i<(int)trace.size(); i++) rdlocks.insert(&trace[i]->lock); - if (dn->is_null()) { + if (dn->is_null()) xlocks.insert(&dn->lock); // new dn, xlock - wrlocks.insert(&dn->dir->inode->dirlock); // also, wrlock on dir mtime - } else + else rdlocks.insert(&dn->lock); // existing dn, rdlock + wrlocks.insert(&dn->dir->inode->dirlock); // also, wrlock on dir mtime if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks)) return 0;