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
+22
View File
@@ -708,6 +708,28 @@ zfs_prop_init(void)
zprop_register_number(ZFS_PROP_SNAPSHOT_LIMIT, "snapshot_limit",
UINT64_MAX, PROP_DEFAULT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME,
"<count> | none", "SSLIMIT", B_FALSE, sfeatures);
zprop_register_number(ZFS_PROP_DEFAULTUSERQUOTA, "defaultuserquota", 0,
PROP_DEFAULT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT,
"<size> | none", "DEFAULTUSERQUOTA", B_FALSE, sfeatures);
zprop_register_number(ZFS_PROP_DEFAULTGROUPQUOTA, "defaultgroupquota",
0, PROP_DEFAULT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT,
"<size> | none", "DEFAULTGROUPQUOTA", B_FALSE, sfeatures);
zprop_register_number(ZFS_PROP_DEFAULTPROJECTQUOTA,
"defaultprojectquota", 0, PROP_DEFAULT,
ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "<size> | none",
"DEFAULTPROJECTQUOTA", B_FALSE, sfeatures);
zprop_register_number(ZFS_PROP_DEFAULTUSEROBJQUOTA,
"defaultuserobjquota", 0, PROP_DEFAULT,
ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "<size> | none",
"DEFAULTUSEROBJQUOTA", B_FALSE, sfeatures);
zprop_register_number(ZFS_PROP_DEFAULTGROUPOBJQUOTA,
"defaultgroupobjquota", 0, PROP_DEFAULT,
ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "<size> | none",
"DEFAULTGROUPOBJQUOTA", B_FALSE, sfeatures);
zprop_register_number(ZFS_PROP_DEFAULTPROJECTOBJQUOTA,
"defaultprojectobjquota", 0, PROP_DEFAULT,
ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT, "<size> | none",
"DEFAULTPROJECTOBJQUOTA", B_FALSE, sfeatures);
/* inherit number properties */
zprop_register_number(ZFS_PROP_RECORDSIZE, "recordsize",