summaryrefslogtreecommitdiffstats
path: root/sys/gnu/ext2fs
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>2002-03-30 15:12:57 +0000
committerbde <bde@FreeBSD.org>2002-03-30 15:12:57 +0000
commita9b7c63b296732c9bc02f0f35e74d6c6d58165c3 (patch)
treefe791bc357d13ac95ee46cc3f299fddf14d3cc8e /sys/gnu/ext2fs
parent938a0a2eb491ec1b69daf664d6f501b1caaa3606 (diff)
downloadFreeBSD-src-a9b7c63b296732c9bc02f0f35e74d6c6d58165c3.zip
FreeBSD-src-a9b7c63b296732c9bc02f0f35e74d6c6d58165c3.tar.gz
In ffs_mountffs(), set mnt_iosize_max to si_iosize_max unconditionally
provided the latter is nonzero. At this point, the former is a fairly arbitrary default value (DFTPHYS), so changing it to any reasonable value specified by the device driver is safe. Using the maximum of these limits broke ffs clustered i/o for devices whose si_iosize_max is < DFLTPHYS. Using the minimum would break device drivers' ability to increase the active limit from DFTLPHYS up to MAXPHYS. Copied the code for this and the associated (unnecessary?) fixup of mp_iosize_max to all other filesystems that use clustering (ext2fs and msdosfs). It was completely missing. PR: 36309 MFC-after: 1 week
Diffstat (limited to 'sys/gnu/ext2fs')
-rw-r--r--sys/gnu/ext2fs/ext2_vfsops.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c
index 3bc7248..3bf08fe 100644
--- a/sys/gnu/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/ext2fs/ext2_vfsops.c
@@ -651,6 +651,11 @@ ext2_mountfs(devvp, mp, td)
VOP_UNLOCK(devvp, 0, td);
if (error)
return (error);
+ if (devvp->v_rdev->si_iosize_max != 0)
+ mp->mnt_iosize_max = devvp->v_rdev->si_iosize_max;
+ if (mp->mnt_iosize_max > MAXPHYS)
+ mp->mnt_iosize_max = MAXPHYS;
+
bp = NULL;
ump = NULL;
if ((error = bread(devvp, SBLOCK, SBSIZE, NOCRED, &bp)) != 0)
OpenPOWER on IntegriCloud