diff --git a/sdb/commands/zfs/vdev.py b/sdb/commands/zfs/vdev.py index 131ae8da..883e5abe 100644 --- a/sdb/commands/zfs/vdev.py +++ b/sdb/commands/zfs/vdev.py @@ -81,6 +81,7 @@ def print_indented(self, ) print("".ljust(indent), "-" * 60) + prev = None for vdev in vdevs: level = 0 pvd = vdev.vdev_parent @@ -88,6 +89,18 @@ def print_indented(self, level += 2 pvd = pvd.vdev_parent + if vdev.vdev_isl2cache and prev and not prev.vdev_isl2cache: + print("".ljust(indent), "-".ljust(18), "-".ljust(7), + "-".ljust(4), "".ljust(0), "cache") + if vdev.vdev_islog and prev and not prev.vdev_islog: + print("".ljust(indent), "-".ljust(18), "-".ljust(7), + "-".ljust(4), "".ljust(0), "logs") + if vdev.vdev_isspare and prev and not prev.vdev_isspare: + print("".ljust(indent), "-".ljust(18), "-".ljust(7), + "-".ljust(4), "".ljust(0), "spares") + if vdev.vdev_isl2cache or vdev.vdev_isspare: + level = 2 + if int(vdev.vdev_path) != 0: print( "".ljust(indent), @@ -111,7 +124,7 @@ def print_indented(self, if not sdb.is_null(vdev.vdev_mg): ZFSHistogram.print_histogram(vdev.vdev_mg.mg_histogram, 0, indent + 5) - + prev = vdev if self.args.metaslab: metaslabs = sdb.execute_pipeline([vdev], [Metaslab()]) Metaslab(self.arg_list).print_indented(metaslabs, indent + 5) @@ -134,6 +147,11 @@ def from_spa(self, spa: drgn.Object) -> Iterable[drgn.Object]: else: yield from self.from_vdev(spa.spa_root_vdev) + for j in range(spa.spa_l2cache.sav_count): + yield from self.from_vdev(spa.spa_l2cache.sav_vdevs[j]) + for j in range(spa.spa_spares.sav_count): + yield from self.from_vdev(spa.spa_spares.sav_vdevs[j]) + @sdb.InputHandler("vdev_t*") def from_vdev(self, vdev: drgn.Object) -> Iterable[drgn.Object]: if self.args.vdev_ids: diff --git a/tests/integration/data/regression_output/zfs/spa -mH b/tests/integration/data/regression_output/zfs/spa -mH index b32dd225..d84b9fae 100644 --- a/tests/integration/data/regression_output/zfs/spa -mH +++ b/tests/integration/data/regression_output/zfs/spa -mH @@ -413,6 +413,7 @@ ADDR NAME Approx. Median: 192.0MB 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 + - - - logs 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 ** No histogram data available ** ADDR ID OFFSET FREE FRAG UCMU @@ -582,6 +583,8 @@ ADDR NAME 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 + - - - cache + 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 0xffffa08955c44000 rpool ** No histogram data available ** ADDR STATE AUX DESCRIPTION diff --git a/tests/integration/data/regression_output/zfs/spa -v b/tests/integration/data/regression_output/zfs/spa -v index c14621cc..dfde9240 100644 --- a/tests/integration/data/regression_output/zfs/spa -v +++ b/tests/integration/data/regression_output/zfs/spa -v @@ -7,6 +7,7 @@ ADDR NAME 0xffffa08949ff4000 HEALTHY NONE mirror 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 + - - - logs 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 0xffffa089413b8000 meta-domain ADDR STATE AUX DESCRIPTION @@ -16,6 +17,8 @@ ADDR NAME 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 + - - - cache + 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 0xffffa08955c44000 rpool ADDR STATE AUX DESCRIPTION ------------------------------------------------------------ diff --git a/tests/integration/data/regression_output/zfs/spa -vH b/tests/integration/data/regression_output/zfs/spa -vH index d12388a4..648e0a04 100644 --- a/tests/integration/data/regression_output/zfs/spa -vH +++ b/tests/integration/data/regression_output/zfs/spa -vH @@ -53,6 +53,7 @@ ADDR NAME Approx. Median: 192.0MB 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 + - - - logs 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 ** No histogram data available ** 0xffffa089413b8000 meta-domain @@ -105,6 +106,8 @@ ADDR NAME 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 + - - - cache + 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 0xffffa08955c44000 rpool ** No histogram data available ** ADDR STATE AUX DESCRIPTION diff --git a/tests/integration/data/regression_output/zfs/spa -vm b/tests/integration/data/regression_output/zfs/spa -vm index 091bf97e..ea37ea3a 100644 --- a/tests/integration/data/regression_output/zfs/spa -vm +++ b/tests/integration/data/regression_output/zfs/spa -vm @@ -24,6 +24,7 @@ ADDR NAME 0xffffa0894e631000 14 0x1c0000000 511MB 0% 4KB 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 + - - - logs 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 ADDR ID OFFSET FREE FRAG UCMU ----------------------------------------------------------------- @@ -63,6 +64,8 @@ ADDR NAME 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 + - - - cache + 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 0xffffa08955c44000 rpool ADDR STATE AUX DESCRIPTION ------------------------------------------------------------ diff --git a/tests/integration/data/regression_output/zfs/spa -vmH b/tests/integration/data/regression_output/zfs/spa -vmH index b32dd225..d84b9fae 100644 --- a/tests/integration/data/regression_output/zfs/spa -vmH +++ b/tests/integration/data/regression_output/zfs/spa -vmH @@ -413,6 +413,7 @@ ADDR NAME Approx. Median: 192.0MB 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 + - - - logs 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 ** No histogram data available ** ADDR ID OFFSET FREE FRAG UCMU @@ -582,6 +583,8 @@ ADDR NAME 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 + - - - cache + 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 0xffffa08955c44000 rpool ** No histogram data available ** ADDR STATE AUX DESCRIPTION diff --git a/tests/integration/data/regression_output/zfs/spa | vdev b/tests/integration/data/regression_output/zfs/spa | vdev index 88377571..6d623b0b 100644 --- a/tests/integration/data/regression_output/zfs/spa | vdev +++ b/tests/integration/data/regression_output/zfs/spa | vdev @@ -4,11 +4,14 @@ 0xffffa08949ff4000 HEALTHY NONE mirror 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 + - - - logs 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 0xffffa08953aa4000 HEALTHY NONE root 0xffffa08953aa8000 HEALTHY NONE raidz 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 + - - - cache + 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 0xffffa08952efc000 HEALTHY NONE root 0xffffa08953300000 HEALTHY NONE /dev/sda1 diff --git a/tests/integration/data/regression_output/zfs/spa | vdev | pp b/tests/integration/data/regression_output/zfs/spa | vdev | pp index 88377571..6d623b0b 100644 --- a/tests/integration/data/regression_output/zfs/spa | vdev | pp +++ b/tests/integration/data/regression_output/zfs/spa | vdev | pp @@ -4,11 +4,14 @@ 0xffffa08949ff4000 HEALTHY NONE mirror 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 + - - - logs 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 0xffffa08953aa4000 HEALTHY NONE root 0xffffa08953aa8000 HEALTHY NONE raidz 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 + - - - cache + 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 0xffffa08952efc000 HEALTHY NONE root 0xffffa08953300000 HEALTHY NONE /dev/sda1