my $storage_cfg = cfs_read_file("storage.cfg");
- my $query_loopdev = sub {
- my ($path) = @_;
- my $found;
- my $parser = sub {
- my $line = shift;
- if ($line =~ m@^(/dev/loop\d+):@) {
- $found = $1;
- }
- };
- my $cmd = ['losetup', '--associated', $path];
- PVE::Tools::run_command($cmd, outfunc => $parser);
- return $found;
- };
-
my $code = sub {
my $conf = PVE::LXC::load_config($vmid);
$mp->{mp} = '/';
my $use_loopdev = (PVE::LXC::mountpoint_mount_path($mp, $storage_cfg))[1];
- $path = &$query_loopdev($path) if $use_loopdev;
+ $path = PVE::LXC::query_loopdev($path) if $use_loopdev;
die "internal error: CT running but mountpoint not attached to a loop device"
if !$path;
PVE::Tools::run_command(['losetup', '--set-capacity', $path]) if $use_loopdev;
}
};
+sub query_loopdev {
+ my ($path) = @_;
+ my $found;
+ my $parser = sub {
+ my $line = shift;
+ if ($line =~ m@^(/dev/loop\d+):@) {
+ $found = $1;
+ }
+ };
+ my $cmd = ['losetup', '--associated', $path];
+ PVE::Tools::run_command($cmd, outfunc => $parser);
+ return $found;
+}
+
# use $rootdir = undef to just return the corresponding mount path
sub mountpoint_mount {
my ($mountpoint, $rootdir, $storage_cfg, $snapname) = @_;