[Libguestfs] [PATCH] listfs: ignore the default btrfs subvolume

Pino Toscano ptoscano at redhat.com
Thu Feb 25 16:50:57 UTC 2016


When listing the subvolumes of a btrfs filesystem, ignore the default
subvolume: we get the content of it when mounting the whole device
(without specifying any particular subvolume), so avoid listing it
twice.
---
 src/listfs.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/listfs.c b/src/listfs.c
index 98e74c7..de3b6f5 100644
--- a/src/listfs.c
+++ b/src/listfs.c
@@ -169,8 +169,17 @@ check_with_vfs_type (guestfs_h *g, const char *device, struct stringsbuf *sb)
     if (vols == NULL)
       return -1;
 
+    int64_t default_volume = guestfs_btrfs_subvolume_get_default (g, device);
+
     for (size_t i = 0; i < vols->len; i++) {
       struct guestfs_btrfssubvolume *this = &vols->val[i];
+
+      /* Ignore the default subvolume.  We get it by simply mounting
+       * the whole device of this btrfs filesystem.
+       */
+      if (this->btrfssubvolume_id == (uint64_t) default_volume)
+        continue;
+
       guestfs_int_add_sprintf (g, sb,
 			       "btrfsvol:%s/%s",
 			       device, this->btrfssubvolume_path);
-- 
2.5.0




More information about the Libguestfs mailing list