zfs/module/os/linux/zfs
Rob Norris 98bcc390e8 vdev_disk: rework bio max segment calculation
A single "page" in an ABD does not necessarily correspond to one segment
in a bio, because of how ZFS does ABD allocations and how it breaks them
up with adding them to a bio. Because of this, simply dividing the ABD
size by the page size can only ever give a minimum number of segments
required, rather than the correct number.

Until we can fix that, we'll just make each bio as large as they can be
for as many segments as the device queue will permit without needing to
split the the bio. This is a little wasteful if we don't intend to put
that many segments in the bio, but its not a lot of memory and its only
lost until the bio is completed.

This also adds a tuneable, vdev_disk_max_segs, to allow setting this
value to be set by the operator. This is very useful for debugging.

Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
(cherry picked from commit a3a438d1bedb0626417cd73ba10b1479a06bef7f)
2023-07-31 15:05:56 +00:00
..
Makefile.in Restore FreeBSD resource usage accounting 2021-02-19 22:34:33 -08:00
abd_os.c abd_os: remove redundant refcount creation for abd_children 2022-05-20 10:33:24 -07:00
arc_os.c Remove b_pabd/b_rabd allocation from arc_hdr_alloc() 2021-09-14 14:31:50 -07:00
mmp_os.c Add zfs_multihost_interval tunable handler for FreeBSD 2020-06-23 13:32:42 -07:00
policy.c Fix ACL checks for NFS kernel server 2022-03-20 21:21:18 -07:00
qat.c QAT related bug fixes 2019-09-12 13:33:44 -07:00
qat_compress.c Modify checksum obtain method of QAT 2021-09-14 14:29:46 -07:00
qat_crypt.c QAT related bug fixes 2019-09-12 13:33:44 -07:00
spa_misc_os.c Make spa_history_zone platform-dependent in kernel 2020-03-02 09:43:30 -08:00
trace.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
vdev_disk.c vdev_disk: rework bio max segment calculation 2023-07-31 15:05:56 +00:00
vdev_file.c module: zfs: fix unused, remove argsused 2022-02-16 17:58:56 -08:00
zfs_acl.c dmu: rename dmu_tx_assign flags 2023-07-05 13:27:30 +00:00
zfs_ctldir.c Linux: always check or verify return of igrab() 2021-03-16 16:33:34 -07:00
zfs_debug.c Annotated dprintf as printf-like 2021-06-24 13:12:36 -07:00
zfs_dir.c vnops: thread DMU_TX_ASSIGN_CONTINUE to a bunch of vnops 2023-07-05 13:27:30 +00:00
zfs_file_os.c file reference counts can get corrupted 2021-09-14 12:37:38 -07:00
zfs_ioctl_os.c zfs: support force exporting pools 2023-07-05 13:27:30 +00:00
zfs_racct.c module: zfs: fix unused, remove argsused 2022-02-16 17:58:56 -08:00
zfs_sysfs.c Linux 5.18 compat: kobj_type.default_attrs replaced with default_groups 2022-04-25 10:00:09 -07:00
zfs_uio.c autoconf: Fail when __copy_from_user_inatomic is a non-GPL symbol 2022-05-20 10:33:24 -07:00
zfs_vfsops.c zil: allow the ZIL to fail and restart independently of the pool 2023-07-05 13:27:31 +00:00
zfs_vnops_os.c vnops: thread DMU_TX_ASSIGN_CONTINUE to a bunch of vnops 2023-07-05 13:27:30 +00:00
zfs_znode.c vnops: thread DMU_TX_ASSIGN_CONTINUE to a bunch of vnops 2023-07-05 13:27:30 +00:00
zio_crypt.c module: zfs: fix unused, remove argsused 2022-02-16 17:58:56 -08:00
zpl_ctldir.c Linux 5.12 compat: idmapped mounts 2021-03-19 21:00:59 -07:00
zpl_export.c Return required size when encode_fh size too small 2021-05-10 12:13:45 -07:00
zpl_file.c Linux 5.19 compat: aops->read_folio() 2022-06-01 14:24:49 -07:00
zpl_inode.c Fix ACL checks for NFS kernel server 2022-03-20 21:21:18 -07:00
zpl_super.c zfs: support force exporting pools 2023-07-05 13:27:30 +00:00
zpl_xattr.c Fix ACL checks for NFS kernel server 2022-03-20 21:21:18 -07:00
zvol_os.c dmu: rename dmu_tx_assign flags 2023-07-05 13:27:30 +00:00