summaryrefslogtreecommitdiff
path: root/usr/src/lib/libzfs
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libzfs')
-rw-r--r--usr/src/lib/libzfs/common/libzfs.h3
-rw-r--r--usr/src/lib/libzfs/common/libzfs_import.c31
2 files changed, 14 insertions, 20 deletions
diff --git a/usr/src/lib/libzfs/common/libzfs.h b/usr/src/lib/libzfs/common/libzfs.h
index 63e394c376..7da0a674e0 100644
--- a/usr/src/lib/libzfs/common/libzfs.h
+++ b/usr/src/lib/libzfs/common/libzfs.h
@@ -261,8 +261,7 @@ extern int zfs_remove_link(zfs_handle_t *);
/*
* Given a device or file, determine if it is part of a pool.
*/
-extern int zpool_in_use(int fd, char **state,
- char **name);
+extern int zpool_in_use(int fd, pool_state_t *state, char **name);
/*
* ftyp special. Read the label from a given device.
diff --git a/usr/src/lib/libzfs/common/libzfs_import.c b/usr/src/lib/libzfs/common/libzfs_import.c
index b7eb81873d..6c56a1a2da 100644
--- a/usr/src/lib/libzfs/common/libzfs_import.c
+++ b/usr/src/lib/libzfs/common/libzfs_import.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -670,16 +670,16 @@ find_guid(nvlist_t *nv, uint64_t guid)
* must be freed by the caller.
*/
int
-zpool_in_use(int fd, char **statestr, char **namestr)
+zpool_in_use(int fd, pool_state_t *state, char **namestr)
{
nvlist_t *config;
- uint64_t state;
char *name;
int ret;
zfs_cmd_t zc = { 0 };
uint64_t guid, vdev_guid;
zpool_handle_t *zhp;
nvlist_t *pool_config;
+ uint64_t stateval;
if ((config = zpool_read_label(fd)) == NULL)
return (FALSE);
@@ -687,16 +687,14 @@ zpool_in_use(int fd, char **statestr, char **namestr)
verify(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME,
&name) == 0);
verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE,
- &state) == 0);
+ &stateval) == 0);
verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID,
&guid) == 0);
verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID,
&vdev_guid) == 0);
- switch (state) {
+ switch (stateval) {
case POOL_STATE_EXPORTED:
- *statestr = zfs_strdup(dgettext(TEXT_DOMAIN, "exported"));
- *namestr = zfs_strdup(name);
ret = TRUE;
break;
@@ -726,21 +724,12 @@ zpool_in_use(int fd, char **statestr, char **namestr)
verify(nvlist_lookup_nvlist(pool_config,
ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0);
- if (find_guid(nvroot, vdev_guid)) {
- *statestr = zfs_strdup(
- dgettext(TEXT_DOMAIN, "active"));
- *namestr = zfs_strdup(name);
- ret = TRUE;
- } else {
- ret = FALSE;
- }
+ ret = find_guid(nvroot, vdev_guid);
} else {
ret = FALSE;
}
} else {
- *statestr = zfs_strdup(dgettext(TEXT_DOMAIN,
- "potentially active"));
- *namestr = zfs_strdup(name);
+ stateval = POOL_STATE_POTENTIALLY_ACTIVE;
ret = TRUE;
}
break;
@@ -749,6 +738,12 @@ zpool_in_use(int fd, char **statestr, char **namestr)
ret = FALSE;
}
+
+ if (ret) {
+ *namestr = zfs_strdup(name);
+ *state = (pool_state_t)stateval;
+ }
+
nvlist_free(config);
return (ret);
}