]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: avoid FORCE updating digest been overwritten by MAYBE
authorZhiqiang Wang <wonzhq@hotmail.com>
Thu, 24 Dec 2015 12:29:25 +0000 (07:29 -0500)
committerZhiqiang Wang <wonzhq@hotmail.com>
Thu, 24 Dec 2015 12:29:25 +0000 (07:29 -0500)
Should set update to FORCE after MAYBE, to avoid it been overwritten.

Signed-off-by: Zhiqiang Wang <wonzhq@hotmail.com>
src/osd/PGBackend.cc

index 806a4a0a48733dacf9a6715f31710b4528cd1df8..b2d6fad0890c17598280fabb37b2504fcb38963d 100644 (file)
@@ -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 ||