mmatuska/zfs-stats

Use of uninitialized value(s) under FreeBSD 14.1

Opened this issue · 1 comments

zfs-stats -a under FreeBSD 14.1 gives several warning/issue reports:

Use of uninitialized value $kdata in multiplication (*) at /usr/local/bin/zfs-stats line 329.
Use of uninitialized value $vdev_cache_hits in addition (+) at /usr/local/bin/zfs-stats line 628.
Use of uninitialized value $vdev_cache_misses in addition (+) at /usr/local/bin/zfs-stats line 628.
Use of uninitialized value $vdev_cache_delegations in addition (+) at /usr/local/bin/zfs-stats line 628.
Use of uninitialized value in numeric eq (==) at /usr/local/bin/zfs-stats line 630.

zfs-stats version 1.3.2

Regards.

correction for line 329 error:

--- /original/zfs-stats       2023-05-19 11:19:45.000000000 +0200
+++ /usr/local/bin/zfs-stats    2024-07-19 09:56:40.768547000 +0200
@@ -323,10 +323,9 @@
        my $ktext;
        $ktext += $_ for @ktext; # add the elements of size up

-       my @kdata = map { /([0-9]+)K/ } run('vmstat_m'); # retrieve the MemUse column
+       my @kdata = map { /([0-9]+)/ && (split)[3] } run('vmstat_m'); # retrieve the MemUse column
        my $kdata;
        $kdata += $_ for @kdata; # add the elements of MemUse up
-       $kdata *= 1024; # convert from KiB to Bytes

        my $kmem = ($ktext + $kdata);
        my $kmem_map_size = $Kstat->{"vm.kmem_map_size"};

lines 628-630:
in my case I have vdev cache switched off, therefore the sysctl oid's are missing. For me the easy solution is NOT to use -D when calling zfs-stats. Note that -D is included in -a. In my case zfs-stats -IMAELZ works for me.