Re: [PATCH 1/5] fallocate() implementation in i86, x86_64 and powerpc
From: David Chinner <hidden>
Date: 2007-05-04 06:07:31
Also in:
linux-fsdevel, linux-xfs, lkml
From: David Chinner <hidden>
Date: 2007-05-04 06:07:31
Also in:
linux-fsdevel, linux-xfs, lkml
On Thu, May 03, 2007 at 09:29:55PM -0700, Andrew Morton wrote:
On Thu, 26 Apr 2007 23:33:32 +0530 "Amit K. Arora" [off-list ref] wrote:quoted
This patch implements the fallocate() system call and adds support for i386, x86_64 and powerpc. ... +{ + struct file *file; + struct inode *inode; + long ret = -EINVAL; + + if (len == 0 || offset < 0) + goto out;The posix spec implies that negative `len' is permitted - presumably "allocate ahead of `offset'". How peculiar.
I just checked the man page for posix_fallocate() and it says:
EINVAL offset or len was less than zero.
We should probably follow this lead.
quoted
+ + ret = -ENODEV; + if (!S_ISREG(inode->i_mode)) + goto out_fput;So we return ENODEV against an S_ISBLK fd, as per the posix spec. That seems a bit silly of them.
Hmmmm - I thought that the intention of sys_fallocate() was to be generic enough to eventually allow preallocation on directories. If that is the case, then this check will prevent that.... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group