mbox series

[0/4] btrfs-progs: convert: fix the invalid regular extents for symbol links

Message ID cover.1725348299.git.wqu@suse.com (mailing list archive)
Headers show
Series btrfs-progs: convert: fix the invalid regular extents for symbol links | expand

Message

Qu Wenruo Sept. 3, 2024, 7:28 a.m. UTC
Test case btrfs/012 fails randomly after the rework to use fsstress to
populate the fs.

It turns out that, if fsstress creates a symbol link whose target is
4095 bytes (at the max size limit), btrfs-convert will create a regular
extent instead of the expected inline one.

This regular extent for symbol link inodes will be rejected by kernel,
resulting test case failure.

The reason that btrfs-convert created such regular extent is,
btrfs-convert accidentally added one byte for the terminating NUL,
enlarge the should-be inlined file extent to be a regular one.

The first patch will fix the bug.
Then two patches to enahnce btrfs-check to detect the error (regular and
lowmem mode)
Eventually a dedicated test case for btrfs-convert, so in the future we
won't cause the problem again.

Qu Wenruo (4):
  btrfs-progs: convert: fix inline extent size for symbol link
  btrfs-progs: check/original: detect invalid file extent items for
    symbol links
  btrfs-progs: check/lowmem: detect invalid file extents for symbol
    links
  btrfs-progs: convert-tests: add a test case to verify large symbol
    link handling

 check/main.c                                  |  7 +++
 check/mode-lowmem.c                           | 44 +++++++++++++++++++
 convert/source-ext2.c                         | 12 +++--
 convert/source-reiserfs.c                     |  4 +-
 kernel-shared/file-item.c                     |  3 ++
 .../027-large-symbol-link/test.sh             | 33 ++++++++++++++
 6 files changed, 98 insertions(+), 5 deletions(-)
 create mode 100755 tests/convert-tests/027-large-symbol-link/test.sh

--
2.46.0