Otherwise, path string like #
10000000000/xxx may get saved into
inode_t::stray_prior_path.
Fixes: http://tracker.ceph.com/issues/20340
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit
ba7472cbf2a3147136a31b611f7b88f883be5f6d)
Conflicts:
src/mds/Server.cc
- remove counter `change_attr` because it does not involved
dn->pre_dirty();
inode_t *pi = in->project_inode();
- dn->make_path_string(pi->stray_prior_path);
+ dn->make_path_string(pi->stray_prior_path, true);
mdr->add_projected_inode(in); // do this _after_ my dn->pre_dirty().. we apply that one manually.
pi->version = in->pre_dirty();
pi->ctime = mdr->get_op_stamp();
}
if (tpi) {
tpi->ctime = mdr->get_op_stamp();
- destdn->make_path_string(tpi->stray_prior_path);
+ destdn->make_path_string(tpi->stray_prior_path, true);
tpi->nlink--;
if (tpi->nlink == 0)
oldin->state_set(CInode::STATE_ORPHAN);