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> |
||
---|---|---|
.. | ||
libavl | ||
libefi | ||
libicp | ||
libnvpair | ||
libshare | ||
libspl | ||
libtpool | ||
libunicode | ||
libuutil | ||
libzdb | ||
libzfs | ||
libzfs_core | ||
libzfsbootenv | ||
libzpool | ||
libzstd | ||
libzutil | ||
Makefile.am |