Apakah ada cara mudah untuk mendapatkan informasi tentang semua subvolume sistem file btrfs tanpa menggunakan C, yaitu dalam shell POSIX ?
/sys/fs/btrfshanya berisi info tentang filesystem, tidak ada pada subvolume, jadi saat ini saya akhirnya memasang semua filesystem di folder temp, memindai dengan btrfs subvol list, lalu menguraikan output yang dihasilkan. Tak perlu dikatakan, itu cukup jelek.
Ini dengan kernel 3.16.x dan btrfs-progs v3.14.1 (dari stok Ubuntu 14.10).
Di bawah ini adalah skrip (jelek) yang saya gunakan saat ini. Saya tahu saya bisa mendapatkan info yang saya butuhkan menggunakan C murni, dan mungkin itulah yang akhirnya saya lakukan, tetapi saya bertanya-tanya apakah ada cara yang lebih sederhana, lebih elegan.
#!/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