mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-11-06 14:24:51 +03:00
For zdb -l, detect when the configuration nvlist in some label l (l>0)
is the same as a configuration already dumped. If so, do not dump it.
Make a similar check when dumping Uberblocks for zdb -lu. Check whether
a label already dumped contains an identical Uberblock. If so, do not
dump the Uberblock.
When dumping a configuration or Uberblock, state which labels it is
found in (0-3), for example: labels = 1 2 3
Detecting redundant uberblocks or configurations is accomplished by
calculating checksums of the uberblocks and the packed nvlists
containing the configuration.
If there is nothing unique to be dumped for a label (ie the
configuration and uberblocks have checksums matching those already
dumped) print nothing for that label.
With additional l's or u's, increase verbosity as follows:
-l Dump each unique configuration only once.
Indicate which labels it appears in.
-ll In addition, dump label space usage stats.
-lll Dump every configuration, unique or not.
-u Dump each unique, valid, uberblock only once.
Indicate which labels it appears in.
-uu In addition, state which slots are invalid.
-uuu Dump every uberblock, unique or not.
-uuuu Dump the uberblock blockpointer (used to be -uuu)
Make exit values conform to the manual page. Failing to unpack a
configuration nvlist is considered an error, as well as failing to open
or read from the device.
Add three tests, zdb_00{3,4,5}_pos to verify the above functionality.
An example of the output:
------------------------------------
LABEL 0
------------------------------------
version: 5000
name: 'pool'
state: 1
txg: 880
< ... redacted ... >
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
labels = 0
Uberblock[0]
magic = 0000000000bab10c
version = 5000
txg = 0
guid_sum = 3038694082047428541
timestamp = 1487715500 UTC = Tue Feb 21 14:18:20 2017
labels = 0 1 2 3
Uberblock[4]
magic = 0000000000bab10c
version = 5000
txg = 772
guid_sum = 9045970794941528051
timestamp = 1487727291 UTC = Tue Feb 21 17:34:51 2017
labels = 0
< ... redacted ... >
------------------------------------
LABEL 1
------------------------------------
version: 5000
name: 'pool'
state: 1
txg: 14
< ... redacted ... >
com.delphix:embedded_data
labels = 1 2 3
Uberblock[4]
magic = 0000000000bab10c
version = 5000
txg = 4
guid_sum = 7793930272573252584
timestamp = 1487727521 UTC = Tue Feb 21 17:38:41 2017
labels = 1 2 3
< ... redacted ... >
Reviewed-by: Tim Chase <tim@chase2k.com>
Reviewed-by: Don Brady <don.brady@intel.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
Closes #5738
|
||
|---|---|---|
| .. | ||
| acl | ||
| atime | ||
| bootfs | ||
| cache | ||
| cachefile | ||
| casenorm | ||
| chattr | ||
| checksum | ||
| clean_mirror | ||
| cli_root | ||
| cli_user | ||
| compression | ||
| ctime | ||
| delegate | ||
| devices | ||
| exec | ||
| fault | ||
| features | ||
| grow_pool | ||
| grow_replicas | ||
| history | ||
| inheritance | ||
| inuse | ||
| large_files | ||
| largest_pool | ||
| libzfs | ||
| link_count | ||
| migration | ||
| mmap | ||
| mount | ||
| mv_files | ||
| nestedfs | ||
| no_space | ||
| nopwrite | ||
| online_offline | ||
| pool_names | ||
| poolversion | ||
| privilege | ||
| quota | ||
| raidz | ||
| redundancy | ||
| refquota | ||
| refreserv | ||
| rename_dirs | ||
| replacement | ||
| reservation | ||
| rootpool | ||
| rsend | ||
| scrub_mirror | ||
| slog | ||
| snapshot | ||
| snapused | ||
| sparse | ||
| threadsappend | ||
| tmpfile | ||
| truncate | ||
| upgrade | ||
| userquota | ||
| vdev_zaps | ||
| write_dirs | ||
| xattr | ||
| zvol | ||
| Makefile.am | ||