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) {