btrfs-search-metadata - lookup btrfs metadata
btrfs-search-metadata <subcommand> <args>
The btrfs-search-metadata program can be used to execute
search queries in order to look up metadata items of an online, mounted
btrfs filesystem. Unlike the btrfs inspect-internal dump-tree command, which
directly reads from disk, btrfs-search-metadata only uses the kernel
SEARCH ioctl function.
Besides being able to get any metadata slice from any tree, there
are a number of convenience presets that execute predefined search
queries.
- -h, --help
- Show the built-in help message and exit.
- --format
keys|short|long
- Print metadata items as keys only, as a short single line
per item (default), or long output with full contents of all
fields.
chunks <path>
Display all chunk items from the chunk tree, as well as
the stripe items that they contain.
block_groups <path>
Display all block group items from the extent tree.
dev_extents <path>
Display all device extent items from the device
tree.
file <path>
Display all information btrfs knows about a file or
directory.
inode -t|--tree <tree> --inum
<inum> <path>
Display all information about an inode number in a
subvolume tree.
devices <path>
Display all device items from the device tree.
orphans <path>
Display all orphan items from the root tree.
dump -t|--tree <tree> [--min-key
<MIN_KEY>] [--max-key <MAX_KEY>]
<path>
Dump an arbitrary slice of metadata items from any tree.
A key should be specified in the regular form as '(<objectid>
<type> <offset>)', e.g. '(EXTENT_TREE ROOT_ITEM 0)'. The number -1
can be used instead of the maximum value for a field. This can be very useful
when dumping all metadata items for a specific objectid. For example, what the
inode subcommand does is searching with min-key '(<inum> 0 0)'
and max-key '(<inum> -1 -1)'
block_group_contents --vaddr <vaddr>
<path>
Dump the contents of a block group (from the extent tree)
from the specified virtual address of the start of the block group to its end.
Use the block_groups subcommand to list block group addresses.
block_group_free_space --vaddr <vaddr>
<path>
Dump the free space extents for a block group (from the
free space tree) for the block group at the specified virtual address. Use the
block_groups subcommand to list block group addresses.
This program is an example of what can be done using the
python-btrfs library.
Source and documentation on github:
https://github.com/knorrie/python-btrfs