linux-btrfs.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).