zfs_arc: Don't spam the log if we fail to read the "l2_size" kstat value.
authorJan Andres <jandres@gmx.net>
Wed, 28 Jan 2015 14:06:04 +0000 (15:06 +0100)
committerMarc Fournier <marc.fournier@camptocamp.com>
Tue, 19 May 2015 15:42:34 +0000 (17:42 +0200)
The value got lost with some patch to Solaris 10 and has only reappeared
recently in 11.2. If we ever fail to read this value, stop trying, so we
don't report an error on every interval.

src/zfs_arc.c

index cc98862..311a718 100644 (file)
@@ -120,7 +120,14 @@ static int za_read (void)
 
        /* Sizes */
        za_read_gauge (ksp, "size",    "cache_size", "arc");
 
        /* Sizes */
        za_read_gauge (ksp, "size",    "cache_size", "arc");
-       za_read_gauge (ksp, "l2_size", "cache_size", "L2");
+
+       /* The "l2_size" value has disappeared from Solaris some time in
+        * early 2013, and has only reappeared recently in Solaris 11.2.
+        * Stop trying if we ever fail to read it, so we don't spam the log.
+        */
+       static int l2_size_avail = 1;
+       if (l2_size_avail && za_read_gauge (ksp, "l2_size", "cache_size", "L2") != 0)
+               l2_size_avail = 0;
 
         /* Operations */
        za_read_derive (ksp, "deleted",  "cache_operation", "deleted");
 
         /* Operations */
        za_read_derive (ksp, "deleted",  "cache_operation", "deleted");