Lines Matching refs:bg
305 struct btrfs_block_group *bg; in btrfs_inc_nocow_writers() local
308 bg = btrfs_lookup_block_group(fs_info, bytenr); in btrfs_inc_nocow_writers()
309 if (!bg) in btrfs_inc_nocow_writers()
312 spin_lock(&bg->lock); in btrfs_inc_nocow_writers()
313 if (bg->ro) in btrfs_inc_nocow_writers()
316 atomic_inc(&bg->nocow_writers); in btrfs_inc_nocow_writers()
317 spin_unlock(&bg->lock); in btrfs_inc_nocow_writers()
320 btrfs_put_block_group(bg); in btrfs_inc_nocow_writers()
325 return bg; in btrfs_inc_nocow_writers()
341 void btrfs_dec_nocow_writers(struct btrfs_block_group *bg) in btrfs_dec_nocow_writers() argument
343 if (atomic_dec_and_test(&bg->nocow_writers)) in btrfs_dec_nocow_writers()
344 wake_up_var(&bg->nocow_writers); in btrfs_dec_nocow_writers()
347 btrfs_put_block_group(bg); in btrfs_dec_nocow_writers()
350 void btrfs_wait_nocow_writers(struct btrfs_block_group *bg) in btrfs_wait_nocow_writers() argument
352 wait_var_event(&bg->nocow_writers, !atomic_read(&bg->nocow_writers)); in btrfs_wait_nocow_writers()
358 struct btrfs_block_group *bg; in btrfs_dec_block_group_reservations() local
360 bg = btrfs_lookup_block_group(fs_info, start); in btrfs_dec_block_group_reservations()
361 ASSERT(bg); in btrfs_dec_block_group_reservations()
362 if (atomic_dec_and_test(&bg->reservations)) in btrfs_dec_block_group_reservations()
363 wake_up_var(&bg->reservations); in btrfs_dec_block_group_reservations()
364 btrfs_put_block_group(bg); in btrfs_dec_block_group_reservations()
367 void btrfs_wait_block_group_reservations(struct btrfs_block_group *bg) in btrfs_wait_block_group_reservations() argument
369 struct btrfs_space_info *space_info = bg->space_info; in btrfs_wait_block_group_reservations()
371 ASSERT(bg->ro); in btrfs_wait_block_group_reservations()
373 if (!(bg->flags & BTRFS_BLOCK_GROUP_DATA)) in btrfs_wait_block_group_reservations()
389 wait_var_event(&bg->reservations, !atomic_read(&bg->reservations)); in btrfs_wait_block_group_reservations()
1239 struct btrfs_block_group *bg) in clean_pinned_extents() argument
1241 struct btrfs_fs_info *fs_info = bg->fs_info; in clean_pinned_extents()
1243 const u64 start = bg->start; in clean_pinned_extents()
1244 const u64 end = start + bg->length - 1; in clean_pinned_extents()
1495 void btrfs_mark_bg_unused(struct btrfs_block_group *bg) in btrfs_mark_bg_unused() argument
1497 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_mark_bg_unused()
1500 if (list_empty(&bg->bg_list)) { in btrfs_mark_bg_unused()
1501 btrfs_get_block_group(bg); in btrfs_mark_bg_unused()
1502 trace_btrfs_add_unused_block_group(bg); in btrfs_mark_bg_unused()
1503 list_add_tail(&bg->bg_list, &fs_info->unused_bgs); in btrfs_mark_bg_unused()
1534 struct btrfs_block_group *bg; in btrfs_reclaim_bgs_work() local
1574 bg = list_first_entry(&fs_info->reclaim_bgs, in btrfs_reclaim_bgs_work()
1577 list_del_init(&bg->bg_list); in btrfs_reclaim_bgs_work()
1579 space_info = bg->space_info; in btrfs_reclaim_bgs_work()
1585 spin_lock(&bg->lock); in btrfs_reclaim_bgs_work()
1586 if (bg->reserved || bg->pinned || bg->ro) { in btrfs_reclaim_bgs_work()
1593 spin_unlock(&bg->lock); in btrfs_reclaim_bgs_work()
1597 spin_unlock(&bg->lock); in btrfs_reclaim_bgs_work()
1611 zone_unusable = bg->zone_unusable; in btrfs_reclaim_bgs_work()
1612 ret = inc_block_group_ro(bg, 0); in btrfs_reclaim_bgs_work()
1619 bg->start, div_u64(bg->used * 100, bg->length), in btrfs_reclaim_bgs_work()
1620 div64_u64(zone_unusable * 100, bg->length)); in btrfs_reclaim_bgs_work()
1621 trace_btrfs_reclaim_block_group(bg); in btrfs_reclaim_bgs_work()
1622 ret = btrfs_relocate_chunk(fs_info, bg->start); in btrfs_reclaim_bgs_work()
1624 btrfs_dec_block_group_ro(bg); in btrfs_reclaim_bgs_work()
1626 bg->start); in btrfs_reclaim_bgs_work()
1630 btrfs_put_block_group(bg); in btrfs_reclaim_bgs_work()
1647 void btrfs_mark_bg_to_reclaim(struct btrfs_block_group *bg) in btrfs_mark_bg_to_reclaim() argument
1649 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_mark_bg_to_reclaim()
1652 if (list_empty(&bg->bg_list)) { in btrfs_mark_bg_to_reclaim()
1653 btrfs_get_block_group(bg); in btrfs_mark_bg_to_reclaim()
1654 trace_btrfs_add_reclaim_block_group(bg); in btrfs_mark_bg_to_reclaim()
1655 list_add_tail(&bg->bg_list, &fs_info->reclaim_bgs); in btrfs_mark_bg_to_reclaim()
1665 struct btrfs_block_group_item bg; in read_bg_from_eb() local
1693 read_extent_buffer(leaf, &bg, btrfs_item_ptr_offset(leaf, slot), in read_bg_from_eb()
1694 sizeof(bg)); in read_bg_from_eb()
1695 flags = btrfs_stack_block_group_flags(&bg) & in read_bg_from_eb()
1941 struct btrfs_block_group *bg; in check_chunk_block_group_mappings() local
1957 bg = btrfs_lookup_block_group(fs_info, em->start); in check_chunk_block_group_mappings()
1958 if (!bg) { in check_chunk_block_group_mappings()
1966 if (bg->start != em->start || bg->length != em->len || in check_chunk_block_group_mappings()
1967 (bg->flags & BTRFS_BLOCK_GROUP_TYPE_MASK) != in check_chunk_block_group_mappings()
1973 bg->start, bg->length, in check_chunk_block_group_mappings()
1974 bg->flags & BTRFS_BLOCK_GROUP_TYPE_MASK); in check_chunk_block_group_mappings()
1977 btrfs_put_block_group(bg); in check_chunk_block_group_mappings()
1982 btrfs_put_block_group(bg); in check_chunk_block_group_mappings()
2113 struct btrfs_block_group *bg; in fill_dummy_bgs() local
2117 bg = btrfs_create_block_group_cache(fs_info, em->start); in fill_dummy_bgs()
2118 if (!bg) { in fill_dummy_bgs()
2124 bg->length = em->len; in fill_dummy_bgs()
2125 bg->flags = map->type; in fill_dummy_bgs()
2126 bg->cached = BTRFS_CACHE_FINISHED; in fill_dummy_bgs()
2127 bg->used = em->len; in fill_dummy_bgs()
2128 bg->flags = map->type; in fill_dummy_bgs()
2129 ret = btrfs_add_block_group_cache(fs_info, bg); in fill_dummy_bgs()
2136 btrfs_put_block_group(bg); in fill_dummy_bgs()
2141 btrfs_remove_free_space_cache(bg); in fill_dummy_bgs()
2142 btrfs_put_block_group(bg); in fill_dummy_bgs()
2146 btrfs_add_bg_to_space_info(fs_info, bg); in fill_dummy_bgs()
2148 set_avail_alloc_bits(fs_info, bg->flags); in fill_dummy_bgs()
3214 static inline bool should_reclaim_block_group(struct btrfs_block_group *bg, in should_reclaim_block_group() argument
3217 const struct btrfs_space_info *space_info = bg->space_info; in should_reclaim_block_group()
3219 const u64 new_val = bg->used; in should_reclaim_block_group()
3226 thresh = div_factor_fine(bg->length, reclaim_thresh); in should_reclaim_block_group()
3472 struct btrfs_block_group *bg; in do_chunk_alloc() local
3483 bg = btrfs_create_chunk(trans, flags); in do_chunk_alloc()
3484 if (IS_ERR(bg)) { in do_chunk_alloc()
3485 ret = PTR_ERR(bg); in do_chunk_alloc()
3489 ret = btrfs_chunk_alloc_add_chunk_item(trans, bg); in do_chunk_alloc()
3545 ret = btrfs_chunk_alloc_add_chunk_item(trans, bg); in do_chunk_alloc()
3560 btrfs_get_block_group(bg); in do_chunk_alloc()
3561 return bg; in do_chunk_alloc()
3852 struct btrfs_block_group *bg; in reserve_chunk_space() local
3860 bg = btrfs_create_chunk(trans, flags); in reserve_chunk_space()
3861 if (IS_ERR(bg)) { in reserve_chunk_space()
3862 ret = PTR_ERR(bg); in reserve_chunk_space()
3882 btrfs_chunk_alloc_add_chunk_item(trans, bg); in reserve_chunk_space()
4125 bool btrfs_inc_block_group_swap_extents(struct btrfs_block_group *bg) in btrfs_inc_block_group_swap_extents() argument
4129 spin_lock(&bg->lock); in btrfs_inc_block_group_swap_extents()
4130 if (bg->ro) in btrfs_inc_block_group_swap_extents()
4133 bg->swap_extents++; in btrfs_inc_block_group_swap_extents()
4134 spin_unlock(&bg->lock); in btrfs_inc_block_group_swap_extents()
4139 void btrfs_dec_block_group_swap_extents(struct btrfs_block_group *bg, int amount) in btrfs_dec_block_group_swap_extents() argument
4141 spin_lock(&bg->lock); in btrfs_dec_block_group_swap_extents()
4142 ASSERT(!bg->ro); in btrfs_dec_block_group_swap_extents()
4143 ASSERT(bg->swap_extents >= amount); in btrfs_dec_block_group_swap_extents()
4144 bg->swap_extents -= amount; in btrfs_dec_block_group_swap_extents()
4145 spin_unlock(&bg->lock); in btrfs_dec_block_group_swap_extents()