Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/cddl/osnet/dist/uts/common/fs/zfs Don't assume ever...



details:   https://anonhg.NetBSD.org/src/rev/82c65a49f8fa
branches:  trunk
changeset: 935118:82c65a49f8fa
user:      mlelstv <mlelstv%NetBSD.org@localhost>
date:      Thu Jun 25 09:39:15 2020 +0000

description:
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.

diffstat:

 external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c |  7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diffs (26 lines):

diff -r c200ca41e6c2 -r 82c65a49f8fa external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c
--- a/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c    Thu Jun 25 08:00:49 2020 +0000
+++ b/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c    Thu Jun 25 09:39:15 2020 +0000
@@ -222,19 +222,18 @@
 
        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;
        }
 



Home | Main Index | Thread Index | Old Index