]> git.proxmox.com Git - mirror_zfs.git/commit - cmd/zdb/zdb.c
zdb: add support for object ranges for zdb -d
authorNed Bass <bass6@llnl.gov>
Fri, 24 Jan 2020 19:00:46 +0000 (11:00 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 24 Jan 2020 19:00:46 +0000 (11:00 -0800)
commita3403164d700e0c32dd89ba09bbcaf48bdee47f2
tree0bd3d5467c1b70603349d51a2c053ebe29dff6c7
parent8e9e90bba3148b87bc6525c98ac3a0a9200a89f6
zdb: add support for object ranges for zdb -d

Allow a range of object identifiers to dump with -d. This may
be useful when dumping a large dataset and you want to break
it up into multiple phases, or to resume where a previous scan
left off. Object type selection flags are supported to reduce
the performance overhead of verbosely dumping unwanted objects,
and to reduce the amount of post-processing work needed to
filter out unwanted objects from zdb output.

This change extends existing syntax in a backward-compatible
way. That is, the base case of a range is to specify a single
object identifier to dump. Ranges and object identifiers can
be intermixed as command line parameters.

Usage synopsis:

    Object ranges take the form <start>:<end>[:<flags>]
        start    Starting object number
        end      Ending object number, or -1 for no upper bound
        flags    Optional flags to select object types:
         A    All objects (this is the default)
         d    ZFS directories
         f    ZFS files
         m    SPA space maps
         z    ZAPs
         -    Negate effect of next flag

Examples:

 # Dump all file objects
 zdb -dd tank/fish 0:-1:f

 # Dump all file and directory objects
 zdb -dd tank/fish 0:-1:fd

 # Dump all types except file and directory objects
 zdb -dd tank/fish 0:-1:A-f-d

 # Dump object IDs in a specific range
 zdb -dd tank/fish 1000:2000

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
Signed-off-by: Ned Bass <bass6@llnl.gov>
Closes #9832
cmd/zdb/zdb.c
man/man8/zdb.8
tests/runfiles/common.run
tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.am
tests/zfs-tests/tests/functional/cli_root/zdb/zdb_object_range_neg.ksh [new file with mode: 0755]
tests/zfs-tests/tests/functional/cli_root/zdb/zdb_object_range_pos.ksh [new file with mode: 0755]