Add default user/group/project quota properties

This adds default userquota, groupquota, and projectquota properties to
MASTER_NODE_OBJ to make them accessible during zfsvfs_init() (regular
DSL properties require dsl_config_lock, which cannot be safely acquired
in this context). The zfs_fill_zplprops_impl() logic is updated to read
these default properties directly from MASTER_NODE_OBJ.

Signed-off-by: Ameer Hamza <ahamza@ixsystems.com>

Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
This commit is contained in:
Ameer Hamza
2025-03-09 21:37:26 +05:00
committed by Tony Hutter
parent 7be9fa259e
commit 2a8d9d9607
10 changed files with 333 additions and 2 deletions
+7 -1
View File
@@ -2049,7 +2049,13 @@
<enumerator name='ZFS_PROP_VOLTHREADING' value='97'/>
<enumerator name='ZFS_PROP_DIRECT' value='98'/>
<enumerator name='ZFS_PROP_LONGNAME' value='99'/>
<enumerator name='ZFS_NUM_PROPS' value='100'/>
<enumerator name='ZFS_PROP_DEFAULTUSERQUOTA' value='100'/>
<enumerator name='ZFS_PROP_DEFAULTGROUPQUOTA' value='101'/>
<enumerator name='ZFS_PROP_DEFAULTPROJECTQUOTA' value='102'/>
<enumerator name='ZFS_PROP_DEFAULTUSEROBJQUOTA' value='103'/>
<enumerator name='ZFS_PROP_DEFAULTGROUPOBJQUOTA' value='104'/>
<enumerator name='ZFS_PROP_DEFAULTPROJECTOBJQUOTA' value='105'/>
<enumerator name='ZFS_NUM_PROPS' value='106'/>
</enum-decl>
<typedef-decl name='zfs_prop_t' type-id='4b000d60' id='58603c44'/>
<enum-decl name='zprop_source_t' naming-typedef-id='a2256d42' id='5903f80e'>
+6
View File
@@ -2308,6 +2308,12 @@ get_numeric_property(zfs_handle_t *zhp, zfs_prop_t prop, zprop_source_t *src,
case ZFS_PROP_NORMALIZE:
case ZFS_PROP_UTF8ONLY:
case ZFS_PROP_CASE:
case ZFS_PROP_DEFAULTUSERQUOTA:
case ZFS_PROP_DEFAULTGROUPQUOTA:
case ZFS_PROP_DEFAULTPROJECTQUOTA:
case ZFS_PROP_DEFAULTUSEROBJQUOTA:
case ZFS_PROP_DEFAULTGROUPOBJQUOTA:
case ZFS_PROP_DEFAULTPROJECTOBJQUOTA:
zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0);
(void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name));