Tüm btrfs dosya sistemleri alt birimleri hakkında C'ye başvurmadan, yani POSIX kabuğunda bilgi almanın uygun bir yolu var mı ?
/sys/fs/btrfsyalnızca dosya sistemlerinde bilgi içerir, alt hacimlerde hiçbir şey yoktur, bu yüzden şu anda tüm dosya sistemlerini geçici bir klasöre bağlayarak, bunları tararken btrfs subvol list, elde edilen çıktıyı ayrıştırır. Söylemeye gerek yok, bu oldukça çirkin.
Bu, 3.16.x çekirdeği ve btrfs-progs v3.14.1 (stok Ubuntu 14.10'dan ).
Aşağıda şu anda kullandığım (çirkin) komut dosyası var. Saf C kullanarak ihtiyacım olan bilgiyi alabileceğimi biliyorum ve muhtemelen bunu yapacağım, ama daha basit, daha zarif bir yol olup olmadığını merak ediyordum.
#!/bin/bash
for i in /sys/fs/btrfs/*[!features]; do
device="/dev/$(basename $i/devices/*)"
mountpoint=/var/lib/btrfs/tmp/mnt/$(basename "$i")
[ -d "$mountpoint" ] || mkdir "$mountpoint"
grep -qs $mountpoint /proc/mounts
[ $? -ne 0 ] && mount -v "$device" "$mountpoint"
while read -r subvol; do
# whatever you want
done < <(btrfs subvolume list "$mountpoint")
umount $mountpoint
rmdir $mountpoint
done