Module Name: src Committed By: mlelstv Date: Thu Jun 25 09:39:15 UTC 2020
Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_disk.c Log Message: Don't assume everything is a wedge and has a parent device. On non-wedges this crashes. Instead, just talk to the referenced device and rely on the dk driver to pass requests correctly. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.17 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.18 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.17 Sun Jun 21 21:29:11 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Thu Jun 25 09:39:15 2020 @@ -222,19 +222,18 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi pdk = NULL; if (getdiskinfo(vp, &dkw) == 0) - pdk = disk_find(dkw.dkw_parent); + pdk = disk_find(dkw.dkw_devname); /* XXXNETBSD Once tls-maxphys gets merged this block becomes: dvd->vd_maxphys = (pdk ? disk_maxphys(pdk) : MACHINE_MAXPHYS); */ { struct buf buf = { + .b_dev = vp->v_rdev, .b_bcount = MAXPHYS, }; - if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) { - buf.b_dev = pdk->dk_rawvp->v_rdev; + if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) (*pdk->dk_driver->d_minphys)(&buf); - } dvd->vd_maxphys = buf.b_bcount; }