From: Qu Wenruo <quwenruo@cn.fujitsu.com>
To: David Sterba <dsterba@suse.com>, <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH] btrfs-progs: fix cross stripe boundary check
Date: Fri, 11 Sep 2015 08:27:17 +0800 [thread overview]
Message-ID: <55F21FE5.2030008@cn.fujitsu.com> (raw)
In-Reply-To: <1441897376-5572-1-git-send-email-dsterba@suse.com>
David Sterba wrote on 2015/09/10 17:02 +0200:
> Commit 854437ca3c228d8ab3eb24d2efc1c21b5d56a635 ("btrfs-progs:
> extent-tree: avoid allocating tree block that crosses stripe boundary")
> does not work for 64k nodesize. Due to an off-by-one error, all queries
> to check_crossing_stripes will return that all extents cross a stripe
> and this will lead to a false ENOSPC. This crashes later
>
> $ ./mkfs.btrfs -n 64k image
>
> ./mkfs.btrfs(btrfs_reserve_extent+0xb77)[0x417f38]
> ./mkfs.btrfs(btrfs_alloc_free_block+0x57)[0x417fe0]
> ./mkfs.btrfs(__btrfs_cow_block+0x163)[0x408eb7]
> ./mkfs.btrfs(btrfs_cow_block+0xd0)[0x4097c4]
> ./mkfs.btrfs(btrfs_search_slot+0x16f)[0x40be4d]
> ./mkfs.btrfs(btrfs_insert_empty_items+0xc0)[0x40d5f9]
> ./mkfs.btrfs(btrfs_insert_item+0x99)[0x40da5f]
> ./mkfs.btrfs(btrfs_make_block_group+0x4d)[0x41705c]
> ./mkfs.btrfs(main+0xeef)[0x434b56]
>
> CC: Qu Wenruo <quwenruo@cn.fujitsu.com>
> Signed-off-by: David Sterba <dsterba@suse.com>
Nice one, yep, my fault.
BTW, any idea to add mkfs test?
Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Thanks,
Qu
> ---
> volumes.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/volumes.h b/volumes.h
> index f7761311e8ce..4ecb99314a0c 100644
> --- a/volumes.h
> +++ b/volumes.h
> @@ -156,7 +156,7 @@ struct map_lookup {
> static inline int check_crossing_stripes(u64 start, u64 len)
> {
> return (start / BTRFS_STRIPE_LEN) !=
> - ((start + len) / BTRFS_STRIPE_LEN);
> + ((start + len - 1) / BTRFS_STRIPE_LEN);
> }
>
> int __btrfs_map_block(struct btrfs_mapping_tree *map_tree, int rw,
>
next prev parent reply other threads:[~2015-09-11 0:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-10 15:02 [PATCH] btrfs-progs: fix cross stripe boundary check David Sterba
2015-09-11 0:27 ` Qu Wenruo [this message]
2015-09-11 14:52 ` David Sterba
2015-09-11 13:24 ` Holger Hoffstätte
[not found] ` <CAHji1518hEv2_H08ucBYNmvGA2qA=fLs4J+FAFSXEHWv5G8KUA@mail.gmail.com>
2015-09-11 14:45 ` 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=55F21FE5.2030008@cn.fujitsu.com \
--to=quwenruo@cn.fujitsu.com \
--cc=dsterba@suse.com \
--cc=linux-btrfs@vger.kernel.org \
/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.