diff options
author | julian <julian@FreeBSD.org> | 1999-09-03 05:16:59 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 1999-09-03 05:16:59 +0000 |
commit | fd9cb11e537843a4c4e049de57de82546b4e0f15 (patch) | |
tree | 62c886699fbed2ce7e62b54bbb9fbfdfe685731a /sys/kern | |
parent | ecfed74f232d4f70fd9f1c9821760e358c127d53 (diff) | |
download | FreeBSD-src-fd9cb11e537843a4c4e049de57de82546b4e0f15.zip FreeBSD-src-fd9cb11e537843a4c4e049de57de82546b4e0f15.tar.gz |
Revert a bunch of contraversial changes by PHK. After
a quick think and discussion among various people some form of some of
these changes will probably be recommitted.
The reversion requested was requested by dg while discussions proceed.
PHK has indicated that he can live with this, and it has been agreed
that some form of some of these changes may return shortly after further
discussion.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/subr_diskslice.c | 1 | ||||
-rw-r--r-- | sys/kern/vfs_vnops.c | 34 |
2 files changed, 14 insertions, 21 deletions
diff --git a/sys/kern/subr_diskslice.c b/sys/kern/subr_diskslice.c index d8dda72..df187ef 100644 --- a/sys/kern/subr_diskslice.c +++ b/sys/kern/subr_diskslice.c @@ -716,6 +716,7 @@ dsopen(dev, mode, flags, sspp, lp) int unit; dev->si_bsize_phys = lp->d_secsize; + dev->si_bsize_best = BLKDEV_IOSIZE; dev->si_bsize_max = MAXBSIZE; unit = dkunit(dev); diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index c64a77e..0a08938 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -429,31 +429,23 @@ vn_stat(vp, sb, p) sb->st_atimespec = vap->va_atime; sb->st_mtimespec = vap->va_mtime; sb->st_ctimespec = vap->va_ctime; - /* - * According to www.opengroup.org, the meaning of st_blksize is - * "a filesystem-specific preferred I/O block size for this - * object. In some filesystem types, this may vary from file - * to file" - * Default to zero to catch bogus uses of this field. + * For block and char device nodes we don't really care + * about what the filesystem told us, we want to know + * what the device told us */ - sb->st_blksize = 0; - - if (vp->v_type == VREG) - sb->st_blksize = vap->va_blocksize; - - /* - * For disks we can say something sensible. We report the max - * size because we prefer few big transfers than many small. - * XXX: Only reliable if the disk is opened. - * XXX: Use vn_isdisk when it allows VCHR too - */ - if ((vp->v_type == VBLK || vp->v_type == VCHR) && - devsw(vp->v_rdev) && (devsw(vp->v_rdev)->d_flags & D_DISK)) + switch (vap->va_type) { + case VBLK: + sb->st_blksize = vp->v_rdev->si_bsize_best; + break; + case VCHR: sb->st_blksize = vp->v_rdev->si_bsize_max; - + break; + default: + sb->st_blksize = vap->va_blocksize; + break; + } sb->st_flags = vap->va_flags; - if (suser_xxx(p->p_ucred, 0, 0)) sb->st_gen = 0; else |