From: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
To: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 2/2] btrfs-progs: qgroup: allow user to clear some limitation on qgroup.
Date: Wed, 03 Jun 2015 17:40:28 +0900 [thread overview]
Message-ID: <556EBD7C.8000603@jp.fujitsu.com> (raw)
In-Reply-To: <1433314653-548-3-git-send-email-yangds.fnst@cn.fujitsu.com>
On 2015/06/03 15:57, Dongsheng Yang wrote:
> Currently, we can not clear a limitation on a qgroup. Although
> there is a 'none' choice provided to user to do it, it does not
> work well.
>
> It does not set the flag which user want to clear, then kernel
> will never know what the user want to do at all.
>
> *Without this commit*
> # ./btrfs qgroup show -re /mnt
> qgroupid rfer excl max_rfer max_excl
> -------- ---- ---- -------- --------
> 0/5 2.19GiB 2.19GiB 5.00GiB none
> 0/257 100.02MiB 100.02MiB none none
> # ./btrfs qgroup limit none /mnt
> # ./btrfs qgroup show -re /mnt
> qgroupid rfer excl max_rfer max_excl
> -------- ---- ---- -------- --------
> 0/5 2.19GiB 2.19GiB 5.00GiB none
> 0/257 100.02MiB 100.02MiB none none
>
> This patch will set the flag user want to clear and pass a
> size=-1 to kernel. Then kernel will clear it correctly.
>
> *With this commit*
> # ./btrfs qgroup show -re /mnt
> qgroupid rfer excl max_rfer max_excl
> -------- ---- ---- -------- --------
> 0/5 2.19GiB 2.19GiB 5.00GiB none
> 0/257 100.02MiB 100.02MiB none none
> # ./btrfs qgroup limit none /mnt
> # ./btrfs qgroup show -re /mnt
> qgroupid rfer excl max_rfer max_excl
> -------- ---- ---- -------- --------
> 0/5 2.19GiB 2.19GiB none none
> 0/257 100.02MiB 100.02MiB none none
>
> Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
> Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
> ---
> cmds-qgroup.c | 23 +++++++++++------------
> 1 file changed, 11 insertions(+), 12 deletions(-)
>
> diff --git a/cmds-qgroup.c b/cmds-qgroup.c
> index b073250..00cc089 100644
> --- a/cmds-qgroup.c
> +++ b/cmds-qgroup.c
> @@ -110,9 +110,10 @@ static int parse_limit(const char *p, unsigned long long *s)
> {
> char *endptr;
> unsigned long long size;
> + unsigned long long CLEAR_VALUE = -1;
Even if a negative value is specified, it doesn't become an error...
So, it doesn't make an error of the following command.
# btrfs qg lim -- -1 sub1
# btrfs qg show -prce /test1
qgroupid rfer excl max_rfer max_excl parent child
-------- ---- ---- -------- -------- ------ -----
0/5 16.00KiB 16.00KiB none none --- ---
0/259 8.86GiB 7.88GiB none none --- ---
# btrfs qg lim -- -2 sub1
# btrfs qg show -prce /test1
qgroupid rfer excl max_rfer max_excl parent child
-------- ---- ---- -------- -------- ------ -----
0/5 16.00KiB 16.00KiB none none --- ---
0/259 8.86GiB 7.88GiB 16.00EiB none --- ---
Otherwise OK,
Tested-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
>
> if (strcasecmp(p, "none") == 0) {
> - *s = 0;
> + *s = CLEAR_VALUE;
> return 1;
> }
> size = strtoull(p, &endptr, 10);
> @@ -406,17 +407,15 @@ static int cmd_qgroup_limit(int argc, char **argv)
> }
>
> memset(&args, 0, sizeof(args));
> - if (size) {
> - if (compressed)
> - args.lim.flags |= BTRFS_QGROUP_LIMIT_RFER_CMPR |
> - BTRFS_QGROUP_LIMIT_EXCL_CMPR;
> - if (exclusive) {
> - args.lim.flags |= BTRFS_QGROUP_LIMIT_MAX_EXCL;
> - args.lim.max_exclusive = size;
> - } else {
> - args.lim.flags |= BTRFS_QGROUP_LIMIT_MAX_RFER;
> - args.lim.max_referenced = size;
> - }
> + if (compressed)
> + args.lim.flags |= BTRFS_QGROUP_LIMIT_RFER_CMPR |
> + BTRFS_QGROUP_LIMIT_EXCL_CMPR;
> + if (exclusive) {
> + args.lim.flags |= BTRFS_QGROUP_LIMIT_MAX_EXCL;
> + args.lim.max_exclusive = size;
> + } else {
> + args.lim.flags |= BTRFS_QGROUP_LIMIT_MAX_RFER;
> + args.lim.max_referenced = size;
> }
>
> if (argc - optind == 2) {
>
next prev parent reply other threads:[~2015-06-03 8:40 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-03 6:57 [PATCH 1/2] btrfs-progs: qgroup: show 'none' when we did not limit it on this qgroup Dongsheng Yang
2015-06-03 6:57 ` [PATCH] btrfs: qgroup: allow user to clear the limitation on qgroup Dongsheng Yang
2015-06-03 8:18 ` Tsutomu Itoh
2015-06-03 6:57 ` [PATCH 2/2] btrfs-progs: qgroup: allow user to clear some " Dongsheng Yang
2015-06-03 8:40 ` Tsutomu Itoh [this message]
2015-06-03 8:41 ` Dongsheng Yang
2015-06-05 16:37 ` David Sterba
2015-06-03 8:14 ` [PATCH 1/2] btrfs-progs: qgroup: show 'none' when we did not limit it on this qgroup Tsutomu Itoh
2015-06-05 16:36 ` 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=556EBD7C.8000603@jp.fujitsu.com \
--to=t-itoh@jp.fujitsu.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=yangds.fnst@cn.fujitsu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox