diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c index 24ff074c4..c583053db 100644 --- a/cmd/zfs/zfs_main.c +++ b/cmd/zfs/zfs_main.c @@ -52,6 +52,8 @@ #include #include #include +#include +#include #include #include #include @@ -78,7 +80,6 @@ #include "zfs_iter.h" #include "zfs_util.h" #include "zfs_comutil.h" -#include "libzfs_impl.h" #include "zfs_projectutil.h" libzfs_handle_t *g_zfs; @@ -3315,7 +3316,7 @@ zfs_do_userspace(int argc, char **argv) if ((zhp = zfs_path_to_zhandle(g_zfs, argv[0], ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT)) == NULL) return (1); - if (zhp->zfs_head_type != ZFS_TYPE_FILESYSTEM) { + if (zfs_get_underlying_type(zhp) != ZFS_TYPE_FILESYSTEM) { (void) fprintf(stderr, gettext("operation is only applicable " "to filesystems and their snapshots\n")); zfs_close(zhp); diff --git a/cmd/zpool_influxdb/zpool_influxdb.c b/cmd/zpool_influxdb/zpool_influxdb.c index 71ffcb253..5dc39afe8 100644 --- a/cmd/zpool_influxdb/zpool_influxdb.c +++ b/cmd/zpool_influxdb/zpool_influxdb.c @@ -71,7 +71,7 @@ #include #include #include -#include +#include #define POOL_MEASUREMENT "zpool_stats" #define SCAN_MEASUREMENT "zpool_scan_stats" @@ -101,9 +101,10 @@ typedef int (*stat_printer_f)(nvlist_t *, const char *, const char *); * caller is responsible for freeing result */ static char * -escape_string(char *s) +escape_string(const char *s) { - char *c, *d; + const char *c; + char *d; char *t = (char *)malloc(ZFS_MAX_DATASET_NAME_LEN * 2); if (t == NULL) { fprintf(stderr, "error: cannot allocate memory\n"); @@ -714,7 +715,7 @@ print_stats(zpool_handle_t *zhp, void *data) /* if not this pool return quickly */ if (data && - strncmp(data, zhp->zpool_name, ZFS_MAX_DATASET_NAME_LEN) != 0) { + strncmp(data, zpool_get_name(zhp), ZFS_MAX_DATASET_NAME_LEN) != 0) { zpool_close(zhp); return (0); } @@ -742,7 +743,7 @@ print_stats(zpool_handle_t *zhp, void *data) return (3); } - pool_name = escape_string(zhp->zpool_name); + pool_name = escape_string(zpool_get_name(zhp)); err = print_recursive_stats(print_summary_stats, nvroot, pool_name, NULL, 1); /* if any of these return an error, skip the rest */ diff --git a/cmd/zstream/zstream_redup.c b/cmd/zstream/zstream_redup.c index 15dd8a1ed..474527e76 100644 --- a/cmd/zstream/zstream_redup.c +++ b/cmd/zstream/zstream_redup.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include diff --git a/include/libzfs.h b/include/libzfs.h index 7ad44bc59..344d2146f 100644 --- a/include/libzfs.h +++ b/include/libzfs.h @@ -468,6 +468,7 @@ extern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int); extern zfs_handle_t *zfs_handle_dup(zfs_handle_t *); extern void zfs_close(zfs_handle_t *); extern zfs_type_t zfs_get_type(const zfs_handle_t *); +extern zfs_type_t zfs_get_underlying_type(const zfs_handle_t *); extern const char *zfs_get_name(const zfs_handle_t *); extern zpool_handle_t *zfs_get_pool_handle(const zfs_handle_t *); extern const char *zfs_get_pool_name(const zfs_handle_t *); diff --git a/lib/libzfs/libzfs.abi b/lib/libzfs/libzfs.abi index c23ea6f76..74465c365 100644 --- a/lib/libzfs/libzfs.abi +++ b/lib/libzfs/libzfs.abi @@ -153,6 +153,7 @@ + @@ -965,18 +966,18 @@ - + - + - + @@ -995,11 +996,11 @@ - + - + @@ -1013,7 +1014,7 @@ - + @@ -1024,33 +1025,33 @@ - + - + - + - - - - - + - + + + + + @@ -1095,7 +1096,7 @@ - + @@ -1167,20 +1168,20 @@ - + - + - + @@ -1188,7 +1189,7 @@ - + @@ -1198,7 +1199,7 @@ - + @@ -1699,7 +1700,7 @@ - + @@ -1723,26 +1724,26 @@ - - - - + + + + - - - - - - - - + + + + + + + + - + @@ -1840,32 +1841,32 @@ - - - - - + + + + + - - - + + + - + - - - - + + + + @@ -2022,21 +2023,21 @@ - - + + - - - - + + + + - + @@ -2049,7 +2050,7 @@ - + @@ -2513,7 +2514,7 @@ - + @@ -2710,7 +2711,7 @@ - + @@ -2731,7 +2732,7 @@ - + @@ -2834,10 +2835,10 @@ - - - - + + + + @@ -2902,7 +2903,7 @@ - + @@ -3058,7 +3059,7 @@ - + @@ -3166,36 +3167,40 @@ - - - - + + + + + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - + - + @@ -3208,7 +3213,7 @@ - + @@ -3231,14 +3236,14 @@ - - - + + + - - - + + + @@ -3263,16 +3268,16 @@ - - - - + + + + - - - - + + + + @@ -3288,13 +3293,13 @@ - - - - + + + + - + @@ -3307,8 +3312,8 @@ - - + + @@ -3317,10 +3322,10 @@ - - - - + + + + @@ -3329,20 +3334,20 @@ - - - - - + + + + + - - - - + + + + - + @@ -3356,22 +3361,22 @@ - + - + - + - + - - - - - + + + + + @@ -3380,50 +3385,50 @@ - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - - - - - + + + + + @@ -3433,9 +3438,9 @@ - - - + + + @@ -3444,11 +3449,11 @@ - - - - - + + + + + @@ -3457,25 +3462,25 @@ - - - - - + + + + + - - - - + + + + - - - - - - + + + + + + @@ -3497,26 +3502,26 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + @@ -3525,11 +3530,11 @@ - - - - - + + + + + @@ -3548,9 +3553,9 @@ - - - + + + @@ -3560,10 +3565,10 @@ - - - - + + + + @@ -3580,9 +3585,9 @@ - - - + + + @@ -3604,11 +3609,11 @@ - - - - - + + + + + @@ -3652,7 +3657,7 @@ - + @@ -3715,7 +3720,7 @@ - + @@ -3924,7 +3929,7 @@ - + @@ -3943,7 +3948,7 @@ - + @@ -4027,20 +4032,20 @@ - + - + - + @@ -4173,21 +4178,21 @@ - + - - - - + + + + - - - - + + + + @@ -4199,12 +4204,12 @@ - - - + + + - + @@ -4222,17 +4227,17 @@ - - + + - - - + + + - - + + @@ -4242,22 +4247,22 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -4267,12 +4272,12 @@ - - + + - - + + @@ -4280,23 +4285,23 @@ - - + + - - - + + + - - - + + + - - - + + + @@ -4304,76 +4309,76 @@ - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + - - + + - + - + - + - + - + - - - + + + @@ -4383,13 +4388,13 @@ - - - - - - - + + + + + + + @@ -4424,15 +4429,15 @@ - - - - + + + + - - - + + + @@ -4441,7 +4446,7 @@ - + @@ -4449,12 +4454,12 @@ - - - - - - + + + + + + @@ -4472,7 +4477,7 @@ - + @@ -4577,8 +4582,8 @@ - - + + @@ -4600,18 +4605,18 @@ - - + + - + - - - - + + + + @@ -4681,39 +4686,39 @@ - - - + + + - - + + - - - - + + + + - - - - - + + + + + - - - - + + + + @@ -4728,27 +4733,27 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + @@ -4758,36 +4763,36 @@ - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -4797,31 +4802,31 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + @@ -4844,8 +4849,8 @@ - - + + @@ -4853,11 +4858,11 @@ - - - - - + + + + + @@ -4868,10 +4873,10 @@ - - - - + + + + @@ -4904,10 +4909,10 @@ - - - - + + + + @@ -4934,11 +4939,11 @@ - - - - - + + + + + @@ -4956,12 +4961,12 @@ - - - - - - + + + + + + @@ -4979,18 +4984,18 @@ - - - - + + + + - - - - - - + + + + + + @@ -4999,23 +5004,23 @@ - - - - + + + + - - - + + + - - - - - + + + + + @@ -5024,37 +5029,37 @@ - + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - + + + + + + + @@ -5075,9 +5080,9 @@ - - - + + + @@ -5092,12 +5097,12 @@ - - - - - - + + + + + + @@ -5107,39 +5112,39 @@ - - - + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - + + + @@ -5151,9 +5156,9 @@ - - - + + + @@ -5168,33 +5173,33 @@ - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -5205,45 +5210,45 @@ - - - - - - + + + + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + @@ -5252,18 +5257,18 @@ - - - - - + + + + + - - - + + + @@ -5273,9 +5278,9 @@ - - - + + + @@ -5308,69 +5313,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5456,20 +5461,16 @@ - + - + - - - - @@ -5482,6 +5483,10 @@ + + + + @@ -5527,60 +5532,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + @@ -5605,7 +5610,7 @@ - + @@ -5613,7 +5618,7 @@ - + @@ -6131,7 +6136,7 @@ - + @@ -6158,7 +6163,7 @@ - + @@ -6303,6 +6308,9 @@ + + + @@ -6316,23 +6324,23 @@ - - - - - - + + + + + + - + @@ -6372,7 +6380,7 @@ - + @@ -6655,33 +6663,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -6690,7 +6698,7 @@ - + @@ -6701,7 +6709,7 @@ - + @@ -6795,7 +6803,7 @@ - + @@ -7903,19 +7911,19 @@ - + - - + + - + - + diff --git a/lib/libzfs/libzfs_dataset.c b/lib/libzfs/libzfs_dataset.c index 6b1d62250..99e352dd4 100644 --- a/lib/libzfs/libzfs_dataset.c +++ b/lib/libzfs/libzfs_dataset.c @@ -3333,6 +3333,16 @@ zfs_get_type(const zfs_handle_t *zhp) return (zhp->zfs_type); } +/* + * Returns the type of the given zfs handle, + * or, if a snapshot, the type of the snapshotted dataset. + */ +zfs_type_t +zfs_get_underlying_type(const zfs_handle_t *zhp) +{ + return (zhp->zfs_head_type); +} + /* * Is one dataset name a child dataset of another? *