| Message ID | 20251107144249.435029-5-libaokun@huaweicloud.com |
|---|---|
| State | Superseded |
| Headers | show |
| Series | ext4: enable block size larger than page size | expand |
On Fri 07-11-25 22:42:29, libaokun@huaweicloud.com wrote: > From: Baokun Li <libaokun1@huawei.com> > > When preparing for bs > ps support, clean up unnecessary PAGE_SIZE > references in ext4_punch_hole(). > > Previously, when a hole extended beyond i_size, we aligned the hole end > upwards to PAGE_SIZE to handle partial folio invalidation. Now that > truncate_inode_pages_range() already handles partial folio invalidation > correctly, this alignment is no longer required. > > However, to save pointless tail block zeroing, we still keep rounding up > to the block size here. > > In addition, as Honza pointed out, when the hole end equals i_size, it > should also be rounded up to the block size. This patch fixes that as well. > > Suggested-by: Jan Kara <jack@suse.cz> > Signed-off-by: Baokun Li <libaokun1@huawei.com> > Reviewed-by: Zhang Yi <yi.zhang@huawei.com> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/ext4/inode.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index f7ca48729738..6fec3aa2268a 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -4406,10 +4406,10 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) > > /* > * If the hole extends beyond i_size, set the hole to end after > - * the page that contains i_size. > + * the block that contains i_size to save pointless tail block zeroing. > */ > - if (end > inode->i_size) > - end = round_up(inode->i_size, PAGE_SIZE); > + if (end >= inode->i_size) > + end = round_up(inode->i_size, sb->s_blocksize); > if (end > max_end) > end = max_end; > length = end - offset; > -- > 2.46.1 >
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index f7ca48729738..6fec3aa2268a 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4406,10 +4406,10 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) /* * If the hole extends beyond i_size, set the hole to end after - * the page that contains i_size. + * the block that contains i_size to save pointless tail block zeroing. */ - if (end > inode->i_size) - end = round_up(inode->i_size, PAGE_SIZE); + if (end >= inode->i_size) + end = round_up(inode->i_size, sb->s_blocksize); if (end > max_end) end = max_end; length = end - offset;