--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c (revision 274469) +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c (working copy) @@ -129,6 +129,8 @@ skip_open: return (error); } + vd->vdev_notrim = B_TRUE; + *max_psize = *psize = vattr.va_size; *logical_ashift = SPA_MINBLOCKSHIFT; *physical_ashift = SPA_MINBLOCKSHIFT; @@ -171,11 +173,12 @@ vdev_file_io_start(zio_t *zio) vf = vd->vdev_tsd; vp = vf->vf_vnode; - if (zio->io_type == ZIO_TYPE_IOCTL) { + switch (zio->io_type) { + case ZIO_TYPE_IOCTL: switch (zio->io_cmd) { case DKIOCFLUSHWRITECACHE: - zio->io_error = VOP_FSYNC(vp, FSYNC | FDSYNC, - kcred, NULL); + zio->io_error = VOP_FSYNC(vp, FSYNC | FDSYNC, kcred, + NULL); break; default: zio->io_error = SET_ERROR(ENOTSUP); @@ -183,6 +186,10 @@ vdev_file_io_start(zio_t *zio) zio_interrupt(zio); return (ZIO_PIPELINE_STOP); + case ZIO_TYPE_FREE: + zio->io_error = SET_ERROR(ENOTSUP); + zio_interrupt(zio); + return (ZIO_PIPELINE_STOP); } zio->io_error = vn_rdwr(zio->io_type == ZIO_TYPE_READ ?