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 <pcd@delphix.com> Reviewed by: Chris Williamson <chris.williamson@delphix.com> Reviewed by: Sebastien Roy <sebastien.roy@delphix.com> Reviewed by: Igor Kozhukhov <igor@dilos.org> Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Approved by: Robert Mustacchi <rm@joyent.com> Ported-by: Giuseppe Di Natale <dinatale2@llnl.gov> OpenZFS-issue: https://www.illumos.org/issues/9193 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/504645d227 Closes #7230
This commit is contained in:
parent
910f3ce739
commit
387b6856d6
|
@ -410,6 +410,8 @@ static boolean_t
|
||||||
bootfs_name_valid(const char *pool, char *bootfs)
|
bootfs_name_valid(const char *pool, char *bootfs)
|
||||||
{
|
{
|
||||||
int len = strlen(pool);
|
int len = strlen(pool);
|
||||||
|
if (bootfs[0] == '\0')
|
||||||
|
return (B_TRUE);
|
||||||
|
|
||||||
if (!zfs_name_valid(bootfs, ZFS_TYPE_FILESYSTEM|ZFS_TYPE_SNAPSHOT))
|
if (!zfs_name_valid(bootfs, ZFS_TYPE_FILESYSTEM|ZFS_TYPE_SNAPSHOT))
|
||||||
return (B_FALSE);
|
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
|
* bootfs property value has to be a dataset name and
|
||||||
* the dataset has to be in the same pool as it sets to.
|
* the dataset has to be in the same pool as it sets to.
|
||||||
*/
|
*/
|
||||||
if (strval[0] != '\0' && !bootfs_name_valid(poolname,
|
if (!bootfs_name_valid(poolname, strval)) {
|
||||||
strval)) {
|
|
||||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' "
|
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' "
|
||||||
"is an invalid name"), strval);
|
"is an invalid name"), strval);
|
||||||
(void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf);
|
(void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf);
|
||||||
|
|
Loading…
Reference in New Issue