aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorJulian Elischer <julian@FreeBSD.org>1999-09-03 08:26:46 +0000
committerJulian Elischer <julian@FreeBSD.org>1999-09-03 08:26:46 +0000
commitc5d648069488265be80ddfe1babb151d97489d2d (patch)
treeb6afbfe0dd9cfc1f9b9bafc8ebec3a5f8dcba0d2 /sys
parent48adcae922a82027d99ce0998ae068f7d41c4d82 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/fs/specfs/spec_vnops.c18
-rw-r--r--sys/miscfs/specfs/spec_vnops.c18
2 files changed, 26 insertions, 10 deletions
diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c
index 1afc40017da4..44c23ba20563 100644
--- a/sys/fs/specfs/spec_vnops.c
+++ b/sys/fs/specfs/spec_vnops.c
@@ -203,8 +203,7 @@ spec_open(ap)
VOP_UNLOCK(vp, 0, p);
error = (*dsw->d_open)(dev, ap->a_mode, S_IFCHR, p);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- return (error);
- /* NOT REACHED */
+ break;
case VBLK:
dsw = devsw(dev);
if ( (dsw == NULL) || (dsw->d_open == NULL))
@@ -225,12 +224,21 @@ spec_open(ap)
error = vfs_mountedon(vp);
if (error)
return (error);
- return ((*dsw->d_open)(dev, ap->a_mode, S_IFBLK, p));
- /* NOT REACHED */
+ error = (*dsw->d_open)(dev, ap->a_mode, S_IFBLK, p);
+ break;
default:
break;
}
- return (0);
+
+ if (vn_isdisk(vp)) {
+ if (!dev->si_bsize_phys)
+ dev->si_bsize_phys = DEV_BSIZE;
+ if (dev->si_bsize_best < dev->si_bsize_phys)
+ dev->si_bsize_best = BLKDEV_IOSIZE;
+ if (!dev->si_bsize_max)
+ dev->si_bsize_max = MAXBSIZE;
+ }
+ return (error);
}
/*
diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c
index 1afc40017da4..44c23ba20563 100644
--- a/sys/miscfs/specfs/spec_vnops.c
+++ b/sys/miscfs/specfs/spec_vnops.c
@@ -203,8 +203,7 @@ spec_open(ap)
VOP_UNLOCK(vp, 0, p);
error = (*dsw->d_open)(dev, ap->a_mode, S_IFCHR, p);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- return (error);
- /* NOT REACHED */
+ break;
case VBLK:
dsw = devsw(dev);
if ( (dsw == NULL) || (dsw->d_open == NULL))
@@ -225,12 +224,21 @@ spec_open(ap)
error = vfs_mountedon(vp);
if (error)
return (error);
- return ((*dsw->d_open)(dev, ap->a_mode, S_IFBLK, p));
- /* NOT REACHED */
+ error = (*dsw->d_open)(dev, ap->a_mode, S_IFBLK, p);
+ break;
default:
break;
}
- return (0);
+
+ if (vn_isdisk(vp)) {
+ if (!dev->si_bsize_phys)
+ dev->si_bsize_phys = DEV_BSIZE;
+ if (dev->si_bsize_best < dev->si_bsize_phys)
+ dev->si_bsize_best = BLKDEV_IOSIZE;
+ if (!dev->si_bsize_max)
+ dev->si_bsize_max = MAXBSIZE;
+ }
+ return (error);
}
/*