From: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
To: Josef Bacik <jbacik@fb.com>, <cyril.scetbon@free.fr>
Cc: <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH 1/2] Btrfs: qgroup: free reserved in exceeding quota.
Date: Wed, 10 Dec 2014 16:09:17 +0800 [thread overview]
Message-ID: <5487FFAD.9090601@cn.fujitsu.com> (raw)
In-Reply-To: <54871850.3020809@fb.com>
On 12/09/2014 11:42 PM, Josef Bacik wrote:
> On 12/09/2014 06:27 AM, Dongsheng Yang wrote:
>> When we exceed quota limit in writing, we will free
>> some reserved extent when we need to drop but not free
>> account in qgroup. It means, each time we exceed quota
>> in writing, there will be some remain space in qg->reserved
>> we can not use any more. If things go on like this, the
>> all space will be ate up.
>>
>> Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
>> ---
>> fs/btrfs/extent-tree.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
>> index a84e00d..014b7f2 100644
>> --- a/fs/btrfs/extent-tree.c
>> +++ b/fs/btrfs/extent-tree.c
>> @@ -5262,8 +5262,11 @@ out_fail:
>> to_free = 0;
>> }
>> spin_unlock(&BTRFS_I(inode)->lock);
>> - if (dropped)
>> + if (dropped) {
>> + if (root->fs_info->quota_enabled)
>> + btrfs_qgroup_free(root, dropped * root->nodesize);
>
> This needs to be num_bytes + dropped * root->nodesize. Thanks,
Let me try to explain why it did not free num_bytes here.
In out_fail, we did not reserve num_bytes in qgroup successfully, then
we do not need
to free it in out_fail.
The problem this patch attempts to solve is that, when we run into
out_fail here,
we will drop a outstanding extent. That said, in out_fail here, the
extra reserved
nodesize for some extents should be freed.
Example:
1). BTRFS_I(inode)->reserved_extents: 2,
BTRFS_I(inode)->outstanding_extents: 1.
In this case, we go intobtrfs_delalloc_reserve_metadata().
outstanding_extents
will be increased at first. then
BTRFS_I(inode)->outstanding_extents is 2.
If we want to reserve space and failed. it will goto out_fail.
2). In out_failed: reserved_extents is 2, outstanding_extents is 2.
we will get a dropped of 1
from dropping_outstanding_extent(). And now,
reserved_extents:1, outstanding_extents:1.
In step 2, we just decrease the reserved_extents without freeing the
related nodesize in qgroup
at the same time. So it will cause the problem I described in changelog
which will eat the space.
Therefore, this patch here will free the nodesize related with the
dropped extents in step 2.
About the num_bytes, as we did not reserve it successfully, no need to
free it.
With my poor english, there must be something confusing in my
description. Please correct me
if anything is wrong or not-good-explained.
Thanx
Yang
>
> Josef
>
next prev parent reply other threads:[~2014-12-10 8:12 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <BA68E495-8B7B-4F0F-A64B-0413B1480B9C@free.fr>
2014-12-09 11:27 ` [PATCH 1/2] Btrfs: qgroup: free reserved in exceeding quota Dongsheng Yang
2014-12-09 11:27 ` [PATCH 2/2] Btrfs: qgroup: Introduce a may_use to account space_info->bytes_may_use Dongsheng Yang
2014-12-09 15:55 ` Josef Bacik
2014-12-10 8:09 ` Dongsheng Yang
2014-12-09 15:42 ` [PATCH 1/2] Btrfs: qgroup: free reserved in exceeding quota Josef Bacik
2014-12-10 8:09 ` Dongsheng Yang [this message]
2014-12-11 18:25 ` Josef Bacik
2014-12-12 0:44 ` Dongsheng Yang
2014-12-12 8:44 ` [PATCH v2 " Dongsheng Yang
2014-12-12 8:44 ` [PATCH v2 2/2] Btrfs: qgroup: Introduce a may_use to account space_info->bytes_may_use Dongsheng Yang
[not found] ` <549CBAB1.3070909@cn.fujitsu.com>
2014-12-26 5:43 ` Satoru Takeuchi
2014-12-26 6:49 ` Dongsheng Yang
2014-12-26 7:00 ` Dongsheng Yang
2014-12-28 2:03 ` Dongsheng Yang
2015-01-05 6:16 ` [PATCH v3 0/3] Btrfs: Enhancment for qgroup Dongsheng Yang
2015-01-05 6:16 ` [PATCH v3 1/3] Btrfs: qgroup: free reserved in exceeding quota Dongsheng Yang
2015-01-05 6:16 ` [PATCH v3 2/3] Btrfs: qgroup: Introduce a may_use to account space_info->bytes_may_use Dongsheng Yang
2015-01-05 6:16 ` [PATCH v3 3/3] Btrfs: qgroup, Account data space in more proper timings Dongsheng Yang
2015-01-07 0:49 ` [PATCH v3 0/3] Btrfs: Enhancment for qgroup Satoru Takeuchi
2015-01-08 3:53 ` Dongsheng Yang
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=5487FFAD.9090601@cn.fujitsu.com \
--to=yangds.fnst@cn.fujitsu.com \
--cc=cyril.scetbon@free.fr \
--cc=jbacik@fb.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).