mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
zpool: Provide GUID to zpool-reguid(8) with -g (#16239)
This commit extends the zpool-reguid(8) command with a -g flag, which allows the user to specify the GUID to set. This change also adds some general tests for zpool-reguid(8). Sponsored-by: Wasabi Technology, Inc. Sponsored-by: Klara, Inc. Signed-off-by: Mateusz Piotrowski <0mp@FreeBSD.org> Reviewed-by: Rob Norris <rob.norris@klarasystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov>
This commit is contained in:
committed by
GitHub
parent
2420ee6e12
commit
6be8bf5552
+18
-5
@@ -537,7 +537,7 @@ get_usage(zpool_help_t idx)
|
||||
"\t [-o property=value] <pool> <newpool> "
|
||||
"[<device> ...]\n"));
|
||||
case HELP_REGUID:
|
||||
return (gettext("\treguid <pool>\n"));
|
||||
return (gettext("\treguid [-g guid] <pool>\n"));
|
||||
case HELP_SYNC:
|
||||
return (gettext("\tsync [pool] ...\n"));
|
||||
case HELP_VERSION:
|
||||
@@ -2025,7 +2025,7 @@ zpool_do_create(int argc, char **argv)
|
||||
char *end;
|
||||
u_longlong_t ver;
|
||||
|
||||
ver = strtoull(propval, &end, 10);
|
||||
ver = strtoull(propval, &end, 0);
|
||||
if (*end == '\0' &&
|
||||
ver < SPA_VERSION_FEATURES) {
|
||||
enable_pool_features = B_FALSE;
|
||||
@@ -8232,19 +8232,32 @@ zpool_do_clear(int argc, char **argv)
|
||||
}
|
||||
|
||||
/*
|
||||
* zpool reguid <pool>
|
||||
* zpool reguid [-g <guid>] <pool>
|
||||
*/
|
||||
int
|
||||
zpool_do_reguid(int argc, char **argv)
|
||||
{
|
||||
uint64_t guid;
|
||||
uint64_t *guidp = NULL;
|
||||
int c;
|
||||
char *endptr;
|
||||
char *poolname;
|
||||
zpool_handle_t *zhp;
|
||||
int ret = 0;
|
||||
|
||||
/* check options */
|
||||
while ((c = getopt(argc, argv, "")) != -1) {
|
||||
while ((c = getopt(argc, argv, "g:")) != -1) {
|
||||
switch (c) {
|
||||
case 'g':
|
||||
errno = 0;
|
||||
guid = strtoull(optarg, &endptr, 10);
|
||||
if (errno != 0 || *endptr != '\0') {
|
||||
(void) fprintf(stderr,
|
||||
gettext("invalid GUID: %s\n"), optarg);
|
||||
usage(B_FALSE);
|
||||
}
|
||||
guidp = &guid;
|
||||
break;
|
||||
case '?':
|
||||
(void) fprintf(stderr, gettext("invalid option '%c'\n"),
|
||||
optopt);
|
||||
@@ -8270,7 +8283,7 @@ zpool_do_reguid(int argc, char **argv)
|
||||
if ((zhp = zpool_open(g_zfs, poolname)) == NULL)
|
||||
return (1);
|
||||
|
||||
ret = zpool_reguid(zhp);
|
||||
ret = zpool_set_guid(zhp, guidp);
|
||||
|
||||
zpool_close(zhp);
|
||||
return (ret);
|
||||
|
||||
Reference in New Issue
Block a user