From d6bbf3e5fbe1df26d1bfe6f695ca52cfbb3694b2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 2 Jun 2011 15:13:42 -0700 Subject: [PATCH] mds: journal parents of srci when srcdn is remote If srcdn is a remote dentry, we will be journaling the src inode to update the mtime, but we need to ensure the parent dirs are in the metablob. Fixes: #1132 Signed-off-by: Sage Weil --- src/mds/Server.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index d9596af818ab..2e479f11ed3a 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -5170,7 +5170,8 @@ void Server::_rename_prepare(MDRequest *mdr, if (destdn->is_auth() && !destdnl->is_null()) { mdcache->predirty_journal_parents(mdr, metablob, destdnl->get_inode(), destdn->get_dir(), (destdnl->is_primary() ? PREDIRTY_PRIMARY:0)|predirty_dir, -1); - mdcache->predirty_journal_parents(mdr, metablob, destdnl->get_inode(), straydn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1); + mdcache->predirty_journal_parents(mdr, metablob, destdnl->get_inode(), straydn->get_dir(), + PREDIRTY_PRIMARY|PREDIRTY_DIR, 1); } // move srcdn @@ -5210,6 +5211,7 @@ void Server::_rename_prepare(MDRequest *mdr, destdn->first = MAX(destdn->first, next_dest_snap); metablob->add_remote_dentry(destdn, true, srcdnl->get_remote_ino(), srcdnl->get_remote_d_type()); if (srci->is_auth()) { + metablob->add_dir_context(srci->get_parent_dir()); mdcache->journal_cow_dentry(mdr, metablob, srci->get_parent_dn(), CEPH_NOSNAP, 0, srcdnl); ji = metablob->add_primary_dentry(srci->get_parent_dn(), true, srci); } -- 2.47.3