Ricardo Correia wrote: > If I'm not mistaken, there are some new reserved pool names (raidz1, raidz2 > and spare) that weren't being properly checked for (in zfs_namecheck.c). > > There were also some errors that weren't being handled in libzfs_dataset.c > (they were detected by gcc's warnings). >
I just opened the following bug: 6441206 missing checks in zfs_namecheck() -Mark > > ------------------------------------------------------------------------ > > Index: lib/libzfs/libzfs_dataset.c > =================================================================== > --- lib/libzfs/libzfs_dataset.c (revision 35) > +++ lib/libzfs/libzfs_dataset.c (working copy) > @@ -153,6 +153,18 @@ > zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, > "multiple '@' delimiters in name")); > break; > + > + case NAME_ERR_NOLETTER: > + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, > + "pool doesn't begin with a letter")); > + > + case NAME_ERR_RESERVED: > + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, > + "name is reserved")); > + > + case NAME_ERR_DISKLIKE: > + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, > + "reserved disk name")); > } > } > > Index: lib/libzfscommon/zfs_namecheck.c > =================================================================== > --- lib/libzfscommon/zfs_namecheck.c (revision 33) > +++ lib/libzfscommon/zfs_namecheck.c (working copy) > @@ -160,8 +160,8 @@ > /* > * For pool names, we have the same set of valid characters as described in > * dataset names, with the additional restriction that the pool name must > begin > - * with a letter. The pool names 'raidz' and 'mirror' are also reserved > names > - * that cannot be used. > + * with a letter. The pool names 'raidz', 'raidz1', 'raidz2', 'mirror' and > + * 'spare' are also reserved names that cannot be used. > */ > int > pool_namecheck(const char *pool, namecheck_err_t *why, char *what) > @@ -201,7 +201,9 @@ > return (-1); > } > > - if (strcmp(pool, "mirror") == 0 || strcmp(pool, "raidz") == 0) { > + if (strcmp(pool, "mirror") == 0 || strcmp(pool, "raidz") == 0 || > + strcmp(pool, "raidz1") == 0 || strcmp(pool, "raidz2") == 0 || > + strcmp(pool, "spare") == 0) { > if (why) > *why = NAME_ERR_RESERVED; > return (-1); > > > ------------------------------------------------------------------------ > > _______________________________________________ > zfs-code mailing list > zfs-code at opensolaris.org > http://opensolaris.org/mailman/listinfo/zfs-code