• Home
  • Raw
  • Download

Lines Matching refs:fs_info

193 static int btrfs_relocate_sys_chunks(struct btrfs_fs_info *fs_info);
196 static int __btrfs_map_block(struct btrfs_fs_info *fs_info,
531 struct btrfs_fs_info *fs_info = device->fs_info; in run_scheduled_bios() local
650 fs_info->fs_devices->open_devices > 1) { in run_scheduled_bios()
683 btrfs_queue_work(fs_info->submit_workers, in run_scheduled_bios()
1069 btrfs_warn_in_rcu(device->fs_info, in device_list_add()
1076 btrfs_info_in_rcu(device->fs_info, in device_list_add()
1508 lockdep_assert_held(&device->fs_info->chunk_mutex); in contains_pending_extent()
1556 struct btrfs_fs_info *fs_info = device->fs_info; in find_free_dev_extent_start() local
1557 struct btrfs_root *root = fs_info->dev_root; in find_free_dev_extent_start()
1720 struct btrfs_fs_info *fs_info = device->fs_info; in btrfs_free_dev_extent() local
1721 struct btrfs_root *root = fs_info->dev_root; in btrfs_free_dev_extent()
1757 btrfs_handle_fs_error(fs_info, ret, "Slot search failed"); in btrfs_free_dev_extent()
1765 btrfs_handle_fs_error(fs_info, ret, in btrfs_free_dev_extent()
1781 struct btrfs_fs_info *fs_info = device->fs_info; in btrfs_alloc_dev_extent() local
1782 struct btrfs_root *root = fs_info->dev_root; in btrfs_alloc_dev_extent()
1817 static u64 find_next_chunk(struct btrfs_fs_info *fs_info) in find_next_chunk() argument
1824 em_tree = &fs_info->mapping_tree; in find_next_chunk()
1836 static noinline int find_next_devid(struct btrfs_fs_info *fs_info, in find_next_devid() argument
1852 ret = btrfs_search_slot(NULL, fs_info->chunk_root, &key, path, 0, 0); in find_next_devid()
1858 btrfs_err(fs_info, "corrupted chunk tree devid -1 matched"); in find_next_devid()
1863 ret = btrfs_previous_item(fs_info->chunk_root, path, in find_next_devid()
1901 ret = btrfs_insert_empty_item(trans, trans->fs_info->chunk_root, path, in btrfs_add_dev_item()
1927 write_extent_buffer(leaf, trans->fs_info->fs_devices->metadata_uuid, in btrfs_add_dev_item()
1954 struct btrfs_root *root = device->fs_info->chunk_root; in btrfs_rm_dev_item()
2000 static int btrfs_check_raid_min_devices(struct btrfs_fs_info *fs_info, in btrfs_check_raid_min_devices() argument
2008 seq = read_seqbegin(&fs_info->profiles_lock); in btrfs_check_raid_min_devices()
2010 all_avail = fs_info->avail_data_alloc_bits | in btrfs_check_raid_min_devices()
2011 fs_info->avail_system_alloc_bits | in btrfs_check_raid_min_devices()
2012 fs_info->avail_metadata_alloc_bits; in btrfs_check_raid_min_devices()
2013 } while (read_seqretry(&fs_info->profiles_lock, seq)); in btrfs_check_raid_min_devices()
2054 struct btrfs_fs_info *fs_info = device->fs_info; in btrfs_assign_next_active_device() local
2060 next_device = btrfs_find_next_active_device(fs_info->fs_devices, in btrfs_assign_next_active_device()
2064 if (fs_info->sb->s_bdev && in btrfs_assign_next_active_device()
2065 (fs_info->sb->s_bdev == device->bdev)) in btrfs_assign_next_active_device()
2066 fs_info->sb->s_bdev = next_device->bdev; 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()
2076 static u64 btrfs_num_devices(struct btrfs_fs_info *fs_info) in btrfs_num_devices() argument
2078 u64 num_devices = fs_info->fs_devices->num_devices; in btrfs_num_devices()
2080 down_read(&fs_info->dev_replace.rwsem); in btrfs_num_devices()
2081 if (btrfs_dev_replace_is_ongoing(&fs_info->dev_replace)) { in btrfs_num_devices()
2085 up_read(&fs_info->dev_replace.rwsem); in btrfs_num_devices()
2090 int btrfs_rm_device(struct btrfs_fs_info *fs_info, const char *device_path, in btrfs_rm_device() argument
2095 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_rm_device()
2101 num_devices = btrfs_num_devices(fs_info); in btrfs_rm_device()
2103 ret = btrfs_check_raid_min_devices(fs_info, num_devices - 1); in btrfs_rm_device()
2107 device = btrfs_find_device_by_devspec(fs_info, devid, device_path); in btrfs_rm_device()
2118 if (btrfs_pinned_by_swapfile(fs_info, device)) { in btrfs_rm_device()
2119 btrfs_warn_in_rcu(fs_info, in btrfs_rm_device()
2132 fs_info->fs_devices->rw_devices == 1) { in btrfs_rm_device()
2138 mutex_lock(&fs_info->chunk_mutex); in btrfs_rm_device()
2141 mutex_unlock(&fs_info->chunk_mutex); in btrfs_rm_device()
2198 num_devices = btrfs_super_num_devices(fs_info->super_copy) - 1; in btrfs_rm_device()
2199 btrfs_set_super_num_devices(fs_info->super_copy, num_devices); in btrfs_rm_device()
2233 mutex_lock(&fs_info->chunk_mutex); in btrfs_rm_device()
2237 mutex_unlock(&fs_info->chunk_mutex); in btrfs_rm_device()
2246 lockdep_assert_held(&srcdev->fs_info->fs_devices->device_list_mutex); in btrfs_rm_dev_replace_remove_srcdev()
2271 struct btrfs_fs_info *fs_info = srcdev->fs_info; in btrfs_rm_dev_replace_free_srcdev() local
2295 tmp_fs_devices = fs_info->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()
2344 struct btrfs_fs_info *fs_info, const char *device_path) in btrfs_find_device_by_path() argument
2355 fs_info->bdev_holder, 0, &bdev, &bh); in btrfs_find_device_by_path()
2361 if (btrfs_fs_incompat(fs_info, METADATA_UUID)) in btrfs_find_device_by_path()
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()
2379 struct btrfs_fs_info *fs_info, u64 devid, in btrfs_find_device_by_devspec() argument
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()
2406 return btrfs_find_device_by_path(fs_info, device_path); in btrfs_find_device_by_devspec()
2412 static int btrfs_prepare_sprout(struct btrfs_fs_info *fs_info) in btrfs_prepare_sprout() argument
2414 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_prepare_sprout()
2417 struct btrfs_super_block *disk_super = fs_info->super_copy; in btrfs_prepare_sprout()
2449 mutex_lock(&fs_info->chunk_mutex); in btrfs_prepare_sprout()
2451 mutex_unlock(&fs_info->chunk_mutex); in btrfs_prepare_sprout()
2477 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_finish_sprout() local
2478 struct btrfs_root *root = fs_info->chunk_root; in btrfs_finish_sprout()
2528 device = btrfs_find_device(fs_info->fs_devices, devid, dev_uuid, in btrfs_finish_sprout()
2547 int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path) in btrfs_init_new_device() argument
2549 struct btrfs_root *root = fs_info->dev_root; in btrfs_init_new_device()
2554 struct super_block *sb = fs_info->sb; in btrfs_init_new_device()
2556 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_init_new_device()
2567 fs_info->bdev_holder); in btrfs_init_new_device()
2590 device = btrfs_alloc_device(fs_info, NULL, NULL); in btrfs_init_new_device()
2613 device->io_width = fs_info->sectorsize; in btrfs_init_new_device()
2614 device->io_align = fs_info->sectorsize; in btrfs_init_new_device()
2615 device->sector_size = fs_info->sectorsize; in btrfs_init_new_device()
2617 fs_info->sectorsize); in btrfs_init_new_device()
2620 device->fs_info = fs_info; in btrfs_init_new_device()
2630 ret = btrfs_prepare_sprout(fs_info); in btrfs_init_new_device()
2640 mutex_lock(&fs_info->chunk_mutex); in btrfs_init_new_device()
2649 atomic64_add(device->total_bytes, &fs_info->free_chunk_space); in btrfs_init_new_device()
2654 orig_super_total_bytes = btrfs_super_total_bytes(fs_info->super_copy); in btrfs_init_new_device()
2655 btrfs_set_super_total_bytes(fs_info->super_copy, in btrfs_init_new_device()
2657 fs_info->sectorsize)); in btrfs_init_new_device()
2659 orig_super_num_devices = btrfs_super_num_devices(fs_info->super_copy); in btrfs_init_new_device()
2660 btrfs_set_super_num_devices(fs_info->super_copy, in btrfs_init_new_device()
2670 btrfs_clear_space_info_full(fs_info); in btrfs_init_new_device()
2672 mutex_unlock(&fs_info->chunk_mutex); in btrfs_init_new_device()
2676 mutex_lock(&fs_info->chunk_mutex); in btrfs_init_new_device()
2678 mutex_unlock(&fs_info->chunk_mutex); in btrfs_init_new_device()
2699 fs_info->fs_devices->fsid); in btrfs_init_new_device()
2712 ret = btrfs_relocate_sys_chunks(fs_info); in btrfs_init_new_device()
2714 btrfs_handle_fs_error(fs_info, ret, in btrfs_init_new_device()
2733 mutex_lock(&fs_info->fs_devices->device_list_mutex); in btrfs_init_new_device()
2734 mutex_lock(&fs_info->chunk_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()
2742 atomic64_sub(device->total_bytes, &fs_info->free_chunk_space); in btrfs_init_new_device()
2743 btrfs_set_super_total_bytes(fs_info->super_copy, in btrfs_init_new_device()
2745 btrfs_set_super_num_devices(fs_info->super_copy, in btrfs_init_new_device()
2747 mutex_unlock(&fs_info->chunk_mutex); in btrfs_init_new_device()
2748 mutex_unlock(&fs_info->fs_devices->device_list_mutex); in btrfs_init_new_device()
2770 struct btrfs_root *root = device->fs_info->chunk_root; in btrfs_update_device()
2814 struct btrfs_fs_info *fs_info = device->fs_info; in btrfs_grow_device() local
2815 struct btrfs_super_block *super_copy = fs_info->super_copy; in btrfs_grow_device()
2822 new_size = round_down(new_size, fs_info->sectorsize); in btrfs_grow_device()
2824 mutex_lock(&fs_info->chunk_mutex); in btrfs_grow_device()
2826 diff = round_down(new_size - device->total_bytes, fs_info->sectorsize); in btrfs_grow_device()
2830 mutex_unlock(&fs_info->chunk_mutex); in btrfs_grow_device()
2835 round_down(old_total + diff, fs_info->sectorsize)); in btrfs_grow_device()
2840 btrfs_clear_space_info_full(device->fs_info); in btrfs_grow_device()
2844 mutex_unlock(&fs_info->chunk_mutex); in btrfs_grow_device()
2851 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_free_chunk() local
2852 struct btrfs_root *root = fs_info->chunk_root; in btrfs_free_chunk()
2869 btrfs_handle_fs_error(fs_info, -ENOENT, in btrfs_free_chunk()
2877 btrfs_handle_fs_error(fs_info, ret, in btrfs_free_chunk()
2884 static int btrfs_del_sys_chunk(struct btrfs_fs_info *fs_info, u64 chunk_offset) in btrfs_del_sys_chunk() argument
2886 struct btrfs_super_block *super_copy = fs_info->super_copy; in btrfs_del_sys_chunk()
2897 mutex_lock(&fs_info->chunk_mutex); in btrfs_del_sys_chunk()
2927 mutex_unlock(&fs_info->chunk_mutex); in btrfs_del_sys_chunk()
2938 struct extent_map *btrfs_get_chunk_map(struct btrfs_fs_info *fs_info, in btrfs_get_chunk_map() argument
2944 em_tree = &fs_info->mapping_tree; in btrfs_get_chunk_map()
2950 btrfs_crit(fs_info, "unable to find logical %llu length %llu", in btrfs_get_chunk_map()
2956 btrfs_crit(fs_info, in btrfs_get_chunk_map()
2969 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_remove_chunk() local
2974 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_remove_chunk()
2976 em = btrfs_get_chunk_map(fs_info, chunk_offset, 1); in btrfs_remove_chunk()
2987 mutex_lock(&fs_info->chunk_mutex); in btrfs_remove_chunk()
2989 mutex_unlock(&fs_info->chunk_mutex); in btrfs_remove_chunk()
3009 mutex_lock(&fs_info->chunk_mutex); in btrfs_remove_chunk()
3012 atomic64_add(dev_extent_len, &fs_info->free_chunk_space); in btrfs_remove_chunk()
3013 btrfs_clear_space_info_full(fs_info); in btrfs_remove_chunk()
3014 mutex_unlock(&fs_info->chunk_mutex); in btrfs_remove_chunk()
3032 trace_btrfs_chunk_free(fs_info, map, chunk_offset, em->len); in btrfs_remove_chunk()
3035 ret = btrfs_del_sys_chunk(fs_info, chunk_offset); in btrfs_remove_chunk()
3054 static int btrfs_relocate_chunk(struct btrfs_fs_info *fs_info, u64 chunk_offset) in btrfs_relocate_chunk() argument
3056 struct btrfs_root *root = fs_info->chunk_root; in btrfs_relocate_chunk()
3072 lockdep_assert_held(&fs_info->delete_unused_bgs_mutex); in btrfs_relocate_chunk()
3075 btrfs_scrub_pause(fs_info); in btrfs_relocate_chunk()
3076 ret = btrfs_relocate_block_group(fs_info, chunk_offset); in btrfs_relocate_chunk()
3077 btrfs_scrub_continue(fs_info); in btrfs_relocate_chunk()
3081 trans = btrfs_start_trans_remove_block_group(root->fs_info, in btrfs_relocate_chunk()
3085 btrfs_handle_fs_error(root->fs_info, ret, NULL); in btrfs_relocate_chunk()
3098 static int btrfs_relocate_sys_chunks(struct btrfs_fs_info *fs_info) in btrfs_relocate_sys_chunks() argument
3100 struct btrfs_root *chunk_root = fs_info->chunk_root; in btrfs_relocate_sys_chunks()
3121 mutex_lock(&fs_info->delete_unused_bgs_mutex); in btrfs_relocate_sys_chunks()
3124 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_relocate_sys_chunks()
3132 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_relocate_sys_chunks()
3147 ret = btrfs_relocate_chunk(fs_info, found_key.offset); in btrfs_relocate_sys_chunks()
3153 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_relocate_sys_chunks()
3177 static int btrfs_may_alloc_data_chunk(struct btrfs_fs_info *fs_info, in btrfs_may_alloc_data_chunk() argument
3184 cache = btrfs_lookup_block_group(fs_info, chunk_offset); in btrfs_may_alloc_data_chunk()
3190 spin_lock(&fs_info->data_sinfo->lock); in btrfs_may_alloc_data_chunk()
3191 bytes_used = fs_info->data_sinfo->bytes_used; in btrfs_may_alloc_data_chunk()
3192 spin_unlock(&fs_info->data_sinfo->lock); in btrfs_may_alloc_data_chunk()
3198 trans = btrfs_join_transaction(fs_info->tree_root); in btrfs_may_alloc_data_chunk()
3213 static int insert_balance_item(struct btrfs_fs_info *fs_info, in insert_balance_item() argument
3216 struct btrfs_root *root = fs_info->tree_root; in insert_balance_item()
3267 static int del_balance_item(struct btrfs_fs_info *fs_info) in del_balance_item() argument
3269 struct btrfs_root *root = fs_info->tree_root; in del_balance_item()
3352 static void reset_balance_state(struct btrfs_fs_info *fs_info) in reset_balance_state() argument
3354 struct btrfs_balance_control *bctl = fs_info->balance_ctl; in reset_balance_state()
3357 BUG_ON(!fs_info->balance_ctl); in reset_balance_state()
3359 spin_lock(&fs_info->balance_lock); in reset_balance_state()
3360 fs_info->balance_ctl = NULL; in reset_balance_state()
3361 spin_unlock(&fs_info->balance_lock); in reset_balance_state()
3364 ret = del_balance_item(fs_info); in reset_balance_state()
3366 btrfs_handle_fs_error(fs_info, ret, NULL); in reset_balance_state()
3385 static int chunk_usage_range_filter(struct btrfs_fs_info *fs_info, u64 chunk_offset, in chunk_usage_range_filter() argument
3394 cache = btrfs_lookup_block_group(fs_info, chunk_offset); in chunk_usage_range_filter()
3418 static int chunk_usage_filter(struct btrfs_fs_info *fs_info, in chunk_usage_filter() argument
3425 cache = btrfs_lookup_block_group(fs_info, chunk_offset); in chunk_usage_filter()
3553 struct btrfs_fs_info *fs_info = leaf->fs_info; in should_balance_chunk() local
3554 struct btrfs_balance_control *bctl = fs_info->balance_ctl; in should_balance_chunk()
3579 chunk_usage_filter(fs_info, chunk_offset, bargs)) { in should_balance_chunk()
3582 chunk_usage_range_filter(fs_info, chunk_offset, bargs)) { in should_balance_chunk()
3639 static int __btrfs_balance(struct btrfs_fs_info *fs_info) in __btrfs_balance() argument
3641 struct btrfs_balance_control *bctl = fs_info->balance_ctl; in __btrfs_balance()
3642 struct btrfs_root *chunk_root = fs_info->chunk_root; in __btrfs_balance()
3669 spin_lock(&fs_info->balance_lock); in __btrfs_balance()
3671 spin_unlock(&fs_info->balance_lock); in __btrfs_balance()
3687 if ((!counting && atomic_read(&fs_info->balance_pause_req)) || in __btrfs_balance()
3688 atomic_read(&fs_info->balance_cancel_req)) { in __btrfs_balance()
3693 mutex_lock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3696 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3710 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3720 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3728 spin_lock(&fs_info->balance_lock); in __btrfs_balance()
3730 spin_unlock(&fs_info->balance_lock); in __btrfs_balance()
3737 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3742 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3743 spin_lock(&fs_info->balance_lock); in __btrfs_balance()
3745 spin_unlock(&fs_info->balance_lock); in __btrfs_balance()
3767 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3778 ret = btrfs_may_alloc_data_chunk(fs_info, in __btrfs_balance()
3781 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3788 ret = btrfs_relocate_chunk(fs_info, found_key.offset); in __btrfs_balance()
3789 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in __btrfs_balance()
3793 btrfs_info(fs_info, in __btrfs_balance()
3800 spin_lock(&fs_info->balance_lock); in __btrfs_balance()
3802 spin_unlock(&fs_info->balance_lock); in __btrfs_balance()
3818 btrfs_info(fs_info, "%d enospc errors during balance", in __btrfs_balance()
3855 static inline int balance_need_close(struct btrfs_fs_info *fs_info) in balance_need_close() argument
3858 return atomic_read(&fs_info->balance_cancel_req) || in balance_need_close()
3859 (atomic_read(&fs_info->balance_pause_req) == 0 && in balance_need_close()
3860 atomic_read(&fs_info->balance_cancel_req) == 0); in balance_need_close()
3970 static void describe_balance_start_or_resume(struct btrfs_fs_info *fs_info) in describe_balance_start_or_resume() argument
3978 struct btrfs_balance_control *bctl = fs_info->balance_ctl; in describe_balance_start_or_resume()
4019 btrfs_info(fs_info, "balance: %s %s", in describe_balance_start_or_resume()
4029 int btrfs_balance(struct btrfs_fs_info *fs_info, in btrfs_balance() argument
4042 if (btrfs_fs_closing(fs_info) || in btrfs_balance()
4043 atomic_read(&fs_info->balance_pause_req) || in btrfs_balance()
4044 atomic_read(&fs_info->balance_cancel_req)) { in btrfs_balance()
4049 allowed = btrfs_super_incompat_flags(fs_info->super_copy); in btrfs_balance()
4062 btrfs_err(fs_info, in btrfs_balance()
4073 num_devices = fs_info->fs_devices->rw_devices; in btrfs_balance()
4086 btrfs_err(fs_info, in btrfs_balance()
4093 btrfs_err(fs_info, in btrfs_balance()
4100 btrfs_err(fs_info, in btrfs_balance()
4118 seq = read_seqbegin(&fs_info->profiles_lock); in btrfs_balance()
4121 (fs_info->avail_system_alloc_bits & allowed) && in btrfs_balance()
4124 (fs_info->avail_metadata_alloc_bits & allowed) && in btrfs_balance()
4132 bctl->meta.target : fs_info->avail_metadata_alloc_bits; in btrfs_balance()
4134 bctl->data.target : fs_info->avail_data_alloc_bits; in btrfs_balance()
4135 } while (read_seqretry(&fs_info->profiles_lock, seq)); in btrfs_balance()
4139 btrfs_info(fs_info, in btrfs_balance()
4142 btrfs_err(fs_info, in btrfs_balance()
4151 btrfs_warn(fs_info, in btrfs_balance()
4157 if (fs_info->send_in_progress) { in btrfs_balance()
4158 btrfs_warn_rl(fs_info, in btrfs_balance()
4160 fs_info->send_in_progress); in btrfs_balance()
4165 ret = insert_balance_item(fs_info, bctl); in btrfs_balance()
4171 BUG_ON(fs_info->balance_ctl); in btrfs_balance()
4172 spin_lock(&fs_info->balance_lock); in btrfs_balance()
4173 fs_info->balance_ctl = bctl; in btrfs_balance()
4174 spin_unlock(&fs_info->balance_lock); in btrfs_balance()
4177 spin_lock(&fs_info->balance_lock); in btrfs_balance()
4179 spin_unlock(&fs_info->balance_lock); in btrfs_balance()
4182 ASSERT(!test_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags)); in btrfs_balance()
4183 set_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags); in btrfs_balance()
4184 describe_balance_start_or_resume(fs_info); in btrfs_balance()
4185 mutex_unlock(&fs_info->balance_mutex); in btrfs_balance()
4187 ret = __btrfs_balance(fs_info); in btrfs_balance()
4189 mutex_lock(&fs_info->balance_mutex); in btrfs_balance()
4190 if (ret == -ECANCELED && atomic_read(&fs_info->balance_pause_req)) in btrfs_balance()
4191 btrfs_info(fs_info, "balance: paused"); in btrfs_balance()
4192 else if (ret == -ECANCELED && atomic_read(&fs_info->balance_cancel_req)) in btrfs_balance()
4193 btrfs_info(fs_info, "balance: canceled"); in btrfs_balance()
4195 btrfs_info(fs_info, "balance: ended with status: %d", ret); in btrfs_balance()
4197 clear_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags); in btrfs_balance()
4201 btrfs_update_ioctl_balance_args(fs_info, bargs); in btrfs_balance()
4205 balance_need_close(fs_info)) { in btrfs_balance()
4206 reset_balance_state(fs_info); in btrfs_balance()
4207 clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags); in btrfs_balance()
4210 wake_up(&fs_info->balance_wait_q); in btrfs_balance()
4215 reset_balance_state(fs_info); in btrfs_balance()
4218 clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags); in btrfs_balance()
4225 struct btrfs_fs_info *fs_info = data; in balance_kthread() local
4228 mutex_lock(&fs_info->balance_mutex); in balance_kthread()
4229 if (fs_info->balance_ctl) in balance_kthread()
4230 ret = btrfs_balance(fs_info, fs_info->balance_ctl, NULL); in balance_kthread()
4231 mutex_unlock(&fs_info->balance_mutex); in balance_kthread()
4236 int btrfs_resume_balance_async(struct btrfs_fs_info *fs_info) in btrfs_resume_balance_async() argument
4240 mutex_lock(&fs_info->balance_mutex); in btrfs_resume_balance_async()
4241 if (!fs_info->balance_ctl) { in btrfs_resume_balance_async()
4242 mutex_unlock(&fs_info->balance_mutex); in btrfs_resume_balance_async()
4245 mutex_unlock(&fs_info->balance_mutex); in btrfs_resume_balance_async()
4247 if (btrfs_test_opt(fs_info, SKIP_BALANCE)) { in btrfs_resume_balance_async()
4248 btrfs_info(fs_info, "balance: resume skipped"); in btrfs_resume_balance_async()
4257 spin_lock(&fs_info->balance_lock); in btrfs_resume_balance_async()
4258 fs_info->balance_ctl->flags |= BTRFS_BALANCE_RESUME; in btrfs_resume_balance_async()
4259 spin_unlock(&fs_info->balance_lock); in btrfs_resume_balance_async()
4261 tsk = kthread_run(balance_kthread, fs_info, "btrfs-balance"); in btrfs_resume_balance_async()
4265 int btrfs_recover_balance(struct btrfs_fs_info *fs_info) in btrfs_recover_balance() argument
4283 ret = btrfs_search_slot(NULL, fs_info->tree_root, &key, path, 0, 0); in btrfs_recover_balance()
4320 if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) in btrfs_recover_balance()
4321 btrfs_warn(fs_info, in btrfs_recover_balance()
4324 mutex_lock(&fs_info->balance_mutex); in btrfs_recover_balance()
4325 BUG_ON(fs_info->balance_ctl); in btrfs_recover_balance()
4326 spin_lock(&fs_info->balance_lock); in btrfs_recover_balance()
4327 fs_info->balance_ctl = bctl; in btrfs_recover_balance()
4328 spin_unlock(&fs_info->balance_lock); in btrfs_recover_balance()
4329 mutex_unlock(&fs_info->balance_mutex); in btrfs_recover_balance()
4335 int btrfs_pause_balance(struct btrfs_fs_info *fs_info) in btrfs_pause_balance() argument
4339 mutex_lock(&fs_info->balance_mutex); in btrfs_pause_balance()
4340 if (!fs_info->balance_ctl) { in btrfs_pause_balance()
4341 mutex_unlock(&fs_info->balance_mutex); in btrfs_pause_balance()
4345 if (test_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags)) { in btrfs_pause_balance()
4346 atomic_inc(&fs_info->balance_pause_req); in btrfs_pause_balance()
4347 mutex_unlock(&fs_info->balance_mutex); in btrfs_pause_balance()
4349 wait_event(fs_info->balance_wait_q, in btrfs_pause_balance()
4350 !test_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags)); in btrfs_pause_balance()
4352 mutex_lock(&fs_info->balance_mutex); in btrfs_pause_balance()
4354 BUG_ON(test_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags)); in btrfs_pause_balance()
4355 atomic_dec(&fs_info->balance_pause_req); in btrfs_pause_balance()
4360 mutex_unlock(&fs_info->balance_mutex); in btrfs_pause_balance()
4364 int btrfs_cancel_balance(struct btrfs_fs_info *fs_info) in btrfs_cancel_balance() argument
4366 mutex_lock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4367 if (!fs_info->balance_ctl) { in btrfs_cancel_balance()
4368 mutex_unlock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4377 if (sb_rdonly(fs_info->sb)) { in btrfs_cancel_balance()
4378 mutex_unlock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4382 atomic_inc(&fs_info->balance_cancel_req); in btrfs_cancel_balance()
4387 if (test_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags)) { in btrfs_cancel_balance()
4388 mutex_unlock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4389 wait_event(fs_info->balance_wait_q, in btrfs_cancel_balance()
4390 !test_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags)); in btrfs_cancel_balance()
4391 mutex_lock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4393 mutex_unlock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4398 mutex_lock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4400 if (fs_info->balance_ctl) { in btrfs_cancel_balance()
4401 reset_balance_state(fs_info); in btrfs_cancel_balance()
4402 clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags); in btrfs_cancel_balance()
4403 btrfs_info(fs_info, "balance: canceled"); in btrfs_cancel_balance()
4407 BUG_ON(fs_info->balance_ctl || in btrfs_cancel_balance()
4408 test_bit(BTRFS_FS_BALANCE_RUNNING, &fs_info->flags)); in btrfs_cancel_balance()
4409 atomic_dec(&fs_info->balance_cancel_req); in btrfs_cancel_balance()
4410 mutex_unlock(&fs_info->balance_mutex); in btrfs_cancel_balance()
4416 struct btrfs_fs_info *fs_info = data; in btrfs_uuid_scan_kthread() local
4417 struct btrfs_root *root = fs_info->tree_root; in btrfs_uuid_scan_kthread()
4474 trans = btrfs_start_transaction(fs_info->uuid_root, 2); in btrfs_uuid_scan_kthread()
4489 btrfs_warn(fs_info, "uuid_tree_add failed %d", in btrfs_uuid_scan_kthread()
4501 btrfs_warn(fs_info, "uuid_tree_add failed %d", in btrfs_uuid_scan_kthread()
4536 btrfs_warn(fs_info, "btrfs_uuid_scan_kthread failed %d", ret); in btrfs_uuid_scan_kthread()
4538 set_bit(BTRFS_FS_UPDATE_UUID_TREE_GEN, &fs_info->flags); in btrfs_uuid_scan_kthread()
4539 up(&fs_info->uuid_tree_rescan_sem); in btrfs_uuid_scan_kthread()
4550 static int btrfs_check_uuid_tree_entry(struct btrfs_fs_info *fs_info, in btrfs_check_uuid_tree_entry() argument
4564 subvol_root = btrfs_read_fs_root_no_name(fs_info, &key); in btrfs_check_uuid_tree_entry()
4590 struct btrfs_fs_info *fs_info = (struct btrfs_fs_info *)data; in btrfs_uuid_rescan_kthread() local
4598 ret = btrfs_uuid_tree_iterate(fs_info, btrfs_check_uuid_tree_entry); in btrfs_uuid_rescan_kthread()
4600 btrfs_warn(fs_info, "iterating uuid_tree failed %d", ret); in btrfs_uuid_rescan_kthread()
4601 up(&fs_info->uuid_tree_rescan_sem); in btrfs_uuid_rescan_kthread()
4607 int btrfs_create_uuid_tree(struct btrfs_fs_info *fs_info) in btrfs_create_uuid_tree() argument
4610 struct btrfs_root *tree_root = fs_info->tree_root; in btrfs_create_uuid_tree()
4631 fs_info->uuid_root = uuid_root; in btrfs_create_uuid_tree()
4637 down(&fs_info->uuid_tree_rescan_sem); in btrfs_create_uuid_tree()
4638 task = kthread_run(btrfs_uuid_scan_kthread, fs_info, "btrfs-uuid"); in btrfs_create_uuid_tree()
4641 btrfs_warn(fs_info, "failed to start uuid_scan task"); in btrfs_create_uuid_tree()
4642 up(&fs_info->uuid_tree_rescan_sem); in btrfs_create_uuid_tree()
4649 int btrfs_check_uuid_tree(struct btrfs_fs_info *fs_info) in btrfs_check_uuid_tree() argument
4653 down(&fs_info->uuid_tree_rescan_sem); in btrfs_check_uuid_tree()
4654 task = kthread_run(btrfs_uuid_rescan_kthread, fs_info, "btrfs-uuid"); in btrfs_check_uuid_tree()
4657 btrfs_warn(fs_info, "failed to start uuid_rescan task"); in btrfs_check_uuid_tree()
4658 up(&fs_info->uuid_tree_rescan_sem); in btrfs_check_uuid_tree()
4672 struct btrfs_fs_info *fs_info = device->fs_info; in btrfs_shrink_device() local
4673 struct btrfs_root *root = fs_info->dev_root; in btrfs_shrink_device()
4685 struct btrfs_super_block *super_copy = fs_info->super_copy; in btrfs_shrink_device()
4691 new_size = round_down(new_size, fs_info->sectorsize); in btrfs_shrink_device()
4693 diff = round_down(old_size - new_size, fs_info->sectorsize); in btrfs_shrink_device()
4710 mutex_lock(&fs_info->chunk_mutex); in btrfs_shrink_device()
4715 atomic64_sub(diff, &fs_info->free_chunk_space); in btrfs_shrink_device()
4724 mutex_unlock(&fs_info->chunk_mutex); in btrfs_shrink_device()
4729 mutex_unlock(&fs_info->chunk_mutex); in btrfs_shrink_device()
4739 mutex_lock(&fs_info->delete_unused_bgs_mutex); in btrfs_shrink_device()
4742 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_shrink_device()
4748 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_shrink_device()
4762 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_shrink_device()
4771 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_shrink_device()
4785 ret = btrfs_may_alloc_data_chunk(fs_info, chunk_offset); in btrfs_shrink_device()
4787 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_shrink_device()
4791 ret = btrfs_relocate_chunk(fs_info, chunk_offset); in btrfs_shrink_device()
4792 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_shrink_device()
4797 btrfs_warn(fs_info, in btrfs_shrink_device()
4821 mutex_lock(&fs_info->chunk_mutex); in btrfs_shrink_device()
4829 round_down(old_total - diff, fs_info->sectorsize)); in btrfs_shrink_device()
4830 mutex_unlock(&fs_info->chunk_mutex); in btrfs_shrink_device()
4843 mutex_lock(&fs_info->chunk_mutex); in btrfs_shrink_device()
4847 atomic64_add(diff, &fs_info->free_chunk_space); in btrfs_shrink_device()
4848 mutex_unlock(&fs_info->chunk_mutex); in btrfs_shrink_device()
4853 static int btrfs_add_system_chunk(struct btrfs_fs_info *fs_info, in btrfs_add_system_chunk() argument
4857 struct btrfs_super_block *super_copy = fs_info->super_copy; in btrfs_add_system_chunk()
4862 mutex_lock(&fs_info->chunk_mutex); in btrfs_add_system_chunk()
4866 mutex_unlock(&fs_info->chunk_mutex); in btrfs_add_system_chunk()
4877 mutex_unlock(&fs_info->chunk_mutex); in btrfs_add_system_chunk()
4912 struct btrfs_fs_info *info = trans->fs_info; in __btrfs_alloc_chunk()
5193 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_finish_chunk_alloc() local
5194 struct btrfs_root *extent_root = fs_info->extent_root; in btrfs_finish_chunk_alloc()
5195 struct btrfs_root *chunk_root = fs_info->chunk_root; in btrfs_finish_chunk_alloc()
5208 em = btrfs_get_chunk_map(fs_info, chunk_offset, chunk_size); in btrfs_finish_chunk_alloc()
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()
5266 btrfs_set_stack_chunk_sector_size(chunk, fs_info->sectorsize); in btrfs_finish_chunk_alloc()
5279 ret = btrfs_add_system_chunk(fs_info, &key, chunk, item_size); in btrfs_finish_chunk_alloc()
5299 lockdep_assert_held(&trans->fs_info->chunk_mutex); in btrfs_alloc_chunk()
5300 chunk_offset = find_next_chunk(trans->fs_info); in btrfs_alloc_chunk()
5306 struct btrfs_fs_info *fs_info = trans->fs_info; in init_first_rw_device() local
5312 chunk_offset = find_next_chunk(fs_info); in init_first_rw_device()
5313 alloc_profile = btrfs_metadata_alloc_profile(fs_info); in init_first_rw_device()
5318 sys_chunk_offset = find_next_chunk(fs_info); in init_first_rw_device()
5319 alloc_profile = btrfs_system_alloc_profile(fs_info); in init_first_rw_device()
5331 int btrfs_chunk_readonly(struct btrfs_fs_info *fs_info, u64 chunk_offset) in btrfs_chunk_readonly() argument
5339 em = btrfs_get_chunk_map(fs_info, chunk_offset, 1); in btrfs_chunk_readonly()
5388 int btrfs_num_copies(struct btrfs_fs_info *fs_info, u64 logical, u64 len) in btrfs_num_copies() argument
5394 em = btrfs_get_chunk_map(fs_info, logical, len); in btrfs_num_copies()
5424 down_read(&fs_info->dev_replace.rwsem); in btrfs_num_copies()
5425 if (btrfs_dev_replace_is_ongoing(&fs_info->dev_replace) && in btrfs_num_copies()
5426 fs_info->dev_replace.tgtdev) in btrfs_num_copies()
5428 up_read(&fs_info->dev_replace.rwsem); in btrfs_num_copies()
5433 unsigned long btrfs_full_stripe_len(struct btrfs_fs_info *fs_info, in btrfs_full_stripe_len() argument
5438 unsigned long len = fs_info->sectorsize; in btrfs_full_stripe_len()
5440 em = btrfs_get_chunk_map(fs_info, logical, len); in btrfs_full_stripe_len()
5451 int btrfs_is_parity_mirror(struct btrfs_fs_info *fs_info, u64 logical, u64 len) in btrfs_is_parity_mirror() argument
5457 em = btrfs_get_chunk_map(fs_info, logical, len); in btrfs_is_parity_mirror()
5468 static int find_live_mirror(struct btrfs_fs_info *fs_info, in find_live_mirror() argument
5489 fs_info->dev_replace.cont_reading_from_srcdev_mode == in find_live_mirror()
5491 srcdev = fs_info->dev_replace.srcdev; in find_live_mirror()
5589 static int __btrfs_map_block_for_discard(struct btrfs_fs_info *fs_info, in __btrfs_map_block_for_discard() argument
5616 em = btrfs_get_chunk_map(fs_info, logical, length); in __btrfs_map_block_for_discard()
5749 static int get_extra_mirror_from_replace(struct btrfs_fs_info *fs_info, in get_extra_mirror_from_replace() argument
5762 ret = __btrfs_map_block(fs_info, BTRFS_MAP_GET_READ_MIRRORS, in get_extra_mirror_from_replace()
5926 int btrfs_get_io_geometry(struct btrfs_fs_info *fs_info, enum btrfs_map_op op, in btrfs_get_io_geometry() argument
5941 em = btrfs_get_chunk_map(fs_info, logical, len); in btrfs_get_io_geometry()
5955 btrfs_crit(fs_info, in btrfs_get_io_geometry()
6012 static int __btrfs_map_block(struct btrfs_fs_info *fs_info, in __btrfs_map_block() argument
6031 struct btrfs_dev_replace *dev_replace = &fs_info->dev_replace; in __btrfs_map_block()
6042 return __btrfs_map_block_for_discard(fs_info, logical, in __btrfs_map_block()
6045 ret = btrfs_get_io_geometry(fs_info, op, logical, *length, &geom); in __btrfs_map_block()
6049 em = btrfs_get_chunk_map(fs_info, logical, *length); in __btrfs_map_block()
6071 ret = get_extra_mirror_from_replace(fs_info, logical, *length, in __btrfs_map_block()
6096 stripe_index = find_live_mirror(fs_info, map, 0, in __btrfs_map_block()
6122 stripe_index = find_live_mirror(fs_info, map, in __btrfs_map_block()
6169 btrfs_crit(fs_info, in __btrfs_map_block()
6269 int btrfs_map_block(struct btrfs_fs_info *fs_info, enum btrfs_map_op op, in btrfs_map_block() argument
6273 return __btrfs_map_block(fs_info, op, logical, length, bbio_ret, in btrfs_map_block()
6278 int btrfs_map_sblock(struct btrfs_fs_info *fs_info, enum btrfs_map_op op, in btrfs_map_sblock() argument
6282 return __btrfs_map_block(fs_info, op, logical, length, bbio_ret, 0, 1); in btrfs_map_sblock()
6285 int btrfs_rmap_block(struct btrfs_fs_info *fs_info, u64 chunk_start, in btrfs_rmap_block() argument
6297 em = btrfs_get_chunk_map(fs_info, chunk_start, 1); in btrfs_rmap_block()
6395 btrfs_bio_counter_dec(bbio->fs_info); in btrfs_end_bio()
6433 struct btrfs_fs_info *fs_info = device->fs_info; in btrfs_schedule_bio() local
6464 btrfs_queue_work(fs_info->submit_workers, &device->work); in btrfs_schedule_bio()
6471 struct btrfs_fs_info *fs_info = bbio->fs_info; in submit_stripe_bio() local
6477 btrfs_debug_in_rcu(fs_info, in submit_stripe_bio()
6484 btrfs_bio_counter_inc_noblocked(fs_info); in submit_stripe_bio()
6509 blk_status_t btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio, in btrfs_map_bio() argument
6525 btrfs_bio_counter_inc_blocked(fs_info); in btrfs_map_bio()
6526 ret = __btrfs_map_block(fs_info, btrfs_op(bio), logical, in btrfs_map_bio()
6529 btrfs_bio_counter_dec(fs_info); in btrfs_map_bio()
6537 bbio->fs_info = fs_info; in btrfs_map_bio()
6545 ret = raid56_parity_write(fs_info, bio, bbio, in btrfs_map_bio()
6548 ret = raid56_parity_recover(fs_info, bio, bbio, in btrfs_map_bio()
6552 btrfs_bio_counter_dec(fs_info); in btrfs_map_bio()
6557 btrfs_crit(fs_info, in btrfs_map_bio()
6581 btrfs_bio_counter_dec(fs_info); in btrfs_map_bio()
6651 struct btrfs_device *btrfs_alloc_device(struct btrfs_fs_info *fs_info, in btrfs_alloc_device() argument
6658 if (WARN_ON(!devid && !fs_info)) in btrfs_alloc_device()
6670 ret = find_next_devid(fs_info, &tmp); in btrfs_alloc_device()
6688 static void btrfs_report_missing_device(struct btrfs_fs_info *fs_info, in btrfs_report_missing_device() argument
6692 btrfs_err_rl(fs_info, "devid %llu uuid %pU is missing", in btrfs_report_missing_device()
6695 btrfs_warn_rl(fs_info, "devid %llu uuid %pU is missing", in btrfs_report_missing_device()
6722 struct btrfs_fs_info *fs_info = leaf->fs_info; in read_one_chunk() local
6723 struct extent_map_tree *map_tree = &fs_info->mapping_tree; in read_one_chunk()
6793 map->stripes[i].dev = btrfs_find_device(fs_info->fs_devices, in read_one_chunk()
6796 !btrfs_test_opt(fs_info, DEGRADED)) { in read_one_chunk()
6798 btrfs_report_missing_device(fs_info, devid, uuid, true); in read_one_chunk()
6803 add_missing_dev(fs_info->fs_devices, devid, in read_one_chunk()
6807 btrfs_err(fs_info, in read_one_chunk()
6812 btrfs_report_missing_device(fs_info, devid, uuid, false); in read_one_chunk()
6823 btrfs_err(fs_info, in read_one_chunk()
6855 static struct btrfs_fs_devices *open_seed_devices(struct btrfs_fs_info *fs_info, in open_seed_devices() argument
6864 fs_devices = fs_info->fs_devices->seed; in open_seed_devices()
6874 if (!btrfs_test_opt(fs_info, DEGRADED)) in open_seed_devices()
6890 ret = open_fs_devices(fs_devices, FMODE_READ, fs_info->bdev_holder); 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()
6913 struct btrfs_fs_info *fs_info = leaf->fs_info; in read_one_dev() local
6914 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in read_one_dev()
6928 fs_devices = open_seed_devices(fs_info, fs_uuid); in read_one_dev()
6933 device = btrfs_find_device(fs_info->fs_devices, devid, dev_uuid, in read_one_dev()
6936 if (!btrfs_test_opt(fs_info, DEGRADED)) { in read_one_dev()
6937 btrfs_report_missing_device(fs_info, devid, in read_one_dev()
6944 btrfs_err(fs_info, in read_one_dev()
6949 btrfs_report_missing_device(fs_info, devid, dev_uuid, false); in read_one_dev()
6952 if (!btrfs_test_opt(fs_info, DEGRADED)) { in read_one_dev()
6953 btrfs_report_missing_device(fs_info, in read_one_dev()
6957 btrfs_report_missing_device(fs_info, devid, in read_one_dev()
6989 if (device->fs_devices != fs_info->fs_devices) { in read_one_dev()
7002 &fs_info->free_chunk_space); in read_one_dev()
7008 int btrfs_read_sys_array(struct btrfs_fs_info *fs_info) in btrfs_read_sys_array() argument
7010 struct btrfs_root *root = fs_info->tree_root; in btrfs_read_sys_array()
7011 struct btrfs_super_block *super_copy = fs_info->super_copy; in btrfs_read_sys_array()
7025 ASSERT(BTRFS_SUPER_INFO_SIZE <= fs_info->nodesize); in btrfs_read_sys_array()
7031 sb = btrfs_find_create_tree_block(fs_info, BTRFS_SUPER_INFO_OFFSET); in btrfs_read_sys_array()
7082 btrfs_err(fs_info, in btrfs_read_sys_array()
7091 btrfs_err(fs_info, in btrfs_read_sys_array()
7106 btrfs_err(fs_info, in btrfs_read_sys_array()
7121 btrfs_err(fs_info, "sys_array too short to read %u bytes at offset %u", in btrfs_read_sys_array()
7136 bool btrfs_check_rw_degradable(struct btrfs_fs_info *fs_info, in btrfs_check_rw_degradable() argument
7139 struct extent_map_tree *map_tree = &fs_info->mapping_tree; in btrfs_check_rw_degradable()
7174 btrfs_warn(fs_info, in btrfs_check_rw_degradable()
7193 int btrfs_read_chunk_tree(struct btrfs_fs_info *fs_info) in btrfs_read_chunk_tree() argument
7195 struct btrfs_root *root = fs_info->chunk_root; in btrfs_read_chunk_tree()
7213 mutex_lock(&fs_info->chunk_mutex); in btrfs_read_chunk_tree()
7261 if (total_dev != fs_info->fs_devices->total_devices) { in btrfs_read_chunk_tree()
7262 btrfs_err(fs_info, in btrfs_read_chunk_tree()
7264 btrfs_super_num_devices(fs_info->super_copy), in btrfs_read_chunk_tree()
7269 if (btrfs_super_total_bytes(fs_info->super_copy) < in btrfs_read_chunk_tree()
7270 fs_info->fs_devices->total_rw_bytes) { in btrfs_read_chunk_tree()
7271 btrfs_err(fs_info, in btrfs_read_chunk_tree()
7273 btrfs_super_total_bytes(fs_info->super_copy), in btrfs_read_chunk_tree()
7274 fs_info->fs_devices->total_rw_bytes); in btrfs_read_chunk_tree()
7280 mutex_unlock(&fs_info->chunk_mutex); in btrfs_read_chunk_tree()
7287 void btrfs_init_devices_late(struct btrfs_fs_info *fs_info) in btrfs_init_devices_late() argument
7289 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_init_devices_late()
7295 device->fs_info = fs_info; in btrfs_init_devices_late()
7325 int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info) in btrfs_init_dev_stats() argument
7328 struct btrfs_root *dev_root = fs_info->dev_root; in btrfs_init_dev_stats()
7329 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_init_dev_stats()
7385 struct btrfs_fs_info *fs_info = trans->fs_info; in update_dev_stat_item() local
7386 struct btrfs_root *dev_root = fs_info->dev_root; in update_dev_stat_item()
7403 btrfs_warn_in_rcu(fs_info, in update_dev_stat_item()
7414 btrfs_warn_in_rcu(fs_info, in update_dev_stat_item()
7428 btrfs_warn_in_rcu(fs_info, in update_dev_stat_item()
7452 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_run_dev_stats() local
7453 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_run_dev_stats()
7497 btrfs_err_rl_in_rcu(dev->fs_info, in btrfs_dev_stat_print_on_error()
7517 btrfs_info_in_rcu(dev->fs_info, in btrfs_dev_stat_print_on_load()
7527 int btrfs_get_dev_stats(struct btrfs_fs_info *fs_info, in btrfs_get_dev_stats() argument
7531 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_get_dev_stats()
7535 dev = btrfs_find_device(fs_info->fs_devices, stats->devid, NULL, NULL, in btrfs_get_dev_stats()
7540 btrfs_warn(fs_info, "get dev_stats failed, device not found"); in btrfs_get_dev_stats()
7543 btrfs_warn(fs_info, "get dev_stats failed, not yet valid"); in btrfs_get_dev_stats()
7614 mutex_lock(&trans->fs_info->chunk_mutex); in btrfs_commit_device_sizes()
7621 mutex_unlock(&trans->fs_info->chunk_mutex); in btrfs_commit_device_sizes()
7624 void btrfs_set_fs_info_ptr(struct btrfs_fs_info *fs_info) in btrfs_set_fs_info_ptr() argument
7626 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_set_fs_info_ptr()
7628 fs_devices->fs_info = fs_info; in btrfs_set_fs_info_ptr()
7633 void btrfs_reset_fs_info_ptr(struct btrfs_fs_info *fs_info) in btrfs_reset_fs_info_ptr() argument
7635 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; in btrfs_reset_fs_info_ptr()
7637 fs_devices->fs_info = NULL; in btrfs_reset_fs_info_ptr()
7654 static int verify_one_dev_extent(struct btrfs_fs_info *fs_info, in verify_one_dev_extent() argument
7658 struct extent_map_tree *em_tree = &fs_info->mapping_tree; in verify_one_dev_extent()
7672 btrfs_err(fs_info, in verify_one_dev_extent()
7682 btrfs_err(fs_info, in verify_one_dev_extent()
7695 btrfs_err(fs_info, in verify_one_dev_extent()
7706 btrfs_err(fs_info, in verify_one_dev_extent()
7713 dev = btrfs_find_device(fs_info->fs_devices, devid, NULL, NULL, true); in verify_one_dev_extent()
7715 btrfs_err(fs_info, "failed to find devid %llu", devid); in verify_one_dev_extent()
7722 dev = btrfs_find_device(fs_info->fs_devices->seed, devid, NULL, in verify_one_dev_extent()
7725 btrfs_err(fs_info, "failed to find seed devid %llu", in verify_one_dev_extent()
7733 btrfs_err(fs_info, in verify_one_dev_extent()
7745 static int verify_chunk_dev_extent_mapping(struct btrfs_fs_info *fs_info) in verify_chunk_dev_extent_mapping() argument
7747 struct extent_map_tree *em_tree = &fs_info->mapping_tree; in verify_chunk_dev_extent_mapping()
7757 btrfs_err(fs_info, in verify_chunk_dev_extent_mapping()
7777 int btrfs_verify_dev_extents(struct btrfs_fs_info *fs_info) in btrfs_verify_dev_extents() argument
7780 struct btrfs_root *root = fs_info->dev_root; in btrfs_verify_dev_extents()
7830 btrfs_err(fs_info, in btrfs_verify_dev_extents()
7837 ret = verify_one_dev_extent(fs_info, chunk_offset, devid, in btrfs_verify_dev_extents()
7854 ret = verify_chunk_dev_extent_mapping(fs_info); in btrfs_verify_dev_extents()
7864 bool btrfs_pinned_by_swapfile(struct btrfs_fs_info *fs_info, void *ptr) in btrfs_pinned_by_swapfile() argument
7869 spin_lock(&fs_info->swapfile_pins_lock); in btrfs_pinned_by_swapfile()
7870 node = fs_info->swapfile_pins.rb_node; in btrfs_pinned_by_swapfile()
7880 spin_unlock(&fs_info->swapfile_pins_lock); in btrfs_pinned_by_swapfile()