[pve-devel] [PATCH v3 pve-container 2/3] Correctly bail when online resize for CT is requested.
mir at datanom.net
mir at datanom.net
Tue Jun 20 22:46:42 CEST 2017
From: Michael Rasmussen <mir at datanom.net>
Signed-off-by: Michael Rasmussen <mir at datanom.net>
---
src/PVE/API2/LXC.pm | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 9cf22de..d333bea 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -1444,8 +1444,15 @@ __PACKAGE__->register_method({
PVE::Cluster::log_msg('info', $authuser, "update CT $vmid: resize --disk $disk --size $sizestr");
my $realcmd = sub {
# Note: PVE::Storage::volume_resize doesn't do anything if $running=1, so
+ my $scfg = PVE::Storage::storage_config($storage_cfg, $storeid);
# we pass 0 here (parameter only makes sense for qemu)
- PVE::Storage::volume_resize($storage_cfg, $volid, $newsize, 0);
+ if ($scfg->{type} eq 'freenas') {
+ # Since current FreeNAS API has a bug when doing online
+ # resize give us a way to bail until the bug is fixed
+ PVE::Storage::volume_resize($storage_cfg, $volid, $newsize, $running);
+ } else {
+ PVE::Storage::volume_resize($storage_cfg, $volid, $newsize, 0);
+ }
$mp->{size} = $newsize;
$conf->{$disk} = PVE::LXC::Config->print_ct_mountpoint($mp, $disk eq 'rootfs');
@@ -1478,18 +1485,17 @@ __PACKAGE__->register_method({
} else {
# Some storage backends only exposes disks when VM is running
# and e2fsck and resize2fs requires access to the disk to work
- my $scfg = PVE::Storage::storage_config($storage_cfg, $storeid);
- if ($scfg->{type} eq 'freenas') {
- PVE::Storage::activate_volumes($storage_cfg, [$volid]);
- }
+ if ($scfg->{type} eq 'freenas') {
+ PVE::Storage::activate_volumes($storage_cfg, [$volid]);
+ }
eval {
PVE::Tools::run_command(['e2fsck', '-f', '-y', $path]);
PVE::Tools::run_command(['resize2fs', $path]);
};
warn "Failed to update the container's filesystem: $@\n" if $@;
- if ($scfg->{type} eq 'freenas') {
- PVE::Storage::deactivate_volumes($storage_cfg, [$volid]);
- }
+ if ($scfg->{type} eq 'freenas') {
+ PVE::Storage::deactivate_volumes($storage_cfg, [$volid]);
+ }
}
}
};
--
2.11.0
----
This mail was virus scanned and spam checked before delivery.
This mail is also DKIM signed. See header dkim-signature.
More information about the pve-devel
mailing list