mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
zio: remove io_cmd and DKIOCFLUSHWRITECACHE
There's no other options, so we can just always assume its a flush. Includes some light refactoring where a switch statement was doing control flow that no longer works. Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Rob Norris <rob.norris@klarasystems.com> Closes #16064
This commit is contained in:
committed by
Brian Behlendorf
parent
cac416f106
commit
c9c838aa1f
@@ -255,14 +255,7 @@ vdev_file_io_start(zio_t *zio)
|
||||
return;
|
||||
}
|
||||
|
||||
switch (zio->io_cmd) {
|
||||
case DKIOCFLUSHWRITECACHE:
|
||||
zio->io_error = zfs_file_fsync(vf->vf_file,
|
||||
O_SYNC|O_DSYNC);
|
||||
break;
|
||||
default:
|
||||
zio->io_error = SET_ERROR(ENOTSUP);
|
||||
}
|
||||
zio->io_error = zfs_file_fsync(vf->vf_file, O_SYNC|O_DSYNC);
|
||||
|
||||
zio_execute(zio);
|
||||
return;
|
||||
|
||||
@@ -1153,42 +1153,31 @@ vdev_geom_io_start(zio_t *zio)
|
||||
|
||||
vd = zio->io_vd;
|
||||
|
||||
switch (zio->io_type) {
|
||||
case ZIO_TYPE_IOCTL:
|
||||
if (zio->io_type == ZIO_TYPE_IOCTL) {
|
||||
/* XXPOLICY */
|
||||
if (!vdev_readable(vd)) {
|
||||
zio->io_error = SET_ERROR(ENXIO);
|
||||
zio_interrupt(zio);
|
||||
return;
|
||||
} else {
|
||||
switch (zio->io_cmd) {
|
||||
case DKIOCFLUSHWRITECACHE:
|
||||
if (zfs_nocacheflush ||
|
||||
vdev_geom_bio_flush_disable)
|
||||
break;
|
||||
if (vd->vdev_nowritecache) {
|
||||
zio->io_error = SET_ERROR(ENOTSUP);
|
||||
break;
|
||||
}
|
||||
goto sendreq;
|
||||
default:
|
||||
zio->io_error = SET_ERROR(ENOTSUP);
|
||||
}
|
||||
}
|
||||
|
||||
zio_execute(zio);
|
||||
return;
|
||||
case ZIO_TYPE_TRIM:
|
||||
if (!vdev_geom_bio_delete_disable) {
|
||||
goto sendreq;
|
||||
if (zfs_nocacheflush || vdev_geom_bio_flush_disable) {
|
||||
zio_execute(zio);
|
||||
return;
|
||||
}
|
||||
|
||||
if (vd->vdev_nowritecache) {
|
||||
zio->io_error = SET_ERROR(ENOTSUP);
|
||||
zio_execute(zio);
|
||||
return;
|
||||
}
|
||||
} else if (zio->io_type == ZIO_TYPE_TRIM) {
|
||||
if (vdev_geom_bio_delete_disable) {
|
||||
zio_execute(zio);
|
||||
return;
|
||||
}
|
||||
zio_execute(zio);
|
||||
return;
|
||||
default:
|
||||
;
|
||||
/* PASSTHROUGH --- placate compiler */
|
||||
}
|
||||
sendreq:
|
||||
|
||||
ASSERT(zio->io_type == ZIO_TYPE_READ ||
|
||||
zio->io_type == ZIO_TYPE_WRITE ||
|
||||
zio->io_type == ZIO_TYPE_TRIM ||
|
||||
|
||||
Reference in New Issue
Block a user