All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
@ 2010-04-28 13:24 Nikanth Karthikesan
  2010-04-28 16:15 ` Coly Li
  0 siblings, 1 reply; 23+ messages in thread
From: Nikanth Karthikesan @ 2010-04-28 13:24 UTC (permalink / raw)
  To: Alexander Viro
  Cc: linux-fsdevel, Theodore Ts'o, Andreas Dilger, linux-ext4,
	Andrew Morton, Eelis

Prevent creation of files larger than RLIMIT_FSIZE using fallocate.

Currently using posix_fallocate one can bypass an RLIMIT_FSIZE limit
and create a file larger than the limit. Add a check for new size in
the fallocate system call.

File-systems supporting fallocate such as ext4 are affected by this
bug. 

Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>
Reported-by: Eelis - <opensuse.org@contacts.eelis.net>

---

diff --git a/fs/open.c b/fs/open.c
index 74e5cd9..95ce069 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -412,10 +412,14 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
 	if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
 		return -ENODEV;
 
-	/* Check for wrap through zero too */
-	if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0))
+	/* Check for wrap through zero */
+	if (offset+len < 0)
 		return -EFBIG;
 
+	ret = inode_newsize_ok(inode, (offset + len));
+	if (ret)
+		return ret;
+
 	if (!inode->i_op->fallocate)
 		return -EOPNOTSUPP;
 

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-04-28 13:24 [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate Nikanth Karthikesan
@ 2010-04-28 16:15 ` Coly Li
       [not found]   ` <201004291014.07194.knikanth@suse.de>
  0 siblings, 1 reply; 23+ messages in thread
From: Coly Li @ 2010-04-28 16:15 UTC (permalink / raw)
  To: Nikanth Karthikesan
  Cc: Alexander Viro, linux-fsdevel, Theodore Ts'o, Andreas Dilger,
	linux-ext4, Andrew Morton, Eelis



On 04/28/2010 09:24 PM, Nikanth Karthikesan Wrote:
> Prevent creation of files larger than RLIMIT_FSIZE using fallocate.
> 
> Currently using posix_fallocate one can bypass an RLIMIT_FSIZE limit
> and create a file larger than the limit. Add a check for new size in
> the fallocate system call.
> 
> File-systems supporting fallocate such as ext4 are affected by this
> bug. 
> 
> Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>
> Reported-by: Eelis - <opensuse.org@contacts.eelis.net>
> 
> ---
> 
> diff --git a/fs/open.c b/fs/open.c
> index 74e5cd9..95ce069 100644
> --- a/fs/open.c
> +++ b/fs/open.c
> @@ -412,10 +412,14 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
>  	if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
>  		return -ENODEV;
>  
> -	/* Check for wrap through zero too */
> -	if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0))
> +	/* Check for wrap through zero */
> +	if (offset+len < 0)
>  		return -EFBIG;
>  
> +	ret = inode_newsize_ok(inode, (offset + len));
> +	if (ret)
> +		return ret;
> +
>  	if (!inode->i_op->fallocate)
>  		return -EOPNOTSUPP;
>  

Hi Nikanth,

>From definition of inode_newsize_ok(), it says,
 64 /**
 65  * inode_newsize_ok - may this inode be truncated to a given size
 66  * @inode:      the inode to be truncated
 67  * @offset:     the new size to assign to the inode
 68  * @Returns:    0 on success, -ve errno on failure
 69  *
 70  * inode_newsize_ok will check filesystem limits and ulimits to check that the
 71  * new inode size is within limits. inode_newsize_ok will also send SIGXFSZ
 72  * when necessary. Caller must not proceed with inode size change if failure is
 73  * returned. @inode must be a file (not directory), with appropriate
 74  * permissions to allow truncate (inode_newsize_ok does NOT check these
 75  * conditions).
 76  *
 77  * inode_newsize_ok must be called with i_mutex held.
 78  */

In execution path of do_fallocate(), it seems no i_mutex held, and inode might be directory. Using inode_newsize_ok()
might be confused ?

How about this one ?

 fs/open.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/fs/open.c b/fs/open.c
index 74e5cd9..24d75a4 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -383,6 +383,7 @@ SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64);
 int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
 {
 	struct inode *inode = file->f_path.dentry->d_inode;
+	unsigned long limit;
 	long ret;

 	if (offset < 0 || len <= 0)
@@ -412,10 +413,19 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
 	if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
 		return -ENODEV;

-	/* Check for wrap through zero too */
-	if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0))
+	/* Check for wrap through zero */
+	if ((offset + len) < 0)
 		return -EFBIG;

+	/* Check for rlimit */
+	if ((offset + len) > inode->i_size) {
+		limit = rlimit(RLIMIT_FSIZE);
+		if (limit != RLIM_INFINITY && (offset + len) > limit)
+			return -EFBIG;
+		if ((offset + len) > inode->i_sb->s_maxbytes)
+			return -EFBIG;
+	}
+
 	if (!inode->i_op->fallocate)
 		return -EOPNOTSUPP;

Something I don't understand here is, why no i_mutex hold here ?

-- 
Coly Li
SuSE Labs

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
       [not found]     ` <4BD9239D.6060907@suse.de>
@ 2010-04-29  9:23       ` Andreas Dilger
  0 siblings, 0 replies; 23+ messages in thread
From: Andreas Dilger @ 2010-04-29  9:23 UTC (permalink / raw)
  To: coly.li
  Cc: Nikanth Karthikesan, Nick Piggin, Alexander Viro, linux-fsdevel,
	Theodore Ts'o, linux-ext4, Andrew Morton, Eelis

On 2010-04-29, at 00:13, Coly Li wrote:
>> +		/*
>> +		 * Let individual file system decide if it supports
>> +		 * preallocation for directories or not.
>> +		 */
>> +		if (offset > inode->i_sb->s_maxbytes)
>> +			return -EFBIG;
> 
> For file systems support online-resize, like ext4 and ocfs2, should we also need a locking to protect inode->i_sb->s_mabytes ?

s_maxbytes is the maximum theoretical single file size, and has nothing to do with the size of the filesystem.

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
       [not found]   ` <201004291014.07194.knikanth@suse.de>
       [not found]     ` <4BD9239D.6060907@suse.de>
@ 2010-04-30 21:33     ` Andrew Morton
  2010-04-30 21:40       ` Andreas Dilger
  2010-05-01  7:04       ` Amit K. Arora
  1 sibling, 2 replies; 23+ messages in thread
From: Andrew Morton @ 2010-04-30 21:33 UTC (permalink / raw)
  To: Nikanth Karthikesan
  Cc: coly.li, Nick Piggin, Alexander Viro, linux-fsdevel,
	Theodore Ts'o, Andreas Dilger, linux-ext4, Eelis, Amit Arora


(Amit Arora <aarora@in.ibm.com> wrote fallocate.  cc added)

On Thu, 29 Apr 2010 10:14:06 +0530
Nikanth Karthikesan <knikanth@suse.de> wrote:

> Here is an updated patch that takes the i_mutex and calls inode_newsize_ok()
> only for regular files.

err, no.  It's taking i_lock where it meant to take i_mutex.

> Thanks
> Nikanth
> 
> Prevent creation of files larger than RLIMIT_FSIZE using fallocate.
> 
> Currently using posix_fallocate one can bypass an RLIMIT_FSIZE limit
> and create a file larger than the limit. Add a check for new size in
> the fallocate system call.
> 
> File-systems supporting fallocate such as ext4 are affected by this
> bug.
> 
> Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>
> Reported-by: Eelis - <opensuse.org@contacts.eelis.net>
> 
> ---
> 
> diff --git a/fs/open.c b/fs/open.c
> index 74e5cd9..4ca57c9 100644
> --- a/fs/open.c
> +++ b/fs/open.c
> @@ -405,17 +405,26 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
>  	if (S_ISFIFO(inode->i_mode))
>  		return -ESPIPE;
>  
> -	/*
> -	 * Let individual file system decide if it supports preallocation
> -	 * for directories or not.
> -	 */
> -	if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
> -		return -ENODEV;
> -
> -	/* Check for wrap through zero too */
> -	if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0))
> +	/* Check for wrap through zero */
> +	if (offset+len < 0)
>  		return -EFBIG;

