On 07/28/2016 03:32 PM, Fabian Grünbichler wrote:
upon a client crash/kill, there is a 30 second timeout until the associated watcher is removed. until then, removing the image is not possible. krbd does not suffer from this, because "rbd map/unmap" makes the watcher creation and destruction explicit. --- Note: the pve-access-control patch series for worker stopping is not strictly required for this to work, but makes the user experience a lot better. PVE/Storage/RBDPlugin.pm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/PVE/Storage/RBDPlugin.pm b/PVE/Storage/RBDPlugin.pm index 7a08ff5..96b41e5 100644 --- a/PVE/Storage/RBDPlugin.pm +++ b/PVE/Storage/RBDPlugin.pm @@ -458,7 +458,18 @@ sub free_image { run_rbd_command($cmd, errmsg => "rbd snap purge '$volname' error");$cmd = &$rbd_cmd($scfg, $storeid, 'rm', $name);- run_rbd_command($cmd, errmsg => "rbd rm '$volname' error"); + eval { + run_rbd_command($cmd, errmsg => "rbd rm '$volname' error"); + }; + my $err = $@; + + if ($err && !$scfg->{krbd} && $err =~ m/image still has watchers$/) { + warn "Waiting 30s for rbd client to timeout before removing\n"; + sleep 30;
such sleep is not reliable, because it can be interrupted by signal. _______________________________________________ pve-devel mailing list [email protected] http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
