// dest
if (srcdnl->is_remote()) {
if (!linkmerge) {
+ // destdn
if (destdn->is_auth()) {
mdr->more()->pvmap[destdn] = destdn->pre_dirty();
destdn->push_projected_linkage(srcdnl->get_remote_ino(), srcdnl->get_remote_d_type());
}
+ // srci
if (srci->is_auth()) {
pi = srci->project_inode();
pi->version = srci->pre_dirty();
pi->version = mdr->more()->pvmap[destdn] = destdn->pre_dirty(oldin->inode.version);
}
}
- } else {
+ } else { // primary
if (destdn->is_auth()) {
version_t oldpv;
if (srcdn->is_auth())
} else {
dout(10) << "merging remote onto primary link" << dendl;
}
- } else {
+ } else { // primary
if (linkmerge) {
dout(10) << "merging primary onto remote link" << dendl;
destdn->get_dir()->unlink_inode(destdn);
}
// hack: fix auth bit
- destdnl->get_inode()->state_set(CInode::STATE_AUTH);
+ in->state_set(CInode::STATE_AUTH);
imported_inode = true;
}
if (destdn->is_auth()) {
- CInode *desti = destdnl->get_inode();
- desti->pop_and_dirty_projected_inode(mdr->ls);
-
- if (desti->is_dir()) {
- mdr->ls->renamed_files.push_back(&desti->item_renamed_file);
- if (!desti->state_test(CInode::STATE_DIRTYPARENT)) {
- desti->state_set(CInode::STATE_DIRTYPARENT);
- desti->get(CInode::PIN_DIRTYPARENT);
- dout(10) << "added dir to logsegment renamed_files list " << *desti << dendl;
+ in->pop_and_dirty_projected_inode(mdr->ls);
+
+ if (in->is_dir()) {
+ mdr->ls->renamed_files.push_back(&in->item_renamed_file);
+ if (!in->state_test(CInode::STATE_DIRTYPARENT)) {
+ in->state_set(CInode::STATE_DIRTYPARENT);
+ in->get(CInode::PIN_DIRTYPARENT);
+ dout(10) << "added dir to logsegment renamed_files list " << *in << dendl;
} else {
- dout(10) << "re-added dir to logsegment renamed_files list " << *desti << dendl;
+ dout(10) << "re-added dir to logsegment renamed_files list " << *in << dendl;
}
}
} else {
mdr->apply();
// update subtree map?
- if (destdnl->is_primary() && destdnl->get_inode()->is_dir())
- mdcache->adjust_subtree_after_rename(destdnl->get_inode(),
+ if (destdnl->is_primary() && in->is_dir())
+ mdcache->adjust_subtree_after_rename(in,
srcdn->get_dir(),
imported_inode);