aboutsummaryrefslogtreecommitdiffstats
path: root/module/os/linux/zfs/vdev_file.c
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/linux/zfs/vdev_file.c
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/linux/zfs/vdev_file.c')
-rw-r--r--module/os/linux/zfs/vdev_file.c44
1 files changed, 19 insertions, 25 deletions
diff --git a/module/os/linux/zfs/vdev_file.c b/module/os/linux/zfs/vdev_file.c
index 5abc0426d..2b483c9a9 100644
--- a/module/os/linux/zfs/vdev_file.c
+++ b/module/os/linux/zfs/vdev_file.c
@@ -250,33 +250,27 @@ vdev_file_io_start(zio_t *zio)
return;
}
- switch (zio->io_cmd) {
- case DKIOCFLUSHWRITECACHE:
-
- if (zfs_nocacheflush)
- break;
-
- /*
- * We cannot safely call vfs_fsync() when PF_FSTRANS
- * is set in the current context. Filesystems like
- * XFS include sanity checks to verify it is not
- * already set, see xfs_vm_writepage(). Therefore
- * the sync must be dispatched to a different context.
- */
- if (__spl_pf_fstrans_check()) {
- VERIFY3U(taskq_dispatch(vdev_file_taskq,
- vdev_file_io_fsync, zio, TQ_SLEEP), !=,
- TASKQID_INVALID);
- return;
- }
-
- zio->io_error = zfs_file_fsync(vf->vf_file,
- O_SYNC | O_DSYNC);
- break;
- default:
- zio->io_error = SET_ERROR(ENOTSUP);
+ if (zfs_nocacheflush) {
+ zio_execute(zio);
+ return;
}
+ /*
+ * We cannot safely call vfs_fsync() when PF_FSTRANS
+ * is set in the current context. Filesystems like
+ * XFS include sanity checks to verify it is not
+ * already set, see xfs_vm_writepage(). Therefore
+ * the sync must be dispatched to a different context.
+ */
+ if (__spl_pf_fstrans_check()) {
+ VERIFY3U(taskq_dispatch(vdev_file_taskq,
+ vdev_file_io_fsync, zio, TQ_SLEEP), !=,
+ TASKQID_INVALID);
+ return;
+ }
+
+ zio->io_error = zfs_file_fsync(vf->vf_file, O_SYNC | O_DSYNC);
+
zio_execute(zio);
return;
} else if (zio->io_type == ZIO_TYPE_TRIM) {