• Home
  • Raw
  • Download

Lines Matching refs:fs_devices

348 static void free_fs_devices(struct btrfs_fs_devices *fs_devices)  in free_fs_devices()  argument
351 WARN_ON(fs_devices->opened); in free_fs_devices()
352 while (!list_empty(&fs_devices->devices)) { in free_fs_devices()
353 device = list_entry(fs_devices->devices.next, in free_fs_devices()
358 kfree(fs_devices); in free_fs_devices()
363 struct btrfs_fs_devices *fs_devices; in btrfs_cleanup_fs_uuids() local
366 fs_devices = list_entry(fs_uuids.next, in btrfs_cleanup_fs_uuids()
368 list_del(&fs_devices->fs_list); in btrfs_cleanup_fs_uuids()
369 free_fs_devices(fs_devices); in btrfs_cleanup_fs_uuids()
415 struct btrfs_fs_devices *fs_devices; in find_fsid() local
426 list_for_each_entry(fs_devices, &fs_uuids, fs_list) { in find_fsid()
427 if (fs_devices->fsid_change && in find_fsid()
428 memcmp(metadata_fsid, fs_devices->fsid, in find_fsid()
430 memcmp(fs_devices->fsid, fs_devices->metadata_uuid, in find_fsid()
432 return fs_devices; in find_fsid()
441 list_for_each_entry(fs_devices, &fs_uuids, fs_list) { in find_fsid()
442 if (fs_devices->fsid_change && in find_fsid()
443 memcmp(fs_devices->metadata_uuid, in find_fsid()
444 fs_devices->fsid, BTRFS_FSID_SIZE) != 0 && in find_fsid()
445 memcmp(metadata_fsid, fs_devices->metadata_uuid, in find_fsid()
447 return fs_devices; in find_fsid()
453 list_for_each_entry(fs_devices, &fs_uuids, fs_list) { in find_fsid()
455 if (memcmp(fsid, fs_devices->fsid, BTRFS_FSID_SIZE) == 0 in find_fsid()
456 && memcmp(metadata_fsid, fs_devices->metadata_uuid, in find_fsid()
458 return fs_devices; in find_fsid()
460 if (memcmp(fsid, fs_devices->fsid, BTRFS_FSID_SIZE) == 0) in find_fsid()
461 return fs_devices; in find_fsid()
650 fs_info->fs_devices->open_devices > 1) { in run_scheduled_bios()
735 struct btrfs_fs_devices *fs_devices, *tmp_fs_devices; in btrfs_free_stale_devices() local
742 list_for_each_entry_safe(fs_devices, tmp_fs_devices, &fs_uuids, fs_list) { in btrfs_free_stale_devices()
744 mutex_lock(&fs_devices->device_list_mutex); in btrfs_free_stale_devices()
746 &fs_devices->devices, dev_list) { in btrfs_free_stale_devices()
753 if (fs_devices->opened) { in btrfs_free_stale_devices()
761 fs_devices->num_devices--; in btrfs_free_stale_devices()
766 if (fs_devices->num_devices == 0) in btrfs_free_stale_devices()
769 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_free_stale_devices()
771 if (fs_devices->num_devices == 0) { in btrfs_free_stale_devices()
772 btrfs_sysfs_remove_fsid(fs_devices); in btrfs_free_stale_devices()
773 list_del(&fs_devices->fs_list); in btrfs_free_stale_devices()
774 free_fs_devices(fs_devices); in btrfs_free_stale_devices()
781 static int btrfs_open_one_device(struct btrfs_fs_devices *fs_devices, in btrfs_open_one_device() argument
821 fs_devices->seeding = 1; in btrfs_open_one_device()
831 fs_devices->rotating = 1; in btrfs_open_one_device()
837 fs_devices->open_devices++; in btrfs_open_one_device()
840 fs_devices->rw_devices++; in btrfs_open_one_device()
841 list_add_tail(&device->dev_alloc_list, &fs_devices->alloc_list); in btrfs_open_one_device()
861 struct btrfs_fs_devices *fs_devices; in find_fsid_inprogress() local
863 list_for_each_entry(fs_devices, &fs_uuids, fs_list) { in find_fsid_inprogress()
864 if (memcmp(fs_devices->metadata_uuid, fs_devices->fsid, in find_fsid_inprogress()
866 memcmp(fs_devices->metadata_uuid, disk_super->fsid, in find_fsid_inprogress()
867 BTRFS_FSID_SIZE) == 0 && !fs_devices->fsid_change) { in find_fsid_inprogress()
868 return fs_devices; in find_fsid_inprogress()
879 struct btrfs_fs_devices *fs_devices; in find_fsid_changed() local
886 list_for_each_entry(fs_devices, &fs_uuids, fs_list) { in find_fsid_changed()
887 if (memcmp(fs_devices->metadata_uuid, fs_devices->fsid, in find_fsid_changed()
889 memcmp(fs_devices->metadata_uuid, disk_super->metadata_uuid, in find_fsid_changed()
891 memcmp(fs_devices->fsid, disk_super->fsid, in find_fsid_changed()
893 return fs_devices; in find_fsid_changed()
911 struct btrfs_fs_devices *fs_devices = NULL; in device_list_add() local
928 fs_devices = find_fsid_inprogress(disk_super); in device_list_add()
929 if (!fs_devices) in device_list_add()
930 fs_devices = find_fsid(disk_super->fsid, NULL); in device_list_add()
932 fs_devices = find_fsid_changed(disk_super); in device_list_add()
935 fs_devices = find_fsid(disk_super->fsid, in device_list_add()
938 fs_devices = find_fsid(disk_super->fsid, NULL); in device_list_add()
942 if (!fs_devices) { in device_list_add()
944 fs_devices = alloc_fs_devices(disk_super->fsid, in device_list_add()
947 fs_devices = alloc_fs_devices(disk_super->fsid, NULL); in device_list_add()
949 if (IS_ERR(fs_devices)) in device_list_add()
950 return ERR_CAST(fs_devices); in device_list_add()
952 fs_devices->fsid_change = fsid_change_in_progress; in device_list_add()
954 mutex_lock(&fs_devices->device_list_mutex); in device_list_add()
955 list_add(&fs_devices->fs_list, &fs_uuids); in device_list_add()
959 mutex_lock(&fs_devices->device_list_mutex); in device_list_add()
960 device = btrfs_find_device(fs_devices, devid, in device_list_add()
968 if (has_metadata_uuid && fs_devices->fsid_change && in device_list_add()
969 found_transid > fs_devices->latest_generation) { in device_list_add()
970 memcpy(fs_devices->fsid, disk_super->fsid, in device_list_add()
972 memcpy(fs_devices->metadata_uuid, in device_list_add()
975 fs_devices->fsid_change = false; in device_list_add()
980 if (fs_devices->opened) { in device_list_add()
981 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
988 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
996 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
1001 list_add_rcu(&device->dev_list, &fs_devices->devices); in device_list_add()
1002 fs_devices->num_devices++; in device_list_add()
1004 device->fs_devices = fs_devices; in device_list_add()
1041 if (!fs_devices->opened && found_transid < device->generation) { in device_list_add()
1049 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
1062 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
1068 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
1084 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
1090 fs_devices->missing_devices--; in device_list_add()
1101 if (!fs_devices->opened) { in device_list_add()
1103 fs_devices->latest_generation = max_t(u64, found_transid, in device_list_add()
1104 fs_devices->latest_generation); in device_list_add()
1107 fs_devices->total_devices = btrfs_super_num_devices(disk_super); in device_list_add()
1109 mutex_unlock(&fs_devices->device_list_mutex); in device_list_add()
1115 struct btrfs_fs_devices *fs_devices; in clone_fs_devices() local
1120 fs_devices = alloc_fs_devices(orig->fsid, NULL); in clone_fs_devices()
1121 if (IS_ERR(fs_devices)) in clone_fs_devices()
1122 return fs_devices; in clone_fs_devices()
1125 fs_devices->total_devices = orig->total_devices; in clone_fs_devices()
1152 list_add(&device->dev_list, &fs_devices->devices); in clone_fs_devices()
1153 device->fs_devices = fs_devices; in clone_fs_devices()
1154 fs_devices->num_devices++; in clone_fs_devices()
1157 return fs_devices; in clone_fs_devices()
1160 free_fs_devices(fs_devices); in clone_fs_devices()
1168 void btrfs_free_extra_devids(struct btrfs_fs_devices *fs_devices, int step) in btrfs_free_extra_devids() argument
1176 list_for_each_entry_safe(device, next, &fs_devices->devices, dev_list) { in btrfs_free_extra_devids()
1207 fs_devices->open_devices--; in btrfs_free_extra_devids()
1214 fs_devices->rw_devices--; in btrfs_free_extra_devids()
1217 fs_devices->num_devices--; in btrfs_free_extra_devids()
1221 if (fs_devices->seed) { in btrfs_free_extra_devids()
1222 fs_devices = fs_devices->seed; in btrfs_free_extra_devids()
1226 fs_devices->latest_bdev = latest_dev->bdev; in btrfs_free_extra_devids()
1246 struct btrfs_fs_devices *fs_devices = device->fs_devices; in btrfs_close_one_device() local
1251 fs_devices->open_devices--; in btrfs_close_one_device()
1256 fs_devices->rw_devices--; in btrfs_close_one_device()
1260 fs_devices->missing_devices--; in btrfs_close_one_device()
1276 new_device->fs_devices = device->fs_devices; in btrfs_close_one_device()
1282 static int close_fs_devices(struct btrfs_fs_devices *fs_devices) in close_fs_devices() argument
1286 if (--fs_devices->opened > 0) in close_fs_devices()
1289 mutex_lock(&fs_devices->device_list_mutex); in close_fs_devices()
1290 list_for_each_entry_safe(device, tmp, &fs_devices->devices, dev_list) { in close_fs_devices()
1293 mutex_unlock(&fs_devices->device_list_mutex); in close_fs_devices()
1295 WARN_ON(fs_devices->open_devices); in close_fs_devices()
1296 WARN_ON(fs_devices->rw_devices); in close_fs_devices()
1297 fs_devices->opened = 0; in close_fs_devices()
1298 fs_devices->seeding = 0; in close_fs_devices()
1303 int btrfs_close_devices(struct btrfs_fs_devices *fs_devices) in btrfs_close_devices() argument
1309 ret = close_fs_devices(fs_devices); in btrfs_close_devices()
1310 if (!fs_devices->opened) { in btrfs_close_devices()
1311 seed_devices = fs_devices->seed; in btrfs_close_devices()
1312 fs_devices->seed = NULL; in btrfs_close_devices()
1317 fs_devices = seed_devices; in btrfs_close_devices()
1318 seed_devices = fs_devices->seed; in btrfs_close_devices()
1319 close_fs_devices(fs_devices); in btrfs_close_devices()
1320 free_fs_devices(fs_devices); in btrfs_close_devices()
1325 static int open_fs_devices(struct btrfs_fs_devices *fs_devices, in open_fs_devices() argument
1334 list_for_each_entry(device, &fs_devices->devices, dev_list) { in open_fs_devices()
1336 if (btrfs_open_one_device(fs_devices, device, flags, holder)) in open_fs_devices()
1343 if (fs_devices->open_devices == 0) { in open_fs_devices()
1347 fs_devices->opened = 1; in open_fs_devices()
1348 fs_devices->latest_bdev = latest_dev->bdev; in open_fs_devices()
1349 fs_devices->total_rw_bytes = 0; in open_fs_devices()
1368 int btrfs_open_devices(struct btrfs_fs_devices *fs_devices, in btrfs_open_devices() argument
1375 mutex_lock(&fs_devices->device_list_mutex); in btrfs_open_devices()
1376 if (fs_devices->opened) { in btrfs_open_devices()
1377 fs_devices->opened++; in btrfs_open_devices()
1380 list_sort(NULL, &fs_devices->devices, devid_cmp); in btrfs_open_devices()
1381 ret = open_fs_devices(fs_devices, flags, holder); in btrfs_open_devices()
1383 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_open_devices()
1927 write_extent_buffer(leaf, trans->fs_info->fs_devices->metadata_uuid, in btrfs_add_dev_item()
2060 next_device = btrfs_find_next_active_device(fs_info->fs_devices, in btrfs_assign_next_active_device()
2068 if (fs_info->fs_devices->latest_bdev == device->bdev) in btrfs_assign_next_active_device()
2069 fs_info->fs_devices->latest_bdev = next_device->bdev; in btrfs_assign_next_active_device()
2078 u64 num_devices = fs_info->fs_devices->num_devices; in btrfs_num_devices()
2095 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_rm_device() local
2132 fs_info->fs_devices->rw_devices == 1) { in btrfs_rm_device()
2140 device->fs_devices->rw_devices--; in btrfs_rm_device()
2177 cur_devices = device->fs_devices; in btrfs_rm_device()
2178 mutex_lock(&fs_devices->device_list_mutex); in btrfs_rm_device()
2184 if (cur_devices != fs_devices) in btrfs_rm_device()
2185 fs_devices->total_devices--; in btrfs_rm_device()
2195 btrfs_sysfs_rm_device_link(fs_devices, device); in btrfs_rm_device()
2200 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_rm_device()
2215 while (fs_devices) { in btrfs_rm_device()
2216 if (fs_devices->seed == cur_devices) { in btrfs_rm_device()
2217 fs_devices->seed = cur_devices->seed; in btrfs_rm_device()
2220 fs_devices = fs_devices->seed; in btrfs_rm_device()
2235 &fs_devices->alloc_list); in btrfs_rm_device()
2236 device->fs_devices->rw_devices++; in btrfs_rm_device()
2244 struct btrfs_fs_devices *fs_devices; in btrfs_rm_dev_replace_remove_srcdev() local
2246 lockdep_assert_held(&srcdev->fs_info->fs_devices->device_list_mutex); in btrfs_rm_dev_replace_remove_srcdev()
2254 fs_devices = srcdev->fs_devices; in btrfs_rm_dev_replace_remove_srcdev()
2258 fs_devices->num_devices--; in btrfs_rm_dev_replace_remove_srcdev()
2260 fs_devices->missing_devices--; in btrfs_rm_dev_replace_remove_srcdev()
2263 fs_devices->rw_devices--; in btrfs_rm_dev_replace_remove_srcdev()
2266 fs_devices->open_devices--; in btrfs_rm_dev_replace_remove_srcdev()
2272 struct btrfs_fs_devices *fs_devices = srcdev->fs_devices; in btrfs_rm_dev_replace_free_srcdev() local
2284 if (!fs_devices->num_devices) { in btrfs_rm_dev_replace_free_srcdev()
2293 ASSERT(fs_devices->seeding); in btrfs_rm_dev_replace_free_srcdev()
2295 tmp_fs_devices = fs_info->fs_devices; in btrfs_rm_dev_replace_free_srcdev()
2297 if (tmp_fs_devices->seed == fs_devices) { in btrfs_rm_dev_replace_free_srcdev()
2298 tmp_fs_devices->seed = fs_devices->seed; in btrfs_rm_dev_replace_free_srcdev()
2303 fs_devices->seed = NULL; in btrfs_rm_dev_replace_free_srcdev()
2304 close_fs_devices(fs_devices); in btrfs_rm_dev_replace_free_srcdev()
2305 free_fs_devices(fs_devices); in btrfs_rm_dev_replace_free_srcdev()
2311 struct btrfs_fs_devices *fs_devices = tgtdev->fs_info->fs_devices; in btrfs_destroy_dev_replace_tgtdev() local
2314 mutex_lock(&fs_devices->device_list_mutex); in btrfs_destroy_dev_replace_tgtdev()
2316 btrfs_sysfs_rm_device_link(fs_devices, tgtdev); in btrfs_destroy_dev_replace_tgtdev()
2319 fs_devices->open_devices--; in btrfs_destroy_dev_replace_tgtdev()
2321 fs_devices->num_devices--; in btrfs_destroy_dev_replace_tgtdev()
2327 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_destroy_dev_replace_tgtdev()
2362 device = btrfs_find_device(fs_info->fs_devices, devid, dev_uuid, in btrfs_find_device_by_path()
2365 device = btrfs_find_device(fs_info->fs_devices, devid, dev_uuid, in btrfs_find_device_by_path()
2385 device = btrfs_find_device(fs_info->fs_devices, devid, NULL, in btrfs_find_device_by_devspec()
2397 list_for_each_entry(device, &fs_info->fs_devices->devices, in btrfs_find_device_by_devspec()
2414 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_prepare_sprout() local
2422 if (!fs_devices->seeding) in btrfs_prepare_sprout()
2429 old_devices = clone_fs_devices(fs_devices); in btrfs_prepare_sprout()
2437 memcpy(seed_devices, fs_devices, sizeof(*seed_devices)); in btrfs_prepare_sprout()
2443 mutex_lock(&fs_devices->device_list_mutex); in btrfs_prepare_sprout()
2444 list_splice_init_rcu(&fs_devices->devices, &seed_devices->devices, in btrfs_prepare_sprout()
2447 device->fs_devices = seed_devices; in btrfs_prepare_sprout()
2450 list_splice_init(&fs_devices->alloc_list, &seed_devices->alloc_list); in btrfs_prepare_sprout()
2453 fs_devices->seeding = 0; in btrfs_prepare_sprout()
2454 fs_devices->num_devices = 0; in btrfs_prepare_sprout()
2455 fs_devices->open_devices = 0; in btrfs_prepare_sprout()
2456 fs_devices->missing_devices = 0; in btrfs_prepare_sprout()
2457 fs_devices->rotating = 0; in btrfs_prepare_sprout()
2458 fs_devices->seed = seed_devices; in btrfs_prepare_sprout()
2460 generate_random_uuid(fs_devices->fsid); in btrfs_prepare_sprout()
2461 memcpy(fs_devices->metadata_uuid, fs_devices->fsid, BTRFS_FSID_SIZE); in btrfs_prepare_sprout()
2462 memcpy(disk_super->fsid, fs_devices->fsid, BTRFS_FSID_SIZE); in btrfs_prepare_sprout()
2463 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_prepare_sprout()
2528 device = btrfs_find_device(fs_info->fs_devices, devid, dev_uuid, in btrfs_finish_sprout()
2532 if (device->fs_devices->seeding) { in btrfs_finish_sprout()
2556 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_init_new_device() local
2563 if (sb_rdonly(sb) && !fs_devices->seeding) in btrfs_init_new_device()
2571 if (fs_devices->seeding) { in btrfs_init_new_device()
2579 mutex_lock(&fs_devices->device_list_mutex); in btrfs_init_new_device()
2580 list_for_each_entry(device, &fs_devices->devices, dev_list) { in btrfs_init_new_device()
2584 &fs_devices->device_list_mutex); in btrfs_init_new_device()
2588 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_init_new_device()
2637 device->fs_devices = fs_devices; in btrfs_init_new_device()
2639 mutex_lock(&fs_devices->device_list_mutex); in btrfs_init_new_device()
2641 list_add_rcu(&device->dev_list, &fs_devices->devices); in btrfs_init_new_device()
2642 list_add(&device->dev_alloc_list, &fs_devices->alloc_list); in btrfs_init_new_device()
2643 fs_devices->num_devices++; in btrfs_init_new_device()
2644 fs_devices->open_devices++; in btrfs_init_new_device()
2645 fs_devices->rw_devices++; in btrfs_init_new_device()
2646 fs_devices->total_devices++; in btrfs_init_new_device()
2647 fs_devices->total_rw_bytes += device->total_bytes; in btrfs_init_new_device()
2652 fs_devices->rotating = 1; in btrfs_init_new_device()
2664 btrfs_sysfs_add_device_link(fs_devices, device); in btrfs_init_new_device()
2673 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_init_new_device()
2698 btrfs_sysfs_update_sprout_fsid(fs_devices, in btrfs_init_new_device()
2699 fs_info->fs_devices->fsid); in btrfs_init_new_device()
2732 btrfs_sysfs_rm_device_link(fs_devices, device); in btrfs_init_new_device()
2733 mutex_lock(&fs_info->fs_devices->device_list_mutex); in btrfs_init_new_device()
2737 fs_info->fs_devices->num_devices--; in btrfs_init_new_device()
2738 fs_info->fs_devices->open_devices--; in btrfs_init_new_device()
2739 fs_info->fs_devices->rw_devices--; in btrfs_init_new_device()
2740 fs_info->fs_devices->total_devices--; in btrfs_init_new_device()
2741 fs_info->fs_devices->total_rw_bytes -= device->total_bytes; in btrfs_init_new_device()
2748 mutex_unlock(&fs_info->fs_devices->device_list_mutex); in btrfs_init_new_device()
2836 device->fs_devices->total_rw_bytes += diff; in btrfs_grow_device()
2974 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_remove_chunk() local
2996 mutex_lock(&fs_devices->device_list_mutex); in btrfs_remove_chunk()
3003 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_remove_chunk()
3019 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_remove_chunk()
3024 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_remove_chunk()
4073 num_devices = fs_info->fs_devices->rw_devices; in btrfs_balance()
4714 device->fs_devices->total_rw_bytes -= diff; in btrfs_shrink_device()
4846 device->fs_devices->total_rw_bytes += diff; in btrfs_shrink_device()
4913 struct btrfs_fs_devices *fs_devices = info->fs_devices; in __btrfs_alloc_chunk() local
4943 if (list_empty(&fs_devices->alloc_list)) { in __btrfs_alloc_chunk()
4966 if (fs_devices->total_rw_bytes > 50ULL * SZ_1G) in __btrfs_alloc_chunk()
4982 max_chunk_size = min(div_factor(fs_devices->total_rw_bytes, 1), in __btrfs_alloc_chunk()
4985 devices_info = kcalloc(fs_devices->rw_devices, sizeof(*devices_info), in __btrfs_alloc_chunk()
4995 list_for_each_entry(device, &fs_devices->alloc_list, dev_alloc_list) { in __btrfs_alloc_chunk()
5037 if (ndevs == fs_devices->rw_devices) { in __btrfs_alloc_chunk()
5039 __func__, fs_devices->rw_devices); in __btrfs_alloc_chunk()
5229 mutex_lock(&fs_info->fs_devices->device_list_mutex); in btrfs_finish_chunk_alloc()
5243 mutex_unlock(&fs_info->fs_devices->device_list_mutex); in btrfs_finish_chunk_alloc()
5257 mutex_unlock(&fs_info->fs_devices->device_list_mutex); in btrfs_finish_chunk_alloc()
6594 struct btrfs_device *btrfs_find_device(struct btrfs_fs_devices *fs_devices, in btrfs_find_device() argument
6600 while (fs_devices) { in btrfs_find_device()
6602 !memcmp(fs_devices->metadata_uuid, fsid, BTRFS_FSID_SIZE)) { in btrfs_find_device()
6603 list_for_each_entry(device, &fs_devices->devices, in btrfs_find_device()
6612 fs_devices = fs_devices->seed; in btrfs_find_device()
6619 static struct btrfs_device *add_missing_dev(struct btrfs_fs_devices *fs_devices, in add_missing_dev() argument
6628 list_add(&device->dev_list, &fs_devices->devices); in add_missing_dev()
6629 device->fs_devices = fs_devices; in add_missing_dev()
6630 fs_devices->num_devices++; in add_missing_dev()
6633 fs_devices->missing_devices++; in add_missing_dev()
6793 map->stripes[i].dev = btrfs_find_device(fs_info->fs_devices, in read_one_chunk()
6803 add_missing_dev(fs_info->fs_devices, devid, in read_one_chunk()
6858 struct btrfs_fs_devices *fs_devices; in open_seed_devices() local
6864 fs_devices = fs_info->fs_devices->seed; in open_seed_devices()
6865 while (fs_devices) { in open_seed_devices()
6866 if (!memcmp(fs_devices->fsid, fsid, BTRFS_FSID_SIZE)) in open_seed_devices()
6867 return fs_devices; in open_seed_devices()
6869 fs_devices = fs_devices->seed; in open_seed_devices()
6872 fs_devices = find_fsid(fsid, NULL); in open_seed_devices()
6873 if (!fs_devices) { in open_seed_devices()
6877 fs_devices = alloc_fs_devices(fsid, NULL); in open_seed_devices()
6878 if (IS_ERR(fs_devices)) in open_seed_devices()
6879 return fs_devices; in open_seed_devices()
6881 fs_devices->seeding = 1; in open_seed_devices()
6882 fs_devices->opened = 1; in open_seed_devices()
6883 return fs_devices; in open_seed_devices()
6886 fs_devices = clone_fs_devices(fs_devices); in open_seed_devices()
6887 if (IS_ERR(fs_devices)) in open_seed_devices()
6888 return fs_devices; in open_seed_devices()
6890 ret = open_fs_devices(fs_devices, FMODE_READ, fs_info->bdev_holder); in open_seed_devices()
6892 free_fs_devices(fs_devices); in open_seed_devices()
6893 fs_devices = ERR_PTR(ret); in open_seed_devices()
6897 if (!fs_devices->seeding) { in open_seed_devices()
6898 close_fs_devices(fs_devices); in open_seed_devices()
6899 free_fs_devices(fs_devices); in open_seed_devices()
6900 fs_devices = ERR_PTR(-EINVAL); in open_seed_devices()
6904 fs_devices->seed = fs_info->fs_devices->seed; in open_seed_devices()
6905 fs_info->fs_devices->seed = fs_devices; in open_seed_devices()
6907 return fs_devices; in open_seed_devices()
6914 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in read_one_dev() local
6927 if (memcmp(fs_uuid, fs_devices->metadata_uuid, BTRFS_FSID_SIZE)) { in read_one_dev()
6928 fs_devices = open_seed_devices(fs_info, fs_uuid); in read_one_dev()
6929 if (IS_ERR(fs_devices)) in read_one_dev()
6930 return PTR_ERR(fs_devices); in read_one_dev()
6933 device = btrfs_find_device(fs_info->fs_devices, devid, dev_uuid, in read_one_dev()
6942 device = add_missing_dev(fs_devices, devid, dev_uuid); in read_one_dev()
6969 device->fs_devices->missing_devices++; in read_one_dev()
6974 if (device->fs_devices != fs_devices) { in read_one_dev()
6978 list_move(&device->dev_list, &fs_devices->devices); in read_one_dev()
6979 device->fs_devices->num_devices--; in read_one_dev()
6980 fs_devices->num_devices++; in read_one_dev()
6982 device->fs_devices->missing_devices--; in read_one_dev()
6983 fs_devices->missing_devices++; in read_one_dev()
6985 device->fs_devices = fs_devices; in read_one_dev()
6989 if (device->fs_devices != fs_info->fs_devices) { in read_one_dev()
7000 device->fs_devices->total_rw_bytes += device->total_bytes; in read_one_dev()
7261 if (total_dev != fs_info->fs_devices->total_devices) { in btrfs_read_chunk_tree()
7270 fs_info->fs_devices->total_rw_bytes) { in btrfs_read_chunk_tree()
7274 fs_info->fs_devices->total_rw_bytes); in btrfs_read_chunk_tree()
7289 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_init_devices_late() local
7292 while (fs_devices) { in btrfs_init_devices_late()
7293 mutex_lock(&fs_devices->device_list_mutex); in btrfs_init_devices_late()
7294 list_for_each_entry(device, &fs_devices->devices, dev_list) in btrfs_init_devices_late()
7296 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_init_devices_late()
7298 fs_devices = fs_devices->seed; in btrfs_init_devices_late()
7329 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_init_dev_stats() local
7341 mutex_lock(&fs_devices->device_list_mutex); in btrfs_init_dev_stats()
7342 list_for_each_entry(device, &fs_devices->devices, dev_list) { in btrfs_init_dev_stats()
7376 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_init_dev_stats()
7453 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_run_dev_stats() local
7458 mutex_lock(&fs_devices->device_list_mutex); in btrfs_run_dev_stats()
7459 list_for_each_entry(device, &fs_devices->devices, dev_list) { in btrfs_run_dev_stats()
7482 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_run_dev_stats()
7531 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_get_dev_stats() local
7534 mutex_lock(&fs_devices->device_list_mutex); in btrfs_get_dev_stats()
7535 dev = btrfs_find_device(fs_info->fs_devices, stats->devid, NULL, NULL, in btrfs_get_dev_stats()
7537 mutex_unlock(&fs_devices->device_list_mutex); in btrfs_get_dev_stats()
7626 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_set_fs_info_ptr() local
7627 while (fs_devices) { in btrfs_set_fs_info_ptr()
7628 fs_devices->fs_info = fs_info; in btrfs_set_fs_info_ptr()
7629 fs_devices = fs_devices->seed; in btrfs_set_fs_info_ptr()
7635 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_reset_fs_info_ptr() local
7636 while (fs_devices) { in btrfs_reset_fs_info_ptr()
7637 fs_devices->fs_info = NULL; in btrfs_reset_fs_info_ptr()
7638 fs_devices = fs_devices->seed; in btrfs_reset_fs_info_ptr()
7713 dev = btrfs_find_device(fs_info->fs_devices, devid, NULL, NULL, true); in verify_one_dev_extent()
7722 dev = btrfs_find_device(fs_info->fs_devices->seed, devid, NULL, in verify_one_dev_extent()