24 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_COB 27 #define M0_COB_KEY_LOG(logger, fmt, key, fid_member, str_member, ...) \ 28 M0_ ## logger (fmt, (long)(key)->fid_member.f_container, \ 29 (long)(key)->fid_member.f_key, \ 30 m0_bitstring_len_get(&((key)->str_member)), \ 31 (char *)m0_bitstring_buf_get(&((key)->str_member)), \ 33 #define M0_COB_NSKEY_LOG(logger, fmt, key, ...)\ 34 M0_COB_KEY_LOG(logger, fmt, key, cnk_pfid, cnk_name, ## __VA_ARGS__) 149 const struct m0_fid *pfid,
150 const char *
name,
size_t namelen)
157 key->cnk_pfid = *pfid;
183 const char *
name,
size_t namelen)
263 const char *link,
size_t linklen)
272 memcpy(rec->
cfb_link, link, linklen);
304 const struct m0_fid *pfid,
313 key->cnk_pfid = *pfid;
385 const struct m0_fid *pver_fid,
393 key->cbk_pfid = *pver_fid;
394 key->cbk_user_id = user_id;
408 return rc ?:
k0->cbk_user_id ==
k1->cbk_user_id ? 0 : -EINVAL;
422 const struct m0_fid *pver_fid,
520 while (
rc != -ENOENT) {
528 if (*out_keys ==
NULL)
531 if (*out_recs ==
NULL) {
552 key_cursor = (
struct m0_cob_bckey *)(*out_keys)->b_addr;
553 rec_cursor = (
struct m0_cob_bcrec *)(*out_recs)->b_addr;
561 while (
rc != -ENOENT) {
753 if (cdid_str ==
NULL)
776 if (cdid_str ==
NULL)
786 .ot_version = M0_COB_DOMAIN_FORMAT_VERSION,
787 .ot_type = M0_FORMAT_TYPE_COB_DOMAIN,
788 .ot_footer_offset = offsetof(struct m0_cob_domain, cd_footer)
888 if (cdid_str ==
NULL) {
936 #include <sys/stat.h> 938 #define MKFS_ROOT_SIZE 4096 939 #define MKFS_ROOT_BLKSIZE 4096 940 #define MKFS_ROOT_BLOCKS 16 981 const struct m0_fid *rootfid,
1031 S_IRUSR | S_IWUSR | S_IXUSR |
1555 if (
it->ci_rec ==
NULL) {
1660 if (omgid !=
NULL) {
1704 if (omgrec !=
NULL) {
1736 if (fabrec !=
NULL) {
1758 if (omgrec !=
NULL) {
1782 "added multiple times", omgkey.
cok_omgid);
1875 if (nsrec !=
NULL) {
1889 if (
rc == 0 && fabrec !=
NULL) {
1905 if (
rc == 0 && omgrec !=
NULL) {
2061 .ot_version = M0_COB_NSREC_FORMAT_VERSION,
2062 .ot_type = M0_FORMAT_TYPE_COB_NSREC,
2063 .ot_footer_offset = offsetof(struct m0_cob_nsrec, cnr_footer)
2086 nsrec_prev = *nsrec;
2095 attr->ca_size != 0) {
2098 *nsrec = nsrec_prev;
2263 ksize = kv_size[t_kvtype].s_key;
2264 vsize = kv_size[t_kvtype].s_rec;
2287 #define TCREDIT(table, t_optype, t_kvtype, accum) \ 2288 cob_table_tx_credit((table), COB_TABLE_##t_optype, \ 2289 COB_KVTYPE_##t_kvtype, (accum)) 2294 for (
i = 0;
i < 2; ++
i)
2389 #undef M0_TRACE_SUBSYSTEM struct m0_cob_nsrec co_nsrec
static size_t m0_cob_bckey_size(void)
static int m0_cob_max_nskey_make(struct m0_cob_nskey **keyh, const struct m0_fid *pfid, const char *name, int namelen)
static int ea_cmp(const void *key0, const void *key1)
#define M0_BE_ALLOC_CREDIT_PTR(ptr, seg, accum)
static struct m0_be_active_record_domain dummy
#define M0_BE_ALLOC_PTR_SYNC(ptr, seg, tx)
M0_INTERNAL void m0_be_btree_delete_credit(const struct m0_be_btree *tree, m0_bcount_t nr, m0_bcount_t ksize, m0_bcount_t vsize, struct m0_be_tx_credit *accum)
static void cob_domain_id2str(char **s, const struct m0_cob_domain_id *cdid)
M0_INTERNAL int m0_cob_ea_del(struct m0_cob *cob, struct m0_cob_eakey *eakey, struct m0_be_tx *tx)
M0_INTERNAL int m0_cob_bc_iterator_next(struct m0_cob_bc_iterator *it)
static size_t m0_cob_fabrec_size(const struct m0_cob_fabrec *rec)
static const struct m0_be_btree_kv_ops cob_ns_ops
static const struct m0_be_btree_kv_ops cob_bc_ops
int const char const void size_t int flags
M0_INTERNAL int m0_cob_domain_mkfs(struct m0_cob_domain *dom, const struct m0_fid *rootfid, struct m0_be_tx *tx)
void m0_be_0type_add_credit(struct m0_be_domain *dom, const struct m0_be_0type *zt, const char *suffix, const struct m0_buf *data, struct m0_be_tx_credit *credit)
M0_INTERNAL size_t m0_cob_max_earec_size(void)
struct m0_be_btree cd_object_index
union m0_be_rwlock::@198 bl_u
M0_INTERNAL int m0_cob_ea_get(struct m0_cob *cob, struct m0_cob_eakey *eakey, struct m0_cob_earec *out, struct m0_be_tx *tx)
static M0_UNUSED char * cob_dom_id_make(char *buf, const struct m0_cob_domain_id *id, const char *prefix)
struct m0_be_bnode * bb_root
static size_t m0_cob_max_fabrec_size(void)
M0_INTERNAL void m0_be_btree_lookup(struct m0_be_btree *tree, struct m0_be_op *op, const struct m0_buf *key, struct m0_buf *value)
M0_INTERNAL void m0_cob_iterator_fini(struct m0_cob_iterator *it)
M0_INTERNAL int m0_cob_alloc_omgid(struct m0_cob_domain *dom, uint64_t *omgid)
M0_INTERNAL int m0_cob_mod_init(void)
M0_INTERNAL int m0_cob_nskey_cmp(const struct m0_cob_nskey *k0, const struct m0_cob_nskey *k1)
#define M0_LOG(level,...)
struct m0_cob_domain * co_dom
void m0_be_0type_del_credit(struct m0_be_domain *dom, const struct m0_be_0type *zt, const char *suffix, struct m0_be_tx_credit *credit)
M0_INTERNAL void m0_be_tx_fini(struct m0_be_tx *tx)
M0_INTERNAL int m0_cob_ea_iterator_next(struct m0_cob_ea_iterator *it)
static m0_bcount_t fb_ksize(const void *key)
const struct m0_fid * fi_fid
static struct m0_uint128 prefix
void m0_cob_domain_fini(struct m0_cob_domain *dom)
#define M0_BE_OP_SYNC(op_obj, action)
M0_INTERNAL uint32_t m0_bitstring_len_get(const struct m0_bitstring *c)
static int cob_table_insert(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_buf *key, struct m0_buf *val)
M0_INTERNAL void m0_buf_init(struct m0_buf *buf, void *data, uint32_t nob)
const struct m0_fid_type m0_cob_fid_type
static m0_bcount_t omg_vsize(const void *val)
M0_INTERNAL void m0_cob_put(struct m0_cob *cob)
static struct m0_be_emap_cursor it
M0_INTERNAL void m0_be_tx_prep(struct m0_be_tx *tx, const struct m0_be_tx_credit *credit)
#define M0_BE_TX_CAPTURE_PTR(seg, tx, ptr)
static m0_bcount_t oi_ksize(const void *key)
M0_INTERNAL int m0_cob_bc_insert(struct m0_cob *cob, struct m0_cob_bckey *bc_key, struct m0_cob_bcrec *bc_val, struct m0_be_tx *tx)
static int oi_cmp(const void *key0, const void *key1)
M0_INTERNAL int m0_cob_domain_credit_add(struct m0_cob_domain *dom, struct m0_be_domain *bedom, struct m0_be_seg *seg, const struct m0_cob_domain_id *cdid, struct m0_be_tx_credit *cred)
M0_INTERNAL struct m0 * m0_get(void)
int m0_cob_domain_create(struct m0_cob_domain **dom, struct m0_sm_group *grp, const struct m0_cob_domain_id *cdid, struct m0_be_domain *bedom, struct m0_be_seg *seg)
M0_INTERNAL int m0_cob_fabrec_make(struct m0_cob_fabrec **rech, const char *link, size_t linklen)
M0_INTERNAL void m0_be_btree_create(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_be_op *op, const struct m0_fid *btree_fid)
#define container_of(ptr, type, member)
M0_INTERNAL void m0_cob_bc_iterator_fini(struct m0_cob_bc_iterator *it)
M0_INTERNAL void m0_be_btree_destroy_credit(struct m0_be_btree *tree, struct m0_be_tx_credit *accum)
M0_INTERNAL int m0_fid_cmp(const struct m0_fid *fid0, const struct m0_fid *fid1)
struct m0_be_btree cd_fileattr_basic
static int cob_omg_lookup(struct m0_cob *cob)
struct m0_be_btree cd_fileattr_ea
M0_INTERNAL bool m0_fid_is_set(const struct m0_fid *fid)
M0_INTERNAL int m0_cob_name_update(struct m0_cob *cob, struct m0_cob_nskey *srckey, struct m0_cob_nskey *tgtkey, struct m0_be_tx *tx)
M0_INTERNAL int m0_cob_size_update(struct m0_cob *cob, uint64_t size, struct m0_be_tx *tx)
M0_INTERNAL int m0_cob_bckey_cmp(const struct m0_cob_bckey *k0, const struct m0_cob_bckey *k1)
M0_INTERNAL void m0_cob_init(struct m0_cob_domain *dom, struct m0_cob *cob)
static void cob_table_tx_credit(struct m0_be_btree *tree, enum cob_table_optype t_optype, enum cob_table_kvtype t_kvtype, struct m0_be_tx_credit *accum)
M0_INTERNAL void m0_be_btree_delete(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_be_op *op, const struct m0_buf *key)
M0_INTERNAL void m0_be_btree_cursor_fini(struct m0_be_btree_cursor *cursor)
M0_INTERNAL void m0_rwlock_init(struct m0_rwlock *lock)
M0_INTERNAL int m0_cob_nskey_make(struct m0_cob_nskey **keyh, const struct m0_fid *pfid, const char *name, size_t namelen)
static int m0_cob_max_eakey_make(struct m0_cob_eakey **keyh, const struct m0_fid *fid, const char *name, int namelen)
static size_t m0_cob_earec_size(const struct m0_cob_earec *rec)
M0_INTERNAL void m0_cob_tx_credit(struct m0_cob_domain *dom, enum m0_cob_op optype, struct m0_be_tx_credit *accum)
static void cob_free_cb(struct m0_ref *ref)
M0_INTERNAL int m0_be_btree_cursor_next_sync(struct m0_be_btree_cursor *cur)
M0_INTERNAL int m0_cob_ea_set(struct m0_cob *cob, struct m0_cob_eakey *eakey, struct m0_cob_earec *earec, struct m0_be_tx *tx)
struct m0_cob_nskey * co_nskey
static int m0_cob_bckey_make(struct m0_cob_bckey **keyh, const struct m0_fid *pver_fid, uint64_t user_id)
#define M0_RC_INFO(rc, fmt,...)
struct m0_cob_fabrec * co_fabrec
static int cob_fab_lookup(struct m0_cob *cob)
static int cob_oi_lookup(struct m0_cob *cob)
M0_INTERNAL void m0_ref_put(struct m0_ref *ref)
void m0_ref_init(struct m0_ref *ref, int init_num, void(*release)(struct m0_ref *ref))
M0_INTERNAL int m0_cob_delete_put(struct m0_cob *cob, struct m0_be_tx *tx)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL void m0_ref_get(struct m0_ref *ref)
M0_INTERNAL void m0_be_btree_update_credit(const struct m0_be_btree *tree, m0_bcount_t nr, m0_bcount_t vsize, struct m0_be_tx_credit *accum)
M0_INTERNAL int m0_cob_bc_update(struct m0_cob *cob, struct m0_cob_bckey *bc_key, struct m0_cob_bcrec *bc_val, struct m0_be_tx *tx)
M0_INTERNAL void m0_fid_type_register(const struct m0_fid_type *fidt)
#define M0_BE_OP_SYNC_RET(op_obj, action, member)
M0_INTERNAL void m0_cob_ea_del_credit(struct m0_cob *cob, struct m0_cob_eakey *eakey, struct m0_be_tx_credit *accum)
M0_INTERNAL int m0_cob_iterator_next(struct m0_cob_iterator *it)
M0_INTERNAL int m0_cob_ea_iterator_init(struct m0_cob *cob, struct m0_cob_ea_iterator *it, struct m0_bitstring *name)
M0_INTERNAL void m0_be_btree_create_credit(const struct m0_be_btree *tree, m0_bcount_t nr, struct m0_be_tx_credit *accum)
M0_INTERNAL void m0_be_btree_insert(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_be_op *op, const struct m0_buf *key, const struct m0_buf *val)
#define M0_FID_TINIT(type, container, key)
struct m0_be_0type m0_be_cob0
static void attr(struct m0_addb2__context *ctx, const uint64_t *v, char *buf)
M0_INTERNAL void m0_bitstring_copy(struct m0_bitstring *dst, const char *src, size_t count)
M0_INTERNAL int m0_cob_name_add(struct m0_cob *cob, struct m0_cob_nskey *nskey, struct m0_cob_nsrec *nsrec, struct m0_be_tx *tx)
M0_INTERNAL void m0_be_btree_insert_credit(const struct m0_be_btree *tree, m0_bcount_t nr, m0_bcount_t ksize, m0_bcount_t vsize, struct m0_be_tx_credit *accum)
static size_t m0_cob_bcrec_size(void)
struct m0_format_header cnr_header
M0_INTERNAL int m0_cob_domain_create_prepared(struct m0_cob_domain **out, struct m0_sm_group *grp, const struct m0_cob_domain_id *cdid, struct m0_be_domain *bedom, struct m0_be_seg *seg, struct m0_be_tx *tx)
M0_INTERNAL void m0_be_btree_destroy(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_be_op *op)
struct m0_bitstring cnk_name
static m0_bcount_t bc_ksize(const void *key)
static struct m0_cob_domain * dom
m0_time_t m0_time_now(void)
M0_INTERNAL void m0_cob_nsrec_init(struct m0_cob_nsrec *nsrec)
int m0_cob_domain_destroy(struct m0_cob_domain *dom, struct m0_sm_group *grp, struct m0_be_domain *bedom)
static const struct m0_be_btree_kv_ops cob_fab_ops
M0_INTERNAL void m0_cob_oikey_make(struct m0_cob_oikey *oikey, const struct m0_fid *fid, int linkno)
M0_INTERNAL void m0_cob_mod_fini(void)
static const struct m0_be_btree_kv_ops cob_ea_ops
M0_INTERNAL struct m0_be_seg * m0_be_domain_seg(const struct m0_be_domain *dom, const void *addr)
M0_INTERNAL int m0_cob_create(struct m0_cob *cob, struct m0_cob_nskey *nskey, struct m0_cob_nsrec *nsrec, struct m0_cob_fabrec *fabrec, struct m0_cob_omgrec *omgrec, struct m0_be_tx *tx)
M0_INTERNAL int m0_be_btree_cursor_prev_sync(struct m0_be_btree_cursor *cur)
struct m0_be_rwlock cd_lock
M0_INTERNAL void m0_cob_ea_iterator_fini(struct m0_cob_ea_iterator *it)
struct m0_cob_bckey bckey[KEY_VAL_NR]
M0_INTERNAL int m0_buf_alloc(struct m0_buf *buf, size_t size)
void * m0_alloc(size_t size)
M0_INTERNAL void m0_be_btree_fini(struct m0_be_btree *tree)
M0_INTERNAL int m0_be_tx_exclusive_open_sync(struct m0_be_tx *tx)
struct m0_cob_oikey co_oikey
M0_INTERNAL int m0_cob_lookup(struct m0_cob_domain *dom, struct m0_cob_nskey *nskey, uint64_t flags, struct m0_cob **out)
M0_INTERNAL int m0_bitstring_cmp(const struct m0_bitstring *s1, const struct m0_bitstring *s2)
M0_INTERNAL int m0_cob_eakey_cmp(const struct m0_cob_eakey *k0, const struct m0_cob_eakey *k1)
static m0_bcount_t ns_vsize(const void *val)
M0_INTERNAL void m0_fid_type_unregister(const struct m0_fid_type *fidt)
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
static void cob_fini(struct m0_cob *cob)
static size_t m0_cob_max_eakey_size(void)
M0_INTERNAL int m0_be_btree_cursor_first_sync(struct m0_be_btree_cursor *cur)
M0_INTERNAL void m0_cob_get(struct m0_cob *cob)
M0_INTERNAL int m0_cob_bc_iterator_init(struct m0_cob *cob, struct m0_cob_bc_iterator *it, const struct m0_fid *pver_fid, uint64_t user_id)
M0_INTERNAL void m0_cob_ea_iterator_init_credit(struct m0_cob *cob, struct m0_cob_ea_iterator *it, struct m0_bitstring *name, struct m0_be_tx_credit *accum)
#define M0_BE_FREE_PTR_SYNC(ptr, seg, tx)
uint64_t m0_time_seconds(const m0_time_t time)
static int omg_cmp(const void *key0, const void *key1)
int m0_cob_domain_init(struct m0_cob_domain *dom, struct m0_be_seg *seg)
static int cob_table_lookup(struct m0_be_btree *tree, struct m0_buf *key, struct m0_buf *out)
static const struct m0_be_btree_kv_ops cob_oi_ops
M0_INTERNAL void m0_be_btree_cursor_kv_get(struct m0_be_btree_cursor *cur, struct m0_buf *key, struct m0_buf *val)
static m0_bcount_t ea_vsize(const void *val)
int m0_be_0type_add(struct m0_be_0type *zt, struct m0_be_domain *dom, struct m0_be_tx *tx, const char *suffix, const struct m0_buf *data)
M0_INTERNAL void m0_be_tx_init(struct m0_be_tx *tx, uint64_t tid, struct m0_be_domain *dom, struct m0_sm_group *sm_group, m0_be_tx_cb_t persistent, m0_be_tx_cb_t discarded, void(*filler)(struct m0_be_tx *tx, void *payload), void *datum)
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
#define M0_COB_NSKEY_LOG(logger, fmt, key,...)
M0_INTERNAL void m0_be_btree_update(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_be_op *op, const struct m0_buf *key, const struct m0_buf *val)
struct m0_format_header cd_header
static m0_bcount_t ns_ksize(const void *key)
#define M0_BUF_INIT_PTR(p)
static int cob_table_delete(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_buf *key)
#define TCREDIT(table, t_optype, t_kvtype, accum)
static m0_bcount_t fb_vsize(const void *val)
M0_INTERNAL int m0_cob_eakey_make(struct m0_cob_eakey **keyh, const struct m0_fid *fid, const char *name, size_t namelen)
#define MKFS_ROOT_BLKSIZE
M0_INTERNAL int m0_cob_bc_lookup(struct m0_cob *cob, struct m0_cob_bckey *bc_key, struct m0_cob_bcrec *bc_rec)
M0_INTERNAL void m0_cob_ea_get_credit(struct m0_cob *cob, struct m0_cob_eakey *eakey, struct m0_cob_earec *out, struct m0_be_tx_credit *accum)
int m0_be_0type_del(struct m0_be_0type *zt, struct m0_be_domain *dom, struct m0_be_tx *tx, const char *suffix)
#define M0_ALLOC_PTR(ptr)
#define m0_asprintf(s, fmt,...)
static int cob_table_update(struct m0_be_btree *tree, struct m0_be_tx *tx, struct m0_buf *key, struct m0_buf *val)
static m0_bcount_t omg_ksize(const void *key)
struct m0_cob_bcrec bcrec[KEY_VAL_NR]
M0_INTERNAL int m0_cob_bc_iterator_get(struct m0_cob_bc_iterator *it)
M0_INTERNAL void * m0_bitstring_buf_get(struct m0_bitstring *c)
static m0_bcount_t bc_vsize(const void *val)
M0_INTERNAL const char M0_COB_ROOT_NAME[]
static int start(struct m0_fom *fom)
struct m0_cob_omgrec co_omgrec
M0_INTERNAL int m0_cob_update(struct m0_cob *cob, struct m0_cob_nsrec *nsrec, struct m0_cob_fabrec *fabrec, struct m0_cob_omgrec *omgrec, struct m0_be_tx *tx)
M0_INTERNAL void m0_rwlock_fini(struct m0_rwlock *lock)
M0_INTERNAL void m0_be_btree_init(struct m0_be_btree *tree, struct m0_be_seg *seg, const struct m0_be_btree_kv_ops *ops)
M0_INTERNAL void m0_be_btree_cursor_init(struct m0_be_btree_cursor *cur, struct m0_be_btree *btree)
M0_INTERNAL int m0_cob_delete(struct m0_cob *cob, struct m0_be_tx *tx)
M0_INTERNAL int m0_cob_iterator_get(struct m0_cob_iterator *it)
M0_INTERNAL int m0_cob_locate(struct m0_cob_domain *dom, struct m0_cob_oikey *oikey, uint64_t flags, struct m0_cob **out)
M0_INTERNAL int m0_cob_setattr(struct m0_cob *cob, struct m0_cob_attr *attr, struct m0_be_tx *tx)
static struct m0_be_seg * seg
static int ns_cmp(const void *key0, const void *key1)
M0_INTERNAL int m0_be_btree_cursor_get_sync(struct m0_be_btree_cursor *cur, const struct m0_buf *key, bool slant)
M0_INTERNAL int m0_cob_name_del(struct m0_cob *cob, struct m0_cob_nskey *nskey, struct m0_be_tx *tx)
static int bc_cmp(const void *key0, const void *key1)
M0_INTERNAL void m0_cob_ea_set_credit(struct m0_cob *cob, struct m0_cob_eakey *eakey, struct m0_cob_earec *earec, struct m0_be_tx_credit *accum)
static size_t m0_cob_max_nskey_size(void)
static m0_bcount_t ea_ksize(const void *key)
M0_INTERNAL int m0_cob_alloc(struct m0_cob_domain *dom, struct m0_cob **out)
M0_INTERNAL size_t m0_cob_nskey_size(const struct m0_cob_nskey *cnk)
M0_INTERNAL int m0_cob_bc_entries_dump(struct m0_cob_domain *cdom, struct m0_buf **out_keys, struct m0_buf **out_recs, uint32_t *out_count)
static int cob0_init(struct m0_be_domain *dom, const char *suffix, const struct m0_buf *data)
M0_INTERNAL size_t m0_cob_eakey_size(const struct m0_cob_eakey *cek)
struct m0_be_btree cd_fileattr_omg
M0_INTERNAL const struct m0_fid * m0_cob_fid(const struct m0_cob *cob)
static bool m0_cob_is_valid(struct m0_cob *cob)
static int m0_cob_max_fabrec_make(struct m0_cob_fabrec **rech)
static int cob_ns_lookup(struct m0_cob *cob)
struct m0_bitstring cek_name
static struct m0_addb2_source * s
static int cob_get_fabomg(struct m0_cob *cob, uint64_t flags)
struct m0_be_btree cd_bytecount
static struct m0_cob * cob
M0_INTERNAL int m0_cob_iterator_init(struct m0_cob *cob, struct m0_cob_iterator *it, struct m0_bitstring *name)
#define M0_BE_FREE_CREDIT_PTR(ptr, seg, accum)
M0_INTERNAL const struct m0_fid M0_COB_ROOT_FID
struct m0_cob_domain_id cd_id
static int fb_cmp(const void *key0, const void *key1)
static struct m0_sm_group * grp
M0_INTERNAL void m0_file_init(struct m0_file *file, const struct m0_fid *fid, struct m0_rm_domain *dom, enum m0_di_types di_type)
M0_INTERNAL void m0_be_tx_close_sync(struct m0_be_tx *tx)
M0_INTERNAL int m0_cob_ea_iterator_get(struct m0_cob_ea_iterator *it)
static const struct m0_be_btree_kv_ops cob_omg_ops
struct m0_be_btree cd_namespace
#define M0_IMPOSSIBLE(fmt,...)
static void cob0_fini(struct m0_be_domain *dom, const char *suffix, const struct m0_buf *data)