Thread (8 messages) 8 messages, 5 authors, 2014-01-30

Re: [RFC] A draft for making ext4 support project quota

From: Jan Kara <jack@suse.cz>
Date: 2014-01-30 19:42:24
Also in: linux-fsdevel, linux-xfs

On Thu 30-01-14 11:57:10, Andreas Dilger wrote:
On Jan 28, 2014, at 8:48 PM, Zheng Liu [off-list ref] wrote:
quoted
On Tue, Jan 28, 2014 at 03:35:14PM +0100, Jan Kara wrote:
quoted
On Tue 28-01-14 14:42:49, Zheng Liu wrote:
quoted
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.
quoted
quoted
quoted
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.

								Honza
-- 
Jan Kara [off-list ref]
SUSE Labs, CR
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help