diff options
| author | Julian Elischer <julian@FreeBSD.org> | 1999-09-03 08:26:46 +0000 |
|---|---|---|
| committer | Julian Elischer <julian@FreeBSD.org> | 1999-09-03 08:26:46 +0000 |
| commit | c5d648069488265be80ddfe1babb151d97489d2d (patch) | |
| tree | b6afbfe0dd9cfc1f9b9bafc8ebec3a5f8dcba0d2 /sys | |
| parent | 48adcae922a82027d99ce0998ae068f7d41c4d82 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/fs/specfs/spec_vnops.c | 18 | ||||
| -rw-r--r-- | sys/miscfs/specfs/spec_vnops.c | 18 |
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); } /* |