I suggest that this test be moved up to where the function tests `if
(offset < 0 || len <= 0)' - it seems more logical.

Also,

-	if (offset+len < 0)
+	if (offset + len < 0)

for consistency with most other kernel code, please.

> +	if (S_ISREG(inode->i_mode)) {
> +		spin_lock(&inode->i_lock);
> +		ret = inode_newsize_ok(inode, (offset + len));
> +		spin_unlock(&inode->i_lock);
> +		if (ret)
> +			return ret;
> +	} else if (S_ISDIR(inode->i_mode)) {
> +		/*
> +		 * Let individual file system decide if it supports
> +		 * preallocation for directories or not.
> +		 */
> +		if (offset > inode->i_sb->s_maxbytes)
> +			return -EFBIG;
> +	} else
> +		return -ENODEV;
> +
>  	if (!inode->i_op->fallocate)
>  		return -EOPNOTSUPP;

Also, there doesn't seem to be much point in doing

	mutex_lock(i_mutex);
	if (some_condition)
		bale out
	mutex_unlock(i_mutex);

	<stuff>

because `some_condition' can now become true before or during the
execution of `stuff'.

IOW, it's racy.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-04-30 21:33     ` Andrew Morton
@ 2010-04-30 21:40       ` Andreas Dilger
  2010-05-01  7:04       ` Amit K. Arora
  1 sibling, 0 replies; 23+ messages in thread
From: Andreas Dilger @ 2010-04-30 21:40 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Nikanth Karthikesan, coly.li, Nick Piggin, Alexander Viro,
	linux-fsdevel, Theodore Ts'o, linux-ext4, Eelis, Amit Arora

