aboutsummaryrefslogtreecommitdiffstats
path: root/module/os/freebsd
diff options
context:
space:
mode:
authorRob Norris <[email protected]>2024-04-04 22:34:54 +1100
committerBrian Behlendorf <[email protected]>2024-04-11 17:17:11 -0700
commitc9c838aa1fca9aef84d74db1d99872c5efa9a25d (patch)
tree3d838e71611b593e11f61727aeb298a6a2c2f009 /module/os/freebsd
parentcac416f1062fdbd2ff84ff2b40835d4853cbf190 (diff)
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 <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Signed-off-by: Rob Norris <[email protected]> Closes #16064
Diffstat (limited to 'module/os/freebsd')
-rw-r--r--module/os/freebsd/zfs/vdev_file.c9
-rw-r--r--module/os/freebsd/zfs/vdev_geom.c43
2 files changed, 17 insertions, 35 deletions
diff --git a/module/os/freebsd/zfs/vdev_file.c b/module/os/freebsd/zfs/vdev_file.c
index a65dfec86..888c8e7f8 100644
--- a/module/os/freebsd/zfs/vdev_file.c
+++ b/module/os/freebsd/zfs/vdev_file.c
@@ -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;
diff --git a/module/os/freebsd/zfs/vdev_geom.c b/module/os/freebsd/zfs/vdev_geom.c
index 196d67b4b..264dfa5c9 100644
--- a/module/os/freebsd/zfs/vdev_geom.c
+++ b/module/os/freebsd/zfs/vdev_geom.c
@@ -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 ||