plugin: add qemu_img_resize

and add missing preallocation
dc5f690b97

Signed-off-by: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com>
This commit is contained in:
Alexandre Derumier
2025-07-09 18:21:54 +02:00
committed by Wolfgang Bumiller
parent eedae199a8
commit 83cccdcdea

View File

@ -733,6 +733,30 @@ sub qemu_img_measure {
return PVE::Storage::Common::run_qemu_img_json($cmd, $timeout);
}
=pod
=head3 qemu_img_resize
qemu_img_resize($scfg, $path, $format, $size, $timeout)
Resize a qemu image C<$path> with format C<$format> to a target Kb size C<$size>.
Default timeout C<$timeout> is 10s if not specified.
=cut
sub qemu_img_resize {
my ($scfg, $path, $format, $size, $timeout) = @_;
die "format is missing" if !$format;
my $prealloc_opt = preallocation_cmd_option($scfg, $format);
my $cmd = ['/usr/bin/qemu-img', 'resize'];
push $cmd->@*, "--$prealloc_opt" if $prealloc_opt;
push $cmd->@*, '-f', $format, $path, $size;
$timeout = 10 if !$timeout;
run_command($cmd, timeout => $timeout);
}
# Storage implementation
# called during addition of storage (before the new storage config got written)
@ -1284,9 +1308,7 @@ sub volume_resize {
my $format = ($class->parse_volname($volname))[6];
my $cmd = ['/usr/bin/qemu-img', 'resize', '-f', $format, $path, $size];
run_command($cmd, timeout => 10);
qemu_img_resize($scfg, $path, $format, $size, 10);
return undef;
}