]> granicus.if.org Git - zfs/commitdiff
Use zfs_ioctl with zfs_cmd_t in libzfs
authorMatthew Macy <mmacy@freebsd.org>
Thu, 24 Oct 2019 00:29:43 +0000 (17:29 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 24 Oct 2019 00:29:43 +0000 (17:29 -0700)
Consistently use the `zfs_ioctl()` wrapper since `ioctl()` cannot be
called directly due to differing semantics between platforms.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Jorgen Lundman <lundman@lundman.net>
Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
Closes #9492

lib/libzfs/libzfs_config.c
lib/libzfs/libzfs_dataset.c
lib/libzfs/libzfs_diff.c
lib/libzfs/libzfs_import.c
lib/libzfs/libzfs_iter.c
lib/libzfs/libzfs_pool.c
lib/libzfs/libzfs_sendrecv.c

index 67379d07211a487bb720626e3bd964bd95826a55..a3ecc4a327dc60643fbd6f67cd2841f343f22f36 100644 (file)
@@ -133,7 +133,7 @@ namespace_reload(libzfs_handle_t *hdl)
 
        for (;;) {
                zc.zc_cookie = hdl->libzfs_ns_gen;
-               if (ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_CONFIGS, &zc) != 0) {
+               if (zfs_ioctl(hdl, ZFS_IOC_POOL_CONFIGS, &zc) != 0) {
                        switch (errno) {
                        case EEXIST:
                                /*
@@ -279,7 +279,7 @@ zpool_refresh_stats(zpool_handle_t *zhp, boolean_t *missing)
                return (-1);
 
        for (;;) {
-               if (ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_POOL_STATS,
+               if (zfs_ioctl(zhp->zpool_hdl, ZFS_IOC_POOL_STATS,
                    &zc) == 0) {
                        /*
                         * The real error is returned in the zc_cookie field.
index e88ace53f8cec929a18eed3c3488d91554ea2ef2..2604c6617db23674c8e118e190072f94df9b6fb3 100644 (file)
@@ -334,7 +334,7 @@ get_stats_ioctl(zfs_handle_t *zhp, zfs_cmd_t *zc)
 
        (void) strlcpy(zc->zc_name, zhp->zfs_name, sizeof (zc->zc_name));
 
-       while (ioctl(hdl->libzfs_fd, ZFS_IOC_OBJSET_STATS, zc) != 0) {
+       while (zfs_ioctl(hdl, ZFS_IOC_OBJSET_STATS, zc) != 0) {
                if (errno == ENOMEM) {
                        if (zcmd_expand_dst_nvlist(hdl, zc) != 0) {
                                return (-1);
@@ -362,7 +362,7 @@ get_recvd_props_ioctl(zfs_handle_t *zhp)
 
        (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name));
 
-       while (ioctl(hdl->libzfs_fd, ZFS_IOC_OBJSET_RECVD_PROPS, &zc) != 0) {
+       while (zfs_ioctl(hdl, ZFS_IOC_OBJSET_RECVD_PROPS, &zc) != 0) {
                if (errno == ENOMEM) {
                        if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) {
                                return (-1);
@@ -3323,7 +3323,7 @@ zfs_prop_get_userquota_common(zfs_handle_t *zhp, const char *propname,
        if (err)
                return (err);
 
-       err = ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_USERSPACE_ONE, &zc);
+       err = zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_USERSPACE_ONE, &zc);
        if (err)
                return (err);
 
@@ -3404,7 +3404,7 @@ zfs_prop_get_written_int(zfs_handle_t *zhp, const char *propname,
                (void) strlcat(zc.zc_value, snapname - 1, sizeof (zc.zc_value));
        }
 
-       err = ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_SPACE_WRITTEN, &zc);
+       err = zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_SPACE_WRITTEN, &zc);
        if (err)
                return (err);
 
@@ -3541,7 +3541,7 @@ check_parents(libzfs_handle_t *hdl, const char *path, uint64_t *zoned,
                slash = parent + strlen(parent);
        (void) strncpy(zc.zc_name, parent, slash - parent);
        zc.zc_name[slash - parent] = '\0';
-       if (ioctl(hdl->libzfs_fd, ZFS_IOC_OBJSET_STATS, &zc) != 0 &&
+       if (zfs_ioctl(hdl, ZFS_IOC_OBJSET_STATS, &zc) != 0 &&
            errno == ENOENT) {
                zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
                    "no such pool '%s'"), zc.zc_name);
@@ -5247,7 +5247,7 @@ tryagain:
 
        (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name));
 
-       if (ioctl(hdl->libzfs_fd, ZFS_IOC_GET_FSACL, &zc) != 0) {
+       if (zfs_ioctl(hdl, ZFS_IOC_GET_FSACL, &zc) != 0) {
                (void) snprintf(errbuf, sizeof (errbuf),
                    dgettext(TEXT_DOMAIN, "cannot get permissions on '%s'"),
                    zc.zc_name);
index 169180751d557937a2a1c816c99c53d7e96d14ff..6cadd7e81905bc008170a3191320dd5dc6352e73 100644 (file)
@@ -70,7 +70,7 @@ get_stats_for_obj(differ_info_t *di, const char *dsname, uint64_t obj,
        zc.zc_obj = obj;
 
        errno = 0;
-       error = ioctl(di->zhp->zfs_hdl->libzfs_fd, ZFS_IOC_OBJ_TO_STATS, &zc);
+       error = zfs_ioctl(di->zhp->zfs_hdl, ZFS_IOC_OBJ_TO_STATS, &zc);
        di->zerr = errno;
 
        /* we can get stats even if we failed to get a path */
@@ -373,7 +373,7 @@ write_free_diffs(FILE *fp, differ_info_t *di, dmu_diff_record_t *dr)
        while (zc.zc_obj < dr->ddr_last) {
                int err;
 
-               err = ioctl(lhdl->libzfs_fd, ZFS_IOC_NEXT_OBJ, &zc);
+               err = zfs_ioctl(lhdl, ZFS_IOC_NEXT_OBJ, &zc);
                if (err == 0) {
                        if (zc.zc_obj == di->shares) {
                                zc.zc_obj++;
@@ -477,7 +477,7 @@ make_temp_snapshot(differ_info_t *di)
        (void) strlcpy(zc.zc_name, di->ds, sizeof (zc.zc_name));
        zc.zc_cleanup_fd = di->cleanupfd;
 
-       if (ioctl(hdl->libzfs_fd, ZFS_IOC_TMP_SNAPSHOT, &zc) != 0) {
+       if (zfs_ioctl(hdl, ZFS_IOC_TMP_SNAPSHOT, &zc) != 0) {
                int err = errno;
                if (err == EPERM) {
                        (void) snprintf(di->errbuf, sizeof (di->errbuf),
@@ -758,7 +758,7 @@ zfs_show_diffs(zfs_handle_t *zhp, int outfd, const char *fromsnap,
        (void) strlcpy(zc.zc_name, di.tosnap, strlen(di.tosnap) + 1);
        zc.zc_cookie = pipefd[1];
 
-       iocerr = ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_DIFF, &zc);
+       iocerr = zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_DIFF, &zc);
        if (iocerr != 0) {
                (void) snprintf(errbuf, sizeof (errbuf),
                    dgettext(TEXT_DOMAIN, "Unable to obtain diffs"));
index 747977403d3c5764b499e494a228e7bd3599578c..88c4c645bc63b68ae5c91e9d5972cccc68dbf2a7 100644 (file)
@@ -83,7 +83,7 @@ refresh_config(libzfs_handle_t *hdl, nvlist_t *config)
                return (NULL);
        }
 
-       while ((err = ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_TRYIMPORT,
+       while ((err = zfs_ioctl(hdl, ZFS_IOC_POOL_TRYIMPORT,
            &zc)) != 0 && errno == ENOMEM) {
                if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) {
                        zcmd_free_nvlists(&zc);
index 31b2ca30e6a11b16f8a8e4448b4448715a5da3bb..f76162bb40442e41799048d35399baea16f8cb59 100644 (file)
@@ -69,7 +69,7 @@ zfs_do_list_ioctl(zfs_handle_t *zhp, int arg, zfs_cmd_t *zc)
        orig_cookie = zc->zc_cookie;
 top:
        (void) strlcpy(zc->zc_name, zhp->zfs_name, sizeof (zc->zc_name));
-       rc = ioctl(zhp->zfs_hdl->libzfs_fd, arg, zc);
+       rc = zfs_ioctl(zhp->zfs_hdl, arg, zc);
 
        if (rc == -1) {
                switch (errno) {
index 155f2c3adf88b6fbe32cefab54dfc794ef261103..75ce7c9abad6cb895df1a815c4bd1cc1a2c1d77c 100644 (file)
@@ -76,7 +76,7 @@ zpool_get_all_props(zpool_handle_t *zhp)
        if (zcmd_alloc_dst_nvlist(hdl, &zc, 0) != 0)
                return (-1);
 
-       while (ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_GET_PROPS, &zc) != 0) {
+       while (zfs_ioctl(hdl, ZFS_IOC_POOL_GET_PROPS, &zc) != 0) {
                if (errno == ENOMEM) {
                        if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) {
                                zcmd_free_nvlists(&zc);
@@ -3005,7 +3005,7 @@ zpool_vdev_fault(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux)
        zc.zc_cookie = VDEV_STATE_FAULTED;
        zc.zc_obj = aux;
 
-       if (ioctl(hdl->libzfs_fd, ZFS_IOC_VDEV_SET_STATE, &zc) == 0)
+       if (zfs_ioctl(hdl, ZFS_IOC_VDEV_SET_STATE, &zc) == 0)
                return (0);
 
        switch (errno) {
@@ -3040,7 +3040,7 @@ zpool_vdev_degrade(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux)
        zc.zc_cookie = VDEV_STATE_DEGRADED;
        zc.zc_obj = aux;
 
-       if (ioctl(hdl->libzfs_fd, ZFS_IOC_VDEV_SET_STATE, &zc) == 0)
+       if (zfs_ioctl(hdl, ZFS_IOC_VDEV_SET_STATE, &zc) == 0)
                return (0);
 
        return (zpool_standard_error(hdl, errno, msg));
@@ -3775,7 +3775,7 @@ zpool_vdev_clear(zpool_handle_t *zhp, uint64_t guid)
        zc.zc_guid = guid;
        zc.zc_cookie = ZPOOL_NO_REWIND;
 
-       if (ioctl(hdl->libzfs_fd, ZFS_IOC_CLEAR, &zc) == 0)
+       if (zfs_ioctl(hdl, ZFS_IOC_CLEAR, &zc) == 0)
                return (0);
 
        return (zpool_standard_error(hdl, errno, msg));
@@ -3986,7 +3986,7 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp)
        zc.zc_nvlist_dst_size = count;
        (void) strcpy(zc.zc_name, zhp->zpool_name);
        for (;;) {
-               if (ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_ERROR_LOG,
+               if (zfs_ioctl(zhp->zpool_hdl, ZFS_IOC_ERROR_LOG,
                    &zc) != 0) {
                        free((void *)(uintptr_t)zc.zc_nvlist_dst);
                        if (errno == ENOMEM) {
@@ -4101,7 +4101,7 @@ zpool_log_history(libzfs_handle_t *hdl, const char *message)
        fnvlist_add_string(args, "message", message);
        err = zcmd_write_src_nvlist(hdl, &zc, args);
        if (err == 0)
-               err = ioctl(hdl->libzfs_fd, ZFS_IOC_LOG_HISTORY, &zc);
+               err = zfs_ioctl(hdl, ZFS_IOC_LOG_HISTORY, &zc);
        nvlist_free(args);
        zcmd_free_nvlists(&zc);
        return (err);
@@ -4128,7 +4128,7 @@ get_history(zpool_handle_t *zhp, char *buf, uint64_t *off, uint64_t *len)
        zc.zc_history_len = *len;
        zc.zc_history_offset = *off;
 
-       if (ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_GET_HISTORY, &zc) != 0) {
+       if (zfs_ioctl(hdl, ZFS_IOC_POOL_GET_HISTORY, &zc) != 0) {
                switch (errno) {
                case EPERM:
                        return (zfs_error_fmt(hdl, EZFS_PERM,
@@ -4360,7 +4360,7 @@ zpool_obj_to_path(zpool_handle_t *zhp, uint64_t dsobj, uint64_t obj,
        /* get the dataset's name */
        (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name));
        zc.zc_obj = dsobj;
-       if (ioctl(zhp->zpool_hdl->libzfs_fd,
+       if (zfs_ioctl(zhp->zpool_hdl,
            ZFS_IOC_DSOBJ_TO_DSNAME, &zc) != 0) {
                /* just write out a path of two object numbers */
                (void) snprintf(pathname, len, "<0x%llx>:<0x%llx>",
@@ -4375,7 +4375,7 @@ zpool_obj_to_path(zpool_handle_t *zhp, uint64_t dsobj, uint64_t obj,
        /* get the corrupted object's path */
        (void) strlcpy(zc.zc_name, dsname, sizeof (zc.zc_name));
        zc.zc_obj = obj;
-       if (ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_OBJ_TO_PATH,
+       if (zfs_ioctl(zhp->zpool_hdl, ZFS_IOC_OBJ_TO_PATH,
            &zc) == 0) {
                if (mounted) {
                        (void) snprintf(pathname, len, "%s%s", mntpnt,
index 29cd24eed3c0b601b4137dd8324683838a488360..12ae8759ab1ada3614dfb578f6300e33cf84fffb 100644 (file)
@@ -1525,7 +1525,7 @@ dump_filesystem(zfs_handle_t *zhp, void *arg)
 
        (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s",
            zhp->zfs_name, sdd->tosnap);
-       if (ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_OBJSET_STATS, &zc) != 0) {
+       if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_OBJSET_STATS, &zc) != 0) {
                (void) fprintf(stderr, dgettext(TEXT_DOMAIN,
                    "WARNING: could not send %s@%s: does not exist\n"),
                    zhp->zfs_name, sdd->tosnap);
@@ -1543,7 +1543,7 @@ dump_filesystem(zfs_handle_t *zhp, void *arg)
                 */
                (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s",
                    zhp->zfs_name, sdd->fromsnap);
-               if (ioctl(zhp->zfs_hdl->libzfs_fd,
+               if (zfs_ioctl(zhp->zfs_hdl,
                    ZFS_IOC_OBJSET_STATS, &zc) != 0) {
                        missingfrom = B_TRUE;
                }
@@ -4667,7 +4667,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
                                err = zfs_error(hdl, EZFS_EXISTS, errbuf);
                                goto out;
                        }
-                       if (ioctl(hdl->libzfs_fd, ZFS_IOC_SNAPSHOT_LIST_NEXT,
+                       if (zfs_ioctl(hdl, ZFS_IOC_SNAPSHOT_LIST_NEXT,
                            &zc) == 0) {
                                zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
                                    "destination has snapshots (eg. %s)\n"
@@ -4685,7 +4685,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
                                goto out;
                        }
                        if (is_volume &&
-                           ioctl(hdl->libzfs_fd, ZFS_IOC_DATASET_LIST_NEXT,
+                           zfs_ioctl(hdl, ZFS_IOC_DATASET_LIST_NEXT,
                            &zc) == 0) {
                                zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
                                    "destination has children (eg. %s)\n"