22 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_IOSERVICE 566 #define M0_OBJ_LAYOUT_ID(lid) (lid & 0x0000ffffffffffff) 573 siod_linkage, siod_magic,
616 uint64_t bytecount,
struct m0_be_tx *tx);
687 "network-buffer-acquire", },
692 "network-buffer-wait", },
727 .sd_name =
"network-buffer-acquire",
734 .sd_name =
"network-buffer-wait",
741 .sd_name =
"stobio-launch",
746 .sd_name =
"stobio-finish",
752 .sd_name =
"zero-copy-initiate",
757 .sd_name =
"zero-copy-finish",
764 .sd_name =
"network-buffer-release",
769 .sd_name =
"tx-sync",
780 {
"network-buffer-acquired-stobio",
782 {
"network-buffer-acquired-zerocopy",
784 {
"network-buffer-wait",
786 {
"network-buffer-acquire-failure",
788 {
"network-buffer-wait-finished-stobio",
790 {
"network-buffer-wait-finished-zerocopy",
792 {
"network-buffer-not-available",
794 {
"network-buffer-wait-failure",
798 {
"stobio-wait-finished-zerocopy",
800 {
"stobio-wait-finished-buffer-release",
803 {
"zero-copy-initiated",
805 {
"zero-copy-initiate-failed",
807 {
"zero-copy-wait-finished-buffer-release",
809 {
"zero-copy-wait-finished-stobio",
811 {
"zero-copy-wait-finished-txn-open",
814 {
"network-buffer-released",
836 _0C(
io->fcrw_curr_desc_index >= 0) &&
839 &
io->fcrw_netbuf_list))) &&
840 _0C(
io->fcrw_batch_size ==
841 netbufs_tlist_length(&
io->fcrw_netbuf_list)) &&
842 _0C(
io->fcrw_req_count >=
io->fcrw_count) &&
843 _0C(
io->fcrw_curr_size <=
io->fcrw_total_ioivec_cnt) &&
844 _0C(
io->fcrw_num_stobio_launched <=
845 stobio_tlist_length(&
io->fcrw_stio_list)) &&
847 stobio_tlist_length(&
io->fcrw_stio_list),
962 bool cob_recreate =
false;
975 }
else if (
rc == -ENOENT && crow) {
982 if (
rc == 0 && cob_recreate) {
1052 if (blk >= ivec_count)
1070 M0_ASSERT((ivec_count > 0) == (i < obuf->ov_vec.v_nr - 1));
1160 if (fom_obj ==
NULL)
1161 return M0_RC(-ENOMEM);
1168 return M0_RC(-ENOMEM);
1286 reqh, device_state);
1308 int acquired_net_bufs;
1309 int required_net_bufs;
1345 bpd->rios_ndom == tm->
ntm_dom);
1359 M0_ASSERT(acquired_net_bufs <= required_net_bufs);
1360 while (acquired_net_bufs < required_net_bufs) {
1366 if (nb ==
NULL && acquired_net_bufs == 0) {
1382 }
else if (nb ==
NULL) {
1390 acquired_net_bufs++;
1392 if (acquired_net_bufs == required_net_bufs &&
pool->nbp_free > 0)
1393 pool->nbp_ops->nbpo_not_empty(
pool);
1404 netbufs_tlink_init(nb);
1443 if (still_required == 0)
1478 while (acquired > still_required) {
1484 netbufs_tlink_del_fini(nb);
1491 M0_LOG(
M0_DEBUG,
"Released %d network buffer(s), batch_size = %d.",
1492 released, still_required);
1519 uint32_t buffers_added = 0;
1543 fcrw_curr_desc_index];
1547 uint32_t segs_nr = 0;
1554 segs_nr = (used_size + max_seg_size - 1) / max_seg_size;
1642 if (rbulk->
rb_rc != 0){
1665 if (stobio_tlink_is_in(stio_desc))
1666 stobio_tlist_remove(stio_desc);
1672 uint64_t last_io_off;
1758 stio = &stio_desc->siod_stob_io;
1761 stobio_tlink_init(stio_desc);
1788 if (di_buf !=
NULL) {
1790 di_buf->
b_addr + curr_pos);
1822 "id "FID_F" rc = %d",
1931 if (stio->
si_rc != 0) {
2007 uint32_t max_frags_nr = 0;
2024 M0_LOG(
M0_DEBUG,
"max_frags_nr=%d bshift=%u", max_frags_nr, bshift);
2026 if (max_frags_nr > 0)
2161 if (
rc != 0 &&
i > 0) {
2447 netbufs_tlink_del_fini(nb);
2482 return m0_rnd(1 << 30, &hash) >> 1;
2498 return "M0_CST_IOS";
2517 uint64_t bytecount,
struct m0_be_tx *tx)
2527 if (
rc == -ENOENT) {
2535 }
else if (
rc == 0) {
2542 " to %" PRIu64, bytecount,
2550 #undef M0_TRACE_SUBSYSTEM
struct m0_cob_nsrec co_nsrec
M0_INTERNAL m0_bcount_t m0_net_domain_get_max_buffer_segment_size(struct m0_net_domain *dom)
#define M0_BUFVEC_INIT_BUF(addr_ptr, count_ptr)
struct m0_fol_frag siod_fol_frag
struct m0_fop_type m0_fop_cob_readv_rep_fopt
M0_INTERNAL struct m0_stob_domain * m0_stob_dom_get(struct m0_stob *stob)
void m0_fom_phase_moveif(struct m0_fom *fom, int32_t rc, int phase0, int phase1)
uint32_t m0_fop_opcode(const struct m0_fop *fop)
#define M0_ALLOC_ARR(arr, nr)
enum m0_stob_io_flags si_flags
struct m0_tl fcrw_stio_list
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
static int fom_cob_locate(struct m0_fom *fom)
M0_INTERNAL void m0_stob_io_fini(struct m0_stob_io *io)
static int stob_object_find(struct m0_fom *fom)
static int io_launch(struct m0_fom *)
M0_INTERNAL uint64_t m0_fid_hash(const struct m0_fid *fid)
static void stobio_complete_cb(struct m0_fom_callback *cb)
struct m0_tl rios_buffer_pools
struct m0_bufvec nb_buffer
M0_INTERNAL void m0_stob_io_credit(const struct m0_stob_io *io, const struct m0_stob_domain *dom, struct m0_be_tx_credit *accum)
struct m0_fom_callback siod_fcb
M0_INTERNAL int m0_storage_dev_stob_find(struct m0_storage_devs *devs, struct m0_stob_id *sid, struct m0_stob **stob)
union m0_be_rwlock::@198 bl_u
struct m0_pool_version * pm_pver
M0_INTERNAL void m0_storage_dev_stob_put(struct m0_storage_devs *devs, struct m0_stob *stob)
M0_INTERNAL struct m0_pool_version * m0_pool_version_find(struct m0_pools_common *pc, const struct m0_fid *id)
struct m0_tl fcrw_netbuf_list
struct m0_poolmach pv_mach
#define M0_LOG(level,...)
int fcrw_st_next_phase_wait
static struct m0_be_tx_credit * m0_fom_tx_credit(struct m0_fom *fom)
M0_INTERNAL struct m0_net_buffer * m0_net_buffer_pool_get(struct m0_net_buffer_pool *pool, uint32_t colour)
static bool m0_stob_io_desc_invariant(const struct m0_stob_io_desc *stobio_desc)
struct m0_cob_domain * co_dom
M0_INTERNAL void m0_net_buffer_pool_unlock(struct m0_net_buffer_pool *pool)
static int indexvec_wire2mem(struct m0_fom *fom)
M0_INTERNAL uint32_t m0_bufvec_pack(struct m0_bufvec *bv)
int(* fto_create)(struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
M0_INTERNAL void m0_fom_callback_init(struct m0_fom_callback *cb)
M0_INTERNAL void m0_rpc_bulk_fini(struct m0_rpc_bulk *rbulk)
M0_INTERNAL void m0_rwlock_write_lock(struct m0_rwlock *lock)
M0_INTERNAL bool m0_stob_domain_is_of_type(const struct m0_stob_domain *dom, const struct m0_stob_type *dt)
const struct m0_stob_type m0_stob_ad_type
struct m0_net_domain * ntm_dom
M0_INTERNAL void m0_cob_put(struct m0_cob *cob)
struct m0_stob_io_desc * fcrw_stio
struct m0_net_buf_desc_data * id_descs
M0_INTERNAL void m0_indexvec_free(struct m0_indexvec *ivec)
M0_INTERNAL void m0_stob_ad_balloc_set(struct m0_stob_io *io, uint64_t flags)
struct m0_reqh_service rios_gen
M0_INTERNAL void m0_fom_wait_on(struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
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)
struct m0_sm_conf io_conf
M0_INTERNAL int m0_poolmach_device_state(struct m0_poolmach *pm, uint32_t device_index, enum m0_pool_nd_state *state_out)
struct m0_rpc_bulk fcrw_bulk
struct m0_net_buffer_pool * fcrw_bp
static int zero_copy_finish(struct m0_fom *)
#define container_of(ptr, type, member)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
M0_INTERNAL m0_bcount_t m0_extent_get_checksum_nob(m0_bindex_t ext_start, m0_bindex_t ext_length, m0_bindex_t unit_sz, m0_bcount_t cs_size)
M0_ADDB2_ADD(M0_AVI_FS_CREATE, new_fid.f_container, new_fid.f_key, mode, rc)
int fcrw_st_next_phase_again
static int io_fom_cob2file(struct m0_fom *fom, struct m0_fid *fid, struct m0_file **out)
static int io_sync(struct m0_fom *fom)
m0_time_t fcrw_io_launch_time
M0_INTERNAL bool m0_fid_is_set(const struct m0_fid *fid)
M0_INTERNAL int m0_io_cob_stob_create(struct m0_fom *fom, struct m0_cob_domain *cdom, struct m0_fid *fid, struct m0_fid *pver, uint64_t lid, bool crow, struct m0_cob **out)
struct m0_sm_trans_descr io_phases_trans[]
M0_INTERNAL int m0_cob_size_update(struct m0_cob *cob, uint64_t size, struct m0_be_tx *tx)
struct m0_chan rios_bp_wait
static struct m0_be_tx * m0_fom_tx(struct m0_fom *fom)
#define M0_INVARIANT_EX(cond)
static struct m0_pools_common pc
M0_TL_DESCR_DECLARE(bufferpools, M0_EXTERN)
M0_INTERNAL void m0_rpc_bulk_buflist_empty(struct m0_rpc_bulk *rbulk)
struct m0_fom_type ft_fom_type
struct m0_stob_domain * so_domain
struct m0_buf crw_di_data_cksum
m0_bcount_t fcrw_total_ioivec_cnt
#define M0_CHECK_EX(cond)
M0_INTERNAL void m0_cob_tx_credit(struct m0_cob_domain *dom, enum m0_cob_op optype, struct m0_be_tx_credit *accum)
M0_INTERNAL uint32_t m0_stob_block_shift(struct m0_stob *stob)
M0_INTERNAL bool m0_reqh_io_service_invariant(const struct m0_reqh_io_service *rios)
static uint32_t unit_size
void m0_fom_init(struct m0_fom *fom, const struct m0_fom_type *fom_type, const struct m0_fom_ops *ops, struct m0_fop *fop, struct m0_fop *reply, struct m0_reqh *reqh)
M0_INTERNAL int m0_rpc_bulk_load(struct m0_rpc_bulk *rbulk, const struct m0_rpc_conn *conn, struct m0_net_buf_desc_data *from_desc, const struct m0_net_buffer_callbacks *bulk_cb)
static void m0_io_fom_cob_rw_fini(struct m0_fom *fom)
struct m0_fop_type * f_type
static void stob_be_credit(struct m0_fom *fom)
M0_INTERNAL enum sns_repair_state m0_sns_cm_fid_repair_done(struct m0_fid *gfid, struct m0_reqh *reqh, enum m0_pool_nd_state device_state)
#define M0_OBJ_LAYOUT_ID(lid)
struct m0_net_buffer_pool rios_bp
#define M0_ERR_INFO(rc, fmt,...)
return M0_ERR(-EOPNOTSUPP)
static bool m0_io_fom_cob_rw_invariant(const struct m0_io_fom_cob_rw *io)
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 struct m0_fop_cob_rw_reply * io_rw_rep_get(struct m0_fop *fop)
static int net_buffer_release(struct m0_fom *)
M0_INTERNAL uint64_t m0_rnd(uint64_t max, uint64_t *seed)
struct m0_cob_domain * rios_cdom
M0_INTERNAL void m0_fom_ready(struct m0_fom *fom)
#define M0_AMB(obj, ptr, field)
M0_INTERNAL void m0_fom_callback_fini(struct m0_fom_callback *cb)
#define m0_tl_teardown(name, head, obj)
static int cob_bytecount_increment(struct m0_cob *cob, struct m0_cob_bckey *key, uint64_t bytecount, struct m0_be_tx *tx)
enum m0_net_queue_type nb_qtype
M0_INTERNAL int m0_stob_io_prepare_and_launch(struct m0_stob_io *io, struct m0_stob *obj, struct m0_dtx *tx, struct m0_io_scope *scope)
int m0_fom_tick_generic(struct m0_fom *fom)
struct m0_indexvec si_stob
void m0_fom_fini(struct m0_fom *fom)
static struct m0_stob * stob
struct m0_buf crw_di_data
static void io_fom_addb2_descr(struct m0_fom *fom)
static struct m0_cob * cob
struct m0_io_descs crw_desc
M0_INTERNAL void m0_rpc_bulk_init(struct m0_rpc_bulk *rbulk)
M0_INTERNAL const char * m0_io_fom_cob_rw_service_name(struct m0_fom *fom)
m0_time_t m0_time_now(void)
M0_INTERNAL bool m0_fom_group_is_locked(const struct m0_fom *fom)
M0_INTERNAL void m0_cob_nsrec_init(struct m0_cob_nsrec *nsrec)
void m0_fom_phase_move(struct m0_fom *fom, int32_t rc, int phase)
M0_TL_DECLARE(bufferpools, M0_EXTERN, struct m0_rios_buffer_pool)
M0_INTERNAL void m0_cob_oikey_make(struct m0_cob_oikey *oikey, const struct m0_fid *fid, int linkno)
static struct m0_cob_domain * fom_cdom(struct m0_fom *fom)
M0_INTERNAL void m0_fid_convert_cob2stob(const struct m0_fid *cob_fid, struct m0_stob_id *stob_id)
M0_INTERNAL int m0_indexvec_wire2mem(struct m0_io_indexvec *wire_ivec, int max_frags_nr, uint32_t bshift, struct m0_indexvec *mem_ivec)
static struct m0_stob_domain * dom
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 void * m0_stob_addr_pack(const void *buf, uint32_t shift)
struct m0_be_rwlock cd_lock
M0_INTERNAL void m0_net_buffer_pool_lock(struct m0_net_buffer_pool *pool)
M0_INTERNAL void m0_fom_mod_rep_fill(struct m0_fop_mod_rep *rep, struct m0_fom *fom)
static int stob_io_create(struct m0_fom *fom)
M0_INTERNAL int m0_stob_io_private_setup(struct m0_stob_io *io, struct m0_stob *obj)
M0_INTERNAL int m0_buf_alloc(struct m0_buf *buf, size_t size)
static struct m0_io_fom_cob_rw_state_transition io_fom_read_st[]
struct m0_sm_state_descr io_phases[]
struct m0_fop_mod_rep rwr_mod_rep
m0_bcount_t crw_cksum_size
M0_INTERNAL uint32_t m0_fid_cob_device_id(const struct m0_fid *cob_fid)
struct m0_buf rwr_di_data_cksum
struct m0_fol_frag * si_fol_frag
M0_INTERNAL int m0_cc_stob_create(struct m0_fom *fom, struct m0_stob_id *sid)
M0_INTERNAL void m0_rwlock_write_unlock(struct m0_rwlock *lock)
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
static size_t m0_io_fom_cob_rw_locality_get(const struct m0_fom *fom)
static uint64_t min64u(uint64_t a, uint64_t b)
static struct m0_stob_io io
M0_INTERNAL struct m0_storage_devs * m0_cs_storage_devs_get(void)
m0_bcount_t fcrw_curr_size
int(* fcrw_st_state_function)(struct m0_fom *)
M0_INTERNAL m0_bcount_t m0_vec_count(const struct m0_vec *vec)
M0_INTERNAL bool m0_is_cob_create_fop(const struct m0_fop *fop)
M0_INTERNAL void m0_fom_callback_arm(struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
uint32_t rwr_cksum_nob_read
static int m0_io_fom_cob_rw_tick(struct m0_fom *fom)
static int io_finish(struct m0_fom *)
static struct m0_pool pool
static int io_prepare(struct m0_fom *)
struct m0_fop * m0_fop_reply_alloc(struct m0_fop *req, struct m0_fop_type *rept)
static int align_bufvec(struct m0_fom *fom, struct m0_bufvec *obuf, struct m0_bufvec *ibuf, m0_bcount_t ivec_count, uint32_t bshift)
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
static const struct m0_io_fom_cob_rw_state_transition io_fom_write_st[]
static int net_buffer_acquire(struct m0_fom *)
bool(* do_check)(const struct m0_file *file, const struct m0_indexvec *io_info, const struct m0_bufvec *in, const struct m0_bufvec *out)
M0_TL_DEFINE(stobio, static, struct m0_stob_io_desc)
M0_INTERNAL int m0_indexvec_split(struct m0_indexvec *in, m0_bcount_t curr_pos, m0_bcount_t nb_len, uint32_t bshift, struct m0_indexvec *out)
M0_INTERNAL m0_bcount_t m0_di_size_get(const struct m0_file *file, const m0_bcount_t size)
struct m0_stob_io fcrw_io
M0_INTERNAL bool m0_is_io_fop(const struct m0_fop *fop)
M0_INTERNAL void m0_stob_ad_balloc_clear(struct m0_stob_io *io)
M0_TL_DESCR_DEFINE(stobio, "STOB I/O", static, struct m0_stob_io_desc, siod_linkage, siod_magic, M0_STOB_IO_DESC_LINK_MAGIC, M0_STOB_IO_DESC_HEAD_MAGIC)
M0_INTERNAL uint64_t m0_io_size(struct m0_stob_io *sio, uint32_t bshift)
#define M0_FI_ENABLED(tag)
M0_INTERNAL bool m0_tlist_invariant(const struct m0_tl_descr *d, const struct m0_tl *list)
#define M0_BYTECOUNT_USER_ID
M0_INTERNAL uint32_t m0_net_tm_colour_get(struct m0_net_transfer_mc *tm)
M0_INTERNAL int m0_cob_bc_lookup(struct m0_cob *cob, struct m0_cob_bckey *bc_key, struct m0_cob_bcrec *bc_rec)
#define M0_ALLOC_PTR(ptr)
struct m0_net_domain * m0_fop_domain_get(const struct m0_fop *fop)
struct m0_fop_type m0_fop_cob_writev_rep_fopt
m0_time_t fcrw_phase_start_time
static int zero_copy_initiate(struct m0_fom *)
struct m0_rpc_session * ri_session
static void stob_io_destroy(struct m0_fom *fom)
M0_INTERNAL m0_bcount_t m0_io_count(const struct m0_io_indexvec *io_info)
M0_INTERNAL int m0_fom_rc(const struct m0_fom *fom)
struct m0_rpc_item * m0_fop_to_rpc_item(const struct m0_fop *fop)
M0_INTERNAL int m0_io_cob_create(struct m0_cob_domain *cdom, struct m0_fid *fid, struct m0_fid *pver, uint64_t lid, struct m0_be_tx *tx)
struct m0_sm_trans_descr m0_generic_phases_trans[]
M0_INTERNAL int m0_cc_stob_cr_credit(struct m0_stob_id *sid, struct m0_be_tx_credit *accum)
static struct m0_fop * fop
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_fom_callback_cancel(struct m0_fom_callback *cb)
M0_INTERNAL int m0_cob_delete(struct m0_cob *cob, struct m0_be_tx *tx)
M0_INTERNAL int m0_cob_locate(struct m0_cob_domain *dom, struct m0_cob_oikey *oikey, uint64_t flags, struct m0_cob **out)
static void stio_desc_fini(struct m0_stob_io_desc *stio_desc)
M0_INTERNAL void m0_stob_io_init(struct m0_stob_io *io)
void(* fo_fini)(struct m0_fom *fom)
M0_INTERNAL void m0_fid_convert_cob2gob(const struct m0_fid *cob_fid, struct m0_fid *gob_fid)
M0_INTERNAL void m0_net_buffer_pool_put(struct m0_net_buffer_pool *pool, struct m0_net_buffer *buf, uint32_t colour)
m0_bcount_t fcrw_req_count
m0_bcount_t si_cksum_nob_read
m0_time_t fcrw_fom_start_time
uint32_t fcrw_num_stobio_launched
struct m0_pool_version * fcrw_pver
M0_INTERNAL int m0_cob_alloc(struct m0_cob_domain *dom, struct m0_cob **out)
M0_INTERNAL bool m0_is_read_fop(const struct m0_fop *fop)
M0_INTERNAL bool m0_is_cob_delete_fop(const struct m0_fop *fop)
void m0_fom_phase_set(struct m0_fom *fom, int phase)
const struct m0_net_buffer_callbacks m0_rpc__buf_bulk_cb
const struct m0_fom_type_ops io_fom_type_ops
struct m0_pools_common cc_pools_common
M0_INTERNAL struct m0_fop_cob_rw * io_rw_get(struct m0_fop *fop)
M0_INTERNAL bool m0_is_write_fop(const struct m0_fop *fop)
static int nbuf_release_done(struct m0_fom *fom, int still_required)
#define m0_tl_find(name, var, head,...)
M0_INTERNAL int m0_rpc_bulk_buf_add(struct m0_rpc_bulk *rbulk, uint32_t segs_nr, m0_bcount_t length, struct m0_net_domain *netdom, struct m0_net_buffer *nb, struct m0_rpc_bulk_buf **out)
M0_INTERNAL struct m0_pool_version * m0_pool_version_lookup(const struct m0_pools_common *pc, const struct m0_fid *id)
M0_INTERNAL uint64_t m0_sm_id_get(const struct m0_sm *sm)
#define m0_tl_for(name, head, obj)
struct m0_rpc_item f_item
#define M0_BUF_INIT(size, data)
struct m0_ioseg * ci_iosegs
struct m0_io_indexvec crw_ivec
M0_INTERNAL struct m0_motr * m0_cs_ctx_get(struct m0_reqh *reqh)
M0_INTERNAL void m0_bufvec_free2(struct m0_bufvec *bufvec)
static int m0_io_fom_cob_rw_create(struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
struct m0_rpc_conn * s_conn
struct m0_stob * fcrw_stob
struct m0_tl fcrw_done_list
struct m0_net_transfer_mc * m0_fop_tm_get(const struct m0_fop *fop)
static uint64_t max64u(uint64_t a, uint64_t b)
const struct m0_di_ops * fi_di_ops
M0_INTERNAL struct m0_reqh * m0_fom_reqh(const struct m0_fom *fom)
M0_INTERNAL int m0_bufvec_empty_alloc(struct m0_bufvec *bufvec, uint32_t num_segs)
M0_INTERNAL int m0_cc_cob_nskey_make(struct m0_cob_nskey **nskey, const struct m0_fid *gfid, uint32_t cob_idx)
struct m0_stob_io siod_stob_io
M0_INTERNAL const char * m0_fom_phase_name(const struct m0_fom *fom, int phase)
#define M0_IMPOSSIBLE(fmt,...)
enum m0_stob_io_opcode si_opcode