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