From: Arne Jansen <sensille@gmx.net>
To: Josef Bacik <jbacik@fusionio.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] Btrfs: increase the size of the free space cache
Date: Tue, 07 Aug 2012 07:44:51 +0200 [thread overview]
Message-ID: <5020AB53.80001@gmx.net> (raw)
In-Reply-To: <1344282398-1453-1-git-send-email-jbacik@fusionio.com>
On 08/06/2012 09:46 PM, Josef Bacik wrote:
> Arne was complaining about the space cache having mismatching generation
> numbers when debugging a deadlock. This is because we can run out of space
> in our preallocated range for our space cache if you have a pretty
> fragmented amount of space in your pinned space. So just increase the
> amount of space we preallocate for space cache so we can be sure to have
> enough space. This will only really affect data ranges since their the only
> chunks that end up larger than 256MB. Thanks,
>
> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Arne does not complain anymore.
Tested-by: Arne Jansen <sensille@gmx.net>
> ---
> fs/btrfs/extent-tree.c | 15 +++++++--------
> 1 files changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
> index 45c69c4..55d33b8 100644
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -3007,17 +3007,16 @@ again:
> }
> spin_unlock(&block_group->lock);
>
> - num_pages = (int)div64_u64(block_group->key.offset, 1024 * 1024 * 1024);
> + /*
> + * Try to preallocate enough space based on how big the block group is.
> + * Keep in mind this has to include any pinned space which could end up
> + * taking up quite a bit since it's not folded into the other space
> + * cache.
> + */
> + num_pages = (int)div64_u64(block_group->key.offset, 256 * 1024 * 1024);
> if (!num_pages)
> num_pages = 1;
>
> - /*
> - * Just to make absolutely sure we have enough space, we're going to
> - * preallocate 12 pages worth of space for each block group. In
> - * practice we ought to use at most 8, but we need extra space so we can
> - * add our header and have a terminator between the extents and the
> - * bitmaps.
> - */
> num_pages *= 16;
> num_pages *= PAGE_CACHE_SIZE;
>
>
prev parent reply other threads:[~2012-08-07 5:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-06 19:46 [PATCH] Btrfs: increase the size of the free space cache Josef Bacik
2012-08-07 5:44 ` Arne Jansen [this message]
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=5020AB53.80001@gmx.net \
--to=sensille@gmx.net \
--cc=jbacik@fusionio.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.