diff options
author | Sage Weil <sage@newdream.net> | 2009-12-02 12:00:19 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2009-12-02 12:00:19 -0800 |
commit | fd0195a9d860b7319d1ab5e8df17be4740b51659 (patch) | |
tree | f07f7ffec99fab413667135575ec617b53434b17 | |
parent | 378e47692359b74d8ea1c99a63d48f37835eabe1 (diff) | |
download | ceph-fd0195a9d860b7319d1ab5e8df17be4740b51659.tar.gz |
mds: set mdr->in[n] in rdlock_path_xlock_dentry
This keeps things consistent with what we'd get with
path_traverse. Namely, it means that if done_locking gets
set to true, then a future call to rdlock_path_pin_ref can
bail out and return mdr->in[n] and get a correct value.
This fixes
touch mnt/a
ls mnt
touch mnt/.ceph
mds hang on the create request.
-rw-r--r-- | src/mds/Server.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 69f154914d0..6663d5d357e 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -1752,6 +1752,7 @@ CDentry* Server::rdlock_path_xlock_dentry(MDRequest *mdr, int n, } mdr->dn[n].push_back(dn); + mdr->in[n] = dn->get_projected_linkage()->get_inode(); // -- lock -- for (int i=0; i<(int)mdr->dn[n].size(); i++) |