mirror of
https://github.com/ceph/ceph
synced 2025-01-01 16:42:29 +00:00
Revert "mds: wait the linkmerge/migrate to finish after unlink"
This reverts commit 48f9a8990b
.
Fixes: https://tracker.ceph.com/issues/61818
Signed-off-by: Xiubo Li <xiubli@redhat.com>
This commit is contained in:
parent
eb42e21d79
commit
a9dd5df2fe
@ -398,8 +398,7 @@ class CInode : public MDSCacheObject, public InodeStoreBase, public Counter<CIno
|
||||
static const uint64_t WAIT_FROZEN = (1<<1);
|
||||
static const uint64_t WAIT_TRUNC = (1<<2);
|
||||
static const uint64_t WAIT_FLOCK = (1<<3);
|
||||
static const uint64_t WAIT_UNLINK = (1<<4);
|
||||
|
||||
|
||||
static const uint64_t WAIT_ANY_MASK = (uint64_t)(-1);
|
||||
|
||||
// misc
|
||||
|
@ -7407,13 +7407,6 @@ void Server::handle_client_link(MDRequestRef& mdr)
|
||||
if (target_pin != dir->inode &&
|
||||
target_realm->get_subvolume_ino() !=
|
||||
dir->inode->find_snaprealm()->get_subvolume_ino()) {
|
||||
if (target_pin->is_stray()) {
|
||||
mds->locker->drop_locks(mdr.get());
|
||||
targeti->add_waiter(CInode::WAIT_UNLINK,
|
||||
new C_MDS_RetryRequest(mdcache, mdr));
|
||||
mdlog->flush();
|
||||
return;
|
||||
}
|
||||
dout(7) << "target is in different subvolume, failing..." << dendl;
|
||||
respond_to_request(mdr, -CEPHFS_EXDEV);
|
||||
return;
|
||||
@ -9223,12 +9216,6 @@ void Server::handle_client_rename(MDRequestRef& mdr)
|
||||
C_MDS_rename_finish *fin = new C_MDS_rename_finish(this, mdr, srcdn, destdn, straydn);
|
||||
|
||||
journal_and_reply(mdr, srci, destdn, le, fin);
|
||||
|
||||
// trigger to flush mdlog in case reintegrating or migrating the stray dn,
|
||||
// because the link requests maybe waiting.
|
||||
if (srcdn->get_dir()->inode->is_stray()) {
|
||||
mdlog->flush();
|
||||
}
|
||||
mds->balancer->maybe_fragment(destdn->get_dir(), false);
|
||||
}
|
||||
|
||||
@ -9839,14 +9826,6 @@ void Server::_rename_apply(MDRequestRef& mdr, CDentry *srcdn, CDentry *destdn, C
|
||||
|
||||
srcdn->get_dir()->unlink_inode(srcdn);
|
||||
|
||||
// After the stray dn being unlinked from the corresponding inode in case of
|
||||
// reintegrate_stray/migrate_stray, just wake up the waitiers.
|
||||
MDSContext::vec finished;
|
||||
in->take_waiting(CInode::WAIT_UNLINK, finished);
|
||||
if (!finished.empty()) {
|
||||
mds->queue_waiters(finished);
|
||||
}
|
||||
|
||||
// dest
|
||||
if (srcdn_was_remote) {
|
||||
if (!linkmerge) {
|
||||
|
@ -280,17 +280,6 @@ void StrayManager::_purge_stray_logged(CDentry *dn, version_t pdv, MutationRef&
|
||||
dir->remove_dentry(dn);
|
||||
}
|
||||
|
||||
// Once we are here normally the waiter list are mostly empty
|
||||
// but in corner case that the clients pass a invalidate ino,
|
||||
// which maybe under unlinking, the link caller will add the
|
||||
// request to the waiter list. We need try to wake them up
|
||||
// anyway.
|
||||
MDSContext::vec finished;
|
||||
in->take_waiting(CInode::WAIT_UNLINK, finished);
|
||||
if (!finished.empty()) {
|
||||
mds->queue_waiters(finished);
|
||||
}
|
||||
|
||||
// drop inode
|
||||
inodeno_t ino = in->ino();
|
||||
if (in->is_dirty())
|
||||
|
Loading…
Reference in New Issue
Block a user