From 8dc452d90783a63b4041ad615fac21a1aae3b087 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Thu, 14 Nov 2024 17:12:57 -0500 Subject: [PATCH] Fix some nits in zfs_getpages() - If we don't want dmu_read_pages() to perform extra readahead/behind, pass a pointer to 0 instead of a null pointer, as dum_read_pages() expects rahead and rbehind to be non-null. - Avoid unneeded iterations in a loop. Sponsored-by: Klara, Inc. Reported-by: Alexander Motin Reviewed-by: Brian Behlendorf Reviewed-by: Brian Atkinson Reviewed-by: Alexander Motin Signed-off-by: Mark Johnston Closes #16758 --- module/os/freebsd/zfs/zfs_vnops_os.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/module/os/freebsd/zfs/zfs_vnops_os.c b/module/os/freebsd/zfs/zfs_vnops_os.c index 576b4800e..e5acd684e 100644 --- a/module/os/freebsd/zfs/zfs_vnops_os.c +++ b/module/os/freebsd/zfs/zfs_vnops_os.c @@ -4005,7 +4005,7 @@ zfs_getpages(struct vnode *vp, vm_page_t *ma, int count, int *rbehind, * allocated block. */ for (int i = 0; i < count; i++) { - int count1, j, last_size; + int dummypgsin, count1, j, last_size; if (vm_page_any_valid(ma[i])) { ASSERT(vm_page_all_valid(ma[i])); @@ -4018,13 +4018,16 @@ zfs_getpages(struct vnode *vp, vm_page_t *ma, int count, int *rbehind, } } count1 = j - i; + dummypgsin = 0; last_size = j == count ? MIN(end, obj_size) - (end - PAGE_SIZE) : PAGE_SIZE; error = dmu_read_pages(zfsvfs->z_os, zp->z_id, &ma[i], count1, - i == 0 ? &pgsin_b : NULL, j == count ? &pgsin_a : NULL, + i == 0 ? &pgsin_b : &dummypgsin, + j == count ? &pgsin_a : &dummypgsin, last_size); if (error != 0) break; + i += count1 - 1; } zfs_rangelock_exit(lr); -- 2.11.4.GIT