]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test: Luminous backport specific changes
authorDavid Zafman <dzafman@redhat.com>
Wed, 11 Apr 2018 15:43:56 +0000 (08:43 -0700)
committerDavid Zafman <dzafman@redhat.com>
Tue, 17 Apr 2018 21:30:35 +0000 (14:30 -0700)
osd-scrub-repair.sh:
    Remove legacy_snaps and redirect_target to keep test more in sync with master
    We don't have omap_digest bluestore handling
        Additional cases of omap_digest_mismatch_oi changes
        omap_digest still set
        ROBJ10 output still applies
osd-scrub-snaps.sh:
    Add head_exists in snapset
    Add snapset for object with head_mismatch

Signed-off-by: David Zafman <dzafman@redhat.com>
qa/standalone/scrub/osd-scrub-repair.sh
qa/standalone/scrub/osd-scrub-snaps.sh

index ecc955063b63b36f07f45d77677fa35b554bf12d..28b1548a9b5a5d2a6ff4c05106e19167ff323bd1 100755 (executable)
@@ -42,7 +42,9 @@ walk(if type == "object" then del(.mtime) else . end)
 | walk(if type == "object" then del(.local_mtime) else . end)
 | walk(if type == "object" then del(.last_reqid) else . end)
 | walk(if type == "object" then del(.version) else . end)
-| walk(if type == "object" then del(.prior_version) else . end)'
+| walk(if type == "object" then del(.prior_version) else . end)
+| walk(if type == "object" then del(.redirect_target) else . end)
+| walk(if type == "object" then del(.legacy_snaps) else . end)'
 
 sortkeys='import json; import sys ; JSON=sys.stdin.read() ; ud = json.loads(JSON) ; print json.dumps(ud, sort_keys=True, indent=2)'
 