On 2010-04-30, at 15:33, Andrew Morton wrote:
> On Thu, 29 Apr 2010 10:14:06 +0530
> Nikanth Karthikesan <knikanth@suse.de> wrote:
>> diff --git a/fs/open.c b/fs/open.c
>> index 74e5cd9..4ca57c9 100644
>> --- a/fs/open.c
>> +++ b/fs/open.c
>> @@ -405,17 +405,26 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
>> 	if (S_ISFIFO(inode->i_mode))
>> 		return -ESPIPE;
>> 
>> -	/*
>> -	 * Let individual file system decide if it supports preallocation
>> -	 * for directories or not.
>> -	 */
>> -	if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
>> -		return -ENODEV;
>> -
>> -	/* Check for wrap through zero too */
>> -	if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0))
>> +	/* Check for wrap through zero */
>> +	if (offset+len < 0)
>> 		return -EFBIG;
> 
> I suggest that this test be moved up to where the function tests `if
> (offset < 0 || len <= 0)' - it seems more logical.

Sometimes the order of these checks is mandated by POSIX because of the error return code.  I'm not saying for sure that is the case here, but sometimes logic doesn't come into the specification. :-/

Cheers, Andreas
--
Andreas Dilger
Lustre Technical Lead
Oracle Corporation Canada Inc.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-04-30 21:33     ` Andrew Morton
  2010-04-30 21:40       ` Andreas Dilger
@ 2010-05-01  7:04       ` Amit K. Arora
  2010-05-01 10:18         ` Christoph Hellwig
  2010-05-03  4:23         ` [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate Nikanth Karthikesan
  1 sibling, 2 replies; 23+ messages in thread
From: Amit K. Arora @ 2010-05-01  7:04 UTC (permalink / raw)
  To: Andrew Morton, Nikanth Karthikesan
  Cc: coly.li, Nick Piggin, Alexander Viro, linux-fsdevel,
	Theodore Ts'o, Andreas Dilger, linux-ext4, Eelis, Amit Arora

On Fri, Apr 30, 2010 at 02:33:19PM -0700, Andrew Morton wrote:
> 
> (Amit Arora <aarora@in.ibm.com> wrote fallocate.  cc added)

Thanks for adding me to CC.
 
> On Thu, 29 Apr 2010 10:14:06 +0530
> Nikanth Karthikesan <knikanth@suse.de> wrote:
> 
> > Here is an updated patch that takes the i_mutex and calls inode_newsize_ok()
> > only for regular files.
> 
> err, no.  It's taking i_lock where it meant to take i_mutex.
> 
> > Thanks
> > Nikanth
> > 
> > +	if (S_ISREG(inode->i_mode)) {
> > +		spin_lock(&inode->i_lock);
> > +		ret = inode_newsize_ok(inode, (offset + len));
> > +		spin_unlock(&inode->i_lock);
> > +		if (ret)
> > +			return ret;
> > +	} else if (S_ISDIR(inode->i_mode)) {
> > +		/*
> > +		 * Let individual file system decide if it supports
> > +		 * preallocation for directories or not.
> > +		 */
> > +		if (offset > inode->i_sb->s_maxbytes)
> > +			return -EFBIG;
> > +	} else
> > +		return -ENODEV;
> > +
> >  	if (!inode->i_op->fallocate)
> >  		return -EOPNOTSUPP;
> 
> Also, there doesn't seem to be much point in doing
> 
> 	mutex_lock(i_mutex);
> 	if (some_condition)
> 		bale out
> 	mutex_unlock(i_mutex);
> 
> 	<stuff>
> 
> because `some_condition' can now become true before or during the
> execution of `stuff'.
> 
> IOW, it's racy.

Agreed. How about doing this check in the filesystem specific fallocate
inode routines instead ? For example, in ext4 we could do :

diff -Nuarp linux-2.6.org/fs/ext4/extents.c linux-2.6.new/fs/ext4/extents.c
--- linux-2.6.org/fs/ext4/extents.c	2010-05-01 12:16:07.000000000 +0530
+++ linux-2.6.new/fs/ext4/extents.c	2010-05-01 12:17:37.000000000 +0530
@@ -3672,6 +3672,11 @@ long ext4_fallocate(struct inode *inode,
 	 */
 	credits = ext4_chunk_trans_blocks(inode, max_blocks);
 	mutex_lock(&inode->i_mutex);
+	ret = inode_newsize_ok(inode, (offset + len));
+	if (ret) {
+		mutex_unlock(&inode->i_mutex);
+		return ret;
+	}
 retry:
 	while (ret >= 0 && ret < max_blocks) {
 		block = block + ret;


Similarly for ocfs2, btrfs and xfs..

--
Regards,
Amit Arora

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-01  7:04       ` Amit K. Arora
@ 2010-05-01 10:18         ` Christoph Hellwig
  2010-05-03  7:01           ` Amit K. Arora
  2010-05-03  8:31             ` Amit K. Arora
  2010-05-03  4:23         ` [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate Nikanth Karthikesan
  1 sibling, 2 replies; 23+ messages in thread
From: Christoph Hellwig @ 2010-05-01 10:18 UTC (permalink / raw)
  To: Amit K. Arora
  Cc: Andrew Morton, Nikanth Karthikesan, coly.li, Nick Piggin,
	Alexander Viro, linux-fsdevel, Theodore Ts'o, Andreas Dilger,
	linux-ext4, Eelis, Amit Arora

On Sat, May 01, 2010 at 12:34:26PM +0530, Amit K. Arora wrote:
> Agreed. How about doing this check in the filesystem specific fallocate
> inode routines instead ? For example, in ext4 we could do :

That looks okay - in fact XFS should already have this check because
it re-uses the setattr implementation to set the size.

Can you submit an xfstests testcase to verify this behaviour on all
filesystems?


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-01  7:04       ` Amit K. Arora
  2010-05-01 10:18         ` Christoph Hellwig
@ 2010-05-03  4:23         ` Nikanth Karthikesan
  2010-05-03  6:59           ` Amit K. Arora
  1 sibling, 1 reply; 23+ messages in thread
From: Nikanth Karthikesan @ 2010-05-03  4:23 UTC (permalink / raw)
  To: Amit K. Arora
  Cc: Andrew Morton, coly.li, Nick Piggin, Alexander Viro,
	linux-fsdevel, Theodore Ts'o, Andreas Dilger, linux-ext4,
	Eelis, Amit Arora, Christoph Hellwig

On Saturday 01 May 2010 12:34:26 Amit K. Arora wrote:
> On Fri, Apr 30, 2010 at 02:33:19PM -0700, Andrew Morton wrote:
> > (Amit Arora <aarora@in.ibm.com> wrote fallocate.  cc added)
> 
> Thanks for adding me to CC.
> 
> > On Thu, 29 Apr 2010 10:14:06 +0530
> >
> > Nikanth Karthikesan <knikanth@suse.de> wrote:
> > > Here is an updated patch that takes the i_mutex and calls
> > > inode_newsize_ok() only for regular files.
> >
> > err, no.  It's taking i_lock where it meant to take i_mutex.
> >
> > > Thanks
> > > Nikanth
> > >
> > > +	if (S_ISREG(inode->i_mode)) {
> > > +		spin_lock(&inode->i_lock);
> > > +		ret = inode_newsize_ok(inode, (offset + len));
> > > +		spin_unlock(&inode->i_lock);
> > > +		if (ret)
> > > +			return ret;
> > > +	} else if (S_ISDIR(inode->i_mode)) {
> > > +		/*
> > > +		 * Let individual file system decide if it supports
> > > +		 * preallocation for directories or not.
> > > +		 */
> > > +		if (offset > inode->i_sb->s_maxbytes)
> > > +			return -EFBIG;
> > > +	} else
> > > +		return -ENODEV;
> > > +
> > >  	if (!inode->i_op->fallocate)
> > >  		return -EOPNOTSUPP;
> >
> > Also, there doesn't seem to be much point in doing
> >
> > 	mutex_lock(i_mutex);
> > 	if (some_condition)
> > 		bale out
> > 	mutex_unlock(i_mutex);
> >
> > 	<stuff>
> >
> > because `some_condition' can now become true before or during the
> > execution of `stuff'.
> >
> > IOW, it's racy.
> 

oh, yes. :(

> Agreed. How about doing this check in the filesystem specific fallocate
> inode routines instead ? For example, in ext4 we could do :
> 

I guess, calling the filesystem specific fallocate with the lock held would 
create lock ordering problems? If so, this might be the only way. But it would 
be better to document at the call site, that the callee should check for 
RLIMIT_FSIZE.

Thanks
Nikanth

> diff -Nuarp linux-2.6.org/fs/ext4/extents.c linux-2.6.new/fs/ext4/extents.c
> --- linux-2.6.org/fs/ext4/extents.c	2010-05-01 12:16:07.000000000 +0530
> +++ linux-2.6.new/fs/ext4/extents.c	2010-05-01 12:17:37.000000000 +0530
> @@ -3672,6 +3672,11 @@ long ext4_fallocate(struct inode *inode,
>  	 */
>  	credits = ext4_chunk_trans_blocks(inode, max_blocks);
>  	mutex_lock(&inode->i_mutex);
> +	ret = inode_newsize_ok(inode, (offset + len));
> +	if (ret) {
> +		mutex_unlock(&inode->i_mutex);
> +		return ret;
> +	}
>  retry:
>  	while (ret >= 0 && ret < max_blocks) {
>  		block = block + ret;
> 
> 
> Similarly for ocfs2, btrfs and xfs..
> 
> --
> Regards,
> Amit Arora
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-03  4:23         ` [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate Nikanth Karthikesan
@ 2010-05-03  6:59           ` Amit K. Arora
  2010-05-03  7:49             ` Nikanth Karthikesan
                               ` (2 more replies)
  0 siblings, 3 replies; 23+ messages in thread
From: Amit K. Arora @ 2010-05-03  6:59 UTC (permalink / raw)
  To: Nikanth Karthikesan
  Cc: Andrew Morton, coly.li, Nick Piggin, Alexander Viro,
	linux-fsdevel, Theodore Ts'o, Andreas Dilger, linux-ext4,
	Eelis, Amit Arora, Christoph Hellwig

On Mon, May 03, 2010 at 09:53:44AM +0530, Nikanth Karthikesan wrote:
> On Saturday 01 May 2010 12:34:26 Amit K. Arora wrote:
> > On Fri, Apr 30, 2010 at 02:33:19PM -0700, Andrew Morton wrote:
> > > Also, there doesn't seem to be much point in doing
> > >
> > > 	mutex_lock(i_mutex);
> > > 	if (some_condition)
> > > 		bale out
> > > 	mutex_unlock(i_mutex);
> > >
> > > 	<stuff>
> > >
> > > because `some_condition' can now become true before or during the
> > > execution of `stuff'.
> > >
> > > IOW, it's racy.
> 
> oh, yes. :(
> 
> > Agreed. How about doing this check in the filesystem specific fallocate
> > inode routines instead ? For example, in ext4 we could do :
> 
> I guess, calling the filesystem specific fallocate with the lock held would 
> create lock ordering problems? If so, this might be the only way. But it would 
> be better to document at the call site, that the callee should check for 
> RLIMIT_FSIZE.

Hmm.. I never said to call the filesystem specific fallocate with
i_mutex held. What I suggested was that each filesystem at some point
anyhow takes the i_mutex to preallocate. Thats where the check should
be, to avoid the race. This is what the example patch below does.

--
Regards,
Amit Arora

> Thanks
> Nikanth
> 
> > diff -Nuarp linux-2.6.org/fs/ext4/extents.c linux-2.6.new/fs/ext4/extents.c
> > --- linux-2.6.org/fs/ext4/extents.c	2010-05-01 12:16:07.000000000 +0530
> > +++ linux-2.6.new/fs/ext4/extents.c	2010-05-01 12:17:37.000000000 +0530
> > @@ -3672,6 +3672,11 @@ long ext4_fallocate(struct inode *inode,
> >  	 */
> >  	credits = ext4_chunk_trans_blocks(inode, max_blocks);
> >  	mutex_lock(&inode->i_mutex);
> > +	ret = inode_newsize_ok(inode, (offset + len));
> > +	if (ret) {
> > +		mutex_unlock(&inode->i_mutex);
> > +		return ret;
> > +	}
> >  retry:
> >  	while (ret >= 0 && ret < max_blocks) {
> >  		block = block + ret;
> > 
> > 
> > Similarly for ocfs2, btrfs and xfs..
> > 
> > --
> > Regards,
> > Amit Arora
> > 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-01 10:18         ` Christoph Hellwig
@ 2010-05-03  7:01           ` Amit K. Arora
  2010-05-03  8:31             ` Amit K. Arora
  1 sibling, 0 replies; 23+ messages in thread
From: Amit K. Arora @ 2010-05-03  7:01 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Andrew Morton, Nikanth Karthikesan, coly.li, Nick Piggin,
	Alexander Viro, linux-fsdevel, Theodore Ts'o, Andreas Dilger,
	linux-ext4, Eelis, Amit Arora

On Sat, May 01, 2010 at 06:18:46AM -0400, Christoph Hellwig wrote:
> On Sat, May 01, 2010 at 12:34:26PM +0530, Amit K. Arora wrote:
> > Agreed. How about doing this check in the filesystem specific fallocate
> > inode routines instead ? For example, in ext4 we could do :
> 
> That looks okay - in fact XFS should already have this check because
> it re-uses the setattr implementation to set the size.

You are right. I have written a test and it passes on XFS, but fails on
ext4. 
 
> Can you submit an xfstests testcase to verify this behaviour on all
> filesystems?

Sure. Its ready and is under test. Will post shortly..

--
Regards,
Amit Arora

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-03  6:59           ` Amit K. Arora
@ 2010-05-03  7:49             ` Nikanth Karthikesan
  2010-05-04  5:44             ` [PATCH] btrfs: " Nikanth Karthikesan
  2010-05-04  5:45             ` [PATCH] ext4: " Nikanth Karthikesan
  2 siblings, 0 replies; 23+ messages in thread
From: Nikanth Karthikesan @ 2010-05-03  7:49 UTC (permalink / raw)
  To: Amit K. Arora
  Cc: Andrew Morton, coly.li, Nick Piggin, Alexander Viro,
	linux-fsdevel, Theodore Ts'o, Andreas Dilger, linux-ext4,
	Eelis, Amit Arora, Christoph Hellwig

On Monday 03 May 2010 12:29:45 Amit K. Arora wrote:
> On Mon, May 03, 2010 at 09:53:44AM +0530, Nikanth Karthikesan wrote:
> > On Saturday 01 May 2010 12:34:26 Amit K. Arora wrote:
> > > On Fri, Apr 30, 2010 at 02:33:19PM -0700, Andrew Morton wrote:
> > > > Also, there doesn't seem to be much point in doing
> > > >
> > > > 	mutex_lock(i_mutex);
> > > > 	if (some_condition)
> > > > 		bale out
> > > > 	mutex_unlock(i_mutex);
> > > >
> > > > 	<stuff>
> > > >
> > > > because `some_condition' can now become true before or during the
> > > > execution of `stuff'.
> > > >
> > > > IOW, it's racy.
> >
> > oh, yes. :(
> >
> > > Agreed. How about doing this check in the filesystem specific fallocate
> > > inode routines instead ? For example, in ext4 we could do :
> >
> > I guess, calling the filesystem specific fallocate with the lock held
> > would create lock ordering problems? If so, this might be the only way.
> > But it would be better to document at the call site, that the callee
> > should check for RLIMIT_FSIZE.
> 
> Hmm.. I never said to call the filesystem specific fallocate with
> i_mutex held. What I suggested was that each filesystem at some point
> anyhow takes the i_mutex to preallocate. Thats where the check should
> be, to avoid the race. This is what the example patch below does.
> 

Yes, you never said that. But I just wondered whether that would be have 
problems and doing the check in filesystem specific fallocate is the only 
solution. :)

Thanks
Nikanth

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH] New testcase to check if fallocate respects RLIMIT_FSIZE or not
  2010-05-01 10:18         ` Christoph Hellwig
@ 2010-05-03  8:31             ` Amit K. Arora
  2010-05-03  8:31             ` Amit K. Arora
  1 sibling, 0 replies; 23+ messages in thread
From: Amit K. Arora @ 2010-05-03  8:31 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Andrew Morton, xfs, Nikanth Karthikesan, coly.li, Nick Piggin,
	Alexander Viro, linux-fsdevel, Theodore Ts'o, Andreas Dilger,
	linux-ext4, Eelis, Amit Arora

On Sat, May 01, 2010 at 06:18:46AM -0400, Christoph Hellwig wrote:
> On Sat, May 01, 2010 at 12:34:26PM +0530, Amit K. Arora wrote:
> > Agreed. How about doing this check in the filesystem specific fallocate
> > inode routines instead ? For example, in ext4 we could do :
> 
> That looks okay - in fact XFS should already have this check because
> it re-uses the setattr implementation to set the size.
> 
> Can you submit an xfstests testcase to verify this behaviour on all
> filesystems?

Here is the new testcase.

I have run this test on a x86_64 box on XFS and ext4 on 2.6.34-rc6. It
passes on XFS, but fails on ext4. Below is the snapshot of results
followed by the testcase itself.

--
Regards,
Amit Arora

Test results:
------------
# ./check 228
FSTYP         -- xfs (non-debug)
PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6

228 0s ...
Ran: 228
Passed all 1 tests
#
# umount /mnt
# mkfs.ext4 /dev/sda4 >/dev/null
mke2fs 1.41.10 (10-Feb-2009)
# ./check 228
FSTYP         -- ext4
PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6

228 0s ... - output mismatch (see 228.out.bad)
--- 228.out	2010-05-03 02:51:24.000000000 -0400
+++ 228.out.bad	2010-05-03 04:27:33.000000000 -0400
@@ -1,2 +1 @@
 QA output created by 228
-File size limit exceeded (core dumped)
Ran: 228
Failures: 228
Failed 1 of 1 tests
#


Here is the test:
----------------
Add a new testcase to the xfstests suite to check if fallocate respects
the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
not, on a particular filesystem.

Signed-off-by: Amit Arora <aarora@in.ibm.com>

diff -Nuarp xfstests-dev.org/228 xfstests-dev/228
--- xfstests-dev.org/228	1969-12-31 19:00:00.000000000 -0500
+++ xfstests-dev/228	2010-05-03 02:45:10.000000000 -0400
@@ -0,0 +1,79 @@
+#! /bin/bash
+# FS QA Test No. 228
+#
+# Check if fallocate respects RLIMIT_FSIZE 
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 IBM Corporation. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+#-----------------------------------------------------------------------
+#
+# creator
+owner=aarora@in.ibm.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+	cd /
+	rm -f $tmp.*
+}
+
+here=`pwd`
+tmp=$TEST_DIR/$$
+status=1	# failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15 25
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+# generic, but xfs_io's fallocate must work
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
+
+rm -f $seq.full
+
+# Sanity check to see if fallocate works
+_require_xfs_io_falloc
+
+# Check if we have good enough space available
+avail=`df -P $TEST_DIR | awk 'END {print $4}'`
+[ "$avail" -ge 104000 ] || _notrun "Test device is too small ($avail KiB)"
+
+# Set the FSIZE ulimit to 100MB and check
+ulimit -f 102400
+flim=`ulimit -f`
+[ "$flim" != "unlimited" ] || _notrun "Unable to set FSIZE ulimit"
+[ "$flim" -eq 102400 ] || _notrun "FSIZE ulimit is not correct (100 MB)"
+
+# FSIZE limit is now set to 100 MB.
+# Lets try to preallocate 101 MB. This should fail.
+$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# Lets now try to preallocate 50 MB. This should succeed.
+$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# success, all done
+status=0
+exit
diff -Nuarp xfstests-dev.org/group xfstests-dev/group
--- xfstests-dev.org/group	2010-05-03 02:35:09.000000000 -0400
+++ xfstests-dev/group	2010-05-03 02:45:21.000000000 -0400
@@ -341,3 +341,4 @@ deprecated
 225 auto quick
 226 auto enospc
 227 auto fsr
+228 rw auto prealloc quick

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH] New testcase to check if fallocate respects RLIMIT_FSIZE or not
@ 2010-05-03  8:31             ` Amit K. Arora
  0 siblings, 0 replies; 23+ messages in thread
From: Amit K. Arora @ 2010-05-03  8:31 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Nick Piggin, Andreas Dilger, Eelis, Theodore Ts'o,
	Nikanth Karthikesan, coly.li, Amit Arora, xfs, Alexander Viro,
	linux-fsdevel, Andrew Morton, linux-ext4

On Sat, May 01, 2010 at 06:18:46AM -0400, Christoph Hellwig wrote:
> On Sat, May 01, 2010 at 12:34:26PM +0530, Amit K. Arora wrote:
> > Agreed. How about doing this check in the filesystem specific fallocate
> > inode routines instead ? For example, in ext4 we could do :
> 
> That looks okay - in fact XFS should already have this check because
> it re-uses the setattr implementation to set the size.
> 
> Can you submit an xfstests testcase to verify this behaviour on all
> filesystems?

Here is the new testcase.

I have run this test on a x86_64 box on XFS and ext4 on 2.6.34-rc6. It
passes on XFS, but fails on ext4. Below is the snapshot of results
followed by the testcase itself.

--
Regards,
Amit Arora

Test results:
------------
# ./check 228
FSTYP         -- xfs (non-debug)
PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6

228 0s ...
Ran: 228
Passed all 1 tests
#
# umount /mnt
# mkfs.ext4 /dev/sda4 >/dev/null
mke2fs 1.41.10 (10-Feb-2009)
# ./check 228
FSTYP         -- ext4
PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6

228 0s ... - output mismatch (see 228.out.bad)
--- 228.out	2010-05-03 02:51:24.000000000 -0400
+++ 228.out.bad	2010-05-03 04:27:33.000000000 -0400
@@ -1,2 +1 @@
 QA output created by 228
-File size limit exceeded (core dumped)
Ran: 228
Failures: 228
Failed 1 of 1 tests
#


Here is the test:
----------------
Add a new testcase to the xfstests suite to check if fallocate respects
the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
not, on a particular filesystem.

Signed-off-by: Amit Arora <aarora@in.ibm.com>

diff -Nuarp xfstests-dev.org/228 xfstests-dev/228
--- xfstests-dev.org/228	1969-12-31 19:00:00.000000000 -0500
+++ xfstests-dev/228	2010-05-03 02:45:10.000000000 -0400
@@ -0,0 +1,79 @@
+#! /bin/bash
+# FS QA Test No. 228
+#
+# Check if fallocate respects RLIMIT_FSIZE 
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 IBM Corporation. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+#-----------------------------------------------------------------------
+#
+# creator
+owner=aarora@in.ibm.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+	cd /
+	rm -f $tmp.*
+}
+
+here=`pwd`
+tmp=$TEST_DIR/$$
+status=1	# failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15 25
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# real QA test starts here
+# generic, but xfs_io's fallocate must work
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
+
+rm -f $seq.full
+
+# Sanity check to see if fallocate works
+_require_xfs_io_falloc
+
+# Check if we have good enough space available
+avail=`df -P $TEST_DIR | awk 'END {print $4}'`
+[ "$avail" -ge 104000 ] || _notrun "Test device is too small ($avail KiB)"
+
+# Set the FSIZE ulimit to 100MB and check
+ulimit -f 102400
+flim=`ulimit -f`
+[ "$flim" != "unlimited" ] || _notrun "Unable to set FSIZE ulimit"
+[ "$flim" -eq 102400 ] || _notrun "FSIZE ulimit is not correct (100 MB)"
+
+# FSIZE limit is now set to 100 MB.
+# Lets try to preallocate 101 MB. This should fail.
+$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# Lets now try to preallocate 50 MB. This should succeed.
+$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+# success, all done
+status=0
+exit
diff -Nuarp xfstests-dev.org/group xfstests-dev/group
--- xfstests-dev.org/group	2010-05-03 02:35:09.000000000 -0400
+++ xfstests-dev/group	2010-05-03 02:45:21.000000000 -0400
@@ -341,3 +341,4 @@ deprecated
 225 auto quick
 226 auto enospc
 227 auto fsr
+228 rw auto prealloc quick

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH] btrfs: Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-03  6:59           ` Amit K. Arora
  2010-05-03  7:49             ` Nikanth Karthikesan
@ 2010-05-04  5:44             ` Nikanth Karthikesan
  2010-05-04  5:45             ` [PATCH] ext4: " Nikanth Karthikesan
  2 siblings, 0 replies; 23+ messages in thread
From: Nikanth Karthikesan @ 2010-05-04  5:44 UTC (permalink / raw)
  To: Chris Mason
  Cc: Amit K. Arora, Andrew Morton, coly.li, Nick Piggin,
	Alexander Viro, linux-fsdevel, Theodore Ts'o, Andreas Dilger,
	linux-ext4, Eelis, Amit Arora, Christoph Hellwig, linux-btrfs

Prevent creation of files larger than RLIMIT_FSIZE using fallocate.

Currently using posix_fallocate one can bypass an RLIMIT_FSIZE limit
and create a file larger than the limit. Add a check for that.


Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>

---

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 2bfdc64..a1d8fbc 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -5829,6 +5829,11 @@ static long btrfs_fallocate(struct inode *inode, int mode,
 	btrfs_wait_ordered_range(inode, alloc_start, alloc_end - alloc_start);
 
 	mutex_lock(&inode->i_mutex);
+
+	ret = inode_newsize_ok(inode, (offset + len));
+	if (ret)
+		goto out;
+
 	if (alloc_start > inode->i_size) {
 		ret = btrfs_cont_expand(inode, alloc_start);
 		if (ret)

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH] ext4: Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-03  6:59           ` Amit K. Arora
  2010-05-03  7:49             ` Nikanth Karthikesan
  2010-05-04  5:44             ` [PATCH] btrfs: " Nikanth Karthikesan
@ 2010-05-04  5:45             ` Nikanth Karthikesan
  2010-05-04  6:28               ` Amit K. Arora
  2 siblings, 1 reply; 23+ messages in thread
From: Nikanth Karthikesan @ 2010-05-04  5:45 UTC (permalink / raw)
  To: Theodore Ts'o, Andreas Dilger, linux-ext4
  Cc: Amit K. Arora, Andrew Morton, coly.li, Nick Piggin,
	Alexander Viro, linux-fsdevel, Eelis, Amit Arora,
	Christoph Hellwig

I assumed that Amit would send a patch with s-o-b, if not, please take
this patch.

Thanks
Nikanth

Prevent creation of files larger than RLIMIT_FSIZE using fallocate.

Currently using posix_fallocate one can bypass an RLIMIT_FSIZE limit
and create a file larger than the limit. Add a check for that.


Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>

---

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 236b834..39b8123 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -3672,6 +3672,11 @@ long ext4_fallocate(struct inode *inode, int mode, loff_t offset, loff_t len)
 	 */
 	credits = ext4_chunk_trans_blocks(inode, max_blocks);
 	mutex_lock(&inode->i_mutex);
+	ret = inode_newsize_ok(inode, (len + offset));
+	if (ret) {
+		mutex_unlock(&inode->i_mutex);
+		return ret;
+	}
 retry:
 	while (ret >= 0 && ret < max_blocks) {
 		block = block + ret;

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH] ext4: Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-04  5:45             ` [PATCH] ext4: " Nikanth Karthikesan
@ 2010-05-04  6:28               ` Amit K. Arora
  2010-05-21  1:11                 ` tytso
  0 siblings, 1 reply; 23+ messages in thread
From: Amit K. Arora @ 2010-05-04  6:28 UTC (permalink / raw)
  To: Nikanth Karthikesan
  Cc: Theodore Ts'o, Andreas Dilger, linux-ext4, Andrew Morton,
	coly.li, Nick Piggin, Alexander Viro, linux-fsdevel, Eelis,
	Amit Arora, Christoph Hellwig

On Tue, May 04, 2010 at 11:15:04AM +0530, Nikanth Karthikesan wrote:
> I assumed that Amit would send a patch with s-o-b, if not, please take
> this patch.
Have added my sign-off below. Thanks!

--
Regards,
Amit Arora
> Thanks
> Nikanth
> 
> Prevent creation of files larger than RLIMIT_FSIZE using fallocate.
> 
> Currently using posix_fallocate one can bypass an RLIMIT_FSIZE limit
> and create a file larger than the limit. Add a check for that.
> 
> 
> Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>
Signed-off-by: Amit Arora <aarora@in.ibm.com>
 
> ---
> 
> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
> index 236b834..39b8123 100644
> --- a/fs/ext4/extents.c
> +++ b/fs/ext4/extents.c
> @@ -3672,6 +3672,11 @@ long ext4_fallocate(struct inode *inode, int mode, loff_t offset, loff_t len)
>  	 */
>  	credits = ext4_chunk_trans_blocks(inode, max_blocks);
>  	mutex_lock(&inode->i_mutex);
> +	ret = inode_newsize_ok(inode, (len + offset));
> +	if (ret) {
> +		mutex_unlock(&inode->i_mutex);
> +		return ret;
> +	}
>  retry:
>  	while (ret >= 0 && ret < max_blocks) {
>  		block = block + ret;

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] New testcase to check if fallocate respects RLIMIT_FSIZE or not
  2010-05-03  8:31             ` Amit K. Arora
@ 2010-05-04 20:44               ` Eric Sandeen
  -1 siblings, 0 replies; 23+ messages in thread
From: Eric Sandeen @ 2010-05-04 20:44 UTC (permalink / raw)
  To: Amit K. Arora
  Cc: Christoph Hellwig, Andrew Morton, xfs, Nikanth Karthikesan,
	coly.li, Nick Piggin, Alexander Viro, linux-fsdevel,
	Theodore Ts'o, Andreas Dilger, linux-ext4, Eelis, Amit Arora

Amit K. Arora wrote:
> On Sat, May 01, 2010 at 06:18:46AM -0400, Christoph Hellwig wrote:
>> On Sat, May 01, 2010 at 12:34:26PM +0530, Amit K. Arora wrote:
>>> Agreed. How about doing this check in the filesystem specific fallocate
>>> inode routines instead ? For example, in ext4 we could do :
>> That looks okay - in fact XFS should already have this check because
>> it re-uses the setattr implementation to set the size.
>>
>> Can you submit an xfstests testcase to verify this behaviour on all
>> filesystems?
> 
> Here is the new testcase.

Thanks!  A few comments...

> I have run this test on a x86_64 box on XFS and ext4 on 2.6.34-rc6. It
> passes on XFS, but fails on ext4. Below is the snapshot of results
> followed by the testcase itself.
> 
> --
> Regards,
> Amit Arora
> 
> Test results:
> ------------
> # ./check 228
> FSTYP         -- xfs (non-debug)
> PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6
> 
> 228 0s ...
> Ran: 228
> Passed all 1 tests
> #
> # umount /mnt
> # mkfs.ext4 /dev/sda4 >/dev/null
> mke2fs 1.41.10 (10-Feb-2009)
> # ./check 228
> FSTYP         -- ext4
> PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6
> 
> 228 0s ... - output mismatch (see 228.out.bad)
> --- 228.out	2010-05-03 02:51:24.000000000 -0400
> +++ 228.out.bad	2010-05-03 04:27:33.000000000 -0400
> @@ -1,2 +1 @@
>  QA output created by 228
> -File size limit exceeded (core dumped)
> Ran: 228
> Failures: 228
> Failed 1 of 1 tests
> #

228.out is missing from the patch

Also on my fedora box I don't get a coredump by default; can
you either make that explicit, or filter out the core message?

> 
> Here is the test:
> ----------------
> Add a new testcase to the xfstests suite to check if fallocate respects
> the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
> not, on a particular filesystem.

...

> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter

Nitpick, I don't think you need common.filter, doesn't look like you are 
using it.

> +# FSIZE limit is now set to 100 MB.
> +# Lets try to preallocate 101 MB. This should fail.
> +$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
> +rm -f $TEST_DIR/ouch
> +
> +# Lets now try to preallocate 50 MB. This should succeed.
> +$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
> +rm -f $TEST_DIR/ouch

Even more nitpicky, but sometimes I think it's nice to have the .out 
file be a bit more descriptive in and of itself so when you see a 
failing diff you have a better idea what's gone wrong.

Changing the comments to echos, like:

+# FSIZE limit is now set to 100 MB.
+# echo "Lets try to preallocate 101 MB. This should fail."
+$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch

etc ... would make a failure look like:

--- 228.out	2010-05-04 15:42:31.924278768 -0500
+++ 228.out.bad	2010-05-04 15:42:36.961278392 -0500
@@ -1,3 +1,2 @@
 QA output created by 228
 Lets try to preallocate 101 MB. This should fail.
-File size limit exceeded
 Lets now try to preallocate 50 MB. This should succeed.

... just a thought.

Thanks,
-Eric

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] New testcase to check if fallocate respects RLIMIT_FSIZE or not
@ 2010-05-04 20:44               ` Eric Sandeen
  0 siblings, 0 replies; 23+ messages in thread
From: Eric Sandeen @ 2010-05-04 20:44 UTC (permalink / raw)
  To: Amit K. Arora
  Cc: Nick Piggin, Andreas Dilger, Eelis, Theodore Ts'o,
	Nikanth Karthikesan, coly.li, Amit Arora, xfs, Christoph Hellwig,
	Alexander Viro, linux-fsdevel, Andrew Morton, linux-ext4

Amit K. Arora wrote:
> On Sat, May 01, 2010 at 06:18:46AM -0400, Christoph Hellwig wrote:
>> On Sat, May 01, 2010 at 12:34:26PM +0530, Amit K. Arora wrote:
>>> Agreed. How about doing this check in the filesystem specific fallocate
>>> inode routines instead ? For example, in ext4 we could do :
>> That looks okay - in fact XFS should already have this check because
>> it re-uses the setattr implementation to set the size.
>>
>> Can you submit an xfstests testcase to verify this behaviour on all
>> filesystems?
> 
> Here is the new testcase.

Thanks!  A few comments...

> I have run this test on a x86_64 box on XFS and ext4 on 2.6.34-rc6. It
> passes on XFS, but fails on ext4. Below is the snapshot of results
> followed by the testcase itself.
> 
> --
> Regards,
> Amit Arora
> 
> Test results:
> ------------
> # ./check 228
> FSTYP         -- xfs (non-debug)
> PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6
> 
> 228 0s ...
> Ran: 228
> Passed all 1 tests
> #
> # umount /mnt
> # mkfs.ext4 /dev/sda4 >/dev/null
> mke2fs 1.41.10 (10-Feb-2009)
> # ./check 228
> FSTYP         -- ext4
> PLATFORM      -- Linux/x86_64 elm9m93 2.6.34-rc6
> 
> 228 0s ... - output mismatch (see 228.out.bad)
> --- 228.out	2010-05-03 02:51:24.000000000 -0400
> +++ 228.out.bad	2010-05-03 04:27:33.000000000 -0400
> @@ -1,2 +1 @@
>  QA output created by 228
> -File size limit exceeded (core dumped)
> Ran: 228
> Failures: 228
> Failed 1 of 1 tests
> #

228.out is missing from the patch

Also on my fedora box I don't get a coredump by default; can
you either make that explicit, or filter out the core message?

> 
> Here is the test:
> ----------------
> Add a new testcase to the xfstests suite to check if fallocate respects
> the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
> not, on a particular filesystem.

...

> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter

Nitpick, I don't think you need common.filter, doesn't look like you are 
using it.

> +# FSIZE limit is now set to 100 MB.
> +# Lets try to preallocate 101 MB. This should fail.
> +$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
> +rm -f $TEST_DIR/ouch
> +
> +# Lets now try to preallocate 50 MB. This should succeed.
> +$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
> +rm -f $TEST_DIR/ouch

Even more nitpicky, but sometimes I think it's nice to have the .out 
file be a bit more descriptive in and of itself so when you see a 
failing diff you have a better idea what's gone wrong.

Changing the comments to echos, like:

+# FSIZE limit is now set to 100 MB.
+# echo "Lets try to preallocate 101 MB. This should fail."
+$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch

etc ... would make a failure look like:

--- 228.out	2010-05-04 15:42:31.924278768 -0500
+++ 228.out.bad	2010-05-04 15:42:36.961278392 -0500
@@ -1,3 +1,2 @@
 QA output created by 228
 Lets try to preallocate 101 MB. This should fail.
-File size limit exceeded
 Lets now try to preallocate 50 MB. This should succeed.

... just a thought.

Thanks,
-Eric

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v2] New testcase to check if fallocate respects RLIMIT_FSIZE or not
  2010-05-04 20:44               ` Eric Sandeen
@ 2010-05-05  7:55                 ` Amit K. Arora
  -1 siblings, 0 replies; 23+ messages in thread
From: Amit K. Arora @ 2010-05-05  7:55 UTC (permalink / raw)
  To: Eric Sandeen
  Cc: Christoph Hellwig, Andrew Morton, xfs, Nikanth Karthikesan,
	coly.li, Nick Piggin, Alexander Viro, linux-fsdevel,
	Theodore Ts'o, Andreas Dilger, linux-ext4, Eelis, Amit Arora

On Tue, May 04, 2010 at 03:44:08PM -0500, Eric Sandeen wrote:
> Amit K. Arora wrote:
> > Here is the new testcase.
> Thanks!  A few comments...
Thanks for the review!
 
> 228.out is missing from the patch
Ok, added it in the new patch.
 
> Also on my fedora box I don't get a coredump by default; can
> you either make that explicit, or filter out the core message?
Hmm.. for some strange reason I am no longer seeing this message. Tried
on the same system as last time and couple of others also.
 
> > 
> > Here is the test:
> > ----------------
> > Add a new testcase to the xfstests suite to check if fallocate respects
> > the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
> > not, on a particular filesystem.
> 
> ...
> 
> > +# get standard environment, filters and checks
> > +. ./common.rc
> > +. ./common.filter
> 
> Nitpick, I don't think you need common.filter, doesn't look like you are 
> using it.
Right. Removed it..
 
> > +# FSIZE limit is now set to 100 MB.
> > +# Lets try to preallocate 101 MB. This should fail.
> > +$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
> > +rm -f $TEST_DIR/ouch
> > +
> > +# Lets now try to preallocate 50 MB. This should succeed.
> > +$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
> > +rm -f $TEST_DIR/ouch
> 
> Even more nitpicky, but sometimes I think it's nice to have the .out 
> file be a bit more descriptive in and of itself so when you see a 
> failing diff you have a better idea what's gone wrong.
Agreed. Done.

Here is the new patch with the changes:

Add a new testcase to the xfstests suite to check if fallocate respects
the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
not, on a particular filesystem.

Signed-off-by: Amit Arora <aarora@in.ibm.com>

diff -Nuarp xfstests-dev.org/228 xfstests-dev/228
--- xfstests-dev.org/228	1969-12-31 19:00:00.000000000 -0500
+++ xfstests-dev/228	2010-05-05 02:37:48.000000000 -0400
@@ -0,0 +1,79 @@
+#! /bin/bash
+# FS QA Test No. 228
+#
+# Check if fallocate respects RLIMIT_FSIZE 
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 IBM Corporation. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+#-----------------------------------------------------------------------
+#
+# creator
+owner=aarora@in.ibm.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+	cd /
+	rm -f $tmp.*
+}
+
+here=`pwd`
+tmp=$TEST_DIR/$$
+status=1	# failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15 25
+
+# get standard environment, filters and checks
+. ./common.rc
+
+# real QA test starts here
+# generic, but xfs_io's fallocate must work
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
+
+rm -f $seq.full
+
+# Sanity check to see if fallocate works
+_require_xfs_io_falloc
+
+# Check if we have good enough space available
+avail=`df -P $TEST_DIR | awk 'END {print $4}'`
+[ "$avail" -ge 104000 ] || _notrun "Test device is too small ($avail KiB)"
+
+# Set the FSIZE ulimit to 100MB and check
+ulimit -f 102400
+flim=`ulimit -f`
+[ "$flim" != "unlimited" ] || _notrun "Unable to set FSIZE ulimit"
+[ "$flim" -eq 102400 ] || _notrun "FSIZE ulimit is not correct (100 MB)"
+
+echo "File size limit is now set to 100 MB."
+echo "Let us try to preallocate 101 MB. This should fail."
+$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+echo "Let us now try to preallocate 50 MB. This should succeed."
+$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+echo "Test over."
+# success, all done
+status=0
+exit
diff -Nuarp xfstests-dev.org/228.out xfstests-dev/228.out
--- xfstests-dev.org/228.out	1969-12-31 19:00:00.000000000 -0500
+++ xfstests-dev/228.out	2010-05-05 02:38:30.000000000 -0400
@@ -0,0 +1,6 @@
+QA output created by 228
+File size limit is now set to 100 MB.
+Let us try to preallocate 101 MB. This should fail.
+File size limit exceeded
+Let us now try to preallocate 50 MB. This should succeed.
+Test over.
diff -Nuarp xfstests-dev.org/group xfstests-dev/group
--- xfstests-dev.org/group	2010-05-03 02:35:09.000000000 -0400
+++ xfstests-dev/group	2010-05-05 02:38:00.000000000 -0400
@@ -341,3 +341,4 @@ deprecated
 225 auto quick
 226 auto enospc
 227 auto fsr
+228 rw auto prealloc quick

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v2] New testcase to check if fallocate respects RLIMIT_FSIZE or not
@ 2010-05-05  7:55                 ` Amit K. Arora
  0 siblings, 0 replies; 23+ messages in thread
From: Amit K. Arora @ 2010-05-05  7:55 UTC (permalink / raw)
  To: Eric Sandeen
  Cc: Nick Piggin, Andreas Dilger, Eelis, Theodore Ts'o,
	Nikanth Karthikesan, coly.li, Amit Arora, xfs, Christoph Hellwig,
	Alexander Viro, linux-fsdevel, Andrew Morton, linux-ext4

On Tue, May 04, 2010 at 03:44:08PM -0500, Eric Sandeen wrote:
> Amit K. Arora wrote:
> > Here is the new testcase.
> Thanks!  A few comments...
Thanks for the review!
 
> 228.out is missing from the patch
Ok, added it in the new patch.
 
> Also on my fedora box I don't get a coredump by default; can
> you either make that explicit, or filter out the core message?
Hmm.. for some strange reason I am no longer seeing this message. Tried
on the same system as last time and couple of others also.
 
> > 
> > Here is the test:
> > ----------------
> > Add a new testcase to the xfstests suite to check if fallocate respects
> > the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
> > not, on a particular filesystem.
> 
> ...
> 
> > +# get standard environment, filters and checks
> > +. ./common.rc
> > +. ./common.filter
> 
> Nitpick, I don't think you need common.filter, doesn't look like you are 
> using it.
Right. Removed it..
 
> > +# FSIZE limit is now set to 100 MB.
> > +# Lets try to preallocate 101 MB. This should fail.
> > +$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
> > +rm -f $TEST_DIR/ouch
> > +
> > +# Lets now try to preallocate 50 MB. This should succeed.
> > +$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
> > +rm -f $TEST_DIR/ouch
> 
> Even more nitpicky, but sometimes I think it's nice to have the .out 
> file be a bit more descriptive in and of itself so when you see a 
> failing diff you have a better idea what's gone wrong.
Agreed. Done.

Here is the new patch with the changes:

Add a new testcase to the xfstests suite to check if fallocate respects
the limit imposed by RLIMIT_FSIZE (can be set by "ulimit -f XXX") or
not, on a particular filesystem.

Signed-off-by: Amit Arora <aarora@in.ibm.com>

diff -Nuarp xfstests-dev.org/228 xfstests-dev/228
--- xfstests-dev.org/228	1969-12-31 19:00:00.000000000 -0500
+++ xfstests-dev/228	2010-05-05 02:37:48.000000000 -0400
@@ -0,0 +1,79 @@
+#! /bin/bash
+# FS QA Test No. 228
+#
+# Check if fallocate respects RLIMIT_FSIZE 
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2010 IBM Corporation. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+#-----------------------------------------------------------------------
+#
+# creator
+owner=aarora@in.ibm.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+_cleanup()
+{
+	cd /
+	rm -f $tmp.*
+}
+
+here=`pwd`
+tmp=$TEST_DIR/$$
+status=1	# failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15 25
+
+# get standard environment, filters and checks
+. ./common.rc
+
+# real QA test starts here
+# generic, but xfs_io's fallocate must work
+_supported_fs generic
+# only Linux supports fallocate
+_supported_os Linux
+
+[ -n "$XFS_IO_PROG" ] || _notrun "xfs_io executable not found"
+
+rm -f $seq.full
+
+# Sanity check to see if fallocate works
+_require_xfs_io_falloc
+
+# Check if we have good enough space available
+avail=`df -P $TEST_DIR | awk 'END {print $4}'`
+[ "$avail" -ge 104000 ] || _notrun "Test device is too small ($avail KiB)"
+
+# Set the FSIZE ulimit to 100MB and check
+ulimit -f 102400
+flim=`ulimit -f`
+[ "$flim" != "unlimited" ] || _notrun "Unable to set FSIZE ulimit"
+[ "$flim" -eq 102400 ] || _notrun "FSIZE ulimit is not correct (100 MB)"
+
+echo "File size limit is now set to 100 MB."
+echo "Let us try to preallocate 101 MB. This should fail."
+$XFS_IO_PROG -F -f -c 'falloc 0 101m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+echo "Let us now try to preallocate 50 MB. This should succeed."
+$XFS_IO_PROG -F -f -c 'falloc 0 50m' $TEST_DIR/ouch
+rm -f $TEST_DIR/ouch
+
+echo "Test over."
+# success, all done
+status=0
+exit
diff -Nuarp xfstests-dev.org/228.out xfstests-dev/228.out
--- xfstests-dev.org/228.out	1969-12-31 19:00:00.000000000 -0500
+++ xfstests-dev/228.out	2010-05-05 02:38:30.000000000 -0400
@@ -0,0 +1,6 @@
+QA output created by 228
+File size limit is now set to 100 MB.
+Let us try to preallocate 101 MB. This should fail.
+File size limit exceeded
+Let us now try to preallocate 50 MB. This should succeed.
+Test over.
diff -Nuarp xfstests-dev.org/group xfstests-dev/group
--- xfstests-dev.org/group	2010-05-03 02:35:09.000000000 -0400
+++ xfstests-dev/group	2010-05-05 02:38:00.000000000 -0400
@@ -341,3 +341,4 @@ deprecated
 225 auto quick
 226 auto enospc
 227 auto fsr
+228 rw auto prealloc quick

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2] New testcase to check if fallocate respects RLIMIT_FSIZE or not
  2010-05-05  7:55                 ` Amit K. Arora
@ 2010-05-05 15:50                   ` Eric Sandeen
  -1 siblings, 0 replies; 23+ messages in thread
