From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Cc: Wang Yugui <wangyugui@e16-tech.com>
Subject: [PATCH] btrfs-progs: fix false alert on tree block crossing 64K page boundary
Date: Sat, 6 Mar 2021 08:40:19 +0800 [thread overview]
Message-ID: <20210306004019.18528-1-wqu@suse.com> (raw)
[BUG]
When btrfs-check is executed on even newly created fs, it can report
tree blocks crossing 64K page boundary like this:
Opening filesystem to check...
Checking filesystem on /dev/test/test
UUID: 80d734c8-dcbc-411b-9623-a10bd9e7767f
[1/7] checking root items
[2/7] checking extents
WARNING: tree block [30523392, 30539776) crosses 64K page boudnary, may cause problem for 64K page system
[3/7] checking free space cache
[4/7] checking fs roots
[5/7] checking only csums items (without verifying data)
[6/7] checking root refs
[7/7] checking quota groups skipped (not enabled on this FS)
found 131072 bytes used, no error found
total csum bytes: 0
total tree bytes: 131072
total fs tree bytes: 32768
total extent tree bytes: 16384
btree space waste bytes: 125199
file data blocks allocated: 0
referenced 0
[CAUSE]
Tree block [30523392, 30539776) is at the last 16K slot of page.
As 30523392 % 65536 = 49152, and 30539776 % 65536 = 0.
The cross boundary check is using exclusive end, which causes false
alerts.
[FIX]
Use inclusive end to do the cross 64K boundary check.
Reported-by: Wang Yugui <wangyugui@e16-tech.com>
Fixes: fc38ae7f4826 ("btrfs-progs: check: detect and warn about tree blocks crossing 64K page boundary")
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
check/mode-common.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/check/mode-common.h b/check/mode-common.h
index 8fdeb7f6be0a..3107b00c48bf 100644
--- a/check/mode-common.h
+++ b/check/mode-common.h
@@ -186,7 +186,7 @@ int get_extent_item_generation(u64 bytenr, u64 *gen_ret);
static inline void btrfs_check_subpage_eb_alignment(u64 start, u32 len)
{
if (start / BTRFS_MAX_METADATA_BLOCKSIZE !=
- (start + len) / BTRFS_MAX_METADATA_BLOCKSIZE)
+ (start + len - 1) / BTRFS_MAX_METADATA_BLOCKSIZE)
warning(
"tree block [%llu, %llu) crosses 64K page boudnary, may cause problem for 64K page system",
start, start + len);
--
2.30.1
next reply other threads:[~2021-03-06 0:41 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-06 0:40 Qu Wenruo [this message]
2021-03-06 2:01 ` [PATCH] btrfs-progs: fix false alert on tree block crossing 64K page boundary Wang Yugui
2021-03-09 14:24 ` David Sterba
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210306004019.18528-1-wqu@suse.com \
--to=wqu@suse.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=wangyugui@e16-tech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.