summaryrefslogtreecommitdiff
path: root/cmds-filesystem.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmds-filesystem.c')
-rw-r--r--cmds-filesystem.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/cmds-filesystem.c b/cmds-filesystem.c
index f16e5869..7eaccb9f 100644
--- a/cmds-filesystem.c
+++ b/cmds-filesystem.c
@@ -713,6 +713,22 @@ static int find_and_copy_seed(struct btrfs_fs_devices *seed,
return 1;
}
+static int has_seed_devices(struct btrfs_fs_devices *fs_devices)
+{
+ struct btrfs_device *device;
+ int dev_cnt_total, dev_cnt = 0;
+
+ device = list_first_entry(&fs_devices->devices, struct btrfs_device,
+ dev_list);
+
+ dev_cnt_total = device->total_devs;
+
+ list_for_each_entry(device, &fs_devices->devices, dev_list)
+ dev_cnt++;
+
+ return dev_cnt_total != dev_cnt;
+}
+
static int search_umounted_fs_uuids(struct list_head *all_uuids,
char *search)
{
@@ -774,6 +790,11 @@ static int map_seed_devices(struct list_head *all_uuids)
struct btrfs_device, dev_list);
if (!device)
continue;
+
+ /* skip fs without seeds */
+ if (!has_seed_devices(cur_fs))
+ continue;
+
/*
* open_ctree_* detects seed/sprout mapping
*/
@@ -944,8 +965,8 @@ devs_only:
}
/*
- * scan_for_btrfs() don't build seed/sprout mapping,
- * do mapping build for each scanned fs here
+ * The seed/sprout mapping are not detected yet,
+ * do mapping build for all umounted fs
*/
ret = map_seed_devices(&all_uuids);
if (ret) {