summaryrefslogtreecommitdiff
path: root/sys/dev/mlx/mlx_disk.c
diff options
context:
space:
mode:
authorMike Smith <msmith@FreeBSD.org>2000-05-06 08:54:33 +0000
committerMike Smith <msmith@FreeBSD.org>2000-05-06 08:54:33 +0000
commitbaff09db2cf68bb71d0dbd02758fd44a3dfca6a0 (patch)
treef44ef05626ddf72d84737cde250e514315176450 /sys/dev/mlx/mlx_disk.c
parent1fdb6e6c6943ff0661c0351d1d1c9bf0ce963c5e (diff)
Notes
Diffstat (limited to 'sys/dev/mlx/mlx_disk.c')
-rw-r--r--sys/dev/mlx/mlx_disk.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/mlx/mlx_disk.c b/sys/dev/mlx/mlx_disk.c
index 190f7a785468..558474921fe4 100644
--- a/sys/dev/mlx/mlx_disk.c
+++ b/sys/dev/mlx/mlx_disk.c
@@ -236,6 +236,7 @@ mlxd_attach(device_t dev)
device_t parent;
char *state;
dev_t dsk;
+ int s1, s2;
debug_called(1);
@@ -272,8 +273,13 @@ mlxd_attach(device_t dev)
dsk->si_drv1 = sc;
sc->mlxd_dev_t = dsk;
- /* set maximum I/O size */
- dsk->si_iosize_max = sc->mlxd_controller->mlx_enq2->me_maxblk * MLX_BLKSIZE;
+ /*
+ * Set maximum I/O size to the lesser of the recommended maximum and the practical
+ * maximum.
+ */
+ s1 = sc->mlxd_controller->mlx_enq2->me_maxblk * MLX_BLKSIZE;
+ s2 = (sc->mlxd_controller->mlx_enq2->me_max_sg - 1) * PAGE_SIZE;
+ dsk->si_iosize_max = imin(s1, s2);
return (0);
}