]> git.proxmox.com Git - mirror_zfs.git/commitdiff
zio: remove zio_ioctl()
authorRob Norris <rob.norris@klarasystems.com>
Thu, 4 Apr 2024 11:34:42 +0000 (22:34 +1100)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 12 Apr 2024 00:16:46 +0000 (17:16 -0700)
It only had one user, zio_flush(), and there are no other vdev ioctls
anyway.

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

include/sys/zio.h
module/zfs/zio.c

index 25a4b221f05e870f844affde24e22d32ff85eb40..5dcd7fe073a0e9201387e92428dcf2d9e80d7561 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
  * Copyright 2016 Toomas Soome <tsoome@me.com>
  * Copyright (c) 2019, Allan Jude
- * Copyright (c) 2019, Klara Inc.
+ * Copyright (c) 2019, 2023, 2024, Klara Inc.
  * Copyright (c) 2019-2020, Michael Niewöhner
  */
 
@@ -579,9 +579,6 @@ extern zio_t *zio_claim(zio_t *pio, spa_t *spa, uint64_t txg,
     const blkptr_t *bp,
     zio_done_func_t *done, void *priv, zio_flag_t flags);
 
-extern zio_t *zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd,
-    zio_done_func_t *done, void *priv, zio_flag_t flags);
-
 extern zio_t *zio_trim(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size,
     zio_done_func_t *done, void *priv, zio_priority_t priority,
     zio_flag_t flags, enum trim_flag trim_flags);
index 08d56eef83e9bd17afd1170ed730f6e3cf8f7ce5..4aa08f3b30f5366af062dd34aaa2dee8e128c3f0 100644 (file)
@@ -23,7 +23,7 @@
  * Copyright (c) 2011, 2022 by Delphix. All rights reserved.
  * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
  * Copyright (c) 2017, Intel Corporation.
- * Copyright (c) 2019, Klara Inc.
+ * Copyright (c) 2019, 2023, 2024, Klara Inc.
  * Copyright (c) 2019, Allan Jude
  * Copyright (c) 2021, Datto, Inc.
  */
@@ -1449,17 +1449,6 @@ zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
        return (zio);
 }
 
-zio_t *
-zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd,
-    zio_done_func_t *done, void *private, zio_flag_t flags)
-{
-       zio_t *zio = zio_create(pio, spa, 0, NULL, NULL, 0, 0, done, private,
-           ZIO_TYPE_IOCTL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL,
-           ZIO_STAGE_OPEN, ZIO_IOCTL_PIPELINE);
-       zio->io_cmd = cmd;
-       return (zio);
-}
-
 zio_t *
 zio_trim(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size,
     zio_done_func_t *done, void *private, zio_priority_t priority,
@@ -1626,15 +1615,27 @@ zio_vdev_delegated_io(vdev_t *vd, uint64_t offset, abd_t *data, uint64_t size,
        return (zio);
 }
 
+
+/*
+ * Send a flush command to the given vdev. Unlike most zio creation functions,
+ * the flush zios are issued immediately. You can wait on pio to pause until
+ * the flushes complete.
+ */
 void
 zio_flush(zio_t *pio, vdev_t *vd)
 {
+       const zio_flag_t flags = ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_PROPAGATE |
+           ZIO_FLAG_DONT_RETRY;
+
        if (vd->vdev_nowritecache)
                return;
+
        if (vd->vdev_children == 0) {
-               zio_nowait(zio_ioctl(pio, vd->vdev_spa, vd,
-                   DKIOCFLUSHWRITECACHE, NULL, NULL, ZIO_FLAG_CANFAIL |
-                   ZIO_FLAG_DONT_PROPAGATE | ZIO_FLAG_DONT_RETRY));
+               zio_t *zio = zio_create(pio, vd->vdev_spa, 0, NULL, NULL, 0, 0,
+                   NULL, NULL, ZIO_TYPE_IOCTL, ZIO_PRIORITY_NOW, flags, vd, 0,
+                   NULL, ZIO_STAGE_OPEN, ZIO_IOCTL_PIPELINE);
+               zio->io_cmd = DKIOCFLUSHWRITECACHE;
+               zio_nowait(zio);
        } else {
                for (uint64_t c = 0; c < vd->vdev_children; c++)
                        zio_flush(pio, vd->vdev_child[c]);