/linux/fs/btrfs/ |
H A D | space-info.c | 28 * 1) space_info. This is the ultimate arbiter of how much space we can use. 31 * reservations we care about total_bytes - SUM(space_info->bytes_) when 32 * determining if there is space to make an allocation. There is a space_info 38 * much space is accounted for in space_info->bytes_may_use. 44 * values to adjust the space_info counters. 53 * space_info->bytes_may_use += num_bytes 57 * space_info->bytes_may_use -= num_bytes 58 * space_info->bytes_reserved += extent_bytes 62 * space_info->bytes_reserved -= extent_bytes 63 * space_info 231 btrfs_update_space_info_chunk_size(struct btrfs_space_info * space_info,u64 chunk_size) btrfs_update_space_info_chunk_size() argument 238 init_space_info(struct btrfs_fs_info * info,struct btrfs_space_info * space_info,u64 flags) init_space_info() argument 288 struct btrfs_space_info *space_info; create_space_info() local 362 struct btrfs_space_info *space_info = block_group->space_info; btrfs_add_bg_to_space_info() local 425 calc_available_free_space(struct btrfs_fs_info * fs_info,const struct btrfs_space_info * space_info,enum btrfs_reserve_flush_enum flush) calc_available_free_space() argument 494 btrfs_can_overcommit(struct btrfs_fs_info * fs_info,const struct btrfs_space_info * space_info,u64 bytes,enum btrfs_reserve_flush_enum flush) btrfs_can_overcommit() argument 512 remove_ticket(struct btrfs_space_info * space_info,struct reserve_ticket * ticket) remove_ticket() argument 527 btrfs_try_granting_tickets(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info) btrfs_try_granting_tickets() argument 572 space_info_flag_to_str(const struct btrfs_space_info * space_info) space_info_flag_to_str() argument 674 shrink_delalloc(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,u64 to_reclaim,bool wait_ordered,bool for_preempt) shrink_delalloc() argument 805 flush_space(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,u64 num_bytes,enum btrfs_flush_state state,bool for_preempt) flush_space() argument 904 btrfs_calc_reclaim_metadata_size(struct btrfs_fs_info * fs_info,const struct btrfs_space_info * space_info) btrfs_calc_reclaim_metadata_size() argument 929 need_preemptive_reclaim(struct btrfs_fs_info * fs_info,const struct btrfs_space_info * space_info) need_preemptive_reclaim() argument 1041 steal_from_global_rsv(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,struct reserve_ticket * ticket) steal_from_global_rsv() argument 1088 maybe_fail_all_tickets(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info) maybe_fail_all_tickets() argument 1132 do_async_reclaim_metadata_space(struct btrfs_space_info * space_info) do_async_reclaim_metadata_space() argument 1222 struct btrfs_space_info *space_info; btrfs_async_reclaim_metadata_space() local 1244 struct btrfs_space_info *space_info; btrfs_preempt_reclaim_metadata_space() local 1378 do_async_reclaim_data_space(struct btrfs_space_info * space_info) do_async_reclaim_data_space() argument 1454 struct btrfs_space_info *space_info; btrfs_async_reclaim_data_space() local 1493 priority_reclaim_metadata_space(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,struct reserve_ticket * ticket,const enum btrfs_flush_state * states,int states_nr) priority_reclaim_metadata_space() argument 1552 priority_reclaim_data_space(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,struct reserve_ticket * ticket) priority_reclaim_data_space() argument 1579 wait_reserve_ticket(struct btrfs_space_info * space_info,struct reserve_ticket * ticket) wait_reserve_ticket() argument 1626 handle_reserve_ticket(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,struct reserve_ticket * ticket,u64 start_ns,u64 orig_bytes,enum btrfs_reserve_flush_enum flush) handle_reserve_ticket() argument 1682 maybe_clamp_preempt(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info) maybe_clamp_preempt() argument 1731 __reserve_bytes(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,u64 orig_bytes,enum btrfs_reserve_flush_enum flush) __reserve_bytes() argument 1878 btrfs_reserve_metadata_bytes(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info,u64 orig_bytes,enum btrfs_reserve_flush_enum flush) btrfs_reserve_metadata_bytes() argument 1905 btrfs_reserve_data_bytes(struct btrfs_space_info * space_info,u64 bytes,enum btrfs_reserve_flush_enum flush) btrfs_reserve_data_bytes() argument 1929 struct btrfs_space_info *space_info; btrfs_dump_space_info_for_trans_abort() local 2030 calc_dynamic_reclaim_threshold(const struct btrfs_space_info * space_info) calc_dynamic_reclaim_threshold() argument 2049 btrfs_calc_reclaim_threshold(const struct btrfs_space_info * space_info) btrfs_calc_reclaim_threshold() argument 2063 is_reclaim_urgent(struct btrfs_space_info * space_info) is_reclaim_urgent() argument 2072 do_reclaim_sweep(struct btrfs_space_info * space_info,int raid) do_reclaim_sweep() argument 2119 btrfs_space_info_update_reclaimable(struct btrfs_space_info * space_info,s64 bytes) btrfs_space_info_update_reclaimable() argument 2130 btrfs_set_periodic_reclaim_ready(struct btrfs_space_info * space_info,bool ready) btrfs_set_periodic_reclaim_ready() argument 2142 btrfs_should_periodic_reclaim(struct btrfs_space_info * space_info) btrfs_should_periodic_reclaim() argument 2162 struct btrfs_space_info *space_info; btrfs_reclaim_sweep() local 2172 btrfs_return_free_space(struct btrfs_space_info * space_info,u64 len) btrfs_return_free_space() argument [all...] |
H A D | space-info.h | 72 * if (num_bytes < (space_info->total_bytes - 73 * btrfs_space_info_used(space_info, false)) 216 * Periodic reclaim should be a no-op if a space_info hasn't 235 static inline bool btrfs_mixed_space_info(const struct btrfs_space_info *space_info) in btrfs_mixed_space_info() argument 237 return ((space_info->flags & BTRFS_BLOCK_GROUP_METADATA) && in btrfs_mixed_space_info() 238 (space_info->flags & BTRFS_BLOCK_GROUP_DATA)); in btrfs_mixed_space_info() 265 DECLARE_SPACE_INFO_UPDATE(bytes_may_use, "space_info"); 272 void btrfs_update_space_info_chunk_size(struct btrfs_space_info *space_info, 283 struct btrfs_space_info *space_info, 287 struct btrfs_space_info *space_info); 293 btrfs_space_info_free_bytes_may_use(struct btrfs_space_info * space_info,u64 num_bytes) btrfs_space_info_free_bytes_may_use() argument [all...] |
H A D | block-rsv.c | 28 * accounted for in space_info->bytes_may_use, and then add the bytes to 51 * space_info->bytes_may_use. 92 * content to just reserve space from the space_info on demand. 109 struct btrfs_space_info *space_info = block_rsv->space_info; in block_rsv_release_bytes() local 153 btrfs_space_info_free_bytes_may_use(space_info, num_bytes); in block_rsv_release_bytes() 186 rsv->space_info = btrfs_find_space_info(fs_info, in btrfs_init_metadata_block_rsv() 221 ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv->space_info, in btrfs_block_rsv_add() 262 ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv->space_info, in btrfs_block_rsv_refill() 289 if (target && block_rsv->space_info ! in btrfs_block_rsv_release() 432 struct btrfs_space_info *space_info; btrfs_init_global_block_rsv() local [all...] |
H A D | block-group.c | 392 struct btrfs_space_info *space_info = bg->space_info; in btrfs_wait_block_group_reservations() local 409 down_write(&space_info->groups_sem); in btrfs_wait_block_group_reservations() 410 up_write(&space_info->groups_sem); in btrfs_wait_block_group_reservations() 906 spin_lock(&block_group->space_info->lock); in caching_thread() 909 block_group->space_info->bytes_used += bytes_used >> 1; in caching_thread() 911 spin_unlock(&block_group->space_info->lock); in caching_thread() 1011 struct list_head *head = &fs_info->space_info; in clear_incompat_bg_bits() 1167 down_write(&block_group->space_info->groups_sem); in btrfs_remove_block_group() 1173 if (list_empty(&block_group->space_info in btrfs_remove_block_group() 1511 struct btrfs_space_info *space_info; btrfs_delete_unused_bgs() local 1834 struct btrfs_space_info *space_info; btrfs_reclaim_bgs_work() local 2538 struct btrfs_space_info *space_info; btrfs_read_block_groups() local 2879 btrfs_make_block_group(struct btrfs_trans_handle * trans,struct btrfs_space_info * space_info,u64 type,u64 chunk_offset,u64 size) btrfs_make_block_group() argument 2979 struct btrfs_space_info *space_info = cache->space_info; btrfs_inc_block_group_ro() local 3681 struct btrfs_space_info *space_info; btrfs_update_block_group() local 3802 struct btrfs_space_info *space_info = cache->space_info; btrfs_add_reserved_bytes() local 3854 struct btrfs_space_info *space_info = cache->space_info; btrfs_free_reserved_bytes() local 3914 struct btrfs_space_info *space_info; btrfs_force_chunk_alloc() local 3926 do_chunk_alloc(struct btrfs_trans_handle * trans,struct btrfs_space_info * space_info,u64 flags) do_chunk_alloc() argument 4139 btrfs_chunk_alloc(struct btrfs_trans_handle * trans,struct btrfs_space_info * space_info,u64 flags,enum btrfs_chunk_alloc_enum force) btrfs_chunk_alloc() argument 4317 struct btrfs_space_info *space_info; reserve_chunk_space() local 4436 check_removing_space_info(struct btrfs_space_info * space_info) check_removing_space_info() argument 4481 struct btrfs_space_info *space_info; btrfs_free_block_groups() local [all...] |
H A D | sysfs.c | 742 BTRFS_ATTR(space_info, field, btrfs_space_info_show_##field) 763 struct btrfs_space_info *space_info = to_space_info(kobj); in btrfs_chunk_size_store() local 778 if (space_info->flags & BTRFS_BLOCK_GROUP_SYSTEM) in btrfs_chunk_size_store() 799 btrfs_update_space_info_chunk_size(space_info, val); in btrfs_chunk_size_store() 851 struct btrfs_space_info *space_info = to_space_info(kobj); in btrfs_force_chunk_alloc_store() local 877 ret = btrfs_force_chunk_alloc(trans, space_info->flags); in btrfs_force_chunk_alloc_store() 885 BTRFS_ATTR_W(space_info, force_chunk_alloc, btrfs_force_chunk_alloc_store); 902 BTRFS_ATTR_RW(space_info, chunk_size, btrfs_chunk_size_show, btrfs_chunk_size_store); 903 BTRFS_ATTR(space_info, size_classes, btrfs_size_classes_show); 909 struct btrfs_space_info *space_info in btrfs_sinfo_bg_reclaim_threshold_show() local 922 struct btrfs_space_info *space_info = to_space_info(kobj); btrfs_sinfo_bg_reclaim_threshold_store() local 949 struct btrfs_space_info *space_info = to_space_info(kobj); btrfs_sinfo_dynamic_reclaim_show() local 958 struct btrfs_space_info *space_info = to_space_info(kobj); btrfs_sinfo_dynamic_reclaim_store() local 982 struct btrfs_space_info *space_info = to_space_info(kobj); btrfs_sinfo_periodic_reclaim_show() local 991 struct btrfs_space_info *space_info = to_space_info(kobj); btrfs_sinfo_periodic_reclaim_store() local 1859 struct btrfs_space_info *space_info = cache->space_info; btrfs_sysfs_add_block_group_type() local 1922 btrfs_sysfs_remove_space_info(struct btrfs_space_info * space_info) btrfs_sysfs_remove_space_info() argument 1940 alloc_name(struct btrfs_space_info * space_info) alloc_name() argument 1981 btrfs_sysfs_add_space_info_type(struct btrfs_fs_info * fs_info,struct btrfs_space_info * space_info) btrfs_sysfs_add_space_info_type() argument [all...] |
H A D | extent-tree.c | 2597 spin_lock(&cache->space_info->lock); in pin_down_extent() 2600 btrfs_space_info_update_bytes_pinned(cache->space_info, num_bytes); in pin_down_extent() 2603 cache->space_info->bytes_reserved -= num_bytes; in pin_down_extent() 2606 spin_unlock(&cache->space_info->lock); in pin_down_extent() 2718 struct btrfs_space_info *space_info, u64 *empty_cluster) in fetch_cluster_info() argument 2723 if (btrfs_mixed_space_info(space_info)) in fetch_cluster_info() 2726 if (space_info->flags & BTRFS_BLOCK_GROUP_METADATA) { in fetch_cluster_info() 2732 } else if ((space_info->flags & BTRFS_BLOCK_GROUP_DATA) && in fetch_cluster_info() 2746 struct btrfs_space_info *space_info; in unpin_extent_range() local 2770 cache->space_info, in unpin_extent_range() 3854 struct btrfs_space_info *space_info = block_group->space_info; do_allocation_zoned() local 4156 find_free_extent_update_loop(struct btrfs_fs_info * fs_info,struct btrfs_key * ins,struct find_free_extent_ctl * ffe_ctl,struct btrfs_space_info * space_info,bool full_search) find_free_extent_update_loop() argument 4250 prepare_allocation_clustered(struct btrfs_fs_info * fs_info,struct find_free_extent_ctl * ffe_ctl,struct btrfs_space_info * space_info,struct btrfs_key * ins) prepare_allocation_clustered() argument 4337 prepare_allocation(struct btrfs_fs_info * fs_info,struct find_free_extent_ctl * ffe_ctl,struct btrfs_space_info * space_info,struct btrfs_key * ins) prepare_allocation() argument 4384 struct btrfs_space_info *space_info; find_free_extent() local 4988 struct btrfs_space_info *space_info; btrfs_alloc_logged_file_extent() local [all...] |
H A D | zoned.c | 2534 struct btrfs_space_info *space_info = data_sinfo; in btrfs_zoned_reserve_data_reloc_bg() local 2553 alloc_flags = btrfs_get_alloc_profile(fs_info, space_info->flags); in btrfs_zoned_reserve_data_reloc_bg() 2558 bg_list = &space_info->block_groups[index]; in btrfs_zoned_reserve_data_reloc_bg() 2568 if (space_info == data_sinfo) { in btrfs_zoned_reserve_data_reloc_bg() 2576 down_write(&space_info->groups_sem); in btrfs_zoned_reserve_data_reloc_bg() 2579 ASSERT(!list_empty(&space_info->block_groups[index])); in btrfs_zoned_reserve_data_reloc_bg() 2580 up_write(&space_info->groups_sem); in btrfs_zoned_reserve_data_reloc_bg() 2582 spin_lock(&space_info->lock); in btrfs_zoned_reserve_data_reloc_bg() 2583 space_info->total_bytes -= bg->length; in btrfs_zoned_reserve_data_reloc_bg() 2584 space_info->disk_total -= bg->length * factor; in btrfs_zoned_reserve_data_reloc_bg() [all …]
|
H A D | sysfs.h | 41 struct btrfs_space_info *space_info); 42 void btrfs_sysfs_remove_space_info(struct btrfs_space_info *space_info);
|
H A D | block-group.h | 170 struct btrfs_space_info *space_info; member 227 * on the space_info's groups_sem semaphore. 336 struct btrfs_space_info *space_info, 353 struct btrfs_space_info *space_info, u64 flags,
|
H A D | delayed-ref.c | 214 struct btrfs_space_info *space_info = block_rsv->space_info; in btrfs_delayed_refs_rsv_refill() local 231 ret = btrfs_reserve_metadata_bytes(fs_info, space_info, num_bytes, flush); in btrfs_delayed_refs_rsv_refill() 260 btrfs_space_info_free_bytes_may_use(space_info, to_free); in btrfs_delayed_refs_rsv_refill() 1299 spin_lock(&bg->space_info->lock); in btrfs_destroy_delayed_refs() 1302 btrfs_space_info_update_bytes_pinned(bg->space_info, in btrfs_destroy_delayed_refs() 1305 bg->space_info->bytes_reserved -= head->num_bytes; in btrfs_destroy_delayed_refs() 1307 spin_unlock(&bg->space_info->lock); in btrfs_destroy_delayed_refs()
|
H A D | block-rsv.h | 35 struct btrfs_space_info *space_info; member
|
H A D | transaction.c | 570 struct btrfs_space_info *si = fs_info->trans_block_rsv.space_info; in btrfs_reserve_trans_metadata() 666 if (trans_rsv->space_info->force_alloc) in start_transaction() 758 * If the space_info is marked ALLOC_FORCE then we'll get upgraded to in start_transaction() 764 struct btrfs_space_info *space_info = h->block_rsv->space_info; in start_transaction() local 765 u64 flags = space_info->flags; in start_transaction() 767 btrfs_chunk_alloc(h, space_info, btrfs_get_alloc_profile(fs_info, flags), in start_transaction() 807 btrfs_space_info_free_bytes_may_use(trans_rsv->space_info, delayed_refs_bytes); in start_transaction()
|
H A D | free-space-cache.c | 2696 struct btrfs_space_info *sinfo = block_group->space_info; in __btrfs_add_free_space_zoned() 3655 struct btrfs_space_info *space_info = block_group->space_info; in do_trimming() local 3665 spin_lock(&space_info->lock); in do_trimming() 3669 space_info->bytes_reserved += reserved_bytes; in do_trimming() 3673 spin_unlock(&space_info->lock); in do_trimming() 3694 spin_lock(&space_info->lock); in do_trimming() 3697 space_info->bytes_readonly += reserved_bytes; in do_trimming() 3699 space_info->bytes_reserved -= reserved_bytes; in do_trimming() 3701 spin_unlock(&space_info in do_trimming() [all...] |
H A D | root-tree.c | 530 rsv->space_info = btrfs_find_space_info(fs_info, in btrfs_subvolume_reserve_metadata()
|
H A D | fs.h | 672 * The space_info list is effectively read only after initial setup. 676 struct list_head space_info; member
|
H A D | super.c | 1737 list_for_each_entry(found, &fs_info->space_info, list) { in btrfs_statfs() 1808 if (!mixed && block_rsv->space_info->full && in btrfs_statfs()
|
H A D | tree-log.c | 2618 spin_lock(&cache->space_info->lock); in unaccount_log_buffer() 2621 cache->space_info->bytes_reserved -= fs_info->nodesize; in unaccount_log_buffer() 2623 spin_unlock(&cache->space_info->lock); in unaccount_log_buffer()
|
H A D | ioctl.c | 2983 list_for_each_entry(tmp, &fs_info->space_info, list) { in btrfs_ioctl_space_info() 3002 * Global block reserve, exported as a space_info in btrfs_ioctl_space_info() 3036 list_for_each_entry(tmp, &fs_info->space_info, list) { in btrfs_ioctl_space_info()
|
H A D | disk-io.c | 2816 INIT_LIST_HEAD(&fs_info->space_info); in btrfs_init_fs_info()
|