[pve-devel] [PATCH storage] fix #3203: report smart status correctly

Dominik Csapak d.csapak at proxmox.com
Tue Mar 2 09:34:41 CET 2021


On 3/1/21 14:56, Oguz Bektas wrote:
> if the -a option isn't passed, -H might report a failing disk as
> 'PASSED' even when the disk might be in a corrupted state.
> 
> Signed-off-by: Oguz Bektas <o.bektas at proxmox.com>
> ---
>   PVE/Diskmanage.pm | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
> index 64bb813..d3c3365 100644
> --- a/PVE/Diskmanage.pm
> +++ b/PVE/Diskmanage.pm
> @@ -95,8 +95,9 @@ sub get_smart_data {
>   	    or die "failed to get nvme controller device for $disk\n");
>       }
>   
> -    my $cmd = [$SMARTCTL, '-H'];
> -    push @$cmd, '-A', '-f', 'brief' if !$healthonly;
> +    my $cmd = [$SMARTCTL];
> +    push @$cmd, '-H' if $healthonly;
> +    push @$cmd, '-a', '-A', '-f', 'brief' if !$healthonly;
>       push @$cmd, $disk;
>   
>       eval {
> 

after looking at our code, this patch does not solve the issue the
user in #3203 has

we purposely ignore the return value of smartctl except
for sever smartctl errors (such as device open failed or faulty command 
line) and parse the status from the text itself

but the text (PASSED) does not change regardless if -H is given or not

the real fix for the issue is to start parsing the smart errors 
separately and show them to the user somehow

while doing this, we should change our parser to use the '--json' flag
of smartcl





More information about the pve-devel mailing list