summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>1999-10-02 11:17:54 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>1999-10-02 11:17:54 +0000
commit45604de32833ccb0b627b542d7b68b9ef8f37c73 (patch)
tree86f0a6eb0386110d650f2251624eb365ecdebdb4 /sys/kern
parentfff6710f7ea9b8a3b6125a8eb11eabf94acfb581 (diff)
Notes
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_physio.c4
-rw-r--r--sys/kern/subr_disk.c12
2 files changed, 11 insertions, 5 deletions
diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c
index 01bc7f3593c3..6bf3e7f4b828 100644
--- a/sys/kern/kern_physio.c
+++ b/sys/kern/kern_physio.c
@@ -175,6 +175,10 @@ minphys(bp)
u_int maxphys;
maxphys = bp->b_dev->si_iosize_max;
+ if(!maxphys) {
+ printf("WARNING: %s maxphys = 0 ??", devtoname(bp->b_dev));
+ maxphys = DFLTPHYS;
+ }
if (bp->b_kvasize && (bp->b_kvasize < maxphys))
maxphys = bp->b_kvasize;
diff --git a/sys/kern/subr_disk.c b/sys/kern/subr_disk.c
index bfa3d894257b..9c53bdeaa53d 100644
--- a/sys/kern/subr_disk.c
+++ b/sys/kern/subr_disk.c
@@ -115,8 +115,10 @@ diskopen(dev_t dev, int oflags, int devtype, struct proc *p)
if (!dp)
return (ENXIO);
- if (!dsisopen(dp->d_slice))
+ if (!dsisopen(dp->d_slice)) {
+ pdev->si_iosize_max = dev->si_iosize_max;
error = dp->d_devsw->d_open(pdev, oflags, devtype, p);
+ }
/* Inherit properties from the whole/raw dev_t */
dev->si_disk = pdev->si_disk;
@@ -163,12 +165,12 @@ diskstrategy(struct buf *bp)
dp = bp->b_dev->si_disk;
if (!dp) {
pdev = dkmodpart(dkmodslice(bp->b_dev, WHOLE_DISK_SLICE), RAW_PART);
- dp = pdev->si_disk;
+ dp = bp->b_dev->si_disk = pdev->si_disk;
bp->b_dev->si_drv1 = pdev->si_drv1;
bp->b_dev->si_drv2 = pdev->si_drv2;
- /* XXX: don't set bp->b_dev->si_disk (?) */
- } else {
- pdev = dp->d_dev;
+ bp->b_dev->si_iosize_max = pdev->si_iosize_max;
+ bp->b_dev->si_bsize_phys = pdev->si_bsize_phys;
+ bp->b_dev->si_bsize_best = pdev->si_bsize_best;
}
if (!dp) {