From: Eric Sandeen @ 2010-05-05 15:50 UTC (permalink / raw)
  To: Amit K. Arora
  Cc: Christoph Hellwig, Andrew Morton, xfs, Nikanth Karthikesan,
	coly.li, Nick Piggin, Alexander Viro, linux-fsdevel,
	Theodore Ts'o, Andreas Dilger, linux-ext4, Eelis, Amit Arora

On 05/05/2010 02:55 AM, Amit K. Arora wrote:
> On Tue, May 04, 2010 at 03:44:08PM -0500, Eric Sandeen wrote:
>> Amit K. Arora wrote:
>>> Here is the new testcase.
>> Thanks!  A few comments...
> Thanks for the review!

Sure thing - looks good, I'll merge it after a retest if it all goes
well.  :)

-Eric


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2] New testcase to check if fallocate respects RLIMIT_FSIZE or not
@ 2010-05-05 15:50                   ` Eric Sandeen
  0 siblings, 0 replies; 23+ messages in thread
From: Eric Sandeen @ 2010-05-05 15:50 UTC (permalink / raw)
  To: Amit K. Arora
  Cc: Nick Piggin, Andreas Dilger, Eelis, Theodore Ts'o,
	Nikanth Karthikesan, coly.li, Amit Arora, xfs, Christoph Hellwig,
	Alexander Viro, linux-fsdevel, Andrew Morton, linux-ext4

On 05/05/2010 02:55 AM, Amit K. Arora wrote:
> On Tue, May 04, 2010 at 03:44:08PM -0500, Eric Sandeen wrote:
>> Amit K. Arora wrote:
>>> Here is the new testcase.
>> Thanks!  A few comments...
> Thanks for the review!

Sure thing - looks good, I'll merge it after a retest if it all goes
well.  :)

-Eric

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] ext4: Prevent creation of files larger than RLIMIT_FSIZE using fallocate
  2010-05-04  6:28               ` Amit K. Arora