@@ -665,12 +667,13 @@ function TEST_corrupt_scrub_replicated() {
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 769390837,
-            "omap_digest": 4294967295,
+            "omap_digest": 4126909126,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -709,12 +712,13 @@ function TEST_corrupt_scrub_replicated() {
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 4126909126,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -775,12 +779,13 @@ function TEST_corrupt_scrub_replicated() {
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 108998762,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -838,12 +843,13 @@ function TEST_corrupt_scrub_replicated() {
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 1682015565,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -921,12 +927,13 @@ function TEST_corrupt_scrub_replicated() {
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 769390837,
-            "omap_digest": 4294967295,
+            "omap_digest": 757747054,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -970,12 +977,13 @@ function TEST_corrupt_scrub_replicated() {
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 757747054,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1066,12 +1074,13 @@ function TEST_corrupt_scrub_replicated() {
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 11755005,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1152,12 +1161,13 @@ function TEST_corrupt_scrub_replicated() {
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 3602809308,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1203,12 +1213,13 @@ function TEST_corrupt_scrub_replicated() {
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 727918093,
-            "omap_digest": 4294967295,
+            "omap_digest": 787268921,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -1244,12 +1255,13 @@ function TEST_corrupt_scrub_replicated() {
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 769390837,
-            "omap_digest": 4294967295,
+            "omap_digest": 787268921,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -1287,12 +1299,13 @@ function TEST_corrupt_scrub_replicated() {
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 727918093,
-        "omap_digest": 4294967295,
+        "omap_digest": 787268921,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1398,12 +1411,13 @@ EOF
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 769390837,
-            "omap_digest": 4294967295,
+            "omap_digest": 4126909126,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -1445,12 +1459,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 4126909126,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1483,7 +1498,7 @@ EOF
           "omap_digest": "0xa8dd5adc",
           "size": 7,
           "errors": [
-            "omap_digest_mismatch_oi"
+            "omap_digest_mismatch_info"
           ],
           "osd": 0,
           "primary": false
@@ -1493,15 +1508,50 @@ EOF
           "omap_digest": "0xa8dd5adc",
           "size": 7,
           "errors": [
-            "omap_digest_mismatch_oi"
+            "omap_digest_mismatch_info"
           ],
           "osd": 1,
           "primary": true
         }
       ],
-      "selected_object_info": "3:b1f19cbd:::ROBJ10:head(47'51 osd.0.0:50 dirty|omap|data_digest|omap_digest s 7 uv 30 dd 2ddbf8f5 od c2025a24 alloc_hint [0 0 0])",
+     "selected_object_info": {
+       "alloc_hint_flags": 0,
+       "data_digest": 769390837,
+       "expected_object_size": 0,
+       "expected_write_size": 0,
+       "flags": [
+         "dirty",
+         "omap",
+         "data_digest",
+         "omap_digest"
+       ],
+       "last_reqid": "osd.0.0:50",
+       "local_mtime": "2018-04-05 14:33:26.762368",
+       "lost": 0,
+      "manifest": {
+         "type": 0
+       },
+       "mtime": "2018-04-05 14:33:26.762368",
+       "oid": {
+         "hash": 3174666125,
+         "key": "",
+         "max": 0,
+         "namespace": "",
+         "oid": "ROBJ10",
+         "pool": 3,
+         "snapid": -2
+       },
+       "omap_digest": 3254934052,
+       "prior_version": "41'33",
+       "size": 7,
+       "truncate_seq": 0,
+       "truncate_size": 0,
+       "user_version": 30,
+       "version": "47'51",
+       "watchers": {}
+      },
       "union_shard_errors": [
-        "omap_digest_mismatch_oi"
+        "omap_digest_mismatch_info"
       ],
       "errors": [],
       "object": {
@@ -1552,12 +1602,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 2688347907,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1617,12 +1668,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 108998762,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1735,12 +1787,13 @@ EOF
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 769390837,
-            "omap_digest": 4294967295,
+            "omap_digest": 757747054,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -1788,12 +1841,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 757747054,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1893,12 +1947,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 4175501592,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1960,12 +2015,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 11755005,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -1993,7 +2049,7 @@ EOF
           "omap_digest": "0xd7178dfe",
           "size": 7,
           "errors": [
-            "omap_digest_mismatch_oi"
+            "omap_digest_mismatch_info"
           ],
           "osd": 0,
           "primary": false
@@ -2028,12 +2084,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 3805572772,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -2043,7 +2100,7 @@ EOF
         "watchers": {}
       },
       "union_shard_errors": [
-        "omap_digest_mismatch_oi"
+        "omap_digest_mismatch_info"
       ],
       "errors": [
         "omap_digest_mismatch"
@@ -2071,7 +2128,7 @@ EOF
           "omap_digest": "0x06cac8f6",
           "size": 7,
           "errors": [
-            "omap_digest_mismatch_oi"
+            "omap_digest_mismatch_info"
           ],
           "osd": 1,
           "primary": true
@@ -2098,12 +2155,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 445000257,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -2113,7 +2171,7 @@ EOF
         "watchers": {}
       },
       "union_shard_errors": [
-        "omap_digest_mismatch_oi"
+        "omap_digest_mismatch_info"
       ],
       "errors": [
         "omap_digest_mismatch"
@@ -2133,7 +2191,7 @@ EOF
           "omap_digest": "0x689ee887",
           "size": 7,
           "errors": [
-            "omap_digest_mismatch_oi"
+            "omap_digest_mismatch_info"
           ],
           "osd": 0,
           "primary": false
@@ -2168,12 +2226,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 396136863,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -2183,7 +2242,7 @@ EOF
         "watchers": {}
       },
       "union_shard_errors": [
-        "omap_digest_mismatch_oi"
+        "omap_digest_mismatch_info"
       ],
       "errors": [
         "omap_digest_mismatch"
@@ -2211,7 +2270,7 @@ EOF
           "omap_digest": "0x6a73cc07",
           "size": 7,
           "errors": [
-            "omap_digest_mismatch_oi"
+            "omap_digest_mismatch_info"
           ],
           "osd": 1,
           "primary": true
@@ -2238,12 +2297,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 4023309690,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -2253,7 +2313,7 @@ EOF
         "watchers": {}
       },
       "union_shard_errors": [
-        "omap_digest_mismatch_oi"
+        "omap_digest_mismatch_info"
       ],
       "errors": [
         "omap_digest_mismatch"
@@ -2330,12 +2390,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 769390837,
-        "omap_digest": 4294967295,
+        "omap_digest": 3602809308,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -2381,12 +2442,13 @@ EOF
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 769390837,
-            "omap_digest": 4294967295,
+            "omap_digest": 787268921,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -2426,12 +2488,13 @@ EOF
             "flags": [
               "dirty",
               "omap",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
             "data_digest": 522648358,
-            "omap_digest": 4294967295,
+            "omap_digest": 787268921,
             "expected_object_size": 0,
             "expected_write_size": 0,
             "alloc_hint_flags": 0,
@@ -2469,12 +2532,13 @@ EOF
         "flags": [
           "dirty",
           "omap",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
         "data_digest": 522648358,
-        "omap_digest": 4294967295,
+        "omap_digest": 787268921,
         "expected_object_size": 0,
         "expected_write_size": 0,
         "alloc_hint_flags": 0,
@@ -2655,7 +2719,8 @@ function corrupt_scrub_erasure() {
             "lost": 0,
             "flags": [
               "dirty",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
@@ -2706,7 +2771,8 @@ function corrupt_scrub_erasure() {
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -2780,7 +2846,8 @@ function corrupt_scrub_erasure() {
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -2886,7 +2953,8 @@ function corrupt_scrub_erasure() {
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -2943,7 +3011,8 @@ function corrupt_scrub_erasure() {
             "lost": 0,
             "flags": [
               "dirty",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
@@ -2994,7 +3063,8 @@ function corrupt_scrub_erasure() {
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3052,7 +3122,8 @@ function corrupt_scrub_erasure() {
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3147,7 +3218,8 @@ function corrupt_scrub_erasure() {
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3303,7 +3375,8 @@ EOF
             "lost": 0,
             "flags": [
               "dirty",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
@@ -3357,7 +3430,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3436,7 +3510,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3548,7 +3623,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3609,7 +3685,8 @@ EOF
             "lost": 0,
             "flags": [
               "dirty",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
@@ -3662,7 +3739,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3725,7 +3803,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3821,7 +3900,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -3958,7 +4038,8 @@ EOF
             "lost": 0,
             "flags": [
               "dirty",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
@@ -4012,7 +4093,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -4092,7 +4174,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -4167,7 +4250,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -4279,7 +4363,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -4338,7 +4423,8 @@ EOF
             "lost": 0,
             "flags": [
               "dirty",
-              "data_digest"
+              "data_digest",
+              "omap_digest"
             ],
             "truncate_seq": 0,
             "truncate_size": 0,
@@ -4392,7 +4478,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -4456,7 +4543,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -4554,7 +4642,8 @@ EOF
         "lost": 0,
         "flags": [
           "dirty",
-          "data_digest"
+          "data_digest",
+          "omap_digest"
         ],
         "truncate_seq": 0,
         "truncate_size": 0,
@@ -4908,6 +4997,7 @@ function TEST_corrupt_snapset_scrub_rep() {
                 ]
               }
             ],
+            "head_exists": 1,
             "snap_context": {
               "seq": 1,
               "snaps": [
@@ -4923,6 +5013,7 @@ function TEST_corrupt_snapset_scrub_rep() {
           "size": 21,
           "snapset": {
             "clones": [],
+            "head_exists": 0,
             "snap_context": {
               "seq": 0,
               "snaps": []
@@ -4986,6 +5077,7 @@ function TEST_corrupt_snapset_scrub_rep() {
           "size": 21,
           "snapset": {
             "clones": [],
+            "head_exists": 0,
             "snap_context": {
               "seq": 0,
               "snaps": []
@@ -5008,6 +5100,7 @@ function TEST_corrupt_snapset_scrub_rep() {
                 ]
               }
             ],
+            "head_exists": 1,
             "snap_context": {
               "seq": 1,
               "snaps": [
index f0e4aee7e589febdec56b0f642115a35c164341a..cf6f67b6dbe2d1b6d3694b940d182a8de738ea0a 100755 (executable)
@@ -294,6 +294,7 @@ function TEST_scrub_snaps() {
       "locator": "",
       "snap": "head",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 1,
           "snaps": [
@@ -325,6 +326,7 @@ function TEST_scrub_snaps() {
       "nspace": "",
       "name": "obj11",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 1,
           "snaps": [
@@ -334,12 +336,41 @@ function TEST_scrub_snaps() {
         "clones": []
       }
     },
+    {
+      "errors": [
+        "head_mismatch"
+      ],
+      "snap": "head",
+      "locator": "",
+      "nspace": "",
+      "name": "obj12",
+      "snapset": {
+        "head_exists": 0,
+        "snap_context": {
+          "seq": 1,
+          "snaps": [
+            1
+          ]
+        },
+        "clones": [
+          {
+            "snap": 1,
+            "size": 1032,
+            "overlap": "[]",
+            "snaps": [
+              1
+            ]
+          }
+        ]
+      }
+    },
     {
       "name": "obj14",
       "nspace": "",
       "locator": "",
       "snap": "head",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 1,
           "snaps": [
@@ -359,15 +390,6 @@ function TEST_scrub_snaps() {
       },
       "errors": []
     },
-    {
-      "errors": [
-        "head_mismatch"
-      ],
-      "snap": "head",
-      "locator": "",
-      "nspace": "",
-      "name": "obj12"
-    },
     {
       "errors": [
         "snapset_corrupted"
@@ -400,6 +422,7 @@ function TEST_scrub_snaps() {
       "nspace": "",
       "name": "obj3",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 3,
           "snaps": [
@@ -441,6 +464,7 @@ function TEST_scrub_snaps() {
       "nspace": "",
       "name": "obj4",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 7,
           "snaps": [
@@ -488,6 +512,7 @@ function TEST_scrub_snaps() {
       "nspace": "",
       "name": "obj5",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 6,
           "snaps": [
@@ -549,6 +574,7 @@ function TEST_scrub_snaps() {
       "nspace": "",
       "name": "obj6",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 1,
           "snaps": [
@@ -571,6 +597,7 @@ function TEST_scrub_snaps() {
       "nspace": "",
       "name": "obj7",
       "snapset": {
+        "head_exists": 0,
         "snap_context": {
           "seq": 0,
           "snaps": []
@@ -587,6 +614,7 @@ function TEST_scrub_snaps() {
       "nspace": "",
       "name": "obj8",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 0,
           "snaps": [
@@ -611,6 +639,7 @@ function TEST_scrub_snaps() {
       "locator": "",
       "snap": "head",
       "snapset": {
+        "head_exists": 1,
         "snap_context": {
           "seq": 1,
           "snaps": [