Bug 2029816

Summary: XFS v5 is not consistent inside LVM snapshot.
Product: [Fedora] Fedora Reporter: Marina Fadeeva <astarta>
Component: xfsprogsAssignee: Eric Sandeen <esandeen>
Status: CLOSED EOL QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 35CC: esandeen
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-12-13 16:03:57 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 Marina Fadeeva 2021-12-07 11:39:00 UTC
Description of problem:
XFS v5 filesystem is not consistent inside LVM snapshot.

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


How reproducible:
Create LVM snapshot of heavily used XFs (v5) filestem. Mount/umount LVM snapshot to replay log.
run xfs_repair on umounted lvm snapshot to validate it. xfs_repair gives warnings like "clearing reflink flag on inode 2205"

Steps to Reproduce:
1. Have FC35. Run fsx to create i/o load root on filesystem:
seq 30 | parallel -j0 --halt now,done=1 ./xfstests-dev/ltp/fsx -l 10000000 testfile_{}

2. create LVM snaphot of root lvm volume:
# lvcreate -s -n root_snap -L15G /dev/mapper/fedora_fedora-root
  Logical volume "root_snap" created.

3. Mount/umount snapshot to replay log:
# mount -t xfs -o nouuid /dev/mapper/fedora_fedora-root_snap /mnt/tmp1/
# umount /mnt/tmp1

4. run xfs_repair on umounted snaphot volume:

[root@fedora ~]# xfs_repair -v /dev/mapper/fedora_fedora-root_snap
Phase 1 - find and verify superblock...
        - block cache size set to 170816 entries
Phase 2 - using internal log
        - zero log...
zero_log: head block 14909 tail block 14909
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
clearing reflink flag on inode 8475643
clearing reflink flag on inode 8475646
clearing reflink flag on inode 8475724
clearing reflink flag on inode 8475752
clearing reflink flag on inode 8492254
clearing reflink flag on inode 8492283
clearing reflink flag on inode 8492284
clearing reflink flag on inode 8492285
clearing reflink flag on inode 25295106
clearing reflink flag on inode 25295124
clearing reflink flag on inode 25295127
clearing reflink flag on inode 25295130
clearing reflink flag on inode 25295133
clearing reflink flag on inode 25295136
clearing reflink flag on inode 25295139
clearing reflink flag on inode 25295142
clearing reflink flag on inode 25295145
clearing reflink flag on inode 25314946
clearing reflink flag on inode 25314995
clearing reflink flag on inode 29112490
clearing reflink flag on inode 29112493
clearing reflink flag on inode 29112496
clearing reflink flag on inode 29112500
clearing reflink flag on inode 29112503
clearing reflink flag on inode 29112506
Phase 5 - rebuild AG headers and trees...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...

        XFS_REPAIR Summary    Tue Dec  7 14:34:17 2021

Phase           Start           End             Duration
Phase 1:        12/07 14:34:08  12/07 14:34:08
Phase 2:        12/07 14:34:08  12/07 14:34:08
Phase 3:        12/07 14:34:08  12/07 14:34:13  5 seconds
Phase 4:        12/07 14:34:13  12/07 14:34:13
Phase 5:        12/07 14:34:13  12/07 14:34:13
Phase 6:        12/07 14:34:13  12/07 14:34:17  4 seconds
Phase 7:        12/07 14:34:17  12/07 14:34:17

Total run time: 9 seconds
done
[root@fedora ~]#

Actual results:
xfs_repair gives many "clearing reflink flag on inode "

Expected results:
No warnings from xfs_repair

Additional info:
I didnt manage to reproduce such behavior with XFSv4 (crc=0 passed for mkfs.xfs)

Comment 1 Eric Sandeen 2021-12-07 19:09:11 UTC
Those messages simply indicate that an optimization is being performed - the "reflink" flag is not cleared when the last shared reference is gone. 

You won't even see them unless you are running in verbose mode.

We could maybe consider tweaking the phrase a bit more to make it clear that this is not a corruption, but as it stands, your filesystem is consistent, and this is all operating as currently designed.

Comment 2 Ben Cotton 2022-11-29 17:27:35 UTC
This message is a reminder that Fedora Linux 35 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora Linux 35 on 2022-12-13.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
'version' of '35'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, change the 'version' 
to a later Fedora Linux version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora Linux 35 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora Linux, you are encouraged to change the 'version' to a later version
prior to this bug being closed.

Comment 3 Ben Cotton 2022-12-13 16:03:57 UTC
Fedora Linux 35 entered end-of-life (EOL) status on 2022-12-13.

Fedora Linux 35 is no longer maintained, which means that it
will not receive any further security or bug fix updates. As a result we
are closing this bug.

If you can reproduce this bug against a currently maintained version of Fedora Linux
please feel free to reopen this bug against that version. Note that the version
field may be hidden. Click the "Show advanced fields" button if you do not see
the version field.

If you are unable to reopen this bug, please file a new report against an
active release.

Thank you for reporting this bug and we are sorry it could not be fixed.