ext4: remove redundant S_ISREG() checks from ext4_fallocate()
authorEric Biggers <ebiggers@google.com>
Tue, 31 Dec 2019 18:04:39 +0000 (12:04 -0600)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 17 Jan 2020 21:24:54 +0000 (16:24 -0500)
ext4_fallocate() is only used in the file_operations for regular files.
Also, the VFS only allows fallocate() on regular files and block
devices, but block devices always use blkdev_fallocate().  For both of
these reasons, S_ISREG() is always true in ext4_fallocate().

Therefore the S_ISREG() checks in ext4_zero_range(),
ext4_collapse_range(), ext4_insert_range(), and ext4_punch_hole() are
redundant.  Remove them.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Link: https://lore.kernel.org/r/20191231180444.46586-4-ebiggers@kernel.org
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>
Reviewed-by: Jan Kara <jack@suse.cz>
fs/ext4/extents.c
fs/ext4/inode.c

index 9ff19cf..94a25ca 100644 (file)
@@ -4674,9 +4674,6 @@ static long ext4_zero_range(struct file *file, loff_t offset,
 
        trace_ext4_zero_range(inode, offset, len, mode);
 
-       if (!S_ISREG(inode->i_mode))
-               return -EINVAL;
-
        /* Call ext4_force_commit to flush all data in case of data=journal. */
        if (ext4_should_journal_data(inode)) {
                ret = ext4_force_commit(inode->i_sb);
@@ -5439,9 +5436,6 @@ int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len)
        if (!IS_ALIGNED(offset | len, EXT4_CLUSTER_SIZE(sb)))
                return -EINVAL;
 
-       if (!S_ISREG(inode->i_mode))
-               return -EINVAL;
-
        trace_ext4_collapse_range(inode, offset, len);
 
        punch_start = offset >> EXT4_BLOCK_SIZE_BITS(sb);
@@ -5588,9 +5582,6 @@ int ext4_insert_range(struct inode *inode, loff_t offset, loff_t len)
        if (!IS_ALIGNED(offset | len, EXT4_CLUSTER_SIZE(sb)))
                return -EINVAL;
 
-       if (!S_ISREG(inode->i_mode))
-               return -EOPNOTSUPP;
-
        trace_ext4_insert_range(inode, offset, len);
 
        offset_lblk = offset >> EXT4_BLOCK_SIZE_BITS(sb);
index 73482fc..3d0efb4 100644 (file)
@@ -3940,9 +3940,6 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length)
        unsigned int credits;
        int ret = 0;
 
-       if (!S_ISREG(inode->i_mode))
-               return -EOPNOTSUPP;
-
        trace_ext4_punch_hole(inode, offset, length, 0);
 
        ext4_clear_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA);