Signed-off-by: Xinze Chi <xmdxcxz@gmail.com>
void PG::scrub(ThreadPool::TPHandle &handle)
{
lock();
+ if (deleting) {
+ unlock();
+ return;
+ }
if (g_conf->osd_scrub_sleep > 0 &&
(scrubber.state == PG::Scrubber::NEW_CHUNK ||
scrubber.state == PG::Scrubber::INACTIVE)) {
lock();
dout(20) << __func__ << " slept for " << t << dendl;
}
- if (deleting) {
- unlock();
- return;
- }
if (!is_primary() || !is_active() || !is_clean() || !is_scrubbing()) {
dout(10) << "scrub -- not primary or active or not clean" << dendl;
void ReplicatedPG::snap_trimmer()
{
+ lock();
+ if (deleting) {
+ unlock();
+ return;
+ }
if (g_conf->osd_snap_trim_sleep > 0) {
+ unlock();
utime_t t;
t.set_from_double(g_conf->osd_snap_trim_sleep);
t.sleep();
lock();
dout(20) << __func__ << " slept for " << t << dendl;
- } else {
- lock();
- }
- if (deleting) {
- unlock();
- return;
}
dout(10) << "snap_trimmer entry" << dendl;
if (is_primary()) {