From: Zhiqiang Wang Date: Thu, 24 Dec 2015 12:29:25 +0000 (-0500) Subject: osd: avoid FORCE updating digest been overwritten by MAYBE X-Git-Tag: v10.1.0~305^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f302e058a3e0fd8d5ce0df4c87568be6c25cd5ae;p=ceph.git osd: avoid FORCE updating digest been overwritten by MAYBE Should set update to FORCE after MAYBE, to avoid it been overwritten. Signed-off-by: Zhiqiang Wang --- diff --git a/src/osd/PGBackend.cc b/src/osd/PGBackend.cc index 806a4a0a4873..b2d6fad0890c 100644 --- a/src/osd/PGBackend.cc +++ b/src/osd/PGBackend.cc @@ -635,6 +635,18 @@ void PGBackend::be_compare_scrubmaps( FORCE = 2, } update = NO; + if (auth_object.digest_present && auth_object.omap_digest_present && + (!auth_oi.is_data_digest() || !auth_oi.is_omap_digest())) { + dout(20) << __func__ << " missing digest on " << *k << dendl; + update = MAYBE; + } + if (g_conf->osd_debug_scrub_chance_rewrite_digest && + (((unsigned)rand() % 100) > + g_conf->osd_debug_scrub_chance_rewrite_digest)) { + dout(20) << __func__ << " randomly updating digest on " << *k << dendl; + update = MAYBE; + } + // recorded digest != actual digest? if (auth_oi.is_data_digest() && auth_object.digest_present && auth_oi.data_digest != auth_object.digest) { @@ -657,17 +669,6 @@ void PGBackend::be_compare_scrubmaps( update = FORCE; } - if (auth_object.digest_present && auth_object.omap_digest_present && - (!auth_oi.is_data_digest() || !auth_oi.is_omap_digest())) { - dout(20) << __func__ << " missing digest on " << *k << dendl; - update = MAYBE; - } - if (g_conf->osd_debug_scrub_chance_rewrite_digest && - (((unsigned)rand() % 100) > - g_conf->osd_debug_scrub_chance_rewrite_digest)) { - dout(20) << __func__ << " randomly updating digest on " << *k << dendl; - update = MAYBE; - } if (update != NO) { utime_t age = now - auth_oi.local_mtime; if (update == FORCE ||