mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Replace ZPROP_INVAL with ZPROP_USERPROP where it means a user property
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Allan Jude <allan@klarasystems.com> Sponsored-by: Klara Inc. Closes #12676
This commit is contained in:
parent
9e605cf155
commit
4ff7a8fa2f
@ -174,7 +174,7 @@ zfs_add_sort_column(zfs_sort_column_t **sc, const char *name,
|
|||||||
zfs_sort_column_t *col;
|
zfs_sort_column_t *col;
|
||||||
zfs_prop_t prop;
|
zfs_prop_t prop;
|
||||||
|
|
||||||
if ((prop = zfs_name_to_prop(name)) == ZPROP_INVAL &&
|
if ((prop = zfs_name_to_prop(name)) == ZPROP_USERPROP &&
|
||||||
!zfs_prop_user(name))
|
!zfs_prop_user(name))
|
||||||
return (-1);
|
return (-1);
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ zfs_add_sort_column(zfs_sort_column_t **sc, const char *name,
|
|||||||
|
|
||||||
col->sc_prop = prop;
|
col->sc_prop = prop;
|
||||||
col->sc_reverse = reverse;
|
col->sc_reverse = reverse;
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
col->sc_user_prop = safe_malloc(strlen(name) + 1);
|
col->sc_user_prop = safe_malloc(strlen(name) + 1);
|
||||||
(void) strcpy(col->sc_user_prop, name);
|
(void) strcpy(col->sc_user_prop, name);
|
||||||
}
|
}
|
||||||
@ -311,7 +311,7 @@ zfs_sort(const void *larg, const void *rarg, void *data)
|
|||||||
* Otherwise, we compare 'lnum' and 'rnum'.
|
* Otherwise, we compare 'lnum' and 'rnum'.
|
||||||
*/
|
*/
|
||||||
lstr = rstr = NULL;
|
lstr = rstr = NULL;
|
||||||
if (psc->sc_prop == ZPROP_INVAL) {
|
if (psc->sc_prop == ZPROP_USERPROP) {
|
||||||
nvlist_t *luser, *ruser;
|
nvlist_t *luser, *ruser;
|
||||||
nvlist_t *lval, *rval;
|
nvlist_t *lval, *rval;
|
||||||
|
|
||||||
|
@ -1917,7 +1917,7 @@ get_callback(zfs_handle_t *zhp, void *data)
|
|||||||
pl == cbp->cb_proplist)
|
pl == cbp->cb_proplist)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pl->pl_prop != ZPROP_INVAL) {
|
if (pl->pl_prop != ZPROP_USERPROP) {
|
||||||
if (zfs_prop_get(zhp, pl->pl_prop, buf,
|
if (zfs_prop_get(zhp, pl->pl_prop, buf,
|
||||||
sizeof (buf), &sourcetype, source,
|
sizeof (buf), &sourcetype, source,
|
||||||
sizeof (source),
|
sizeof (source),
|
||||||
@ -2307,7 +2307,7 @@ zfs_do_inherit(int argc, char **argv)
|
|||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
|
|
||||||
if ((prop = zfs_name_to_prop(propname)) != ZPROP_INVAL) {
|
if ((prop = zfs_name_to_prop(propname)) != ZPROP_USERPROP) {
|
||||||
if (zfs_prop_readonly(prop)) {
|
if (zfs_prop_readonly(prop)) {
|
||||||
(void) fprintf(stderr, gettext(
|
(void) fprintf(stderr, gettext(
|
||||||
"%s property is read-only\n"),
|
"%s property is read-only\n"),
|
||||||
@ -3443,7 +3443,7 @@ print_header(list_cbdata_t *cb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
right_justify = B_FALSE;
|
right_justify = B_FALSE;
|
||||||
if (pl->pl_prop != ZPROP_INVAL) {
|
if (pl->pl_prop != ZPROP_USERPROP) {
|
||||||
header = zfs_prop_column_name(pl->pl_prop);
|
header = zfs_prop_column_name(pl->pl_prop);
|
||||||
right_justify = zfs_prop_align_right(pl->pl_prop);
|
right_justify = zfs_prop_align_right(pl->pl_prop);
|
||||||
} else {
|
} else {
|
||||||
@ -3494,7 +3494,7 @@ print_dataset(zfs_handle_t *zhp, list_cbdata_t *cb)
|
|||||||
sizeof (property));
|
sizeof (property));
|
||||||
propstr = property;
|
propstr = property;
|
||||||
right_justify = zfs_prop_align_right(pl->pl_prop);
|
right_justify = zfs_prop_align_right(pl->pl_prop);
|
||||||
} else if (pl->pl_prop != ZPROP_INVAL) {
|
} else if (pl->pl_prop != ZPROP_USERPROP) {
|
||||||
if (zfs_prop_get(zhp, pl->pl_prop, property,
|
if (zfs_prop_get(zhp, pl->pl_prop, property,
|
||||||
sizeof (property), NULL, NULL, 0,
|
sizeof (property), NULL, NULL, 0,
|
||||||
cb->cb_literal) != 0)
|
cb->cb_literal) != 0)
|
||||||
|
@ -5946,7 +5946,7 @@ print_header(list_cbdata_t *cb)
|
|||||||
first = B_FALSE;
|
first = B_FALSE;
|
||||||
|
|
||||||
right_justify = B_FALSE;
|
right_justify = B_FALSE;
|
||||||
if (pl->pl_prop != ZPROP_INVAL) {
|
if (pl->pl_prop != ZPROP_USERPROP) {
|
||||||
header = zpool_prop_column_name(pl->pl_prop);
|
header = zpool_prop_column_name(pl->pl_prop);
|
||||||
right_justify = zpool_prop_align_right(pl->pl_prop);
|
right_justify = zpool_prop_align_right(pl->pl_prop);
|
||||||
} else {
|
} else {
|
||||||
@ -6004,7 +6004,7 @@ print_pool(zpool_handle_t *zhp, list_cbdata_t *cb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
right_justify = B_FALSE;
|
right_justify = B_FALSE;
|
||||||
if (pl->pl_prop != ZPROP_INVAL) {
|
if (pl->pl_prop != ZPROP_USERPROP) {
|
||||||
if (zpool_get_prop(zhp, pl->pl_prop, property,
|
if (zpool_get_prop(zhp, pl->pl_prop, property,
|
||||||
sizeof (property), NULL, cb->cb_literal) != 0)
|
sizeof (property), NULL, cb->cb_literal) != 0)
|
||||||
propstr = "-";
|
propstr = "-";
|
||||||
|
@ -93,6 +93,7 @@ typedef enum dmu_objset_type {
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
ZPROP_CONT = -2,
|
ZPROP_CONT = -2,
|
||||||
ZPROP_INVAL = -1,
|
ZPROP_INVAL = -1,
|
||||||
|
ZPROP_USERPROP = ZPROP_INVAL,
|
||||||
ZFS_PROP_TYPE = 0,
|
ZFS_PROP_TYPE = 0,
|
||||||
ZFS_PROP_CREATION,
|
ZFS_PROP_CREATION,
|
||||||
ZFS_PROP_USED,
|
ZFS_PROP_USED,
|
||||||
@ -310,7 +311,7 @@ typedef int (*zprop_func)(int, void *);
|
|||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VDEV_PROP_INVAL = -1,
|
VDEV_PROP_INVAL = -1,
|
||||||
#define VDEV_PROP_USER VDEV_PROP_INVAL
|
VDEV_PROP_USERPROP = VDEV_PROP_INVAL,
|
||||||
VDEV_PROP_NAME,
|
VDEV_PROP_NAME,
|
||||||
VDEV_PROP_CAPACITY,
|
VDEV_PROP_CAPACITY,
|
||||||
VDEV_PROP_STATE,
|
VDEV_PROP_STATE,
|
||||||
|
@ -1022,7 +1022,7 @@ zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl,
|
|||||||
const char *propname = nvpair_name(elem);
|
const char *propname = nvpair_name(elem);
|
||||||
|
|
||||||
prop = zfs_name_to_prop(propname);
|
prop = zfs_name_to_prop(propname);
|
||||||
if (prop == ZPROP_INVAL && zfs_prop_user(propname)) {
|
if (prop == ZPROP_USERPROP && zfs_prop_user(propname)) {
|
||||||
/*
|
/*
|
||||||
* This is a user property: make sure it's a
|
* This is a user property: make sure it's a
|
||||||
* string, and that it's less than ZAP_MAXNAMELEN.
|
* string, and that it's less than ZAP_MAXNAMELEN.
|
||||||
@ -1061,7 +1061,7 @@ zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prop == ZPROP_INVAL && zfs_prop_userquota(propname)) {
|
if (prop == ZPROP_USERPROP && zfs_prop_userquota(propname)) {
|
||||||
zfs_userquota_prop_t uqtype;
|
zfs_userquota_prop_t uqtype;
|
||||||
char *newpropname = NULL;
|
char *newpropname = NULL;
|
||||||
char domain[128];
|
char domain[128];
|
||||||
@ -1143,7 +1143,8 @@ zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl,
|
|||||||
}
|
}
|
||||||
free(newpropname);
|
free(newpropname);
|
||||||
continue;
|
continue;
|
||||||
} else if (prop == ZPROP_INVAL && zfs_prop_written(propname)) {
|
} else if (prop == ZPROP_USERPROP &&
|
||||||
|
zfs_prop_written(propname)) {
|
||||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||||
"'%s' is readonly"),
|
"'%s' is readonly"),
|
||||||
propname);
|
propname);
|
||||||
@ -1937,7 +1938,7 @@ zfs_prop_inherit(zfs_handle_t *zhp, const char *propname, boolean_t received)
|
|||||||
"cannot inherit %s for '%s'"), propname, zhp->zfs_name);
|
"cannot inherit %s for '%s'"), propname, zhp->zfs_name);
|
||||||
|
|
||||||
zc.zc_cookie = received;
|
zc.zc_cookie = received;
|
||||||
if ((prop = zfs_name_to_prop(propname)) == ZPROP_INVAL) {
|
if ((prop = zfs_name_to_prop(propname)) == ZPROP_USERPROP) {
|
||||||
/*
|
/*
|
||||||
* For user properties, the amount of work we have to do is very
|
* For user properties, the amount of work we have to do is very
|
||||||
* small, so just do it here.
|
* small, so just do it here.
|
||||||
@ -2356,7 +2357,7 @@ zfs_prop_get_recvd(zfs_handle_t *zhp, const char *propname, char *propbuf,
|
|||||||
|
|
||||||
prop = zfs_name_to_prop(propname);
|
prop = zfs_name_to_prop(propname);
|
||||||
|
|
||||||
if (prop != ZPROP_INVAL) {
|
if (prop != ZPROP_USERPROP) {
|
||||||
uint64_t cookie;
|
uint64_t cookie;
|
||||||
if (!nvlist_exists(zhp->zfs_recvd_props, propname))
|
if (!nvlist_exists(zhp->zfs_recvd_props, propname))
|
||||||
return (-1);
|
return (-1);
|
||||||
@ -4635,7 +4636,7 @@ zfs_expand_proplist(zfs_handle_t *zhp, zprop_list_t **plp, boolean_t received,
|
|||||||
*/
|
*/
|
||||||
start = plp;
|
start = plp;
|
||||||
while (*start != NULL) {
|
while (*start != NULL) {
|
||||||
if ((*start)->pl_prop == ZPROP_INVAL)
|
if ((*start)->pl_prop == ZPROP_USERPROP)
|
||||||
break;
|
break;
|
||||||
start = &(*start)->pl_next;
|
start = &(*start)->pl_next;
|
||||||
}
|
}
|
||||||
@ -4656,7 +4657,7 @@ zfs_expand_proplist(zfs_handle_t *zhp, zprop_list_t **plp, boolean_t received,
|
|||||||
entry = zfs_alloc(hdl, sizeof (zprop_list_t));
|
entry = zfs_alloc(hdl, sizeof (zprop_list_t));
|
||||||
entry->pl_user_prop =
|
entry->pl_user_prop =
|
||||||
zfs_strdup(hdl, nvpair_name(elem));
|
zfs_strdup(hdl, nvpair_name(elem));
|
||||||
entry->pl_prop = ZPROP_INVAL;
|
entry->pl_prop = ZPROP_USERPROP;
|
||||||
entry->pl_width = strlen(nvpair_name(elem));
|
entry->pl_width = strlen(nvpair_name(elem));
|
||||||
entry->pl_all = B_TRUE;
|
entry->pl_all = B_TRUE;
|
||||||
*last = entry;
|
*last = entry;
|
||||||
@ -4671,7 +4672,7 @@ zfs_expand_proplist(zfs_handle_t *zhp, zprop_list_t **plp, boolean_t received,
|
|||||||
if (entry->pl_fixed && !literal)
|
if (entry->pl_fixed && !literal)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (entry->pl_prop != ZPROP_INVAL) {
|
if (entry->pl_prop != ZPROP_USERPROP) {
|
||||||
if (zfs_prop_get(zhp, entry->pl_prop,
|
if (zfs_prop_get(zhp, entry->pl_prop,
|
||||||
buf, sizeof (buf), NULL, NULL, 0, literal) == 0) {
|
buf, sizeof (buf), NULL, NULL, 0, literal) == 0) {
|
||||||
if (strlen(buf) > entry->pl_width)
|
if (strlen(buf) > entry->pl_width)
|
||||||
@ -4720,13 +4721,14 @@ zfs_prune_proplist(zfs_handle_t *zhp, uint8_t *props)
|
|||||||
next = nvlist_next_nvpair(zhp->zfs_props, curr);
|
next = nvlist_next_nvpair(zhp->zfs_props, curr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* User properties will result in ZPROP_INVAL, and since we
|
* User properties will result in ZPROP_USERPROP (an alias
|
||||||
|
* for ZPROP_INVAL), and since we
|
||||||
* only know how to prune standard ZFS properties, we always
|
* only know how to prune standard ZFS properties, we always
|
||||||
* leave these in the list. This can also happen if we
|
* leave these in the list. This can also happen if we
|
||||||
* encounter an unknown DSL property (when running older
|
* encounter an unknown DSL property (when running older
|
||||||
* software, for example).
|
* software, for example).
|
||||||
*/
|
*/
|
||||||
if (zfs_prop != ZPROP_INVAL && props[zfs_prop] == B_FALSE)
|
if (zfs_prop != ZPROP_USERPROP && props[zfs_prop] == B_FALSE)
|
||||||
(void) nvlist_remove(zhp->zfs_props,
|
(void) nvlist_remove(zhp->zfs_props,
|
||||||
nvpair_name(curr), nvpair_type(curr));
|
nvpair_name(curr), nvpair_type(curr));
|
||||||
curr = next;
|
curr = next;
|
||||||
|
@ -854,7 +854,7 @@ zpool_expand_proplist(zpool_handle_t *zhp, zprop_list_t **plp,
|
|||||||
for (i = 0; i < SPA_FEATURES; i++) {
|
for (i = 0; i < SPA_FEATURES; i++) {
|
||||||
zprop_list_t *entry = zfs_alloc(hdl,
|
zprop_list_t *entry = zfs_alloc(hdl,
|
||||||
sizeof (zprop_list_t));
|
sizeof (zprop_list_t));
|
||||||
entry->pl_prop = ZPROP_INVAL;
|
entry->pl_prop = ZPROP_USERPROP;
|
||||||
entry->pl_user_prop = zfs_asprintf(hdl, "feature@%s",
|
entry->pl_user_prop = zfs_asprintf(hdl, "feature@%s",
|
||||||
spa_feature_table[i].fi_uname);
|
spa_feature_table[i].fi_uname);
|
||||||
entry->pl_width = strlen(entry->pl_user_prop);
|
entry->pl_width = strlen(entry->pl_user_prop);
|
||||||
@ -898,7 +898,7 @@ zpool_expand_proplist(zpool_handle_t *zhp, zprop_list_t **plp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
entry = zfs_alloc(hdl, sizeof (zprop_list_t));
|
entry = zfs_alloc(hdl, sizeof (zprop_list_t));
|
||||||
entry->pl_prop = ZPROP_INVAL;
|
entry->pl_prop = ZPROP_USERPROP;
|
||||||
entry->pl_user_prop = propname;
|
entry->pl_user_prop = propname;
|
||||||
entry->pl_width = strlen(entry->pl_user_prop);
|
entry->pl_width = strlen(entry->pl_user_prop);
|
||||||
entry->pl_all = B_TRUE;
|
entry->pl_all = B_TRUE;
|
||||||
@ -911,7 +911,7 @@ zpool_expand_proplist(zpool_handle_t *zhp, zprop_list_t **plp,
|
|||||||
if (entry->pl_fixed && !literal)
|
if (entry->pl_fixed && !literal)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (entry->pl_prop != ZPROP_INVAL &&
|
if (entry->pl_prop != ZPROP_USERPROP &&
|
||||||
zpool_get_prop(zhp, entry->pl_prop, buf, sizeof (buf),
|
zpool_get_prop(zhp, entry->pl_prop, buf, sizeof (buf),
|
||||||
NULL, literal) == 0) {
|
NULL, literal) == 0) {
|
||||||
if (strlen(buf) > entry->pl_width)
|
if (strlen(buf) > entry->pl_width)
|
||||||
@ -967,7 +967,7 @@ vdev_expand_proplist(zpool_handle_t *zhp, const char *vdevname,
|
|||||||
|
|
||||||
/* Skip properties that are not user defined */
|
/* Skip properties that are not user defined */
|
||||||
if ((prop = vdev_name_to_prop(propname)) !=
|
if ((prop = vdev_name_to_prop(propname)) !=
|
||||||
VDEV_PROP_USER)
|
VDEV_PROP_USERPROP)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (nvpair_value_nvlist(elem, &propval) != 0)
|
if (nvpair_value_nvlist(elem, &propval) != 0)
|
||||||
@ -5033,7 +5033,7 @@ zpool_get_vdev_prop_value(nvlist_t *nvprop, vdev_prop_t prop, char *prop_name,
|
|||||||
uint64_t intval;
|
uint64_t intval;
|
||||||
zprop_source_t src = ZPROP_SRC_NONE;
|
zprop_source_t src = ZPROP_SRC_NONE;
|
||||||
|
|
||||||
if (prop == VDEV_PROP_USER) {
|
if (prop == VDEV_PROP_USERPROP) {
|
||||||
/* user property, prop_name must contain the property name */
|
/* user property, prop_name must contain the property name */
|
||||||
assert(prop_name != NULL);
|
assert(prop_name != NULL);
|
||||||
if (nvlist_lookup_nvlist(nvprop, prop_name, &nv) == 0) {
|
if (nvlist_lookup_nvlist(nvprop, prop_name, &nv) == 0) {
|
||||||
@ -5195,7 +5195,7 @@ zpool_get_vdev_prop(zpool_handle_t *zhp, const char *vdevname, vdev_prop_t prop,
|
|||||||
|
|
||||||
fnvlist_add_uint64(reqnvl, ZPOOL_VDEV_PROPS_GET_VDEV, vdev_guid);
|
fnvlist_add_uint64(reqnvl, ZPOOL_VDEV_PROPS_GET_VDEV, vdev_guid);
|
||||||
|
|
||||||
if (prop != VDEV_PROP_USER) {
|
if (prop != VDEV_PROP_USERPROP) {
|
||||||
/* prop_name overrides prop value */
|
/* prop_name overrides prop value */
|
||||||
if (prop_name != NULL)
|
if (prop_name != NULL)
|
||||||
prop = vdev_name_to_prop(prop_name);
|
prop = vdev_name_to_prop(prop_name);
|
||||||
|
@ -5107,7 +5107,7 @@ zfs_receive_checkprops(libzfs_handle_t *hdl, nvlist_t *props,
|
|||||||
name = nvpair_name(nvp);
|
name = nvpair_name(nvp);
|
||||||
prop = zfs_name_to_prop(name);
|
prop = zfs_name_to_prop(name);
|
||||||
|
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
if (!zfs_prop_user(name)) {
|
if (!zfs_prop_user(name)) {
|
||||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||||
"%s: invalid property '%s'"), errbuf, name);
|
"%s: invalid property '%s'"), errbuf, name);
|
||||||
|
@ -1282,7 +1282,7 @@ zprop_print_headers(zprop_get_cbdata_t *cbp, zfs_type_t type)
|
|||||||
/*
|
/*
|
||||||
* 'PROPERTY' column
|
* 'PROPERTY' column
|
||||||
*/
|
*/
|
||||||
if (pl->pl_prop != ZPROP_INVAL) {
|
if (pl->pl_prop != ZPROP_USERPROP) {
|
||||||
const char *propname = (type == ZFS_TYPE_POOL) ?
|
const char *propname = (type == ZFS_TYPE_POOL) ?
|
||||||
zpool_prop_to_name(pl->pl_prop) :
|
zpool_prop_to_name(pl->pl_prop) :
|
||||||
((type == ZFS_TYPE_VDEV) ?
|
((type == ZFS_TYPE_VDEV) ?
|
||||||
@ -1755,7 +1755,7 @@ addlist(libzfs_handle_t *hdl, const char *propname, zprop_list_t **listp,
|
|||||||
* Return failure if no property table entry was found and this isn't
|
* Return failure if no property table entry was found and this isn't
|
||||||
* a user-defined property.
|
* a user-defined property.
|
||||||
*/
|
*/
|
||||||
if (prop == ZPROP_INVAL && ((type == ZFS_TYPE_POOL &&
|
if (prop == ZPROP_USERPROP && ((type == ZFS_TYPE_POOL &&
|
||||||
!zpool_prop_feature(propname) &&
|
!zpool_prop_feature(propname) &&
|
||||||
!zpool_prop_unsupported(propname)) ||
|
!zpool_prop_unsupported(propname)) ||
|
||||||
((type == ZFS_TYPE_DATASET) && !zfs_prop_user(propname) &&
|
((type == ZFS_TYPE_DATASET) && !zfs_prop_user(propname) &&
|
||||||
@ -1770,7 +1770,7 @@ addlist(libzfs_handle_t *hdl, const char *propname, zprop_list_t **listp,
|
|||||||
zprop_list_t *entry = zfs_alloc(hdl, sizeof (*entry));
|
zprop_list_t *entry = zfs_alloc(hdl, sizeof (*entry));
|
||||||
|
|
||||||
entry->pl_prop = prop;
|
entry->pl_prop = prop;
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
entry->pl_user_prop = zfs_strdup(hdl, propname);
|
entry->pl_user_prop = zfs_strdup(hdl, propname);
|
||||||
entry->pl_width = strlen(propname);
|
entry->pl_width = strlen(propname);
|
||||||
} else {
|
} else {
|
||||||
|
@ -88,7 +88,7 @@ dsl_prop_get_dd(dsl_dir_t *dd, const char *propname,
|
|||||||
setpoint[0] = '\0';
|
setpoint[0] = '\0';
|
||||||
|
|
||||||
prop = zfs_name_to_prop(propname);
|
prop = zfs_name_to_prop(propname);
|
||||||
inheritable = (prop == ZPROP_INVAL || zfs_prop_inheritable(prop));
|
inheritable = (prop == ZPROP_USERPROP || zfs_prop_inheritable(prop));
|
||||||
inheritstr = kmem_asprintf("%s%s", propname, ZPROP_INHERIT_SUFFIX);
|
inheritstr = kmem_asprintf("%s%s", propname, ZPROP_INHERIT_SUFFIX);
|
||||||
recvdstr = kmem_asprintf("%s%s", propname, ZPROP_RECVD_SUFFIX);
|
recvdstr = kmem_asprintf("%s%s", propname, ZPROP_RECVD_SUFFIX);
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ dsl_prop_get_ds(dsl_dataset_t *ds, const char *propname,
|
|||||||
uint64_t zapobj;
|
uint64_t zapobj;
|
||||||
|
|
||||||
ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool));
|
ASSERT(dsl_pool_config_held(ds->ds_dir->dd_pool));
|
||||||
inheritable = (prop == ZPROP_INVAL || zfs_prop_inheritable(prop));
|
inheritable = (prop == ZPROP_USERPROP || zfs_prop_inheritable(prop));
|
||||||
zapobj = dsl_dataset_phys(ds)->ds_props_obj;
|
zapobj = dsl_dataset_phys(ds)->ds_props_obj;
|
||||||
|
|
||||||
if (zapobj != 0) {
|
if (zapobj != 0) {
|
||||||
@ -1055,12 +1055,12 @@ dsl_prop_get_all_impl(objset_t *mos, uint64_t propobj,
|
|||||||
prop = zfs_name_to_prop(propname);
|
prop = zfs_name_to_prop(propname);
|
||||||
|
|
||||||
/* Skip non-inheritable properties. */
|
/* Skip non-inheritable properties. */
|
||||||
if ((flags & DSL_PROP_GET_INHERITING) && prop != ZPROP_INVAL &&
|
if ((flags & DSL_PROP_GET_INHERITING) &&
|
||||||
!zfs_prop_inheritable(prop))
|
prop != ZPROP_USERPROP && !zfs_prop_inheritable(prop))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Skip properties not valid for this type. */
|
/* Skip properties not valid for this type. */
|
||||||
if ((flags & DSL_PROP_GET_SNAPSHOT) && prop != ZPROP_INVAL &&
|
if ((flags & DSL_PROP_GET_SNAPSHOT) && prop != ZPROP_USERPROP &&
|
||||||
!zfs_prop_valid_for_type(prop, ZFS_TYPE_SNAPSHOT, B_FALSE))
|
!zfs_prop_valid_for_type(prop, ZFS_TYPE_SNAPSHOT, B_FALSE))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -5496,7 +5496,7 @@ vdev_props_set_sync(void *arg, dmu_tx_t *tx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (prop = vdev_name_to_prop(propname)) {
|
switch (prop = vdev_name_to_prop(propname)) {
|
||||||
case VDEV_PROP_USER:
|
case VDEV_PROP_USERPROP:
|
||||||
if (vdev_prop_user(propname)) {
|
if (vdev_prop_user(propname)) {
|
||||||
strval = fnvpair_value_string(elem);
|
strval = fnvpair_value_string(elem);
|
||||||
if (strlen(strval) == 0) {
|
if (strlen(strval) == 0) {
|
||||||
@ -5580,7 +5580,7 @@ vdev_prop_set(vdev_t *vd, nvlist_t *innvl, nvlist_t *outnvl)
|
|||||||
uint64_t intval = 0;
|
uint64_t intval = 0;
|
||||||
char *strval = NULL;
|
char *strval = NULL;
|
||||||
|
|
||||||
if (prop == VDEV_PROP_USER && !vdev_prop_user(propname)) {
|
if (prop == VDEV_PROP_USERPROP && !vdev_prop_user(propname)) {
|
||||||
error = EINVAL;
|
error = EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
@ -5937,7 +5937,7 @@ vdev_prop_get(vdev_t *vd, nvlist_t *innvl, nvlist_t *outnvl)
|
|||||||
case VDEV_PROP_COMMENT:
|
case VDEV_PROP_COMMENT:
|
||||||
/* Exists in the ZAP below */
|
/* Exists in the ZAP below */
|
||||||
/* FALLTHRU */
|
/* FALLTHRU */
|
||||||
case VDEV_PROP_USER:
|
case VDEV_PROP_USERPROP:
|
||||||
/* User Properites */
|
/* User Properites */
|
||||||
src = ZPROP_SRC_LOCAL;
|
src = ZPROP_SRC_LOCAL;
|
||||||
|
|
||||||
|
@ -325,7 +325,7 @@ zcp_synctask_inherit_prop_check(void *arg, dmu_tx_t *tx)
|
|||||||
zcp_inherit_prop_arg_t *args = arg;
|
zcp_inherit_prop_arg_t *args = arg;
|
||||||
zfs_prop_t prop = zfs_name_to_prop(args->zipa_prop);
|
zfs_prop_t prop = zfs_name_to_prop(args->zipa_prop);
|
||||||
|
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
if (zfs_prop_user(args->zipa_prop))
|
if (zfs_prop_user(args->zipa_prop))
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
|
@ -1104,7 +1104,7 @@ zfs_secpolicy_inherit_prop(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
|
|||||||
(void) innvl;
|
(void) innvl;
|
||||||
zfs_prop_t prop = zfs_name_to_prop(zc->zc_value);
|
zfs_prop_t prop = zfs_name_to_prop(zc->zc_value);
|
||||||
|
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
if (!zfs_prop_user(zc->zc_value))
|
if (!zfs_prop_user(zc->zc_value))
|
||||||
return (SET_ERROR(EINVAL));
|
return (SET_ERROR(EINVAL));
|
||||||
return (zfs_secpolicy_write_perms(zc->zc_name,
|
return (zfs_secpolicy_write_perms(zc->zc_name,
|
||||||
@ -2406,7 +2406,7 @@ zfs_prop_set_special(const char *dsname, zprop_source_t source,
|
|||||||
const char *strval = NULL;
|
const char *strval = NULL;
|
||||||
int err = -1;
|
int err = -1;
|
||||||
|
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
if (zfs_prop_userquota(propname))
|
if (zfs_prop_userquota(propname))
|
||||||
return (zfs_prop_set_userquota(dsname, pair));
|
return (zfs_prop_set_userquota(dsname, pair));
|
||||||
return (-1);
|
return (-1);
|
||||||
@ -2577,7 +2577,7 @@ retry:
|
|||||||
/* inherited properties are expected to be booleans */
|
/* inherited properties are expected to be booleans */
|
||||||
if (nvpair_type(propval) != DATA_TYPE_BOOLEAN)
|
if (nvpair_type(propval) != DATA_TYPE_BOOLEAN)
|
||||||
err = SET_ERROR(EINVAL);
|
err = SET_ERROR(EINVAL);
|
||||||
} else if (err == 0 && prop == ZPROP_INVAL) {
|
} else if (err == 0 && prop == ZPROP_USERPROP) {
|
||||||
if (zfs_prop_user(propname)) {
|
if (zfs_prop_user(propname)) {
|
||||||
if (nvpair_type(propval) != DATA_TYPE_STRING)
|
if (nvpair_type(propval) != DATA_TYPE_STRING)
|
||||||
err = SET_ERROR(EINVAL);
|
err = SET_ERROR(EINVAL);
|
||||||
@ -2853,11 +2853,11 @@ zfs_ioc_inherit_prop(zfs_cmd_t *zc)
|
|||||||
* and reservation to the received or default values even though
|
* and reservation to the received or default values even though
|
||||||
* they are not considered inheritable.
|
* they are not considered inheritable.
|
||||||
*/
|
*/
|
||||||
if (prop != ZPROP_INVAL && !zfs_prop_inheritable(prop))
|
if (prop != ZPROP_USERPROP && !zfs_prop_inheritable(prop))
|
||||||
return (SET_ERROR(EINVAL));
|
return (SET_ERROR(EINVAL));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
if (!zfs_prop_user(propname))
|
if (!zfs_prop_user(propname))
|
||||||
return (SET_ERROR(EINVAL));
|
return (SET_ERROR(EINVAL));
|
||||||
|
|
||||||
@ -4488,7 +4488,7 @@ zfs_check_settable(const char *dsname, nvpair_t *pair, cred_t *cr)
|
|||||||
uint64_t intval, compval;
|
uint64_t intval, compval;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (prop == ZPROP_INVAL) {
|
if (prop == ZPROP_USERPROP) {
|
||||||
if (zfs_prop_user(propname)) {
|
if (zfs_prop_user(propname)) {
|
||||||
if ((err = zfs_secpolicy_write_perms(dsname,
|
if ((err = zfs_secpolicy_write_perms(dsname,
|
||||||
ZFS_DELEG_PERM_USERPROP, cr)))
|
ZFS_DELEG_PERM_USERPROP, cr)))
|
||||||
@ -5034,7 +5034,7 @@ zfs_ioc_recv_impl(char *tofs, char *tosnap, char *origin, nvlist_t *recvprops,
|
|||||||
/* -x property */
|
/* -x property */
|
||||||
const char *name = nvpair_name(nvp);
|
const char *name = nvpair_name(nvp);
|
||||||
zfs_prop_t prop = zfs_name_to_prop(name);
|
zfs_prop_t prop = zfs_name_to_prop(name);
|
||||||
if (prop != ZPROP_INVAL) {
|
if (prop != ZPROP_USERPROP) {
|
||||||
if (!zfs_prop_inheritable(prop))
|
if (!zfs_prop_inheritable(prop))
|
||||||
continue;
|
continue;
|
||||||
} else if (!zfs_prop_user(name))
|
} else if (!zfs_prop_user(name))
|
||||||
|
Loading…
Reference in New Issue
Block a user