]> git.proxmox.com Git - mirror_zfs.git/blobdiff - module/zcommon/zprop_common.c
Check the dataset type more rigorously when fetching properties.
[mirror_zfs.git] / module / zcommon / zprop_common.c
index 6d9f89a989ddc6191084bc0363035ebc21ef347d..035f3378d929bbd7396bd74967b883ea926578cf 100644 (file)
@@ -351,9 +351,13 @@ zprop_values(int prop, zfs_type_t type)
 
 /*
  * Returns TRUE if the property applies to any of the given dataset types.
+ *
+ * If headcheck is set, the check is being made against the head dataset
+ * type of a snapshot which requires to return B_TRUE when the property
+ * is only valid for snapshots.
  */
 boolean_t
-zprop_valid_for_type(int prop, zfs_type_t type)
+zprop_valid_for_type(int prop, zfs_type_t type, boolean_t headcheck)
 {
        zprop_desc_t *prop_tbl;
 
@@ -362,6 +366,8 @@ zprop_valid_for_type(int prop, zfs_type_t type)
 
        ASSERT(prop < zprop_get_numprops(type));
        prop_tbl = zprop_get_proptable(type);
+       if (headcheck && prop_tbl[prop].pd_types == ZFS_TYPE_SNAPSHOT)
+               return (B_TRUE);
        return ((prop_tbl[prop].pd_types & type) != 0);
 }