All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Ahrens <Matthew.Ahrens@sun.com>
To: lustre-devel@lists.lustre.org
Subject: [Lustre-devel] Moving forward on Quotas
Date: Wed, 04 Jun 2008 16:50:54 -0700	[thread overview]
Message-ID: <48472A5E.501@sun.com> (raw)
In-Reply-To: <18500.63385.570359.425911@gargle.gargle.HOWL>

Nikita Danilov wrote:
> Matthew Ahrens writes:
>  > Nikita Danilov wrote:
>  > > Jeff Bonwick writes:
>  > >  > I'd suggest working with Matt Ahrens on this.
>  > > 
>  > > Hello,
>  > > 
>  > > we were discussing recently what is needed from the DMU to implement quotas
>  > > and other forms of space accounting. Our basic premise is that it is desirable
>  > > to keep DMU part of the quota support at minimum, and to implement only
>  > > mechanism here, leaving policy to the upper layers.
>  > 
>  > I agree with this premise.  However, your proposed implementation (especially 
>  > the asynchronous update mechanism and associated pending file) seems 
>  > unnecessarily complicated.
>  > 
>  > I would suggest that we simply update a "database" (eg. ZAP object or sparse 
>  > array) of userid -> space usage from syncing context when the space is 
>  > allocated/freed (ie, dsl_dataset_block_{born,kill}).  I believe that the 
>  > problems this presents[*] will be more tractable than the method you outlined.
> 
> Indeed, this solution is much simpler, and it was considered
> initially. I see following drawbacks in it:

Agreed, those are possible drawbacks, depending on the implementation.  For 
example, if the DB object is stored in the user's objset (which is preferable 
for other reasons) then I suspect that the two drawbacks you mention below 
will be no worse than in your proposal.

--matt

>      - a notion of a user identifier (or some opaque identifier) has to
>        be introduced in DMU interface. DMU doesn't interpret these
>        identifiers in any way, except for using them as keys in a space
>        usage database. A set of these identifiers has to be passed to
>        every DMU entry point that might result in space allocation (a
>        set is needed because there are group quotas, and to keep
>        interface more or less generic).
> 
>      - an implementation of chown, chgrp, and distributed quota require
>        DMU user to modify this database. Also, an interface to iterate
>        over this database is most likely needed for things like
>        distributed fsck, and user level quote reporting tools. It seems
>        that it would be quite difficult to encapsulate such a database
>        within DMU.
> 
>  > 
>  > --matt
>  > 
>  > [*] eg, if the DB object is stored in the user's objset, then updating it in 
>  > syncing context may be problematic.  if it is stored in the MOS, carrying it 
> 
> The proposal was to update the database in the context of currently open
> transaction group. That is, when transaction group T has just committed,
> commit call-back is invoked and the database is updated in the context
> of some transaction belonging to transaction group T + 2 (T + 1 being in
> sync). It is because of this that pending file has to keep track of
> objects from two last transaction groups.
> 
>  > along when doing snapshot operations will be painful (snapshot, clone, send, 
>  > recv, rollback, etc).
> 
> Nikita.

  reply	other threads:[~2008-06-04 23:50 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <18490.63940.619731.992500@gargle.gargle.HOWL>
2008-05-26 23:28 ` [Lustre-devel] Moving forward on Quotas Peter Braam
2008-05-28  8:06   ` Johann Lombardi
2008-06-01  2:32     ` Peter Braam
2008-06-02 12:22       ` Johann Lombardi
2008-06-02 23:24       ` Andreas Dilger
2008-06-03  8:49         ` Landen tian
2008-06-04  1:24           ` Peter Braam
2008-06-04  7:05             ` Landen tian
2008-06-04  8:26         ` Johann Lombardi
2008-05-28 14:29   ` Ricardo M. Correia
2008-05-28 14:54     ` Nikita Danilov
2008-05-28 15:14       ` Ricardo M. Correia
2008-05-28 16:22         ` Nikita Danilov
2008-05-28 17:05           ` Ricardo M. Correia
2008-05-28 20:06             ` Nikita Danilov
2008-05-28 21:07               ` Ricardo M. Correia
2008-05-28 21:11                 ` Nikita Danilov
2008-05-28 21:33                   ` Ricardo M. Correia
2008-05-29  8:39                     ` Nikita Danilov
     [not found]                       ` <18496.11672.844774.815457@gargle.gargle.HOWL>
2008-05-31 15:31                         ` Ricardo M. Correia
2008-05-31 15:49                           ` Ricardo M. Correia
     [not found]                         ` <1212247447.21348.70.camel@localhost>
2008-05-31 16:19                           ` Nikita Danilov
2008-05-31 17:19                             ` Ricardo M. Correia
2008-05-31 19:11                               ` Nikita Danilov
2008-06-01  2:36                 ` Peter Braam
2008-06-01  3:17                   ` Mike Shapiro
2008-06-01  2:26       ` Peter Braam
2008-06-01  4:53         ` Jeff Bonwick
2008-06-01 13:58           ` Nikita Danilov
2008-06-03  0:50             ` Matthew Ahrens
2008-06-03  7:49               ` Nikita Danilov
2008-06-04 23:50                 ` Matthew Ahrens [this message]
2008-05-28 15:24   ` Nikita Danilov
2008-05-31 10:25     ` Peter Braam
     [not found] <92825021-D566-4805-9297-5EFBD3260D73@Sun.COM>
2008-06-01  2:44 ` Peter Braam
     [not found] <20080605083957.GQ6283@lore>
2008-06-05 11:09 ` Peter Braam
2008-06-05 12:27   ` Johann Lombardi
2008-06-05 13:45     ` Peter Braam
2008-06-06  7:33       ` Johann Lombardi
2008-06-06 12:21         ` Peter Braam
2008-06-09  8:52           ` Yong Fan
2008-06-09 15:37             ` Peter Braam
2008-06-09 16:09               ` Yong Fan
2008-06-10 13:54           ` Yong Fan
2008-06-10 16:51             ` Peter Braam

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=48472A5E.501@sun.com \
    --to=matthew.ahrens@sun.com \
    --cc=lustre-devel@lists.lustre.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 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.