add check_connection in storage_check_enabled.
Currently, if a storage have an infinite timeout (nfs hard option or iscsi with high timeout for failover), and if the storage is down or is doing ha failover with dual controller - pvestatd hang on storage_info. (So pve-manager see the host as down, and hang on differents parts, gui,rrds display) - pvedaemon hang on differents place (storage disk list,vm_status, hardware info,...) - I also see a lot of qemu-img info process hanging in uninterruptible sleep state with iscsi storage. This patch add a check to see if the storage is accessible. For nfs and iscsi : ping with a timeout of 2 second. (Maybe this can be polish with some kind of filesystem/storage read test with timeout...) Default for other storage plugins is to check nothing. (not a problem with sheepdog,ceph,libiscsi... as commands have timeout) Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
committed by
Dietmar Maurer
parent
3c199da32c
commit
c9eeac0131
@ -93,6 +93,12 @@ sub storage_check_enabled {
|
||||
return undef;
|
||||
}
|
||||
|
||||
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
|
||||
if (!$plugin->check_connection($storeid, $scfg)) {
|
||||
die "storage '$storeid' is not available\n" if !$noerr;
|
||||
return undef;
|
||||
}
|
||||
|
||||
return storage_check_node($cfg, $storeid, $node, $noerr);
|
||||
}
|
||||
|
||||
|
||||
@ -579,4 +579,10 @@ sub deactivate_volume {
|
||||
# do nothing by default
|
||||
}
|
||||
|
||||
sub check_connection {
|
||||
my ($class, $storeid, $scfg) = @_;
|
||||
# do nothing by default
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
Reference in New Issue
Block a user