From affce7a96329ae1f8364734ec0d257d25943c3c3 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Fri, 9 May 2014 09:21:16 +0800 Subject: [PATCH] mds: journal rename source inode when rollback rename rename changes the source inode's ctime. rollback changes ctime back to its original value. Signed-off-by: Yan, Zheng --- src/mds/Server.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index e7440f021820d..2172f5cabc0f2 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -7055,6 +7055,12 @@ void Server::do_rename_rollback(bufferlist &rbl, int master, MDRequestRef& mdr, le->commit.add_remote_dentry(srcdn, true); } + if (!rollback.orig_src.ino && // remote linkage + in && in->authority().first == whoami) { + le->commit.add_dir_context(in->get_projected_parent_dir()); + le->commit.add_primary_dentry(in->get_projected_parent_dn(), in, true); + } + if (force_journal_dest) { assert(rollback.orig_dest.ino); le->commit.add_dir_context(destdir); @@ -7063,7 +7069,7 @@ void Server::do_rename_rollback(bufferlist &rbl, int master, MDRequestRef& mdr, // slave: no need to journal straydn - if (target && target->authority().first == whoami) { + if (target && target != in && target->authority().first == whoami) { assert(rollback.orig_dest.remote_ino); le->commit.add_dir_context(target->get_projected_parent_dir()); le->commit.add_primary_dentry(target->get_projected_parent_dn(), target, true); -- 2.39.5