Skip to content
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

osd: Move scrub sleep timer to osdservice #15217

Merged
merged 1 commit into from Jun 2, 2017

Conversation

Projects
None yet
4 participants
@badone
Copy link
Contributor

badone commented May 23, 2017

PR #14886 erroneously creates a scrub sleep timer for every pg resulting
in a proliferation of threads. Move the timer to the osd service so
there can be only one.

Fixes: http://tracker.ceph.com/issues/19986

Signed-off-by: Brad Hubbard bhubbard@redhat.com

I've only been able to test this locally due to various testing infrastructure failures this week.

@badone badone changed the title osd: Move scrub sleep timer to osdservice [DNM] osd: Move scrub sleep timer to osdservice May 23, 2017

@badone badone force-pushed the badone:wip-async-sleep-timer-fix branch 2 times, most recently from 3b9afa3 to 82687c3 May 24, 2017

@badone badone changed the title [DNM] osd: Move scrub sleep timer to osdservice osd: Move scrub sleep timer to osdservice May 24, 2017

new FunctionContext([myosdservice, pgid](int r) {
PG *pg = nullptr;
{
RWLock::RLocker l(myosdservice->osd->pg_map_lock);

This comment has been minimized.

Copy link
@jdurgin

jdurgin May 24, 2017

Member

you may as well make a wrapper for OSD::_lookup_lock_pg in OSDService.

This one has the problem of potentially dereferencing an invalid pg still, since it drops the pg_map_lock before taking the pg->lock(), leaving a window with no locks held during which the pg could be removed.

This comment has been minimized.

Copy link
@badone

badone May 24, 2017

Author Contributor

@jdurgin ah yes, damn.

@badone badone force-pushed the badone:wip-async-sleep-timer-fix branch from 82687c3 to 4593728 May 30, 2017

osd: Move scrub sleep timer to osdservice
PR 14886 erroneously creates a scrub sleep timer for every pg resulting
in a proliferation of threads. Move the timer to the osd service so
there can be only one.

Fixes: http://tracker.ceph.com/issues/19986

Signed-off-by: Brad Hubbard <bhubbard@redhat.com>

@badone badone force-pushed the badone:wip-async-sleep-timer-fix branch from 4593728 to f110a82 May 30, 2017

@badone

This comment has been minimized.

Copy link
Contributor Author

badone commented May 31, 2017

@jdurgin hopefully all is well now.

@liewegas liewegas merged commit b98ad7c into ceph:master Jun 2, 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

@badone badone deleted the badone:wip-async-sleep-timer-fix branch Jun 2, 2017

@badone

This comment has been minimized.

Copy link
Contributor Author

badone commented Jun 2, 2017

@markhpc merged

@markhpc

This comment has been minimized.

Copy link
Member

markhpc commented Jun 6, 2017

Yay! Thanks much. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.