New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mds: misc multimds fixes part2 #12794

Merged
merged 13 commits into from Jan 12, 2017

Conversation

Projects
None yet
3 participants
@ukernel
Member

ukernel commented Jan 5, 2017

No description provided.

@ukernel

This comment has been minimized.

Member

ukernel commented Jan 5, 2017

some commits are in #12274. The first new commit is "mds: remove stale warning in log replay code"

} else {
dout(20) << __func__ << ": not reintegrating" << dendl;
}
// NOTE: we repeat this check in _rename(), since our submission path is racey.

This comment has been minimized.

@xiexingguo

xiexingguo Jan 6, 2017

Member

s/racey/racy/

ukernel added some commits Dec 9, 2016

mds: don't modify session->info before ESession get journaled
Server::journal_close_session() modifies session->info before
corresponding ESession get journaled. It's possible the updated
session gets saved to sessionmap before Server::_session_logged()
increases sessionmap's version. This confuses the journal replay
code.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: remove stale warning in log replay code
we don't re-fill prealloc_inos each time a prealloc ino get used

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: fix MDSMap::is_rejoining()
the function checks if all recovering mds reach rejoin state. It
need to consider damaged mds set.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: don't journal inode when merging subtrees
When doing subtree migration or cross subtree rename, we rdlock
fragtreelock of subtree boundaries' inodes. rdlock fragtreelock
has already journaled dirfragtree updates. I can't see why we
need to journal it again when merging subtrees.

The resaon I want to remove this code is that it can journal
unconnected dirfrag in the Migrator::export_reverse() case.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: limit number of pending exports when thash exports is enabled
Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: make MDCache::show_subtree less verbose when thrash exports is e…
…nabled

Subtree map can be very large when thrash exports is enabled.
Printing subtree map causes size log to increase quickly.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: add -ESTALE recovery code for unlink/rmdir
Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: cleanup Server::rdlock_path_xlock_dentry
Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: properly put unexpired dentry back to lru
Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: use locked dentry trace to compose slave rmdir/rename request
{rmdir/rename}_prepare_witness() use full path to compose slave
requests. But they do not lock all dentries in the path. So someone
else changes the unlocked dentry and causes path travsese of slave
request to fail.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: add replicas of destdn to rename witness list
it's possible that null dentry is replicated

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: don't abort request that has already started slave operation
Access check and fragment size check can fail after start slave
operation. This causes mds to crash.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
@jcsp

This comment has been minimized.

Contributor

jcsp commented Jan 10, 2017

On a test branch with these patches, I'm seeing failures in TestStrays.test_migration_on_shutdown and TestFailover.test_grow_shrink -- possibly something here is breaking rank stopping.

mds: fix MDCache::trim() with max == 0
MDCache::shutdown_pass call MDCache::trim with max == 0. If the last
dentry is non-null, MDCache::trim does nothing

Signed-off-by: Yan, Zheng <zyan@redhat.com>
@ukernel

This comment has been minimized.

Member

ukernel commented Jan 11, 2017

It's caused by unrelated bug. fixed by "mds: fix MDCache::trim() with max == 0"

@jcsp

This comment has been minimized.

Contributor

jcsp commented Jan 11, 2017

Oh yeah, I happened to also fix that on my purgequeue PR 7f6187a

@jcsp

jcsp approved these changes Jan 12, 2017

@jcsp jcsp merged commit 3db51ae into ceph:master Jan 12, 2017

3 checks passed

Signed-off-by all commits in this PR are signed
Details
Unmodifed Submodules submodules for project are unmodified
Details
default Build finished.
Details

@ukernel ukernel deleted the ukernel:wip-multimds-misc2 branch Jan 12, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment