summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_vnops.c
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1999-09-03 05:16:59 +0000
committerjulian <julian@FreeBSD.org>1999-09-03 05:16:59 +0000
commitfd9cb11e537843a4c4e049de57de82546b4e0f15 (patch)
tree62c886699fbed2ce7e62b54bbb9fbfdfe685731a /sys/kern/vfs_vnops.c
parentecfed74f232d4f70fd9f1c9821760e358c127d53 (diff)
downloadFreeBSD-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/vfs_vnops.c')
-rw-r--r--sys/kern/vfs_vnops.c34
1 files changed, 13 insertions, 21 deletions
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
OpenPOWER on IntegriCloud