Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate
From: Lukáš Czerner <hidden>
Date: 2014-02-27 11:56:54
Also in:
linux-fsdevel, linux-xfs
On Wed, 26 Feb 2014, jon ernst wrote:
Date: Wed, 26 Feb 2014 23:41:15 -0500 From: jon ernst <redacted> To: Lukas Czerner <redacted> Cc: "linux-ext4@vger.kernel.org List" <redacted>, Theodore Ts'o [off-list ref], linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate On Wed, Feb 26, 2014 at 1:00 AM, jon ernst [off-list ref] wrote:quoted
On Tue, Feb 25, 2014 at 2:14 PM, Lukas Czerner [off-list ref] wrote:quoted
Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. It can be used to convert a range of file to zeros preferably without issuing data IO. Blocks should be preallocated for the regions that span holes in the file, and the entire range is preferable converted to unwritten extents This can be also used to preallocate blocks past EOF in the same way as with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode size to remain the same. Also add appropriate tracepoints. Signed-off-by: Lukas Czerner <redacted> --- fs/ext4/ext4.h | 2 + fs/ext4/extents.c | 270 +++++++++++++++++++++++++++++++++++++++++--- fs/ext4/inode.c | 17 ++- include/trace/events/ext4.h | 64 +++++------quoted
quoted
static int +ext4_ext_convert_initialized_extent(handle_t *handle, struct inode *inode, + struct ext4_map_blocks *map, + struct ext4_ext_path *path, int flags, + unsigned int allocated, ext4_fsblk_t newblock) +{ + int ret = 0; + int err = 0; + + /* + * Make sure that the extent is no bigger than we support with + * uninitialized extent + */ + if (map->m_len > EXT_UNINIT_MAX_LEN) + map->m_len = EXT_UNINIT_MAX_LEN / 2;Pardon my possible dumb question. Why do you use "EXT_UNINIT_MAX_LEN/ 2;" here instead of "EXT_UNINIT_MAX_LEN" I don't see the reason why we can't use EXT_UNINIT_MAX_LEN here. (resend, Ping on this question, thank you!)
Wow, that's an early ping :) I am sorry to disappoint you, my answer is not going to be that exciting :) Yes, we can just use EXT_UNINIT_MAX_LEN here. But EXT_UNINIT_MAX_LEN/2 would make it much more evenly spread out. I do not think there is any real world advantage to this and the behaviour should be the same in both cases. Thanks! -Lukas
Thanks! Jon
_______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs