AFAIK this can have ugly side effects ...

> On April 22, 2020 4:57 PM Alwin Antreich <a.antre...@proxmox.com> wrote:
> 
>  
> to minimize variable declarations. And allow to mock this method in
> tests instead of the perl build-in stat.
> 
> Signed-off-by: Alwin Antreich <a.antre...@proxmox.com>
> ---
>  PVE/Diskmanage.pm     |  9 +++++----
>  PVE/Storage/Plugin.pm | 34 ++++++++++------------------------
>  2 files changed, 15 insertions(+), 28 deletions(-)
> 
> diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
> index 13e7cd8..cac944d 100644
> --- a/PVE/Diskmanage.pm
> +++ b/PVE/Diskmanage.pm
> @@ -6,6 +6,7 @@ use PVE::ProcFSTools;
>  use Data::Dumper;
>  use Cwd qw(abs_path);
>  use Fcntl ':mode';
> +use File::stat;
>  use JSON;
>  
>  use PVE::Tools qw(extract_param run_command file_get_contents 
> file_read_firstline dir_glob_regex dir_glob_foreach trim);
> @@ -673,11 +674,11 @@ sub get_disks {
>  sub get_partnum {
>      my ($part_path) = @_;
>  
> -    my ($mode, $rdev) = (stat($part_path))[2,6];
> +    my $st = stat($part_path);
>  
> -    next if !$mode || !S_ISBLK($mode) || !$rdev;
> -    my $major = PVE::Tools::dev_t_major($rdev);
> -    my $minor = PVE::Tools::dev_t_minor($rdev);
> +    next if !$st->mode || !S_ISBLK($st->mode) || !$st->rdev;
> +    my $major = PVE::Tools::dev_t_major($st->rdev);
> +    my $minor = PVE::Tools::dev_t_minor($st->rdev);
>      my $partnum_path = "/sys/dev/block/$major:$minor/";
>  
>      my $partnum;
> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
> index 4489a77..d2dfad6 100644
> --- a/PVE/Storage/Plugin.pm
> +++ b/PVE/Storage/Plugin.pm
> @@ -7,6 +7,7 @@ use Fcntl ':mode';
>  use File::chdir;
>  use File::Path;
>  use File::Basename;
> +use File::stat;
>  use Time::Local qw(timelocal);
>  
>  use PVE::Tools qw(run_command);
> @@ -718,12 +719,10 @@ sub free_image {
>  sub file_size_info {
>      my ($filename, $timeout) = @_;
>  
> -    my @fs = stat($filename);
> -    my $mode = $fs[2];
> -    my $ctime = $fs[10];
> +    my $st = stat($filename);
>  
> -    if (S_ISDIR($mode)) {
> -     return wantarray ? (0, 'subvol', 0, undef, $ctime) : 1;
> +    if (S_ISDIR($st->mode)) {
> +     return wantarray ? (0, 'subvol', 0, undef, $st->ctime) : 1;
>      }
>  
>      my $json = '';
> @@ -741,7 +740,7 @@ sub file_size_info {
>  
>      my ($size, $format, $used, $parent) = $info->@{qw(virtual-size format 
> actual-size backing-filename)};
>  
> -    return wantarray ? ($size, $format, $used, $parent, $ctime) : $size;
> +    return wantarray ? ($size, $format, $used, $parent, $st->ctime) : $size;
>  }
>  
>  sub volume_size_info {
> @@ -918,22 +917,9 @@ my $get_subdir_files = sub {
>  
>      foreach my $fn (<$path/*>) {
>  
> -     my ($dev,
> -         $ino,
> -         $mode,
> -         $nlink,
> -         $uid,
> -         $gid,
> -         $rdev,
> -         $size,
> -         $atime,
> -         $mtime,
> -         $ctime,
> -         $blksize,
> -         $blocks
> -     ) = stat($fn);
> -
> -     next if S_ISDIR($mode);
> +     my $st = stat($fn);
> +
> +     next if S_ISDIR($st->mode);
>  
>       my $info;
>  
> @@ -972,8 +958,8 @@ my $get_subdir_files = sub {
>           };
>       }
>  
> -     $info->{size} = $size;
> -     $info->{ctime} //= $ctime;
> +     $info->{size} = $st->size;
> +     $info->{ctime} //= $st->ctime;
>  
>       push @$res, $info;
>      }
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to