shared: image_set_pool_limit()
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user