On Tue, May 23, 2023 at 09:32:12PM +0200, David Sterba wrote:
On Tue, May 23, 2023 at 03:33:22PM +0800, Qu Wenruo wrote:The final version is
On 2023/5/23 15:09, pengfuyuan wrote:Yeah I think the calculations would have to be conditional or keeping
Although even with such change, I'm still not sure if it's any better or
worse, as most of the calculation can still be bulky.
some state. I'd like to keep the structure of the first page and the
rest.
Possible ways is to add extra condition
for (i = 1; i < num_pages && i < INLINE_EXTENT_BUFFER_PAGES; i++)
for (i = 1; i < num_pages && INLINE_EXTENT_BUFFER_PAGES > 1; i++)
ie. 'INLINE_EXTENT_BUFFER_PAGES > 1' can be evaluated at compile time
and result in removing the for loop completely.
Pengfuyuan, can you please do a build test that it does not report the
warning anymore? The diff is:
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -88,7 +88,6 @@ static void csum_tree_block(struct extent_buffer *buf, u8 *result)
const int first_page_part = min_t(u32, PAGE_SIZE, fs_info->nodesize);
SHASH_DESC_ON_STACK(shash, fs_info->csum_shash);
char *kaddr;
- int i;
shash->tfm = fs_info->csum_shash;
crypto_shash_init(shash);
@@ -96,7 +95,7 @@ static void csum_tree_block(struct extent_buffer *buf, u8 *result)
crypto_shash_update(shash, kaddr + BTRFS_CSUM_SIZE,
first_page_part - BTRFS_CSUM_SIZE);
- for (i = 1; i < num_pages; i++) {
+ for (int i = 1; i < num_pages && INLINE_EXTENT_BUFFER_PAGES > 1; i++) {
kaddr = page_address(buf->pages[i]);
crypto_shash_update(shash, kaddr, PAGE_SIZE);
}
---