diff options
author | Sargun Dhillon <sargun@sargun.me> | 2017-05-11 23:17:33 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-06-19 18:25:58 +0200 |
commit | f29efe292198b9dbf67fb79ec9ffb5865ca29fb8 (patch) | |
tree | eadca77167dd1b0c5f03c99b17d7aa00bd79aeff /fs/btrfs/qgroup.c | |
parent | btrfs: Convert fs_info->free_chunk_space to atomic64_t (diff) | |
download | linux-f29efe292198b9dbf67fb79ec9ffb5865ca29fb8.tar.xz linux-f29efe292198b9dbf67fb79ec9ffb5865ca29fb8.zip |
btrfs: add quota override flag to enable quota override for CAP_SYS_RESOURCE
This patch introduces the quota override flag to btrfs_fs_info, and a
change to quota limit checking code to temporarily allow for quota to be
overridden for processes with CAP_SYS_RESOURCE.
It's useful for administrative programs, such as log rotation, that may
need to temporarily use more disk space in order to free up a greater
amount of overall disk space without yielding more disk space to the
rest of userland.
Eventually, we may want to add the idea of an operator-specific quota,
operator reserved space, or something else to allow for administrative
override, but this is perhaps the simplest solution.
Signed-off-by: Sargun Dhillon <sargun@sargun.me>
Reviewed-by: David Sterba <dsterba@suse.com>
[ minor changelog edits ]
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/qgroup.c')
-rw-r--r-- | fs/btrfs/qgroup.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index deffbeb74a0b..458fec01d814 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -2338,6 +2338,11 @@ static int qgroup_reserve(struct btrfs_root *root, u64 num_bytes, bool enforce) if (num_bytes == 0) return 0; + + if (test_bit(BTRFS_FS_QUOTA_OVERRIDE, &fs_info->flags) && + capable(CAP_SYS_RESOURCE)) + enforce = false; + retry: spin_lock(&fs_info->qgroup_lock); quota_root = fs_info->quota_root; |