import: when downloading images, create a subtree quota group for them
This commit is contained in:
parent
5bcd08db28
commit
8c9cfc2844
|
@ -235,6 +235,8 @@ static int tar_import_fork_tar(TarImport *i) {
|
|||
return log_error_errno(errno, "Failed to create directory %s: %m", i->temp_path);
|
||||
} else if (r < 0)
|
||||
return log_error_errno(errno, "Failed to create subvolume %s: %m", i->temp_path);
|
||||
else
|
||||
(void) import_assign_pool_quota_and_warn(i->temp_path);
|
||||
|
||||
i->tar_fd = import_fork_tar_x(i->temp_path, &i->tar_pid);
|
||||
if (i->tar_fd < 0)
|
||||
|
|
|
@ -543,6 +543,8 @@ static int dkr_pull_job_on_open_disk(PullJob *j) {
|
|||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to make btrfs subvolume %s: %m", i->temp_path);
|
||||
|
||||
(void) import_assign_pool_quota_and_warn(i->temp_path);
|
||||
|
||||
j->disk_fd = import_fork_tar_x(i->temp_path, &i->tar_pid);
|
||||
if (j->disk_fd < 0)
|
||||
return j->disk_fd;
|
||||
|
|
|
@ -410,6 +410,8 @@ static int tar_pull_job_on_open_disk_tar(PullJob *j) {
|
|||
return log_error_errno(errno, "Failed to create directory %s: %m", i->temp_path);
|
||||
} else if (r < 0)
|
||||
return log_error_errno(errno, "Failed to create subvolume %s: %m", i->temp_path);
|
||||
else
|
||||
(void) import_assign_pool_quota_and_warn(i->temp_path);
|
||||
|
||||
j->disk_fd = import_fork_tar_x(i->temp_path, &i->tar_pid);
|
||||
if (j->disk_fd < 0)
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#include "btrfs-util.h"
|
||||
#include "util.h"
|
||||
#include "import-util.h"
|
||||
|
||||
|
@ -201,3 +202,29 @@ bool dkr_id_is_valid(const char *id) {
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
int import_assign_pool_quota_and_warn(const char *path) {
|
||||
int r;
|
||||
|
||||
r = btrfs_subvol_auto_qgroup("/var/lib/machines", 0, true);
|
||||
if (r == -ENOTTY) {
|
||||
log_debug_errno(r, "Failed to set up default quota hierarchy for /var/lib/machines, as directory is not on btrfs or not a subvolume. Ignoring.");
|
||||
return 0;
|
||||
}
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to set up default quota hierarchy for /var/lib/machines: %m");
|
||||
if (r > 0)
|
||||
log_info("Set up default quota hierarchy for /var/lib/machines.");
|
||||
|
||||
r = btrfs_subvol_auto_qgroup(path, 0, true);
|
||||
if (r == -ENOTTY) {
|
||||
log_debug_errno(r, "Failed to set up quota hierarchy for %s, as directory is not on btrfs or not a subvolume. Ignoring.", path);
|
||||
return 0;
|
||||
}
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to set up default quota hierarchy for %s: %m", path);
|
||||
if (r > 0)
|
||||
log_info("Set up default quota hierarchy for %s.", path);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -47,3 +47,5 @@ bool dkr_id_is_valid(const char *id);
|
|||
bool dkr_ref_is_valid(const char *ref);
|
||||
bool dkr_digest_is_valid(const char *digest);
|
||||
#define dkr_tag_is_valid(tag) filename_is_valid(tag)
|
||||
|
||||
int import_assign_pool_quota_and_warn(const char *path);
|
||||
|
|
Loading…
Reference in New Issue