zfs/cmd/zfs
Todd Seidelmann 03006174b7 Implement default user and group quotas
This change adds the 'defaultuserquota' and 'defaultgroupquota'
properties to ZFS datasets to apply a quota to users and groups that do
not have a specific quota assigned. The default quota checking
mechanism works alongside the existing 'userquota' and 'groupquota'
checks, only taking effect if no quota is assigned for a particular
user/group. This means that it's possible to exceed a default quota
by quite a lot before the user/groupused property is updated and
further writes are denied, which was already the case for
user/groupquota.

Default quotas are implemented similarly to 'normal' user quotas,
but instead of being user properties that are preserved across
snapshots, they default back to none. NB: this is different from the
observed Solaris behavior, which is to preserve default quotas across
snapshot/clone/promote.

For instance, Solaris has:
    # zfs set defaultuserquota=100M tank/fs
    # zfs snap tank/fs@snap
    # zfs clone tank/fs@snap tank/fs-clone
    # zfs get -H defaultuserquota tank/fs-clone
    tank/fs-clone   defaultuserquota        100M    -

Whereas this commit does:
    # zfs set defaultuserquota=100M tank/fs
    # zfs snap tank/fs@snap
    # zfs clone tank/fs@snap tank/fs-clone
    # zfs get -H defaultuserquota tank/fs-clone
    tank/fs-clone	defaultuserquota	none	default

It should also be possible to implement a default project quota using
an analogous process, if doing so makes sense.

Signed-off-by: Todd Seidelmann <seidelma@wharton.upenn.edu>
2024-08-02 17:14:42 -04:00
..
Makefile.am autoconf: use include directives instead of recursing down cmd 2022-05-10 10:18:38 -07:00
zfs_iter.c libzfs: add v2 iterator interfaces 2023-04-10 11:53:02 -07:00
zfs_iter.h zfs list: Allow more fields in ZFS_ITER_SIMPLE mode 2022-12-13 17:27:54 -08:00
zfs_main.c Implement default user and group quotas 2024-08-02 17:14:42 -04:00
zfs_project.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
zfs_projectutil.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
zfs_util.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00