Re: [PATCHSET v24.0 0/3] xfsprogs: fix rmap btree key flag handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 05, 2023 at 08:36:06AM -0700, Darrick J. Wong wrote:
> Hi all,
> 
> This series fixes numerous flag handling bugs in the rmapbt key code.
> The most serious transgression is that key comparisons completely strip
> out all flag bits from rm_offset, including the ones that participate in
> record lookups.  The second problem is that for years we've been letting
> the unwritten flag (which is an attribute of a specific record and not
> part of the record key) escape from leaf records into key records.
> 
> The solution to the second problem is to filter attribute flags when
> creating keys from records, and the solution to the first problem is to
> preserve *only* the flags used for key lookups.  The ATTR and BMBT flags
> are a part of the lookup key, and the UNWRITTEN flag is a record
> attribute.
> 
> This has worked for years without generating user complaints because
> ATTR and BMBT extents cannot be shared, so key comparisons succeed
> solely on rm_startblock.  Only file data fork extents can be shared, and
> those records never set any of the three flag bits, so comparisons that
> dig into rm_owner and rm_offset work just fine.
> 
> A filesystem written with an unpatched kernel and mounted on a patched
> kernel will work correctly because the ATTR/BMBT flags have been
> conveyed into keys correctly all along, and we still ignore the
> UNWRITTEN flag in any key record.  This was what doomed my previous
> attempt to correct this problem in 2019.
> 
> A filesystem written with a patched kernel and mounted on an unpatched
> kernel will also work correctly because unpatched kernels ignore all
> flags.
> 
> With this patchset applied, the scrub code gains the ability to detect
> rmap btrees with incorrectly set attr and bmbt flags in the key records.
> After three years of testing, I haven't encountered any problems.
> Online scrub is amended to recommend rebuilding of rmap btrees with the
> unwritten flag set in key records.
> 
> The xfsprogs counterpart to this series amends xfs_repair to report key
> records with the unwritten flag bit set, just prior to rebuilding the
> rmapbt.  It also exposes the bit via xfs_db to enable testing back and
> forth.
> 
> If you're going to start using this mess, you probably ought to just
> pull from my git trees, which are linked below.
> 
> This is an extraordinary way to destroy everything.  Enjoy!
> Comments and questions are, as always, welcome.

Looks good, will test:

Reviewed-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx>

> 
> --D
> 
> kernel git tree:
> https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=rmap-btree-fix-key-handling
> 
> xfsprogs git tree:
> https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=rmap-btree-fix-key-handling
> ---
>  db/btblock.c  |    4 ++++
>  repair/scan.c |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 63 insertions(+), 1 deletion(-)
> 



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux