auto req = make_message<MMDSPeerRequest>(mdr->reqid, mdr->attempt, op);
targeti->set_object_info(req->get_object_info());
req->op_stamp = mdr->get_op_stamp();
- // referent inode related
- req->referent_ino = inodeno_t(0);
if (mds->mdsmap->allow_referent_inodes()) {
- if (inc && newi) {
+ if (inc && newi)
req->referent_ino = newi->ino();
- dout(20) << __func__ << " link - referent_ino= " << req->referent_ino << " sending over wire" << dendl;
- }
- else { //unlink
- if (dnl->is_referent_remote()) {
- CInode *ref_in = dnl->get_referent_inode();
- ceph_assert(ref_in->is_auth());
- req->referent_ino = ref_in->ino();
- dout(20) << __func__ << " unlink - referent_ino= " << req->referent_ino << " sending over wire" << dendl;
- }
- }
+ } else {
+ req->referent_ino = inodeno_t(0);
}
if (auto& desti_srnode = mdr->more()->desti_srnode)
} else {
inc = false;
pi.inode->nlink--;
-
- if (referent_ino > 0) {
- // Remove referent inode from primary inode (targeti)
- pi.inode->remove_referent_ino(referent_ino);
- dout(20) << __func__ << " referent_inodes " << std::hex << pi.inode->get_referent_inodes()
- << " referent ino removed " << referent_ino << dendl;
- }
-
if (targeti->is_projected_snaprealm_global()) {
ceph_assert(mdr->peer_request->desti_snapbl.length());
auto p = mdr->peer_request->desti_snapbl.cbegin();