From 1b5464ef9dcb03d6bccbdc5acd734801ea1679af Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Wed, 29 Sep 1999 20:05:33 +0000 Subject: [PATCH] Remove v_maxio from struct vnode. Replace it with mnt_iosize_max in struct mount. Nits from: bde --- sys/fs/specfs/spec_vnops.c | 7 ------- sys/gnu/ext2fs/ext2_bmap.c | 3 +-- sys/gnu/fs/ext2fs/ext2_bmap.c | 3 +-- sys/kern/vfs_cluster.c | 8 ++++---- sys/kern/vfs_export.c | 2 +- sys/kern/vfs_extattr.c | 1 + sys/kern/vfs_subr.c | 2 +- sys/kern/vfs_syscalls.c | 1 + sys/miscfs/specfs/spec_vnops.c | 7 ------- sys/sys/mount.h | 1 + sys/sys/vnode.h | 1 - sys/ufs/ffs/ffs_vfsops.c | 4 ++++ sys/ufs/ufs/ufs_bmap.c | 3 +-- 13 files changed, 16 insertions(+), 27 deletions(-) diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c index 237d8f513998..f3e264cf14ac 100644 --- a/sys/fs/specfs/spec_vnops.c +++ b/sys/fs/specfs/spec_vnops.c @@ -251,13 +251,6 @@ spec_open(ap) if (!dev->si_bsize_phys) dev->si_bsize_phys = DEV_BSIZE; } - maxio = dev->si_iosize_max; - if (!maxio) - maxio = DFLTPHYS; - if (maxio > MAXPHYS) - maxio = MAXPHYS; - vp->v_maxio = maxio; - return (error); } diff --git a/sys/gnu/ext2fs/ext2_bmap.c b/sys/gnu/ext2fs/ext2_bmap.c index 22f83c3c20b9..14ef56ef8b4b 100644 --- a/sys/gnu/ext2fs/ext2_bmap.c +++ b/sys/gnu/ext2fs/ext2_bmap.c @@ -133,8 +133,7 @@ ufs_bmaparray(vp, bn, bnp, ap, nump, runp, runb) *runb = 0; } - vp->v_maxio = devvp->v_maxio; - maxrun = vp->v_maxio / mp->mnt_stat.f_iosize - 1; + maxrun = mp->mnt_iosize_max / mp->mnt_stat.f_iosize - 1; xap = ap == NULL ? a : ap; if (!nump) diff --git a/sys/gnu/fs/ext2fs/ext2_bmap.c b/sys/gnu/fs/ext2fs/ext2_bmap.c index 22f83c3c20b9..14ef56ef8b4b 100644 --- a/sys/gnu/fs/ext2fs/ext2_bmap.c +++ b/sys/gnu/fs/ext2fs/ext2_bmap.c @@ -133,8 +133,7 @@ ufs_bmaparray(vp, bn, bnp, ap, nump, runp, runb) *runb = 0; } - vp->v_maxio = devvp->v_maxio; - maxrun = vp->v_maxio / mp->mnt_stat.f_iosize - 1; + maxrun = mp->mnt_iosize_max / mp->mnt_stat.f_iosize - 1; xap = ap == NULL ? a : ap; if (!nump) diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index 50373114ea4c..d8c77db6a294 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -106,7 +106,7 @@ cluster_read(vp, filesize, lblkno, size, cred, totread, seqcount, bpp) * Try to limit the amount of read-ahead by a few * ad-hoc parameters. This needs work!!! */ - racluster = vp->v_maxio/size; + racluster = vp->v_mount->mnt_iosize_max / size; maxra = 2 * racluster + (totread / size); if (maxra > MAXRA) maxra = MAXRA; @@ -363,7 +363,7 @@ cluster_rbuild(vp, filesize, lbn, blkno, size, run, fbp) for (bn = blkno, i = 0; i < run; ++i, bn += inc) { if (i != 0) { if ((bp->b_npages * PAGE_SIZE) + - round_page(size) > vp->v_maxio) + round_page(size) > vp->v_mount->mnt_iosize_max) break; if ((tbp = incore(vp, lbn + i)) != NULL) { @@ -556,7 +556,7 @@ cluster_write(bp, filesize) if (vp->v_clen == 0 || lbn != vp->v_lastw + 1 || (bp->b_blkno != vp->v_lasta + btodb(lblocksize))) { - maxclen = vp->v_maxio / lblocksize - 1; + maxclen = vp->v_mount->mnt_iosize_max / lblocksize - 1; if (vp->v_clen != 0) { /* * Next block is not sequential. @@ -761,7 +761,7 @@ cluster_wbuild(vp, size, start_lbn, len) ((bp->b_blkno + (dbsize * i)) != tbp->b_blkno) || ((tbp->b_npages + bp->b_npages) > - (vp->v_maxio / PAGE_SIZE))) { + (vp->v_mount->mnt_iosize_max / PAGE_SIZE))) { BUF_UNLOCK(tbp); splx(s); break; diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 5b92ad0562b9..4e5f695054b9 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -272,6 +272,7 @@ vfs_rootmountalloc(fstypename, devname, mpp) mp->mnt_flag = MNT_RDONLY; mp->mnt_vnodecovered = NULLVP; vfsp->vfc_refcount++; + mp->mnt_iosize_max = DFLTPHYS; mp->mnt_stat.f_type = vfsp->vfc_typenum; mp->mnt_flag |= vfsp->vfc_flags & MNT_VISFLAGMASK; strncpy(mp->mnt_stat.f_fstypename, vfsp->vfc_name, MFSNAMELEN); @@ -593,7 +594,6 @@ getnewvnode(tag, mp, vops, vpp) *vpp = vp; vp->v_usecount = 1; vp->v_data = 0; - vp->v_maxio = DFLTPHYS; splx(s); vfs_object_create(vp, p, p->p_ucred); diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index 952f875ec49e..87c9af8ccf7e 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -278,6 +278,7 @@ mount(p, uap) strncpy(mp->mnt_stat.f_fstypename, vfsp->vfc_name, MFSNAMELEN); mp->mnt_vnodecovered = vp; mp->mnt_stat.f_owner = p->p_ucred->cr_uid; + mp->mnt_iosize_max = DFLTPHYS; VOP_UNLOCK(vp, 0, p); update: /* diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 5b92ad0562b9..4e5f695054b9 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -272,6 +272,7 @@ vfs_rootmountalloc(fstypename, devname, mpp) mp->mnt_flag = MNT_RDONLY; mp->mnt_vnodecovered = NULLVP; vfsp->vfc_refcount++; + mp->mnt_iosize_max = DFLTPHYS; mp->mnt_stat.f_type = vfsp->vfc_typenum; mp->mnt_flag |= vfsp->vfc_flags & MNT_VISFLAGMASK; strncpy(mp->mnt_stat.f_fstypename, vfsp->vfc_name, MFSNAMELEN); @@ -593,7 +594,6 @@ getnewvnode(tag, mp, vops, vpp) *vpp = vp; vp->v_usecount = 1; vp->v_data = 0; - vp->v_maxio = DFLTPHYS; splx(s); vfs_object_create(vp, p, p->p_ucred); diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 952f875ec49e..87c9af8ccf7e 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -278,6 +278,7 @@ mount(p, uap) strncpy(mp->mnt_stat.f_fstypename, vfsp->vfc_name, MFSNAMELEN); mp->mnt_vnodecovered = vp; mp->mnt_stat.f_owner = p->p_ucred->cr_uid; + mp->mnt_iosize_max = DFLTPHYS; VOP_UNLOCK(vp, 0, p); update: /* diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c index 237d8f513998..f3e264cf14ac 100644 --- a/sys/miscfs/specfs/spec_vnops.c +++ b/sys/miscfs/specfs/spec_vnops.c @@ -251,13 +251,6 @@ spec_open(ap) if (!dev->si_bsize_phys) dev->si_bsize_phys = DEV_BSIZE; } - maxio = dev->si_iosize_max; - if (!maxio) - maxio = DFLTPHYS; - if (maxio > MAXPHYS) - maxio = MAXPHYS; - vp->v_maxio = maxio; - return (error); } diff --git a/sys/sys/mount.h b/sys/sys/mount.h index 2da7a1e43908..1a68b17cc186 100644 --- a/sys/sys/mount.h +++ b/sys/sys/mount.h @@ -110,6 +110,7 @@ struct mount { struct statfs mnt_stat; /* cache of filesystem stats */ qaddr_t mnt_data; /* private data */ time_t mnt_time; /* last time written*/ + u_int mnt_iosize_max; /* max IO request size */ }; /* diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 573a951e3a68..047f274fe38c 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -111,7 +111,6 @@ struct vnode { daddr_t v_cstart; /* start block of cluster */ daddr_t v_lasta; /* last allocation */ int v_clen; /* length of current cluster */ - int v_maxio; /* maximum I/O cluster size */ struct vm_object *v_object; /* Place to store VM object */ struct simplelock v_interlock; /* lock on usecount and flag */ struct lock *v_vnlock; /* used for non-locking fs's */ diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 9af1c90cc0e8..2ec065ff0e73 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -620,6 +620,10 @@ ffs_mountfs(devvp, mp, p, malloctype) error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, p); if (error) return (error); + if (devvp->v_rdev->si_iosize_max > mp->mnt_iosize_max) + mp->mnt_iosize_max = devvp->v_rdev->si_iosize_max; + if (mp->mnt_iosize_max > MAXPHYS) + mp->mnt_iosize_max = MAXPHYS; if (VOP_IOCTL(devvp, DIOCGPART, (caddr_t)&dpart, FREAD, cred, p) != 0) size = DEV_BSIZE; diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c index 22f83c3c20b9..14ef56ef8b4b 100644 --- a/sys/ufs/ufs/ufs_bmap.c +++ b/sys/ufs/ufs/ufs_bmap.c @@ -133,8 +133,7 @@ ufs_bmaparray(vp, bn, bnp, ap, nump, runp, runb) *runb = 0; } - vp->v_maxio = devvp->v_maxio; - maxrun = vp->v_maxio / mp->mnt_stat.f_iosize - 1; + maxrun = mp->mnt_iosize_max / mp->mnt_stat.f_iosize - 1; xap = ap == NULL ? a : ap; if (!nump)