All of lore.kernel.org
 help / color / mirror / Atom feed
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) {
> 



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