28 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_BALLOC 44 #define BALLOC_DBNAME "./__balloc_db" 46 #define GROUP_SIZE (BALLOC_DEF_CONTAINER_SIZE / (BALLOC_DEF_BLOCKS_PER_GROUP * \ 47 (1 << BALLOC_DEF_BLOCK_SHIFT))) 51 static const int MAX = 10;
62 int balloc_invariant_flag)
72 switch (balloc_invariant_flag) {
138 for (
i = 0;
i <
MAX; ++
i) {
172 "[%08llx,%08llx)=[%8llu,%8llu)",
176 (
unsigned long long)ext[
i].
e_end,
178 (
unsigned long long)ext[
i].
e_end);
199 for (
i = 0;
i <
MAX; ++
i) {
207 for (
i = 0;
i <
MAX &&
rc == 0; ++
i) {
226 "[%08llx,%08llx)=[%8llu,%8llu)",
229 (
unsigned long long)ext[
i].
e_end,
231 (
unsigned long long)ext[
i].
e_end);
void m0_be_ut_seg_fini(struct m0_be_ut_seg *ut_seg)
#define M0_ALLOC_ARR(arr, nr)
M0_INTERNAL m0_bcount_t m0_ext_length(const struct m0_ext *ext)
struct m0_ut_suite balloc_ut
m0_bcount_t bsb_freeblocks
int(* bo_alloc)(struct m0_ad_balloc *ballroom, struct m0_dtx *dtx, m0_bcount_t count, struct m0_ext *out, uint64_t alloc_zone)
struct m0_ad_balloc cb_ballroom
M0_INTERNAL int m0_balloc_load_extents(struct m0_balloc *cb, struct m0_balloc_group_info *grp)
int test_balloc_ut_ops(struct m0_be_ut_backend *ut_be, struct m0_be_seg *seg, bool is_reserve)
static struct m0_sm_group * grp
#define M0_LOG(level,...)
m0_bcount_t bzp_freeblocks
struct m0_balloc_group_info * cb_group_info
struct m0_be_seg * bus_seg
#define M0_FID_INIT(container, key)
int(* bo_init)(struct m0_ad_balloc *ballroom, struct m0_be_seg *db, uint32_t bshift, m0_bcount_t container_size, m0_bcount_t blocks_per_group, m0_bcount_t spare_blocks_per_group)
M0_INTERNAL void m0_ut_be_tx_end(struct m0_be_tx *tx)
const struct m0_ad_balloc_ops * ab_ops
struct m0_be_ut_seg ut_seg
void m0_be_ut_seg_init(struct m0_be_ut_seg *ut_seg, struct m0_be_ut_backend *ut_be, m0_bcount_t size)
M0_INTERNAL int m0_balloc_create(uint64_t cid, struct m0_be_seg *seg, struct m0_sm_group *grp, struct m0_balloc **out, const struct m0_fid *fid)
bool balloc_ut_invariant(struct m0_balloc *motr_balloc, struct m0_ext alloc_ext, int balloc_invariant_flag)
m0_bcount_t bsb_groupsize
#define M0_BE_TX_CREDIT(nr, size)
struct m0_be_ut_backend ut_be
M0_INTERNAL void m0_balloc_lock_group(struct m0_balloc_group_info *grp)
M0_INTERNAL void m0_ut_be_tx_begin(struct m0_be_tx *tx, struct m0_be_ut_backend *ut_be, struct m0_be_tx_credit *cred)
struct m0_balloc_zone_param bgi_normal
M0_INTERNAL void m0_balloc_unlock_group(struct m0_balloc_group_info *grp)
void m0_be_ut_backend_init(struct m0_be_ut_backend *ut_be)
M0_INTERNAL void m0_balloc_debug_dump_group_extent(const char *tag, struct m0_balloc_group_info *grp)
void(* bo_free_credit)(const struct m0_ad_balloc *ballroom, int nr, struct m0_be_tx_credit *accum)
struct m0_sm_group * m0_be_ut_backend_sm_group_lookup(struct m0_be_ut_backend *ut_be)
void test_reserve_extent()
int(* bo_free)(struct m0_ad_balloc *ballroom, struct m0_dtx *dtx, struct m0_ext *ext)
void(* bo_fini)(struct m0_ad_balloc *ballroom)
m0_bcount_t bsb_groupcount
M0_INTERNAL int m0_balloc_release_extents(struct m0_balloc_group_info *grp)
static m0_bcount_t prev_free_blocks
int(* bo_reserve_extent)(struct m0_ad_balloc *ballroom, struct m0_be_tx *tx, struct m0_ext *ext, uint64_t alloc_zone)
M0_INTERNAL m0_bcount_t m0_stob_ad_spares_calc(m0_bcount_t grp_blocks)
void m0_be_ut_backend_fini(struct m0_be_ut_backend *ut_be)
static struct m0_be_seg * seg
struct m0_balloc_super_block cb_sb
m0_bcount_t * prev_group_info_free_blocks
M0_INTERNAL struct m0_balloc_group_info * m0_balloc_gn2info(struct m0_balloc *cb, m0_bindex_t groupno)
void(* bo_alloc_credit)(const struct m0_ad_balloc *ballroom, int nr, struct m0_be_tx_credit *accum)