linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] btrfs-progs: Fixes inline ram_bytes related bugs
@ 2018-06-06  7:27 Qu Wenruo
  2018-06-06  7:27 ` [PATCH 1/6] btrfs-progs: restore: Fix wrong compressed item size for decompress() Qu Wenruo
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Qu Wenruo @ 2018-06-06  7:27 UTC (permalink / raw)
  To: linux-btrfs

The patchset can be fetched from github (*):
https://github.com/adam900710/btrfs-progs/tree/inline_ram_bytes

It's based on David's devel branch, whose HEAD is:
commit 0d1c5812e28e286648781c7b35b542311cc01aa4 (david/devel)
Author: Matthias Benkard <matthias.benkard@egym.de>
Date:   Wed Apr 25 16:34:54 2018 +0200

    btrfs-progs: mkfs: traverse_directory: Reset error code on continue

Reported-by Steve Leung <sjleung@shaw.ca>, his old btrfs (at least
offending inodes are from 2014) has inline uncompressed extent, while
its ram_bytes mismatch with item size.

Latest kernel tree check catches this bug, while we failed to detect by
dump-tree.

It turns out that btrfs-progs is doing something evil to avoid reading
ram_bytes from inline uncompressed extent.


So this patchset will address all such ram_bytes related problems.

The 1st patch is a not-so-relative fix for restore, which is using
ram_bytes for decompress. Although thanks to the compression header, we
won't read out-of-boundary, but fixing it is never a bad thing.

The 2nd patch will get rid of the evil btrfs_file_extent_inline_len()
which hides raw ram_bytes from us, and fooling us for a long long time.

The 3rd~5th patches introduce check/repair function for both original
and lowmem mode (although lowmem mode can detect it even before this patch).

The last one is the test case for it as usual.

*: Or should I just migrate to gitlab after M$ acquired github?

Qu Wenruo (6):
  btrfs-progs: restore: Fix wrong compressed item size for decompress()
  btrfs-progs: Get rid of the confusing btrfs_file_extent_inline_len()
  btrfs-progs: check/original: Detect and repair wrong inline ram_bytes
  btrfs-progs: check/lowmem: Prepare check_file_extent() to handle
    repair
  btrfs-progs: check/lowmem: Repair wrong inlien ram_bytes for
    uncompressed extent
  btrfs-progs: fsck-tests: Add test case for corrupted inline ram_bytes

 check/main.c                                  |  46 ++++++-
 check/mode-lowmem.c                           | 120 ++++++++++++++----
 check/mode-original.h                         |   1 +
 cmds-restore.c                                |   5 +-
 ctree.h                                       |  22 ----
 file.c                                        |   3 +-
 print-tree.c                                  |   4 +-
 .../offset_by_one.img                         | Bin 0 -> 3072 bytes
 .../035-inline-bad-ram-bytes/test.sh          |  11 ++
 9 files changed, 157 insertions(+), 55 deletions(-)
 create mode 100644 tests/fsck-tests/035-inline-bad-ram-bytes/offset_by_one.img
 create mode 100755 tests/fsck-tests/035-inline-bad-ram-bytes/test.sh

-- 
2.17.1


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

end of thread, other threads:[~2018-07-02 23:26 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-06  7:27 [PATCH 0/6] btrfs-progs: Fixes inline ram_bytes related bugs Qu Wenruo
2018-06-06  7:27 ` [PATCH 1/6] btrfs-progs: restore: Fix wrong compressed item size for decompress() Qu Wenruo
2018-06-06  7:27 ` [PATCH 2/6] btrfs-progs: Get rid of the confusing btrfs_file_extent_inline_len() Qu Wenruo
2018-06-06  7:27 ` [PATCH 3/6] btrfs-progs: check/original: Detect and repair wrong inline ram_bytes Qu Wenruo
2018-06-06  8:08   ` Su Yue
2018-06-06  8:19     ` Qu Wenruo
2018-06-06  8:26   ` [PATCH v2 " Qu Wenruo
2018-06-06  8:35     ` Su Yue
2018-06-06  7:27 ` [PATCH 4/6] btrfs-progs: check/lowmem: Prepare check_file_extent() to handle repair Qu Wenruo
2018-06-06  7:27 ` [PATCH 5/6] btrfs-progs: check/lowmem: Repair wrong inlien ram_bytes for uncompressed extent Qu Wenruo
2018-06-06  7:27 ` [PATCH 6/6] btrfs-progs: fsck-tests: Add test case for corrupted inline ram_bytes Qu Wenruo
2018-06-07  5:56 ` [PATCH 0/6] btrfs-progs: Fixes inline ram_bytes related bugs Qu Wenruo
2018-06-08  4:37 ` Steve Leung
2018-06-08  4:57   ` Qu Wenruo
2018-07-02 23:26   ` David Sterba
2018-07-02 23:25 ` David Sterba

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).