@ 2010-05-21  1:11                 ` tytso
  0 siblings, 0 replies; 23+ messages in thread
From: tytso @ 2010-05-21  1:11 UTC (permalink / raw)
  To: Amit K. Arora; +Cc: Nikanth Karthikesan, linux-ext4

On Tue, May 04, 2010 at 11:58:16AM +0530, Amit K. Arora wrote:
> On Tue, May 04, 2010 at 11:15:04AM +0530, Nikanth Karthikesan wrote:
> > I assumed that Amit would send a patch with s-o-b, if not, please take
> > this patch.
> Have added my sign-off below. Thanks!

Added to the ext4 patch queue.

							- Ted


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2010-05-21  1:11 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-28 13:24 [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate Nikanth Karthikesan
2010-04-28 16:15 ` Coly Li
     [not found]   ` <201004291014.07194.knikanth@suse.de>
     [not found]     ` <4BD9239D.6060907@suse.de>
2010-04-29  9:23       ` Andreas Dilger
2010-04-30 21:33     ` Andrew Morton
2010-04-30 21:40       ` Andreas Dilger
2010-05-01  7:04       ` Amit K. Arora
2010-05-01 10:18         ` Christoph Hellwig
2010-05-03  7:01           ` Amit K. Arora
2010-05-03  8:31           ` [PATCH] New testcase to check if fallocate respects RLIMIT_FSIZE or not Amit K. Arora
2010-05-03  8:31             ` Amit K. Arora
2010-05-04 20:44             ` Eric Sandeen
2010-05-04 20:44               ` Eric Sandeen
2010-05-05  7:55               ` [PATCH v2] " Amit K. Arora
2010-05-05  7:55                 ` Amit K. Arora
2010-05-05 15:50                 ` Eric Sandeen
2010-05-05 15:50                   ` Eric Sandeen
2010-05-03  4:23         ` [PATCH] Prevent creation of files larger than RLIMIT_FSIZE using fallocate Nikanth Karthikesan
2010-05-03  6:59           ` Amit K. Arora
2010-05-03  7:49             ` Nikanth Karthikesan
2010-05-04  5:44             ` [PATCH] btrfs: " Nikanth Karthikesan
2010-05-04  5:45             ` [PATCH] ext4: " Nikanth Karthikesan
2010-05-04  6:28               ` Amit K. Arora
2010-05-21  1:11                 ` tytso

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.