From 387b6856d6d6997ae5849b8ad9155433fff6f077 Mon Sep 17 00:00:00 2001 From: Paul Dagnelie Date: Thu, 23 Mar 2017 15:28:22 -0700 Subject: [PATCH] OpenZFS 9193 - bootcfg -C doesn't work When given an empty string as a rootds value, bootcfg -C fails with the error message 'could not set nextboot: '' is an invalid name'. This should be allowed because it represents clearing the nextboot configuration. Authored by: Paul Dagnelie Reviewed by: Chris Williamson Reviewed by: Sebastien Roy Reviewed by: Igor Kozhukhov Reviewed-by: George Melikov Reviewed-by: Brian Behlendorf Approved by: Robert Mustacchi Ported-by: Giuseppe Di Natale OpenZFS-issue: https://www.illumos.org/issues/9193 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/504645d227 Closes #7230 --- lib/libzfs/libzfs_pool.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/libzfs/libzfs_pool.c b/lib/libzfs/libzfs_pool.c index cd14f2836..8a0931f90 100644 --- a/lib/libzfs/libzfs_pool.c +++ b/lib/libzfs/libzfs_pool.c @@ -410,6 +410,8 @@ static boolean_t bootfs_name_valid(const char *pool, char *bootfs) { int len = strlen(pool); + if (bootfs[0] == '\0') + return (B_TRUE); if (!zfs_name_valid(bootfs, ZFS_TYPE_FILESYSTEM|ZFS_TYPE_SNAPSHOT)) return (B_FALSE); @@ -567,8 +569,7 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname, * bootfs property value has to be a dataset name and * the dataset has to be in the same pool as it sets to. */ - if (strval[0] != '\0' && !bootfs_name_valid(poolname, - strval)) { + if (!bootfs_name_valid(poolname, strval)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' " "is an invalid name"), strval); (void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf); -- 2.39.2