extents.c (0d9c2ff1c9f7f8b339fc42ac9763b28c71f1c115) extents.c (51e3ae81ec58e95f10a98ef3dd6d7bce5d8e35a2)
1/*
2 * Copyright (c) 2003-2006, Cluster File Systems, Inc, info@clusterfs.com
3 * Written by Alex Tomas <alex@clusterfs.com>
4 *
5 * Architecture independence:
6 * Copyright (c) 2005, Bull S.A.
7 * Written by Pierre Peiffer <pierre.peiffer@bull.net>
8 *

--- 4780 unchanged lines hidden (view full) ---

4789 * Indirect files do not support unwritten extnets
4790 */
4791 if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) {
4792 ret = -EOPNOTSUPP;
4793 goto out_mutex;
4794 }
4795
4796 if (!(mode & FALLOC_FL_KEEP_SIZE) &&
1/*
2 * Copyright (c) 2003-2006, Cluster File Systems, Inc, info@clusterfs.com
3 * Written by Alex Tomas <alex@clusterfs.com>
4 *
5 * Architecture independence:
6 * Copyright (c) 2005, Bull S.A.
7 * Written by Pierre Peiffer <pierre.peiffer@bull.net>
8 *

--- 4780 unchanged lines hidden (view full) ---

4789 * Indirect files do not support unwritten extnets
4790 */
4791 if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) {
4792 ret = -EOPNOTSUPP;
4793 goto out_mutex;
4794 }
4795
4796 if (!(mode & FALLOC_FL_KEEP_SIZE) &&
4797 offset + len > i_size_read(inode)) {
4797 (offset + len > i_size_read(inode) ||
4798 offset + len > EXT4_I(inode)->i_disksize)) {
4798 new_size = offset + len;
4799 ret = inode_newsize_ok(inode, new_size);
4800 if (ret)
4801 goto out_mutex;
4802 }
4803
4804 flags = EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT;
4805 if (mode & FALLOC_FL_KEEP_SIZE)

--- 154 unchanged lines hidden (view full) ---

4960 * We only support preallocation for extent-based files only
4961 */
4962 if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) {
4963 ret = -EOPNOTSUPP;
4964 goto out;
4965 }
4966
4967 if (!(mode & FALLOC_FL_KEEP_SIZE) &&
4799 new_size = offset + len;
4800 ret = inode_newsize_ok(inode, new_size);
4801 if (ret)
4802 goto out_mutex;
4803 }
4804
4805 flags = EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT;
4806 if (mode & FALLOC_FL_KEEP_SIZE)

--- 154 unchanged lines hidden (view full) ---

4961 * We only support preallocation for extent-based files only
4962 */
4963 if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) {
4964 ret = -EOPNOTSUPP;
4965 goto out;
4966 }
4967
4968 if (!(mode & FALLOC_FL_KEEP_SIZE) &&
4968 offset + len > i_size_read(inode)) {
4969 (offset + len > i_size_read(inode) ||
4970 offset + len > EXT4_I(inode)->i_disksize)) {
4969 new_size = offset + len;
4970 ret = inode_newsize_ok(inode, new_size);
4971 if (ret)
4972 goto out;
4973 }
4974
4975 /* Wait all existing dio workers, newcomers will block on i_mutex */
4976 ext4_inode_block_unlocked_dio(inode);

--- 973 unchanged lines hidden ---
4971 new_size = offset + len;
4972 ret = inode_newsize_ok(inode, new_size);
4973 if (ret)
4974 goto out;
4975 }
4976
4977 /* Wait all existing dio workers, newcomers will block on i_mutex */
4978 ext4_inode_block_unlocked_dio(inode);

--- 973 unchanged lines hidden ---