shared: image_set_pool_limit()

This commit is contained in:
Ivan Kruglov
2025-01-15 02:47:58 -08:00
parent 9a0776159b
commit 42f2740aff
2 changed files with 24 additions and 0 deletions
+23
View File
@@ -1590,6 +1590,29 @@ int image_set_limit(Image *i, uint64_t referenced_max) {
return 0;
}
int image_set_pool_limit(ImageClass class, uint64_t referenced_max) {
const char *dir;
int r;
assert(class >= 0 && class < _IMAGE_CLASS_MAX);
dir = image_root_to_string(class);
r = btrfs_qgroup_set_limit(dir, /* qgroupid = */ 0, referenced_max);
if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
return r;
if (r < 0)
log_debug_errno(r, "Failed to set limit on btrfs quota group for '%s', ignoring: %m", dir);
r = btrfs_subvol_set_subtree_quota_limit(dir, /* subvol_id = */ 0, referenced_max);
if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
return r;
if (r < 0)
return log_debug_errno(r, "Failed to set subtree quota limit for '%s': %m", dir);
return 0;
}
int image_read_metadata(Image *i, const ImagePolicy *image_policy) {
_cleanup_(release_lock_file) LockFile global_lock = LOCK_FILE_INIT, local_lock = LOCK_FILE_INIT;
int r;
+1
View File
@@ -78,6 +78,7 @@ int image_path_lock(const char *path, int operation, LockFile *global, LockFile
int image_name_lock(const char *name, int operation, LockFile *ret);
int image_set_limit(Image *i, uint64_t referenced_max);
int image_set_pool_limit(ImageClass class, uint64_t referenced_max);
int image_read_metadata(Image *i, const ImagePolicy *image_policy);