if (dnl->is_remote()) {
// just unlink.
dir->unlink_inode(dn, false);
- } else if (dnl->is_referent_remote()) {
- // expire the referent inode too.
- CInode *ref_in = dnl->get_referent_inode();
- ceph_assert(ref_in);
- if (trim_inode(dn, ref_in, con, expiremap))
- return true; // purging stray instead of trimming
} else if (dnl->is_primary()) {
// expire the inode, too.
CInode *in = dnl->get_inode();
// add back into lru (at the top)
auth_list.push_back(dn);
- if ((dnl->is_remote() || dnl->is_referent_remote()) &&
- dnl->get_inode() && !dnl->get_inode()->is_auth())
+ if (dnl->is_remote() && dnl->get_inode() && !dnl->get_inode()->is_auth())
dn->unlink_remote(dnl);
} else {
// non-auth. expire.
if (dnl->is_remote()) {
dir->unlink_inode(dn, false);
}
- else if (dnl->is_primary() || dnl->is_referent_remote()) {
- CInode *in = nullptr;
- if (dnl->is_referent_remote()) {
- in = dnl->get_referent_inode();
- dout(10) << __func__ << " removing referent inode " << *in << dendl;
- } else {
- in = dnl->get_inode();
- dout(10) << __func__ << " removing inode " << *in << dendl;
- }
+ else if (dnl->is_primary()) {
+ CInode *in = dnl->get_inode();
+ dout(10) << " removing " << *in << dendl;
auto&& ls = in->get_dirfrags();
for (const auto& subdir : ls) {
ceph_assert(!subdir->is_subtree_root());
dout(20) << "trim_non_auth_subtree(" << dir << ") keeping dentry " << dn <<dendl;
} else { // just remove it
dout(20) << "trim_non_auth_subtree(" << dir << ") removing dentry " << dn << dendl;
- if (dnl->is_remote() || dnl->is_referent_remote()) {
+ if (dnl->is_remote())
dir->unlink_inode(dn, false);
- if (dnl->is_referent_remote()) {
- // remove referent inode
- CInode *ref_in = dnl->get_referent_inode();
- dout(20) << __func__ << " removing referent inode " << ref_in << dendl;
- remove_inode(ref_in);
- ceph_assert(!dir->has_bloom());
- }
- }
dir->remove_dentry(dn);
}
}