Bug 1993290

Summary: thin_repair should clear the needs_check flag in the repaired metadata
Product: Red Hat Enterprise Linux 8 Reporter: Ming-Hung Tsai <mtsai>
Component: device-mapper-persistent-dataAssignee: Ming-Hung Tsai <mtsai>
Status: CLOSED ERRATA QA Contact: Filip Suba <fsuba>
Severity: low Docs Contact:
Priority: low    
Version: 8.5CC: agk, fsuba, heinzm, lvm-team, mcsontos, msnitzer, thornber
Target Milestone: betaKeywords: Triaged
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: device-mapper-persistent-data-0.9.0-4.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-11-09 19:51:17 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Ming-Hung Tsai 2021-08-12 17:27:56 UTC
Description of problem:

From the user perspective, a repaired metadata built by thin_repair should be clean and without the needs_check flag that imposes further examination. Therefore, thin_repair should remove the needs_check flag if it is present in the source metadata.

thin_restore should follow the same rule.

Users can barely find this issue since RHEL is shipped with thin_check-enabled by default, the flag therefore is automatically removed during volume activation.


Version-Release number of selected component (if applicable):

0.9.0-3.el8


Steps to Reproduce:

1. Create a flagged metadata using thin_restore (requires dmpd 0.9.0-3.el8 or older versions):

# dd if=/dev/zero of=src.bin bs=1M count=4
# thin_restore -i input.xml -o src.bin

in which input.xml 

2. Repair the flagged source metadata

# dd if=/dev/zero of=dest.bin bs=1M count=4
# thin_repair -i src.bin -o dest.bin

3. Check presence of the needs_check flag in the dest metadata

# thin_dump dest.bin


Actual results:
<superblock uuid="" time="1" transaction="1" flags="1"

Expected results:
The superblock flag should be zeroed
<superblock uuid="" time="1" transaction="1" flags="0" ... >

Comment 1 Ming-Hung Tsai 2021-08-12 17:48:21 UTC
The patch has been upstreamed
https://github.com/jthornber/thin-provisioning-tools/commit/c32517f827f04f4f079a0913fa25b57b8b4c2960

And here's the backport for dmpd v0.9.0, as well as the test cases
https://github.com/mingnus/thin-provisioning-tools/commit/6b698fb7a4205d629dfcfdbbb158ec176ee05f40

Two new test cases are introduced for testing the reproduce steps above.

# ./configure --enable-testing ...
# make functional-test

...
thin-repair
  clear-needs-check-flag ................................... pass
  ...
thin-restore
  clear-needs-check-flag ................................... pass

Comment 6 Filip Suba 2021-08-27 11:05:16 UTC
Verified with device-mapper-persistent-data-0.9.0-4.el8.

Comment 10 errata-xmlrpc 2021-11-09 19:51:17 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (device-mapper-persistent-data bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:4457