All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] btrfs-progs: convert: fix the invalid regular extents for symbol links
@ 2024-09-05  1:13 Qu Wenruo
  2024-09-05  1:13 ` [PATCH v2 1/4] btrfs-progs: convert: fix inline extent size for symbol link Qu Wenruo
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Qu Wenruo @ 2024-09-05  1:13 UTC (permalink / raw)
  To: linux-btrfs

[CHANGELOG]
v2:
- Fix the words "symbol link" to "symbolic link"

- Split the inline extent size limits into two different ones
  One for symbolic links, as they are limited by PATH_MAX - 1.
  The other one for regular data inlined extents.
  They should be no larger than sectorsize - 1.

  Furthremore, both will also be limited by the node size.

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
    symbolic links
  btrfs-progs: check/lowmem: detect invalid file extents for symbolic
    links
  btrfs-progs: convert-tests: add a test case to verify large symbolic
    link handling

 check/main.c                                  |  7 +++
 check/mode-lowmem.c                           | 44 +++++++++++++++++++
 convert/source-ext2.c                         | 29 +++++++++---
 convert/source-reiserfs.c                     | 10 ++++-
 kernel-shared/file-item.c                     |  6 +++
 kernel-shared/file-item.h                     | 18 ++++++++
 .../027-large-symbol-link/test.sh             | 27 ++++++++++++
 7 files changed, 133 insertions(+), 8 deletions(-)
 create mode 100755 tests/convert-tests/027-large-symbol-link/test.sh

--
2.46.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-09-05  1:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-05  1:13 [PATCH v2 0/4] btrfs-progs: convert: fix the invalid regular extents for symbol links Qu Wenruo
2024-09-05  1:13 ` [PATCH v2 1/4] btrfs-progs: convert: fix inline extent size for symbol link Qu Wenruo
2024-09-05  1:13 ` [PATCH v2 2/4] btrfs-progs: check/original: detect invalid file extent items for symbolic links Qu Wenruo
2024-09-05  1:13 ` [PATCH v2 3/4] btrfs-progs: check/lowmem: detect invalid file extents " Qu Wenruo
2024-09-05  1:13 ` [PATCH v2 4/4] btrfs-progs: convert-tests: add a test case to verify large symbolic link handling Qu Wenruo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.