[pve-devel] [PATCH container v2] Fix #576: Cancelling move disk does not leave useless files anymore

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Jun 12 07:59:55 CEST 2019


On 6/6/19 11:52 AM, Dominic Jäger wrote:
> When cancelling the move disk operation for containers the partly
> finished destination and thus useless files now get removed.

I really do not understand the commit message, could you please
describe here how/why that happens now?

Also, this is probably only OK as it is called through "run_unshared"
which unshares the mount name-space, so you normally do not fuser'
someone innocent, or?

@Wolfgang, are you OK with this or is there some run_command option
comming up for reaping rsync's children? (I've some feeling we talked
about this, but I'm not to sure anymore, sorry)

> 
> Co-developed-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> Signed-off-by: Dominic Jäger <d.jaeger at proxmox.com>
> ---
> After a quick offline feedback there is now a v2
> v2: System call is not a single string anymore 
> 
>  src/PVE/LXC.pm | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
> index 62b6b8c..4922fb0 100644
> --- a/src/PVE/LXC.pm
> +++ b/src/PVE/LXC.pm
> @@ -2024,8 +2024,13 @@ my $copy_volume = sub {
>  				 "--bwlimit=$bwlimit", "$src/", $dest]);
>      };
>      my $err = $@;
> +
> +    # Wait for rsync's children to release dest so that
> +    # consequent file operations (umount, remove) are possible
> +    while ((system {"fuser"} "fuser",  "-s", $dest) == 0) {sleep 1};
> +
>      foreach my $mount (reverse @mounted) {
> -	eval { PVE::Tools::run_command(['/bin/umount', '--lazy', $mount], errfunc => sub{})};
> +	eval { PVE::Tools::run_command(['/bin/umount', $mount], errfunc => sub{})};
>  	warn "Can't umount $mount\n" if $@;
>      }
>  
> 






More information about the pve-devel mailing list