From: Dave Chinner <david@fromorbit.com>
To: Jan Kara <jack@suse.cz>
Cc: Andreas Dilger <adilger@dilger.ca>,
Zheng Liu <gnehzuil.liu@gmail.com>,
linux-ext4 <linux-ext4@vger.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
xfs@oss.sgi.com, Theodore Ts'o <tytso@mit.edu>,
Dmitry Monakhov <dmonakhov@openvz.org>,
Li Xi <pkuelelixi@gmail.com>, Ben Myers <bpm@sgi.com>
Subject: Re: [RFC] A draft for making ext4 support project quota
Date: Fri, 31 Jan 2014 07:19:21 +1100 [thread overview]
Message-ID: <20140130201921.GN2212@dastard> (raw)
In-Reply-To: <20140130194224.GA22955@quack.suse.cz>
On Thu, Jan 30, 2014 at 08:42:24PM +0100, Jan Kara wrote:
> On Thu 30-01-14 11:57:10, Andreas Dilger wrote:
> > On Jan 28, 2014, at 8:48 PM, Zheng Liu <gnehzuil.liu@gmail.com> wrote:
> > > On Tue, Jan 28, 2014 at 03:35:14PM +0100, Jan Kara wrote:
> > >> On Tue 28-01-14 14:42:49, Zheng Liu wrote:
> > >>> For project quota, the key issue is how to handle link(2)/rename(2). We
> > >>> summarize the behaviour in xfs as following.
> > >>>
> > >>> *Note*
> > >>> + unaccounted dir
> > >>> x accounted dir
> > >>>
> > >>> link(2)
> > >>> -------
> > >>> + x
> > >>> + ok error (EXDEV)
> > >>> x ok error (EXDEV)
> >
> > Presumably this accounted-to-accounted link() is only an error if
> > it is between directories of two different projects?
> Yes, I understand it that way.
Correct. You can have multiple hardlinks within a project, just not
across projects.
> > >>> rename(2)
> > >>> ---------
> > >>> + x
> > >>> + ok ok
> > >>> x wrong ok
> > >>
> > >> So moving unaccounted file/dir into an accounted dir would be OK? How is
> > >> that?
> > >
> > > Actually xfs will return EXDEV error when we try to move unaccounted
> > > file/dir into an accounted dir. Then userspace tools (e.g. mv(1)) will
> > > use create(2)/read(2)/write(2) syscalls to create these files/dirs from
> > > scratch, and get the same id from their parent.
> >
> > Why wouldn't renaming an unaccounted file into an accounted directory
> > just be implemented by doing the equivalent of chown() to change the
> > project ID and setting the quota? That could avoid a HUGE amount of
> > data copying for large files.
> Well, the trouble is not so much with a file but with a directory. If you
> move an unaccounted directory in an accounted dir, you would have to
> recursively go through it and account each file. That isn't possible to do
> reliably from the kernel... And allowing files but disallowing dirs seems
> inconsistent so I'm in favor of a simple API.
Even files are problematic. Think of a file with multiple hard
links. You can't rename one of those links across to a directory
with a different project quota ID for the same reason you can't
create hard links across different project ID contexts...
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com>
To: Jan Kara <jack@suse.cz>
Cc: Andreas Dilger <adilger@dilger.ca>, Theodore Ts'o <tytso@mit.edu>,
Zheng Liu <gnehzuil.liu@gmail.com>,
xfs@oss.sgi.com, Ben Myers <bpm@sgi.com>,
Dmitry Monakhov <dmonakhov@openvz.org>,
Li Xi <pkuelelixi@gmail.com>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
linux-ext4 <linux-ext4@vger.kernel.org>
Subject: Re: [RFC] A draft for making ext4 support project quota
Date: Fri, 31 Jan 2014 07:19:21 +1100 [thread overview]
Message-ID: <20140130201921.GN2212@dastard> (raw)
In-Reply-To: <20140130194224.GA22955@quack.suse.cz>
On Thu, Jan 30, 2014 at 08:42:24PM +0100, Jan Kara wrote:
> On Thu 30-01-14 11:57:10, Andreas Dilger wrote:
> > On Jan 28, 2014, at 8:48 PM, Zheng Liu <gnehzuil.liu@gmail.com> wrote:
> > > On Tue, Jan 28, 2014 at 03:35:14PM +0100, Jan Kara wrote:
> > >> On Tue 28-01-14 14:42:49, Zheng Liu wrote:
> > >>> For project quota, the key issue is how to handle link(2)/rename(2). We
> > >>> summarize the behaviour in xfs as following.
> > >>>
> > >>> *Note*
> > >>> + unaccounted dir
> > >>> x accounted dir
> > >>>
> > >>> link(2)
> > >>> -------
> > >>> + x
> > >>> + ok error (EXDEV)
> > >>> x ok error (EXDEV)
> >
> > Presumably this accounted-to-accounted link() is only an error if
> > it is between directories of two different projects?
> Yes, I understand it that way.
Correct. You can have multiple hardlinks within a project, just not
across projects.
> > >>> rename(2)
> > >>> ---------
> > >>> + x
> > >>> + ok ok
> > >>> x wrong ok
> > >>
> > >> So moving unaccounted file/dir into an accounted dir would be OK? How is
> > >> that?
> > >
> > > Actually xfs will return EXDEV error when we try to move unaccounted
> > > file/dir into an accounted dir. Then userspace tools (e.g. mv(1)) will
> > > use create(2)/read(2)/write(2) syscalls to create these files/dirs from
> > > scratch, and get the same id from their parent.
> >
> > Why wouldn't renaming an unaccounted file into an accounted directory
> > just be implemented by doing the equivalent of chown() to change the
> > project ID and setting the quota? That could avoid a HUGE amount of
> > data copying for large files.
> Well, the trouble is not so much with a file but with a directory. If you
> move an unaccounted directory in an accounted dir, you would have to
> recursively go through it and account each file. That isn't possible to do
> reliably from the kernel... And allowing files but disallowing dirs seems
> inconsistent so I'm in favor of a simple API.
Even files are problematic. Think of a file with multiple hard
links. You can't rename one of those links across to a directory
with a different project quota ID for the same reason you can't
create hard links across different project ID contexts...
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2014-01-30 20:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-28 6:42 [RFC] A draft for making ext4 support project quota Zheng Liu
2014-01-28 6:42 ` Zheng Liu
2014-01-28 14:35 ` Jan Kara
2014-01-28 14:35 ` Jan Kara
2014-01-29 3:48 ` Zheng Liu
2014-01-29 3:48 ` Zheng Liu
2014-01-29 10:53 ` Jan Kara
2014-01-29 10:53 ` Jan Kara
2014-01-30 18:57 ` Andreas Dilger
2014-01-30 18:57 ` Andreas Dilger
2014-01-30 19:42 ` Jan Kara
2014-01-30 19:42 ` Jan Kara
2014-01-30 20:19 ` Dave Chinner [this message]
2014-01-30 20:19 ` Dave Chinner
2014-01-29 19:20 ` Darrick J. Wong
2014-01-29 19:20 ` Darrick J. Wong
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=20140130201921.GN2212@dastard \
--to=david@fromorbit.com \
--cc=adilger@dilger.ca \
--cc=bpm@sgi.com \
--cc=dmonakhov@openvz.org \
--cc=gnehzuil.liu@gmail.com \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=pkuelelixi@gmail.com \
--cc=tytso@mit.edu \
--cc=xfs@oss.sgi.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.