mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
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:
@@ -96,6 +96,12 @@ struct zfsvfs {
|
||||
uint64_t z_groupobjquota_obj;
|
||||
uint64_t z_projectquota_obj;
|
||||
uint64_t z_projectobjquota_obj;
|
||||
uint64_t z_defaultuserquota;
|
||||
uint64_t z_defaultgroupquota;
|
||||
uint64_t z_defaultprojectquota;
|
||||
uint64_t z_defaultuserobjquota;
|
||||
uint64_t z_defaultgroupobjquota;
|
||||
uint64_t z_defaultprojectobjquota;
|
||||
uint64_t z_replay_eof; /* New end of file - replay only */
|
||||
sa_attr_type_t *z_attr_table; /* SA attr mapping->id */
|
||||
#define ZFS_OBJ_MTX_SZ 64
|
||||
@@ -226,6 +232,8 @@ extern boolean_t zfs_is_readonly(zfsvfs_t *zfsvfs);
|
||||
extern int zfs_get_temporary_prop(struct dsl_dataset *ds, zfs_prop_t zfs_prop,
|
||||
uint64_t *val, char *setpoint);
|
||||
extern int zfs_busy(void);
|
||||
extern int zfs_set_default_quota(zfsvfs_t *zfsvfs, zfs_prop_t zfs_prop,
|
||||
uint64_t quota);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -131,6 +131,12 @@ struct zfsvfs {
|
||||
uint64_t z_groupobjquota_obj;
|
||||
uint64_t z_projectquota_obj;
|
||||
uint64_t z_projectobjquota_obj;
|
||||
uint64_t z_defaultuserquota;
|
||||
uint64_t z_defaultgroupquota;
|
||||
uint64_t z_defaultprojectquota;
|
||||
uint64_t z_defaultuserobjquota;
|
||||
uint64_t z_defaultgroupobjquota;
|
||||
uint64_t z_defaultprojectobjquota;
|
||||
uint64_t z_replay_eof; /* New end of file - replay only */
|
||||
sa_attr_type_t *z_attr_table; /* SA attr mapping->id */
|
||||
uint64_t z_hold_size; /* znode hold array size */
|
||||
@@ -250,6 +256,8 @@ extern int zfs_prune(struct super_block *sb, unsigned long nr_to_scan,
|
||||
int *objects);
|
||||
extern int zfs_get_temporary_prop(dsl_dataset_t *ds, zfs_prop_t zfs_prop,
|
||||
uint64_t *val, char *setpoint);
|
||||
extern int zfs_set_default_quota(zfsvfs_t *zfsvfs, zfs_prop_t zfs_prop,
|
||||
uint64_t quota);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -197,6 +197,12 @@ typedef enum {
|
||||
ZFS_PROP_VOLTHREADING,
|
||||
ZFS_PROP_DIRECT,
|
||||
ZFS_PROP_LONGNAME,
|
||||
ZFS_PROP_DEFAULTUSERQUOTA,
|
||||
ZFS_PROP_DEFAULTGROUPQUOTA,
|
||||
ZFS_PROP_DEFAULTPROJECTQUOTA,
|
||||
ZFS_PROP_DEFAULTUSEROBJQUOTA,
|
||||
ZFS_PROP_DEFAULTGROUPOBJQUOTA,
|
||||
ZFS_PROP_DEFAULTPROJECTOBJQUOTA,
|
||||
ZFS_NUM_PROPS
|
||||
} zfs_prop_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user