Lines Matching refs:bg
1392 static int btrfs_load_block_group_single(struct btrfs_block_group *bg, in btrfs_load_block_group_single() argument
1397 btrfs_err(bg->fs_info, in btrfs_load_block_group_single()
1403 bg->alloc_offset = info->alloc_offset; in btrfs_load_block_group_single()
1404 bg->zone_capacity = info->capacity; in btrfs_load_block_group_single()
1406 set_bit(BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE, &bg->runtime_flags); in btrfs_load_block_group_single()
1410 static int btrfs_load_block_group_dup(struct btrfs_block_group *bg, in btrfs_load_block_group_dup() argument
1416 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_load_block_group_dup()
1423 bg->zone_capacity = min_not_zero(zone_info[0].capacity, zone_info[1].capacity); in btrfs_load_block_group_dup()
1426 btrfs_err(bg->fs_info, in btrfs_load_block_group_dup()
1432 btrfs_err(bg->fs_info, in btrfs_load_block_group_dup()
1445 btrfs_err(bg->fs_info, in btrfs_load_block_group_dup()
1451 if (!btrfs_zone_activate(bg)) in btrfs_load_block_group_dup()
1454 set_bit(BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE, &bg->runtime_flags); in btrfs_load_block_group_dup()
1457 bg->alloc_offset = zone_info[0].alloc_offset; in btrfs_load_block_group_dup()
1461 static int btrfs_load_block_group_raid1(struct btrfs_block_group *bg, in btrfs_load_block_group_raid1() argument
1467 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_load_block_group_raid1()
1477 bg->zone_capacity = min_not_zero(zone_info[0].capacity, zone_info[1].capacity); in btrfs_load_block_group_raid1()
1495 !btrfs_zone_activate(bg)) { in btrfs_load_block_group_raid1()
1500 set_bit(BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE, &bg->runtime_flags); in btrfs_load_block_group_raid1()
1505 bg->alloc_offset = zone_info[0].alloc_offset; in btrfs_load_block_group_raid1()
1507 bg->alloc_offset = zone_info[i - 1].alloc_offset; in btrfs_load_block_group_raid1()
1512 static int btrfs_load_block_group_raid0(struct btrfs_block_group *bg, in btrfs_load_block_group_raid0() argument
1518 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_load_block_group_raid0()
1551 if (!btrfs_zone_activate(bg)) in btrfs_load_block_group_raid0()
1555 set_bit(BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE, &bg->runtime_flags); in btrfs_load_block_group_raid0()
1557 bg->zone_capacity += zone_info[i].capacity; in btrfs_load_block_group_raid0()
1558 bg->alloc_offset += zone_info[i].alloc_offset; in btrfs_load_block_group_raid0()
1564 static int btrfs_load_block_group_raid10(struct btrfs_block_group *bg, in btrfs_load_block_group_raid10() argument
1570 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_load_block_group_raid10()
1583 if (!btrfs_zone_activate(bg)) in btrfs_load_block_group_raid10()
1587 set_bit(BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE, &bg->runtime_flags); in btrfs_load_block_group_raid10()
1614 bg->zone_capacity += zone_info[i].capacity; in btrfs_load_block_group_raid10()
1615 bg->alloc_offset += zone_info[i].alloc_offset; in btrfs_load_block_group_raid10()
2491 struct btrfs_block_group *bg = in btrfs_zone_finish_endio_workfn() local
2494 wait_on_extent_buffer_writeback(bg->last_eb); in btrfs_zone_finish_endio_workfn()
2495 free_extent_buffer(bg->last_eb); in btrfs_zone_finish_endio_workfn()
2496 btrfs_zone_finish_endio(bg->fs_info, bg->start, bg->length); in btrfs_zone_finish_endio_workfn()
2497 btrfs_put_block_group(bg); in btrfs_zone_finish_endio_workfn()
2500 void btrfs_schedule_zone_finish_bg(struct btrfs_block_group *bg, in btrfs_schedule_zone_finish_bg() argument
2503 if (!test_bit(BLOCK_GROUP_FLAG_SEQUENTIAL_ZONE, &bg->runtime_flags) || in btrfs_schedule_zone_finish_bg()
2504 eb->start + eb->len * 2 <= bg->start + bg->zone_capacity) in btrfs_schedule_zone_finish_bg()
2507 if (WARN_ON(bg->zone_finish_work.func == btrfs_zone_finish_endio_workfn)) { in btrfs_schedule_zone_finish_bg()
2508 btrfs_err(bg->fs_info, "double scheduling of bg %llu zone finishing", in btrfs_schedule_zone_finish_bg()
2509 bg->start); in btrfs_schedule_zone_finish_bg()
2514 btrfs_get_block_group(bg); in btrfs_schedule_zone_finish_bg()
2516 bg->last_eb = eb; in btrfs_schedule_zone_finish_bg()
2517 INIT_WORK(&bg->zone_finish_work, btrfs_zone_finish_endio_workfn); in btrfs_schedule_zone_finish_bg()
2518 queue_work(system_unbound_wq, &bg->zone_finish_work); in btrfs_schedule_zone_finish_bg()
2521 void btrfs_clear_data_reloc_bg(struct btrfs_block_group *bg) in btrfs_clear_data_reloc_bg() argument
2523 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_clear_data_reloc_bg()
2526 if (fs_info->data_reloc_bg == bg->start) in btrfs_clear_data_reloc_bg()
2536 struct btrfs_block_group *bg; in btrfs_zoned_reserve_data_reloc_bg() local
2559 list_for_each_entry(bg, bg_list, list) { in btrfs_zoned_reserve_data_reloc_bg()
2560 if (bg->alloc_offset != 0) in btrfs_zoned_reserve_data_reloc_bg()
2574 factor = btrfs_bg_type_to_factor(bg->flags); in btrfs_zoned_reserve_data_reloc_bg()
2577 list_del_init(&bg->list); 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()
2586 ASSERT(bg->used == 0); in btrfs_zoned_reserve_data_reloc_bg()
2587 ASSERT(bg->zone_unusable == 0); in btrfs_zoned_reserve_data_reloc_bg()
2589 ASSERT(bg->bytes_super == 0); in btrfs_zoned_reserve_data_reloc_bg()
2592 bg->space_info = reloc_sinfo; in btrfs_zoned_reserve_data_reloc_bg()
2594 btrfs_sysfs_add_block_group_type(bg); in btrfs_zoned_reserve_data_reloc_bg()
2596 btrfs_add_bg_to_space_info(fs_info, bg); in btrfs_zoned_reserve_data_reloc_bg()
2599 fs_info->data_reloc_bg = bg->start; in btrfs_zoned_reserve_data_reloc_bg()
2600 set_bit(BLOCK_GROUP_FLAG_ZONED_DATA_RELOC, &bg->runtime_flags); in btrfs_zoned_reserve_data_reloc_bg()
2601 btrfs_zone_activate(bg); in btrfs_zoned_reserve_data_reloc_bg()
2749 struct btrfs_block_group *bg; in btrfs_zoned_activate_one_bg() local
2761 list_for_each_entry(bg, &space_info->block_groups[index], in btrfs_zoned_activate_one_bg()
2763 if (!spin_trylock(&bg->lock)) in btrfs_zoned_activate_one_bg()
2765 if (btrfs_zoned_bg_is_full(bg) || in btrfs_zoned_activate_one_bg()
2767 &bg->runtime_flags)) { in btrfs_zoned_activate_one_bg()
2768 spin_unlock(&bg->lock); in btrfs_zoned_activate_one_bg()
2771 spin_unlock(&bg->lock); in btrfs_zoned_activate_one_bg()
2773 if (btrfs_zone_activate(bg)) { in btrfs_zoned_activate_one_bg()
2873 struct btrfs_block_group *bg = NULL; in btrfs_reset_unused_block_groups() local
2886 list_for_each_entry(bg, &fs_info->unused_bgs, bg_list) { in btrfs_reset_unused_block_groups()
2887 if ((bg->flags & BTRFS_BLOCK_GROUP_TYPE_MASK) != space_info->flags) in btrfs_reset_unused_block_groups()
2896 if (!spin_trylock(&bg->lock)) in btrfs_reset_unused_block_groups()
2898 if (btrfs_is_block_group_used(bg) || bg->zone_unusable < bg->length) { in btrfs_reset_unused_block_groups()
2899 spin_unlock(&bg->lock); in btrfs_reset_unused_block_groups()
2902 spin_unlock(&bg->lock); in btrfs_reset_unused_block_groups()
2911 list_del_init(&bg->bg_list); in btrfs_reset_unused_block_groups()
2912 btrfs_put_block_group(bg); in btrfs_reset_unused_block_groups()
2922 map = bg->physical_map; in btrfs_reset_unused_block_groups()
2942 spin_lock(&bg->lock); in btrfs_reset_unused_block_groups()
2943 ASSERT(!btrfs_is_block_group_used(bg)); in btrfs_reset_unused_block_groups()
2944 if (bg->ro) { in btrfs_reset_unused_block_groups()
2945 spin_unlock(&bg->lock); in btrfs_reset_unused_block_groups()
2950 reclaimed = bg->alloc_offset; in btrfs_reset_unused_block_groups()
2951 bg->zone_unusable = bg->length - bg->zone_capacity; in btrfs_reset_unused_block_groups()
2952 bg->alloc_offset = 0; in btrfs_reset_unused_block_groups()
2957 ASSERT(reclaimed == bg->zone_capacity); in btrfs_reset_unused_block_groups()
2958 bg->free_space_ctl->free_space += reclaimed; in btrfs_reset_unused_block_groups()
2960 spin_unlock(&bg->lock); in btrfs_reset_unused_block_groups()