]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: properly replay dentry trace for open truncate. 1230/head
authorYan, Zheng <zheng.z.yan@intel.com>
Thu, 13 Feb 2014 02:28:49 +0000 (10:28 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Thu, 13 Feb 2014 02:40:49 +0000 (10:40 +0800)
Open request created by ceph_atomic_open() wants dentry trace. But
the corresponding code is missing in Server::do_open_truncate().

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/Server.cc

index 36c11402840c537a714da3a98d74cec4c35541d5..59c3cfd20ee908ebd07150572a9612d79be10b75 100644 (file)
@@ -3323,8 +3323,14 @@ void Server::do_open_truncate(MDRequest *mdr, int cmode)
   
   mdr->o_trunc = true;
 
-  journal_and_reply(mdr, in, 0, le, new C_MDS_inode_update_finish(mds, mdr, in, old_size > 0,
-                                                                 changed_ranges));
+  CDentry *dn = 0;
+  if (mdr->client_request->get_dentry_wanted()) {
+    assert(mdr->dn[0].size());
+    dn = mdr->dn[0].back();
+  }
+
+  journal_and_reply(mdr, in, dn, le, new C_MDS_inode_update_finish(mds, mdr, in, old_size > 0,
+                                                                  changed_ranges));
 }