]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd/scrub: modify ScrubStore contents retrieval 59942/head
authorRonen Friedman <rfriedma@redhat.com>
Sat, 5 Oct 2024 12:33:49 +0000 (07:33 -0500)
committerRonen Friedman <rfriedma@redhat.com>
Thu, 10 Oct 2024 16:29:20 +0000 (11:29 -0500)
commit4f1ef85c7204dec9df9853597024637ac2873762
tree7b306da13e01d75e66cfc897189eb3d2f75450eb
parent47ef574bee6fc43850e9da9c0b9b6c4a34d58dae
osd/scrub: modify ScrubStore contents retrieval

A separate commit added a simple test to verify the new
store implementation (creating both shallow & deep errors),
scrubbing (step 1), deep scrubbing (step 2), then shallow
scrubbing again (step 3). The test verifies that
the results after step 2 include all shallow errors data (*),
and that the results after step 3 include all deep errors
data.

The test highlighted the need to correctly partition and
retrieve the "shards inconsistencies" and the "selected
shard" data, which was not fully implemented in the
previous commit. Thus, this commit adds the following:

- add_object_error() no longer filters out data saved during
  deep scrubbing; it also filters less of the shallow scrubs
  "shards inconsistencies" data;

- merge_encoded_error_wrappers() now merges the "shards
  inconsistencies" data correctly, handling the multiple
  scenarios possible.

(*) note the special case of not being able to read the
   object's version during deep scrubbing (due to a read
   error). In this case - the data collected during the
   shallow scrub will not be reported.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
src/osd/scrubber/ScrubStore.cc
src/osd/scrubber/ScrubStore.h