5
0
mirror of git://git.proxmox.com/git/pve-storage.git synced 2025-01-11 05:18:01 +03:00

fix #2046 add volume_size_info to LVMPlugin

Without volume_size_info a Storage plugin falls back to the Implementation
in PVE/Storage/Plugin.pm, which relies on `qemu-img info`.

`qemu-img info` returns wrong results on a node in the case of shared volume
groups (e.g. when sharing disks via iSCSI), if a disk was resized on another
node (it lseeks to the end of the block-device, and this yields the old size).

Using lvs directly fixes the issue, since the LVM metadata gets updated when
invoking lvs.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
Stoiko Ivanov 2019-01-04 14:06:24 +01:00 committed by Thomas Lamprecht
parent 4b3088a0a8
commit 955c1f2cf7

View File

@ -499,6 +499,21 @@ sub volume_resize {
return 1;
}
sub volume_size_info {
my ($class, $scfg, $storeid, $volname, $timeout) = @_;
my $path = $class->filesystem_path($scfg, $volname);
my $cmd = ['/sbin/lvs', '--separator', ':', '--noheadings', '--units', 'b',
'--unbuffered', '--nosuffix', '--options', 'lv_size', $path];
my $size;
run_command($cmd, timeout => $timeout, errmsg => "can't get size of '$path'",
outfunc => sub {
$size = int(shift);
});
return wantarray ? ($size, 'raw', 0, undef) : $size;
}
sub volume_snapshot {
my ($class, $scfg, $storeid, $volname, $snap) = @_;