34 #include <linux/version.h> 46 #include <linux/dcache.h> 52 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_M0T1FS 86 static struct m0t1fs_sb
csb;
91 static struct m0t1fs_inode
ci;
113 #define LOCAL_EP "0@lo:12345:45:1" 116 {0x74| ((^t|1:0), 1, (11, 22), ^o|2:24, (0, 0), 41212,\ 117 [3: \"param-0\", \"param-1\", \"param-2\"],\ 118 [1: ^n|1:2], [1: ^S|2:15], [2: ^o|1:23, ^o|2:24],\ 120 {0x70| ((^p|1:0), [2: ^o|1:23, ^o|2:24])},\ 121 {0x6e| ((^n|1:2), 16000, 2, 3, 2, [2: ^r|1:3, ^r|2:3])},\ 122 {0x72| ((^r|1:3), [1:3], 0, 0, 0, 0, \""LOCAL_EP"\", [6: ^s|1:4,\ 128 {0x72| ((^r|2:3), [1:3], 0, 0, 0, 0, \""LOCAL_EP"\", [1: ^s|2:7])},\ 129 {0x73| ((^s|1:4), @M0_CST_MDS, [1: \""LOCAL_EP"\"],\ 131 {0x73| ((^s|1:5), @M0_CST_IOS, [1: \""LOCAL_EP"\"],\ 132 [0], [5: ^d|1:10, ^d|1:11, ^d|1:12, ^d|1:13, ^d|1:14])},\ 133 {0x73| ((^s|1:6), @M0_CST_CONFD, [1: \""LOCAL_EP"\"],\ 135 {0x73| ((^s|1:7), @M0_CST_RMS, [1: \""LOCAL_EP"\"],\ 137 {0x73| ((^s|2:7), @M0_CST_RMS, [1: \""LOCAL_EP"\"],\ 139 {0x73| ((^s|1:8), @M0_CST_HA, [1: \""LOCAL_EP"\"],\ 141 {0x73| ((^s|1:9), @M0_CST_IOS, [1: \"addr-3\"], [0], [0])},\ 142 {0x64| ((^d|1:10), 1, 4, 1, 4096, 596000000000, 3, 4, \"/dev/sdev0\")},\ 143 {0x64| ((^d|1:11), 2, 4, 1, 4096, 596000000000, 3, 4, \"/dev/sdev1\")},\ 144 {0x64| ((^d|1:12), 3, 7, 2, 8192, 320000000000, 2, 4, \"/dev/sdev2\")},\ 145 {0x64| ((^d|1:13), 4, 7, 2, 8192, 320000000000, 2, 4, \"/dev/sdev3\")},\ 146 {0x64| ((^d|1:14), 0, 7, 2, 8192, 320000000000, 2, 4, \"/dev/sdev4\")},\ 147 {0x53| ((^S|2:15), [1: ^a|1:15], [1: ^v|1:24])},\ 148 {0x61| ((^a|1:15), [1: ^e|1:16], [1: ^v|1:24])},\ 149 {0x65| ((^e|1:16), ^n|1:2, [1: ^c|1:17], [1: ^v|1:24])},\ 151 [5: ^k|1:18, ^k|1:19, ^k|1:20,\ 152 ^k|1:21, ^k|1:22], [1: ^v|1:24])},\ 153 {0x6b| ((^k|1:18), ^d|1:10, [1: ^v|1:24])},\ 154 {0x6b| ((^k|1:19), ^d|1:11, [1: ^v|1:24])},\ 155 {0x6b| ((^k|1:20), ^d|1:12, [1: ^v|1:24])},\ 156 {0x6b| ((^k|1:21), ^d|1:13, [1: ^v|1:24])},\ 157 {0x6b| ((^k|1:22), ^d|1:14, [1: ^v|1:24])},\ 158 {0x6f| ((^o|1:23), 0, [1: ^v|1:24])},\ 159 {0x76| ((^v|1:24), {0| (3, 1, 1, 5, [5: 0, 0, 0, 0, 1], [1: ^j|3:25])})},\ 160 {0x6a| ((^j|3:25), ^S|2:15, [1: ^j|1:25])},\ 161 {0x6a| ((^j|1:25), ^a|1:15, [1: ^j|1:26])},\ 162 {0x6a| ((^j|1:26), ^e|1:16, [1: ^j|1:27])},\ 163 {0x6a| ((^j|1:27), ^c|1:17, [5: ^j|1:28, ^j|1:29, ^j|1:30,\ 164 ^j|1:31, ^j|1:32])},\ 165 {0x6a| ((^j|1:28), ^k|1:18, [0])},\ 166 {0x6a| ((^j|1:29), ^k|1:19, [0])},\ 167 {0x6a| ((^j|1:30), ^k|1:20, [0])},\ 168 {0x6a| ((^j|1:31), ^k|1:21, [0])},\ 169 {0x6a| ((^j|1:32), ^k|1:22, [0])},\ 170 {0x6f| ((^o|2:24), 0, [1: ^v|1:33])},\ 171 {0x76| ((^v|1:33), {0| (1, 0, 0, 1, [5: 0, 0, 0, 0, 1], [1: ^j|3:34])})},\ 172 {0x6a| ((^j|3:34), ^S|2:15, [1: ^j|1:34])},\ 173 {0x6a| ((^j|1:34), ^a|1:15, [1: ^j|1:35])},\ 174 {0x6a| ((^j|1:35), ^e|1:16, [1: ^j|1:36])},\ 175 {0x6a| ((^j|1:36), ^c|1:17, [1: ^j|1:37])},\ 176 {0x6a| ((^j|1:37), ^k|1:22, [0])}]";
226 .ca_group = &
csb.csb_iogroup,
288 .pa_K =
pver->pv_attr.pa_K,
289 .pa_S =
pver->pv_attr.pa_S,
290 .pa_P =
pver->pv_attr.pa_P,
302 ci.ci_layout_id = M0_DEFAULT_LAYOUT_ID;
312 &
ci.ci_layout_instance);
316 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) 319 lfile.f_path.dentry->d_inode = &
ci.ci_inode;
320 lfile.f_path.dentry->d_inode->i_sb = &
sb;
324 lfile.f_dentry->d_inode = &
ci.ci_inode;
325 lfile.f_dentry->d_inode->i_sb = &
sb;
339 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) 391 iovec_arr[
cnt].iov_base = &
rc;
579 iovec_arr[
cnt].iov_base = &
rc;
677 iovec_arr[
cnt].iov_base = &
rc;
778 for (j = 0; j <
LAY_N; ++j) {
810 iovec_arr[
cnt].iov_base = &
rc;
898 io_request_bob_init(&
req);
912 iovec_arr[
cnt].iov_base = aligned_buf;
964 io_request_bob_fini(&
req);
982 buf =
map->pi_databufs[row][col];
1002 buf =
map->pi_databufs[row][col];
1039 char content[
LAY_P - 1] = {
'b',
'c',
'd',
'e'};
1044 struct iovec *iovec_arr;
1075 iovec_arr[
i].iov_base = &
rc;
1118 irfop = iofops_tlist_head(&ti->
ti_iofops);
1120 &
csb.csb_rpc_machine);
1122 &
csb.csb_rpc_machine);
1145 ci_layout_instance);
1177 for (row = 0; row <
rows_nr(play); ++row)
1189 for (col = 0; col <
layout_n(play); ++col) {
1190 for (row = 0; row <
rows_nr(play); ++row) {
1200 db_buf.b_addr, content[col],
1209 for (col = 0; col <
layout_k(play); ++col) {
1210 for (row = 0; row <
rows_nr(play); ++row) {
1225 for (row = 0; row <
rows_nr(play); ++row) {
1228 for (col = 0; col <
PAGE_SIZE; ++col, ++cont)
1264 {
"basic_data_structures_test",
ds_test},
1275 #undef M0_TRACE_SUBSYSTEM
static struct m0t1fs_sb csb
struct m0_fop_type m0_fop_cob_readv_rep_fopt
static int io_request_init(struct io_request *req, struct file *file, const struct iovec *iov, struct m0_indexvec_varr *ivv, enum io_req_type rw)
M0_INTERNAL void m0_chan_wait(struct m0_clink *link)
M0_INTERNAL void m0_pools_common_fini(struct m0_pools_common *pc)
#define M0_ALLOC_ARR(arr, nr)
M0_TL_DECLARE(rpcbulk, M0_INTERNAL, struct m0_rpc_bulk_buf)
static struct m0_fid target_fid(const struct io_request *req, struct m0_pdclust_tgt_addr *tgt)
M0_INTERNAL void m0_reqh_services_terminate(struct m0_reqh *reqh)
M0_INTERNAL void m0_fid_gob_make(struct m0_fid *gob_fid, uint32_t container, uint64_t key)
#define m0_htable_for(name, var, htable)
void * m0_tlist_head(const struct m0_tl_descr *d, const struct m0_tl *list)
static int dgmode_rwvec_alloc_init(struct target_ioreq *ti)
struct m0_atomic64 nxr_rdbulk_nr
static struct m0_rm_remote creditor
struct m0_pool_version * l_pver
static void io_req_fop_fini(struct io_req_fop *fop)
static void pargrp_iomap_fini(struct pargrp_iomap *map)
static struct buffer * cur(struct m0_addb2_mach *mach, m0_bcount_t space)
static int ioreq_iomaps_prepare(struct io_request *req)
int m0_thread_join(struct m0_thread *q)
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
static struct io_request req
static int file_io_ut_init(void)
struct m0_conf_obj rt_obj
static void dgmode_readio_test(void)
struct data_buf *** pi_paritybufs
static int nw_xfer_tioreq_map(struct nw_xfer_request *xfer, const struct m0_pdclust_src_addr *src, struct m0_pdclust_tgt_addr *tgt, struct target_ioreq **tio)
int m0t1fs_net_init(struct m0t1fs_sb *csb, const char *ep)
M0_INTERNAL void m0_reqh_layouts_cleanup(struct m0_reqh *reqh)
static void nw_xfer_req_complete(struct nw_xfer_request *xfer, bool rmw)
static uint32_t layout_k(const struct m0_pdclust_layout *play)
static void m0_atomic64_sub(struct m0_atomic64 *a, int64_t num)
static struct dgmode_rwvec dgvec_tmp
#define M0_FID_INIT(container, key)
M0_INTERNAL const struct m0_fid * m0t1fs_inode_fid(const struct m0t1fs_inode *ci)
M0_INTERNAL void m0_uint128_init(struct m0_uint128 *u128, const char *magic)
static m0_bcount_t v_seg_endpos(struct m0_indexvec_varr *ivec, uint32_t i)
M0_INTERNAL int m0_linear_enum_build(struct m0_layout_domain *dom, const struct m0_layout_linear_attr *attr, struct m0_layout_linear_enum **out)
struct m0_rpc_bulk if_rbulk
static void ds_test(void)
struct m0_indexvec_varr ti_bufvec
M0_INTERNAL void m0_rconfc_stop_sync(struct m0_rconfc *rconfc)
struct m0_net_domain * ntm_dom
static void nw_xfer_ops_test(void)
M0_INTERNAL void m0_free_aligned(void *data, size_t size, unsigned shift)
M0_INTERNAL void m0t1fs_file_lock_fini(struct m0t1fs_inode *ci)
struct m0_varr ti_pageattrs
#define M0_THREAD_INIT(thread, TYPE, init, func, arg, namefmt,...)
static uint64_t round_up(uint64_t val, uint64_t size)
void m0t1fs_net_fini(struct m0t1fs_sb *csb)
static void m0_fi_enable_random(const char *func, const char *tag, uint32_t p)
static void ioreq_sm_state_set(struct io_request *req, int state)
M0_INTERNAL void m0t1fs_sb_init(struct m0t1fs_sb *csb)
M0_INTERNAL int m0_pools_setup(struct m0_pools_common *pc, const struct m0_fid *profile, struct m0_sm_group *sm_grp, struct m0_dtm *dtm)
static int io_req_fop_init(struct io_req_fop *fop, struct target_ioreq *ti, enum page_attr pattr)
static struct m0_rpc_conn conn
static int io_req_fop_dgmode_read(struct io_req_fop *irfop)
struct target_ioreq * irf_tioreq
M0_INTERNAL int m0_layout_instance_build(struct m0_layout *l, const struct m0_fid *fid, struct m0_layout_instance **out)
M0_INTERNAL void m0_rpc_bulk_buflist_empty(struct m0_rpc_bulk *rbulk)
struct target_ioreq * dr_tioreq
static int pargrp_iomap_dgmode_recover(struct pargrp_iomap *map)
M0_INTERNAL int m0_confc_root_open(struct m0_confc *confc, struct m0_conf_root **root)
M0_INTERNAL void m0_sm_group_unlock(struct m0_sm_group *grp)
M0_INTERNAL struct m0_fid * m0_reqh2profile(struct m0_reqh *reqh)
M0_INTERNAL void m0t1fs_sb_fini(struct m0t1fs_sb *csb)
void m0_fop_rpc_machine_set(struct m0_fop *fop, struct m0_rpc_machine *mach)
M0_INTERNAL m0_bcount_t m0_rpc_session_get_max_item_payload_size(const struct m0_rpc_session *session)
M0_INTERNAL int m0_indexvec_varr_alloc(struct m0_indexvec_varr *ivec, uint32_t len)
void m0t1fs_ha_fini(struct m0t1fs_sb *csb)
struct m0_rpc_machine * c_rpc_machine
M0_INTERNAL uint32_t m0_layout_enum_find(const struct m0_layout_enum *e, const struct m0_fid *gfid, const struct m0_fid *target)
static void helpers_test(void)
static uint32_t rows_nr(struct m0_pdclust_layout *play)
M0_INTERNAL void m0t1fs_fs_unlock(struct m0t1fs_sb *csb)
int(* nxo_distribute)(struct nw_xfer_request *xfer)
struct m0_conf_root * root
struct m0_layout_enum lle_base
M0_INTERNAL struct m0_fop_cob_rw_reply * io_rw_rep_get(struct m0_fop *fop)
M0_INTERNAL int m0__pools_common_init(struct m0_pools_common *pc, struct m0_rpc_machine *rmach, struct m0_conf_root *root)
int(* pi_populate)(struct pargrp_iomap *iomap, struct m0_ivec_varr_cursor *cursor)
M0_INTERNAL int m0_pool_version_get(struct m0_pools_common *pc, const struct m0_fid *pool, struct m0_pool_version **pv)
M0_INTERNAL struct m0_confc * m0_reqh2confc(struct m0_reqh *reqh)
#define M0_FID_TINIT(type, container, key)
#define m0_tl_teardown(name, head, obj)
M0_INTERNAL void m0_fi_disable(const char *fp_func, const char *fp_tag)
struct m0_striped_layout pl_base
enum pargrp_iomap_state pi_state
static void m0_fi_enable(const char *func, const char *tag)
M0_INTERNAL int m0_reqh_conf_setup(struct m0_reqh *reqh, struct m0_confc_args *args)
static uint64_t page_nr(m0_bcount_t size)
M0_INTERNAL size_t m0_io_fop_size_get(struct m0_fop *fop)
struct m0_net_transfer_mc rm_tm
M0_INTERNAL void m0_chan_init(struct m0_chan *chan, struct m0_mutex *ch_guard)
struct m0_ut_suite file_io_ut
static uint64_t page_id(m0_bindex_t offset)
static struct m0_confc * confc
struct nw_xfer_request ir_nwxfer
static void target_ioreq_test(void)
static struct m0_pdclust_layout * pdlay
M0_INTERNAL struct m0t1fs_inode * m0t1fs_file_to_m0inode(const struct file *file)
static void data_buf_dealloc_fini(struct data_buf *buf)
static struct m0_pdclust_instance * pdlayout_instance(const struct m0_layout_instance *li)
const struct nw_xfer_ops * nxr_ops
static void m0_atomic64_dec(struct m0_atomic64 *a)
static void dgmode_rwvec_dealloc_fini(struct dgmode_rwvec *dg)
void(* iro_iomaps_destroy)(struct io_request *req)
M0_INTERNAL void m0_pools_service_ctx_destroy(struct m0_pools_common *pc)
struct m0_fop * m0_fop_get(struct m0_fop *fop)
static uint64_t layout_unit_size(const struct m0_pdclust_layout *play)
struct m0_rpc_item * ri_reply
int m0t1fs_ha_init(struct m0t1fs_sb *csb, const char *ha_addr)
static int m0_rconfc_start_sync(struct m0_rconfc *rconfc)
struct m0_0vec bb_zerovec
int(* pi_dgmode_postprocess)(struct pargrp_iomap *map)
static struct m0t1fs_inode ci
static void ast_thread_stop(struct m0t1fs_sb *csb)
static struct super_block super_block
static bool pargrp_iomap_spans_seg(struct pargrp_iomap *map, m0_bindex_t index, m0_bcount_t count)
static void pargrp_src_addr(m0_bindex_t index, const struct io_request *req, const struct target_ioreq *tio_req, struct m0_pdclust_src_addr *src)
M0_INTERNAL void m0_fd_bwd_map(struct m0_pdclust_instance *pi, const struct m0_pdclust_tgt_addr *tgt, struct m0_pdclust_src_addr *src)
static int pargrp_iomap_paritybufs_alloc(struct pargrp_iomap *map)
struct m0_htable nxr_tioreqs_hash
static void target_ioreq_fini(struct target_ioreq *ti)
struct m0_rpc_session * ti_session
struct m0_indexvec_varr ir_ivv
static void ast_thread(struct m0t1fs_sb *csb)
M0_INTERNAL void m0t1fs_fs_lock(struct m0t1fs_sb *csb)
struct m0_indexvec_varr dr_ivec_varr
static void page_pos_get(struct pargrp_iomap *map, m0_bindex_t index, uint32_t *row, uint32_t *col)
M0_INTERNAL void m0_indexvec_varr_free(struct m0_indexvec_varr *ivec)
int m0t1fs_rpc_init(struct m0t1fs_sb *csb, const char *ep)
static uint64_t data_size(const struct m0_pdclust_layout *play)
static const struct m0_rpc_item_ops io_item_ops
M0_INTERNAL void m0_chan_signal_lock(struct m0_chan *chan)
M0_TL_DESCR_DECLARE(rpcbulk, M0_EXTERN)
const struct target_ioreq_ops * ti_ops
static struct pargrp_iomap map
static void irfop_fini(struct io_req_fop *irfop)
struct m0_rpc_machine * ca_rmach
struct m0_uint128 pa_seed
static uint64_t round_down(uint64_t val, uint64_t size)
static int nw_xfer_io_distribute(struct nw_xfer_request *xfer)
M0_INTERNAL void m0_rconfc_fini(struct m0_rconfc *rconfc)
static uint32_t layout_n(const struct m0_pdclust_layout *play)
M0_INTERNAL struct m0_layout * m0_pdl_to_layout(struct m0_pdclust_layout *pl)
const struct iovec * ir_iovec
static void m0_fi_enable_off_n_on_m(const char *func, const char *tag, uint32_t n, uint32_t m)
static struct m0_pdclust_layout * pdlayout_get(const struct io_request *req)
static int64_t m0_atomic64_get(const struct m0_atomic64 *a)
static int pargrp_iomap_parity_recalc(struct pargrp_iomap *map)
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
int m0t1fs_rm_service_start(struct m0t1fs_sb *csb)
m0t1fs_file_lock_init(ci, csb)
M0_INTERNAL void m0_ivec_varr_cursor_init(struct m0_ivec_varr_cursor *cur, struct m0_indexvec_varr *ivec)
M0_INTERNAL size_t m0_rpc_bulk_buf_length(struct m0_rpc_bulk *rbulk)
static int pargrp_iomap_readold_auxbuf_alloc(struct pargrp_iomap *map)
struct m0_pdclust_tgt_addr tgt
static struct super_block sb
static void io_bottom_half(struct m0_sm_group *grp, struct m0_sm_ast *ast)
static int pargrp_iomap_seg_process(struct pargrp_iomap *map, uint64_t seg, bool rmw)
static void nw_xfer_request_fini(struct nw_xfer_request *xfer)
static uint64_t indexvec_varr_count(struct m0_indexvec_varr *varr)
static struct m0_layout_instance * layout_instance(const struct io_request *req)
static int pargrp_iomap_init(struct pargrp_iomap *map, struct io_request *req, uint64_t grpid)
#define M0_ALLOC_PTR(ptr)
const struct m0_rpc_item_ops * ri_ops
static int file_io_ut_fini(void)
M0_INTERNAL struct m0_layout_enum * m0_layout_instance_to_enum(const struct m0_layout_instance *li)
M0_INTERNAL int m0_pools_service_ctx_create(struct m0_pools_common *pc)
enum nw_xfer_state nxr_state
struct m0_indexvec_varr ti_ivv
static int target_ioreq_init(struct target_ioreq *ti, struct nw_xfer_request *xfer, const struct m0_fid *cobfid, uint64_t ta_obj, struct m0_rpc_session *session, uint64_t size)
void m0t1fs_fid_alloc(struct m0t1fs_sb *csb, struct m0_fid *out)
static void target_ioreq_seg_add(struct target_ioreq *ti, const struct m0_pdclust_src_addr *src, const struct m0_pdclust_tgt_addr *tgt, m0_bindex_t gob_offset, m0_bcount_t count, struct pargrp_iomap *map)
static int pargrp_iomap_populate(struct pargrp_iomap *map, struct m0_ivec_varr_cursor *cursor)
static void nw_xfer_request_init(struct nw_xfer_request *xfer)
static uint64_t parity_units_page_nr(const struct m0_pdclust_layout *play)
static int start(struct m0_fom *fom)
struct data_buf *** pi_databufs
void m0_fop_put_lock(struct m0_fop *fop)
static struct m0_layout_linear_attr llattr
M0_INTERNAL bool m0_rpc_bulk_is_empty(struct m0_rpc_bulk *rbulk)
static void ioreq_pgiomap_find(struct io_request *req, uint64_t grpid, uint64_t *cursor, struct pargrp_iomap **out)
const struct io_request_ops * ir_ops
struct m0_atomic64 nxr_iofop_nr
M0_INTERNAL int m0_pdclust_build(struct m0_layout_domain *dom, uint64_t lid, const struct m0_pdclust_attr *attr, struct m0_layout_enum *le, struct m0_pdclust_layout **out)
struct m0_io_fop irf_iofop
M0_INTERNAL void m0_sm_group_lock(struct m0_sm_group *grp)
struct pargrp_iomap ** ir_iomaps
static int target_ioreq_iofops_prepare(struct target_ioreq *ti, enum page_attr filter)
M0_INTERNAL void m0_confc_close(struct m0_conf_obj *obj)
static void skip(struct m0_addb2__context *ctx, const uint64_t *v, char *buf)
struct m0_rconfc rh_rconfc
M0_INTERNAL void m0_layout_instance_fini(struct m0_layout_instance *li)
struct nw_xfer_request * ti_nwxfer
static int dummy_readrest(struct pargrp_iomap *map)
M0_INTERNAL void m0_layout_put(struct m0_layout *l)
M0_INTERNAL void m0_fid_convert_gob2cob(const struct m0_fid *gob_fid, struct m0_fid *cob_fid, uint32_t device_id)
M0_INTERNAL int m0_pool_versions_setup(struct m0_pools_common *pc)
static uint64_t pargrp_id_find(m0_bindex_t index, const struct io_request *req, const struct io_req_fop *ir_fop)
M0_INTERNAL void * m0_alloc_aligned(size_t size, unsigned shift)
M0_INTERNAL void m0_pool_versions_destroy(struct m0_pools_common *pc)
static void pargrp_iomap_test(void)
M0_INTERNAL void m0_fd_fwd_map(struct m0_pdclust_instance *pi, const struct m0_pdclust_src_addr *src, struct m0_pdclust_tgt_addr *tgt)
static void ioreq_iomaps_destroy(struct io_request *req)
M0_INTERNAL void m0_sm_asts_run(struct m0_sm_group *grp)
static struct m0_dtm_oper_descr reply
void m0t1fs_rpc_fini(struct m0t1fs_sb *csb)
#define m0_tl_for(name, head, obj)
static struct m0_pdclust_attr pdattr
struct m0_rpc_item f_item
struct m0_pdclust_src_addr src
struct dgmode_rwvec * ti_dgvec
const struct pargrp_iomap_ops * pi_ops
struct m0_rpc_conn * s_conn
static void io_request_fini(struct io_request *req)
static const struct m0_fid * file_to_fid(const struct file *file)
static int pargrp_iomap_readrest(struct pargrp_iomap *map)
static void m0_atomic64_set(struct m0_atomic64 *a, int64_t num)
static uint64_t pargrp_iomap_fullpages_count(struct pargrp_iomap *map)
static struct data_buf * data_buf_alloc_init(enum page_attr pattr)
struct m0_fop * m0_fop_alloc(struct m0_fop_type *fopt, void *data, struct m0_rpc_machine *mach)
static int pargrp_iomap_databuf_alloc(struct pargrp_iomap *map, uint32_t row, uint32_t col)
static struct m0_layout_linear_enum * llenum
M0_INTERNAL void io_bob_tlists_init(void)
M0_INTERNAL void m0_pools_destroy(struct m0_pools_common *pc)