All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wang Yugui <wangyugui@e16-tech.com>
To: Qu Wenruo <wqu@suse.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] btrfs-progs: fix false alert on tree block crossing 64K page boundary
Date: Sat, 06 Mar 2021 10:01:48 +0800	[thread overview]
Message-ID: <20210306100148.EBAE.409509F4@e16-tech.com> (raw)
In-Reply-To: <20210306004019.18528-1-wqu@suse.com>

Hi,

It passed the test. Thanks a lot.

Best Regards
Wang Yugui (wangyugui@e16-tech.com)
2021/03/06

> [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



  reply	other threads:[~2021-03-06  2:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-06  0:40 [PATCH] btrfs-progs: fix false alert on tree block crossing 64K page boundary Qu Wenruo
2021-03-06  2:01 ` Wang Yugui [this message]
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=20210306100148.EBAE.409509F4@e16-tech.com \
    --to=wangyugui@e16-tech.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=wqu@suse.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.