[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5p7pwuf2zjf7feneef57gvxc2pa46l346igllimpdvvtnrv6v3@js75oockzrgw>
Date: Wed, 5 Nov 2025 10:28:03 +0100
From: Jan Kara <jack@...e.cz>
To: libaokun@...weicloud.com
Cc: linux-ext4@...r.kernel.org, tytso@....edu, adilger.kernel@...ger.ca,
jack@...e.cz, linux-kernel@...r.kernel.org, kernel@...kajraghav.com,
mcgrof@...nel.org, linux-fsdevel@...r.kernel.org, linux-mm@...ck.org,
yi.zhang@...wei.com, yangerkun@...wei.com, chengzhihao1@...wei.com,
libaokun1@...wei.com
Subject: Re: [PATCH 17/25] ext4: support large block size in
ext4_block_write_begin()
On Sat 25-10-25 11:22:13, libaokun@...weicloud.com wrote:
> From: Baokun Li <libaokun1@...wei.com>
>
> Use the EXT4_P_TO_LBLK() macro to convert folio indexes to blocks to avoid
> negative left shifts after supporting blocksize greater than PAGE_SIZE.
>
> Signed-off-by: Baokun Li <libaokun1@...wei.com>
> Reviewed-by: Zhang Yi <yi.zhang@...wei.com>
Looks good. Feel free to add:
Reviewed-by: Jan Kara <jack@...e.cz>
Honza
> ---
> fs/ext4/inode.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index 73c1da90b604..d97ce88d6e0a 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -1162,8 +1162,7 @@ int ext4_block_write_begin(handle_t *handle, struct folio *folio,
> unsigned block_start, block_end;
> sector_t block;
> int err = 0;
> - unsigned blocksize = inode->i_sb->s_blocksize;
> - unsigned bbits;
> + unsigned int blocksize = i_blocksize(inode);
> struct buffer_head *bh, *head, *wait[2];
> int nr_wait = 0;
> int i;
> @@ -1172,12 +1171,12 @@ int ext4_block_write_begin(handle_t *handle, struct folio *folio,
> BUG_ON(!folio_test_locked(folio));
> BUG_ON(to > folio_size(folio));
> BUG_ON(from > to);
> + WARN_ON_ONCE(blocksize > folio_size(folio));
>
> head = folio_buffers(folio);
> if (!head)
> head = create_empty_buffers(folio, blocksize, 0);
> - bbits = ilog2(blocksize);
> - block = (sector_t)folio->index << (PAGE_SHIFT - bbits);
> + block = EXT4_P_TO_LBLK(inode, folio->index);
>
> for (bh = head, block_start = 0; bh != head || !block_start;
> block++, block_start = block_end, bh = bh->b_this_page) {
> --
> 2.46.1
>
--
Jan Kara <jack@...e.com>
SUSE Labs, CR
Powered by blists - more mailing lists