From: Josef Bacik <josef@redhat.com>
To: slyich@gmail.com
Cc: linux-btrfs@vger.kernel.org, Chris Mason <chris.mason@oracle.com>,
Sergei Trofimovich <slyfox@gentoo.org>
Subject: Re: [PATCH 3/4] btrfs: don't spin in shrink_delalloc if there is nothing to free
Date: Mon, 09 May 2011 12:00:28 -0400 [thread overview]
Message-ID: <4DC80F9C.10706@redhat.com> (raw)
In-Reply-To: <1304803784-23756-2-git-send-email-slyfox@gentoo.org>
On 05/07/2011 05:29 PM, slyich@gmail.com wrote:
> Observed as a large delay when --mixed filesystem is filled up.
> Test example:
> 1. create tiny --mixed FS:
> $ dd if=/dev/zero of=2G.img seek=$((2048 * 1024 * 1024 - 1)) count=1 bs=1
> $ mkfs.btrfs --mixed 2G.img
> $ mount -oloop 2G.img /mnt/ut/
> 2. Try to fill it up:
> $ dd if=/dev/urandom of=10M.file bs=10240 count=1024
> $ seq 1 256 | while read file_no; do echo $file_no; time cp 10M.file ${file_no}.copy; done
>
> Up to '200.copy' it goes fast, but when disk fills-up each -ENOSPC
> message takes 3 seconds to pop-up _every_ ENOSPC (and in usermode linux
> it's even more: 30-60 seconds!). (Maybe, time depends on kernel's timer resolution).
>
> No IO, no CPU load, just rescheduling. Some debugging revealed busy spinning
> in shrink_delalloc.
>
> Signed-off-by: Sergei Trofimovich<slyfox@gentoo.org>
> ---
> fs/btrfs/extent-tree.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
> index 9ee6bd5..9f5fdd3 100644
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -3425,6 +3425,10 @@ static int shrink_delalloc(struct btrfs_trans_handle *trans,
> if (reserved == 0)
> return 0;
>
> + /* nothing to shrink - nothing to reclaim */
> + if (root->fs_info->delalloc_bytes == 0)
> + return 0;
> +
> max_reclaim = min(reserved, to_reclaim);
>
> while (loops< 1024) {
Nice catch, you can add
Reviewed-by: Josef Bacik <josef@redhat.com>
Thanks,
Josef
next prev parent reply other threads:[~2011-05-09 16:00 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-07 21:29 [PATCH 1/4] btrfs: typo: 'btrfS' -> 'btrfs' slyich
2011-05-07 21:29 ` [PATCH 3/4] btrfs: don't spin in shrink_delalloc if there is nothing to free slyich
2011-05-09 16:00 ` Josef Bacik [this message]
2011-05-10 19:27 ` Sergei Trofimovich
2011-05-07 21:29 ` [PATCH 4/4] btrfs: fix typo 'testeing' -> 'testing' slyich
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=4DC80F9C.10706@redhat.com \
--to=josef@redhat.com \
--cc=chris.mason@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=slyfox@gentoo.org \
--cc=slyich@gmail.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.