MFV r328251: 8652 Tautological comparisons with ZPROP_INVAL

illumos/illumos-gate@4ae5f5f06c

https://www.illumos.org/issues/8652:
Clang and GCC prefer to use unsigned ints to store enums. With Clang, that
causes tautological comparison warnings when comparing a zfs_prop_t or
zpool_prop_t variable to the macro ZPROP_INVAL. It's likely that error
handling code is being silently removed as a result.

Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Igor Kozhukhov <igor@dilos.org>
Approved by: Gordon Ross <gwr@nexenta.com>
Author: Alan Somers <asomers@gmail.com>
This commit is contained in:
Alexander Motin 2018-01-22 05:52:39 +00:00
commit 4eb2803697
4 changed files with 11 additions and 11 deletions

View File

@ -441,7 +441,7 @@ add_prop_list(const char *propname, char *propval, nvlist_t **props,
* feature@ properties and version should not be specified * feature@ properties and version should not be specified
* at the same time. * at the same time.
*/ */
if ((prop == ZPROP_INVAL && zpool_prop_feature(propname) && if ((prop == ZPOOL_PROP_INVAL && zpool_prop_feature(propname) &&
nvlist_exists(proplist, vname)) || nvlist_exists(proplist, vname)) ||
(prop == ZPOOL_PROP_VERSION && (prop == ZPOOL_PROP_VERSION &&
prop_list_contains_feature(proplist))) { prop_list_contains_feature(proplist))) {

View File

@ -445,7 +445,7 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname,
const char *propname = nvpair_name(elem); const char *propname = nvpair_name(elem);
prop = zpool_name_to_prop(propname); prop = zpool_name_to_prop(propname);
if (prop == ZPROP_INVAL && zpool_prop_feature(propname)) { if (prop == ZPOOL_PROP_INVAL && zpool_prop_feature(propname)) {
int err; int err;
char *fname = strchr(propname, '@') + 1; char *fname = strchr(propname, '@') + 1;
@ -484,7 +484,7 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname,
/* /*
* Make sure this property is valid and applies to this type. * Make sure this property is valid and applies to this type.
*/ */
if (prop == ZPROP_INVAL) { if (prop == ZPOOL_PROP_INVAL) {
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
"invalid property '%s'"), propname); "invalid property '%s'"), propname);
(void) zfs_error(hdl, EZFS_BADPROP, errbuf); (void) zfs_error(hdl, EZFS_BADPROP, errbuf);

View File

@ -349,7 +349,7 @@ spa_prop_get(spa_t *spa, nvlist_t **nvp)
zprop_source_t src = ZPROP_SRC_DEFAULT; zprop_source_t src = ZPROP_SRC_DEFAULT;
zpool_prop_t prop; zpool_prop_t prop;
if ((prop = zpool_name_to_prop(za.za_name)) == ZPROP_INVAL) if ((prop = zpool_name_to_prop(za.za_name)) == ZPOOL_PROP_INVAL)
continue; continue;
switch (za.za_integer_length) { switch (za.za_integer_length) {
@ -437,7 +437,7 @@ spa_prop_validate(spa_t *spa, nvlist_t *props)
zpool_prop_t prop = zpool_name_to_prop(propname); zpool_prop_t prop = zpool_name_to_prop(propname);
switch (prop) { switch (prop) {
case ZPROP_INVAL: case ZPOOL_PROP_INVAL:
if (!zpool_prop_feature(propname)) { if (!zpool_prop_feature(propname)) {
error = SET_ERROR(EINVAL); error = SET_ERROR(EINVAL);
break; break;
@ -680,7 +680,7 @@ spa_prop_set(spa_t *spa, nvlist_t *nvp)
prop == ZPOOL_PROP_READONLY) prop == ZPOOL_PROP_READONLY)
continue; continue;
if (prop == ZPOOL_PROP_VERSION || prop == ZPROP_INVAL) { if (prop == ZPOOL_PROP_VERSION || prop == ZPOOL_PROP_INVAL) {
uint64_t ver; uint64_t ver;
if (prop == ZPOOL_PROP_VERSION) { if (prop == ZPOOL_PROP_VERSION) {
@ -6658,7 +6658,7 @@ spa_sync_props(void *arg, dmu_tx_t *tx)
spa_feature_t fid; spa_feature_t fid;
switch (prop = zpool_name_to_prop(nvpair_name(elem))) { switch (prop = zpool_name_to_prop(nvpair_name(elem))) {
case ZPROP_INVAL: case ZPOOL_PROP_INVAL:
/* /*
* We checked this earlier in spa_prop_validate(). * We checked this earlier in spa_prop_validate().
*/ */

View File

@ -90,7 +90,9 @@ typedef enum dmu_objset_type {
* the property table in usr/src/common/zfs/zfs_prop.c. * the property table in usr/src/common/zfs/zfs_prop.c.
*/ */
typedef enum { typedef enum {
ZFS_PROP_TYPE, ZPROP_CONT = -2,
ZPROP_INVAL = -1,
ZFS_PROP_TYPE = 0,
ZFS_PROP_CREATION, ZFS_PROP_CREATION,
ZFS_PROP_USED, ZFS_PROP_USED,
ZFS_PROP_AVAILABLE, ZFS_PROP_AVAILABLE,
@ -183,6 +185,7 @@ extern const char *zfs_userquota_prop_prefixes[ZFS_NUM_USERQUOTA_PROPS];
* the property table in usr/src/common/zfs/zpool_prop.c. * the property table in usr/src/common/zfs/zpool_prop.c.
*/ */
typedef enum { typedef enum {
ZPOOL_PROP_INVAL = -1,
ZPOOL_PROP_NAME, ZPOOL_PROP_NAME,
ZPOOL_PROP_SIZE, ZPOOL_PROP_SIZE,
ZPOOL_PROP_CAPACITY, ZPOOL_PROP_CAPACITY,
@ -214,9 +217,6 @@ typedef enum {
/* Small enough to not hog a whole line of printout in zpool(1M). */ /* Small enough to not hog a whole line of printout in zpool(1M). */
#define ZPROP_MAX_COMMENT 32 #define ZPROP_MAX_COMMENT 32
#define ZPROP_CONT -2
#define ZPROP_INVAL -1
#define ZPROP_VALUE "value" #define ZPROP_VALUE "value"
#define ZPROP_SOURCE "source" #define ZPROP_SOURCE "source"