Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c,v rcsdiff: /ftp/cvs/cvsroot/src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.9 retrieving revision 1.10 diff -u -p -r1.9 -r1.10 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c 2019/05/26 10:22:59 1.9 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c 2019/06/11 09:04:37 1.10 @@ -219,6 +219,27 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi return (SET_ERROR(EINVAL)); } + /* XXXNETBSD Once tls-maxphys gets merged this block becomes: + pdk = disk_find_blk(vp->v_rdev); + dvd->vd_maxphys = (pdk ? disk_maxphys(pdk) : MACHINE_MAXPHYS); + */ + { + struct buf buf = { b_bcount: MAXPHYS }; + const char *dev_name; + + dev_name = devsw_blk2name(major(vp->v_rdev)); + if (dev_name) { + char disk_name[16]; + + snprintf(disk_name, sizeof(disk_name), "%s%d", + dev_name, DISKUNIT(vp->v_rdev)); + pdk = disk_find(disk_name); + if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) + (*pdk->dk_driver->d_minphys)(&buf); + } + dvd->vd_maxphys = buf.b_bcount; + } + /* * XXXNETBSD Compare the devid to the stored value. */ @@ -421,6 +442,7 @@ vdev_disk_io_start(zio_t *zio) zio_interrupt(zio); return; } + ASSERT3U(dvd->vd_maxphys, >, 0); vp = dvd->vd_vp; #endif @@ -473,7 +495,7 @@ vdev_disk_io_start(zio_t *zio) mutex_exit(vp->v_interlock); } - if (bp->b_bcount <= MAXPHYS) { + if (bp->b_bcount <= dvd->vd_maxphys) { /* We can do this I/O in one pass. */ (void)VOP_STRATEGY(vp, bp); } else { @@ -484,7 +506,7 @@ vdev_disk_io_start(zio_t *zio) resid = zio->io_size; off = 0; while (resid != 0) { - size = uimin(resid, MAXPHYS); + size = uimin(resid, dvd->vd_maxphys); nbp = getiobuf(vp, true); nbp->b_blkno = btodb(zio->io_offset + off); /* Below call increments v_numoutput. */