mbox series

[0/4] RFC: add the btrfs_info helper

Message ID cover.1701891165.git.kreijack@inwind.it (mailing list archive)
Headers show
Series RFC: add the btrfs_info helper | expand

Message

Goffredo Baroncelli Dec. 6, 2023, 7:32 p.m. UTC
From: Goffredo Baroncelli <kreijack@inwind.it>

The aim of this patches set is to add some helper to query the layout
of a btrfs filesystem.

A btrfs filesystem may be composed by multiple disks, and several
mountpoints on which different subvolumes are mounted.

Sometime we need to know the devices list starting from a path, or
a path starting from a device.

These helpers allow to know all the information of a filesystem like
- UUID
- Label
- Mountpoints list (if mounted), and for each mountpoint
   - subvolume
   - options
- Devices list, and for each device
   - major, minor
   - device name
   - partuuid, uuid_sub 
   - devid (if the user is root)

And it is possible to build these information giving any of:
- a path (if mounted)
- UUID
- Label
- partuuid
- uuid_sub


These helpers uses only libblkid and /proc/self/mountinfo to extract all
these information. It is not required to be root; if the user is root
it is returned also the devid of a device.

The first patch add the helpers. From the second patch there are two new
commands ('btrfs fi info' and 'btrfs fi get-info') and an enachement of 
'btrfs fi label', which can be used passing both a device or a path,
 or UUID=<uuid>, LABEL=<label>... ; before the user has to pass a path
if the filesystem is mounted, and a device otherwise. This command
refuse to work with a device when the fielsystem is mounted, which is
not very user friendly.

The goal is to enanche some btrfs commands that now force the user to
pass a device or a path even when it is possible to pass any valid
reference to a btrfs filesystem (like UUID or Label).

BR

Goffredo Baroncelli (4):
  btrfs-info: some utility to query a filesystem info
  new command: btrfs filesystem info [<path>...]
  new command: btrfs filesystem get-info ...
  btrfs-progs: 'btrfs fi label' using a dev instead of a path

 Makefile                  |    1 +
 cmds/filesystem.c         |  141 +++++
 common/btrfs-info.c       | 1036 +++++++++++++++++++++++++++++++++++++
 common/btrfs-info.h       |  220 ++++++++
 common/filesystem-utils.c |   51 +-
 5 files changed, 1437 insertions(+), 12 deletions(-)
 create mode 100644 common/btrfs-info.c
 create mode 100644 common/btrfs-info.h