On Tue, Apr 7, 2015 at 9:46 PM, Davide Italiano <dccitaliano@xxxxxxxxx> wrote: > fallocate() checks that the file is extent-based and returns > EOPNOTSUPP in case is not. Other tasks can convert from and to > indirect and extent so it's safe to check only after grabbing > the inode mutex. > > Signed-off-by: Davide Italiano <dccitaliano@xxxxxxxxx> > --- > fs/ext4/extents.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index bed4308..8a9ee08 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -4934,13 +4934,6 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > if (ret) > return ret; > > - /* > - * currently supporting (pre)allocate mode for extent-based > - * files _only_ > - */ > - if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) > - return -EOPNOTSUPP; > - > if (mode & FALLOC_FL_COLLAPSE_RANGE) > return ext4_collapse_range(inode, offset, len); > > @@ -4962,6 +4955,15 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > > mutex_lock(&inode->i_mutex); > > + /* > + * currently supporting (pre)allocate mode for extent-based > + * files _only_ > + */ > + if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) { > + ret = -EOPNOTSUPP; > + goto out; > + } > + > if (!(mode & FALLOC_FL_KEEP_SIZE) && > offset + len > i_size_read(inode)) { > new_size = offset + len; > -- > 2.3.4 > Any comment on this? Is it correct? -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html