[pve-devel] applied: [PATCH v2 storage 2/2] fix #2226: allow broken symlinks to be deleted via API

Thomas Lamprecht t.lamprecht at proxmox.com
Mon Jun 17 11:55:12 CEST 2019


On 6/17/19 11:05 AM, Stefan Reiter wrote:
> Symlinks with a non-existing target fail Perls '-f' test and were thus
> not deleteable via the API (failing with '$path does not exist').
> 
> Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
> ---
> 
> Deleting intact symlinks deletes the symlink but leaves the file it
> points to intact. This behaviour has not changed with this patch.
> 
>  PVE/Storage/Plugin.pm | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
> index 255c643..e20acb3 100644
> --- a/PVE/Storage/Plugin.pm
> +++ b/PVE/Storage/Plugin.pm
> @@ -689,8 +689,8 @@ sub free_image {
>      if (defined($format) && ($format eq 'subvol')) {
>  	File::Path::remove_tree($path);
>      } else {
> -    
> -	if (! -f $path) {
> +
> +	if (! (-f $path || -l $path)) {

followed up with changing it to (-e $path) here, if the file
is some special file and the user want's to delete it we're fine
with that, if the unlink fails we give feedback too.

>  	    warn "disk image '$path' does not exists\n";
>  	    return undef;
>  	}
> 





More information about the pve-devel mailing list