diff options
author | Mark Johnston <[email protected]> | 2024-11-14 17:12:57 -0500 |
---|---|---|
committer | GitHub <[email protected]> | 2024-11-14 14:12:57 -0800 |
commit | 8dc452d90783a63b4041ad615fac21a1aae3b087 (patch) | |
tree | 82a9de470b16b7cd01a02f361b4a08bcd17493ca | |
parent | 46c4f2ce0baafe161c726a72a38573354228fe10 (diff) |
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 <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Brian Atkinson <[email protected]>
Reviewed-by: Alexander Motin <[email protected]>
Signed-off-by: Mark Johnston <[email protected]>
Closes #16758
-rw-r--r-- | module/os/freebsd/zfs/zfs_vnops_os.c | 7 |
1 files 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); |