libzfs: add zfs_get_underlying_type. Stop including libzfs_impl.h in cmd
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #12116
This commit is contained in:
parent
e618e4a4ff
commit
757df52928
@ -52,6 +52,8 @@
|
||||
#include <zone.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <umem.h>
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include <sys/list.h>
|
||||
#include <sys/mkdev.h>
|
||||
@ -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);
|
||||
|
@ -71,7 +71,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <inttypes.h>
|
||||
#include <libzfs_impl.h>
|
||||
#include <libzfs.h>
|
||||
|
||||
#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 */
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <libzfs_impl.h>
|
||||
#include <libzfs.h>
|
||||
#include <libzutil.h>
|
||||
#include <stddef.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 *);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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?
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user