On Thu, Mar 19, 2020 at 09:39:12PM +0100, Goffredo Baroncelli wrote: > This patch creates a new ioctl BTRFS_IOC_GET_CHUNK_INFO. > The aim is to replace the BTRFS_IOC_TREE_SEARCH ioctl > used by "btrfs fi usage" to obtain information about the > chunks/block groups. > > The problems in using the BTRFS_IOC_TREE_SEARCH is that it access > the very low data structure of BTRFS. This means: > 1) this would be complicated a possible change of the disk format > 2) it requires the root privileges > > The BTRFS_IOC_GET_CHUNK_INFO ioctl can be called even from a not root > user: I think that the data exposed are not sensibile data. > > These patches allow to use "btrfs fi usage" without root privileges. > > before: > ------------------------------------------- > > $ btrfs fi us / > WARNING: cannot read detailed chunk info, per-device usage will not be shown, run as root > Overall: > Device size: 100.00GiB > Device allocated: 26.03GiB > Device unallocated: 73.97GiB > Device missing: 0.00B > Used: 17.12GiB > Free (estimated): 80.42GiB (min: 80.42GiB) > Data ratio: 1.00 > Metadata ratio: 1.00 > Global reserve: 53.12MiB (used: 0.00B) > > Data,single: Size:23.00GiB, Used:16.54GiB (71.93%) > > Metadata,single: Size:3.00GiB, Used:588.94MiB (19.17%) > > System,single: Size:32.00MiB, Used:16.00KiB (0.05%) > > after: > ----------------------------------------------- > $ ./btrfs fi us / > Overall: > Device size: 100.00GiB > Device allocated: 26.03GiB > Device unallocated: 73.97GiB > Device missing: 0.00B > Used: 17.12GiB > Free (estimated): 80.42GiB (min: 80.42GiB) > Data ratio: 1.00 > Metadata ratio: 1.00 > Global reserve: 53.12MiB (used: 0.00B) > > Data,single: Size:23.00GiB, Used:16.54GiB (71.93%) > /dev/sdd3 23.00GiB > > Metadata,single: Size:3.00GiB, Used:588.94MiB (19.17%) > /dev/sdd3 3.00GiB > > System,single: Size:32.00MiB, Used:16.00KiB (0.05%) > /dev/sdd3 32.00MiB > > Unallocated: > /dev/sdd3 73.97GiB > > Comments are welcome I'm going to send more comments, the new ioctl is among features considered for 5.9.
