Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement defaultuserquota/defaultgroupquota #16283

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Commits on Aug 2, 2024

  1. 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 <[email protected]>
    seidelma committed Aug 2, 2024
    Configuration menu
    Copy the full SHA
    0300617 View commit details
    Browse the repository at this point in the history
  2. Add tests for defaultuserquota/defaultgroupquota feature

    These are based on the existing userquota tests. Note that because the
    default{user|group}quota behavior differs from Solaris during
    snapshot/clone/promote, some of the tests fail by design.
    
    Signed-off-by: Todd Seidelmann <[email protected]>
    seidelma committed Aug 2, 2024
    Configuration menu
    Copy the full SHA
    f728f2e View commit details
    Browse the repository at this point in the history
  3. zfsprops.7 manpage changes for default quotas

    Add defaultuserquota and defaultgroupquota dataset properties to the
    zfsprops.7 manpage.
    
    Signed-off-by: Todd Seidelmann <[email protected]>
    seidelma committed Aug 2, 2024
    Configuration menu
    Copy the full SHA
    813784c View commit details
    Browse the repository at this point in the history
  4. Store ABI changes for defaultuserquota/defaultgroupquota

    Signed-off-by: Todd Seidelmann <[email protected]>
    seidelma committed Aug 2, 2024
    Configuration menu
    Copy the full SHA
    91b5c44 View commit details
    Browse the repository at this point in the history

Commits on Aug 9, 2024

  1. Implement defaultuserquota/defaultgroupquota on FreeBSD

    Signed-off-by: Todd Seidelmann <[email protected]>
    seidelma committed Aug 9, 2024
    Configuration menu
    Copy the full SHA
    8889165 View commit details
    Browse the repository at this point in the history