All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arne Jansen <sensille@gmx.net>
To: Shilong Wang <wangshilong1991@gmail.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: about btrfs quota issues
Date: Mon, 11 Mar 2013 14:16:21 +0100	[thread overview]
Message-ID: <513DD925.5040106@gmx.net> (raw)
In-Reply-To: <CAP9B-Qkzy=Q+Lh5zeH7LhgQUQuEa4DPubku6cTr4DEuVxu1Swg@mail.gmail.com>

On 10.03.2013 05:21, Shilong Wang wrote:
> Hello, Arne
> 
>           Steps to reproduce:
> 
> 
>                 mkfs.btrfs <disk>
>                 mount <disk> <mnt>
>                 btrfs quota enable <mnt>
> 
>                 btrfs sub create <mnt>/sub
>                 btrfs qgroup create 1/1 <mnt>
>                 btrfs qgroup assign sub_qgroupid 1/1 <mnt>
> 
> 
>                 dd if=/dev/zero of=<mnt>/sub/data bs=1M count=1
>                 sync
>                 btrfs qgroup show  <mnt>
>                 #until now, every thing goes well, however, if snapshot happens
>                 #the quota accounting will go wrong
> 
>                btrfs sub snapshot <mnt>/sub <mnt>/snap
>                sync
>                btrfs qgroup show <mnt>
>                #the accounting information of group(1/1) is not expected
>                #here exclusive of group (1/1) do not change as expected.
> 
> So i took a close look at the algorithm of quota accounting, the 3
> steps of algorithm don't
> consider some cases like the above example.
> 
> In fact, i think you try to put some work on users, especially when
> snapshot happens.
> It is complex to track all the group's accounting when having
> snapshots..See the following
> commands.
> 
> btrfs sub snapshot -c src_qgroupid:dst_qgroupid  <mnt>
> btrfs sub snapshot  -x src_qgroupid:dst_qgroupid <mnt>
> 
> 
> Are these commands designed for some cases regarding to
> snapshots/subvolume cases?

Yes, these commands would have helped you in the above case. You need to
create an empty qgroup and copy the exclusive from there on snapshot
creation.

> If so, i think it really confusing and too complex for users to do
> such work, is't it?...

It is complex. That is why I always point anyone asking to do some work
on btrfs or qgroups to writing an enhanced interface to simplify this
task for the user. I don't think the kernel should handle this.
And that's why I took the effort to write a pdf to explain the
concepts :)
But the current interface is not only complex, it also is very powerful.
You can solve problems with it that no other quota system I know of can
solve.

> 
> BTW, i have a question about the function btrfs_qgroup_inherit(),
> when copying exclusive value from src_qgroup to dst_qgroup:
> 
>        dst_qgroup->exclusive = src_qgroup->exclusive + level_size
> 
> while copying referenced value from src_qgroup to dot_qgroup:
> 
>        dst_qgroup->referenced = src_qgroup->referenced -level_size
> 
> I can't really figure out...~_~

level_size is just a small correction for the space the tree root
occupies. The tree root is never shared between subvolumes.

-Arne

> 
> Thanks,
> Wang


  parent reply	other threads:[~2013-03-11 13:16 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-10  4:21 about btrfs quota issues Shilong Wang
2013-03-11 11:04 ` Wang Shilong
2013-03-11 13:16 ` Arne Jansen [this message]
2013-03-11 13:31   ` Wang Shilong
2013-03-11 13:38     ` Arne Jansen
2013-03-11 14:15       ` Wang Shilong
2013-03-11 14:21         ` Arne Jansen
2013-03-11 14:35           ` Wang Shilong
2013-03-11 14:45             ` Arne Jansen
  -- strict thread matches above, loose matches on Subject: below --
2013-03-11 14:59 Wang

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=513DD925.5040106@gmx.net \
    --to=sensille@gmx.net \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=wangshilong1991@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.