On 10/08/2018 06:37 PM, Holger Hoffstätte wrote: > On 10/08/18 17:46, Hans van Kranenburg wrote: > <snip> >> fs.devices() also looks for dev_items in the chunk tree: >> >> https://github.com/knorrie/python-btrfs/blob/master/btrfs/ctree.py#L481 >> >> So, BOOM! you need root. >> >> Or just start a 0, ignore errors and start trying all devids until you >> found num_devices amount of them that work, yolo. > > Since I need to walk /sys/fs/btrfs/ anyway I *think* I can just look > at the entries in /sys/fs/btrfs/<fsid>/devices/ and query them all > directly.
But, you still need root for that right? The progs code does a RO open directly on the block device. -$ btrfs dev stats /dev/xvdb ERROR: cannot open /dev/xvdb: Permission denied ERROR: '/dev/xvdb' is not a mounted btrfs device stat("/dev/loop0", {st_mode=S_IFBLK|0660, st_rdev=makedev(7, 0), ...}) = 0 stat("/dev/loop0", {st_mode=S_IFBLK|0660, st_rdev=makedev(7, 0), ...}) = 0 open("/dev/loop0", O_RDONLY) = -1 EACCES (Permission denied) But: -# btrfs dev stats /dev/xvdb [/dev/xvdb].write_io_errs 0 [/dev/xvdb].read_io_errs 0 [/dev/xvdb].flush_io_errs 0 [/dev/xvdb].corruption_errs 0 [/dev/xvdb].generation_errs 0 > The skeleton btrfs_exporter already responds to http requests and > returns dummy metrics, using the official python client library. > I've found a nice little python sysfs scraper and now only need to > figure out how best to map the btrfs info in sysfs to useful metrics. > The privileged access issue would only have come into play much later, > but it seems I can avoid it after all, which is great. > I'm also (re-)learning python in the process, so that's the actual > thing slowing me down.. :) -- Hans van Kranenburg