|
M0_INTERNAL void | iov_iter_advance (struct iov_iter *i, size_t bytes) |
|
M0_INTERNAL bool | m0t1fs_inode_bob_check (struct m0t1fs_inode *bob) |
|
| M0_TL_DECLARE (rpcbulk, M0_INTERNAL, struct m0_rpc_bulk_buf) |
|
| M0_TL_DESCR_DECLARE (rpcbulk, M0_EXTERN) |
|
| M0_TL_DESCR_DEFINE (iofops, "List of IO fops", static, struct io_req_fop, irf_link, irf_magic, M0_T1FS_IOFOP_MAGIC, M0_T1FS_TIOREQ_MAGIC) |
|
| M0_TL_DEFINE (iofops, static, struct io_req_fop) |
|
| M0_BOB_DEFINE (static, &tioreq_bobtype, target_ioreq) |
|
| M0_BOB_DEFINE (static, &iofop_bobtype, io_req_fop) |
|
| M0_BOB_DEFINE (static, &pgiomap_bobtype, pargrp_iomap) |
|
| M0_BOB_DEFINE (static, &ioreq_bobtype, io_request) |
|
| M0_BOB_DEFINE (static, &nwxfer_bobtype, nw_xfer_request) |
|
| M0_BOB_DEFINE (static, &dtbuf_bobtype, data_buf) |
|
static m0_bcount_t | seg_endpos (const struct m0_indexvec *ivec, uint32_t i) |
|
static m0_bcount_t | v_seg_endpos (struct m0_indexvec_varr *ivec, uint32_t i) |
|
M0_INTERNAL struct inode * | m0t1fs_file_to_inode (const struct file *file) |
|
M0_INTERNAL struct m0t1fs_inode * | m0t1fs_file_to_m0inode (const struct file *file) |
|
M0_INTERNAL struct m0_pool_version * | m0t1fs_file_to_pver (const struct file *file) |
|
M0_INTERNAL struct m0_poolmach * | m0t1fs_file_to_poolmach (const struct file *file) |
|
M0_INTERNAL struct m0t1fs_inode * | m0t1fs_inode_to_m0inode (const struct inode *inode) |
|
static struct inode * | iomap_to_inode (const struct pargrp_iomap *map) |
|
M0_INTERNAL struct m0t1fs_sb * | m0inode_to_sb (const struct m0t1fs_inode *m0inode) |
|
static const struct m0_fid * | file_to_fid (const struct file *file) |
|
static struct m0t1fs_sb * | file_to_sb (const struct file *file) |
|
static struct m0_sm_group * | file_to_smgroup (const struct file *file) |
|
static uint64_t | page_nr (m0_bcount_t size) |
|
static struct m0_layout_instance * | layout_instance (const struct io_request *req) |
|
static struct m0_pdclust_instance * | pdlayout_instance (const struct m0_layout_instance *li) |
|
static struct m0_pdclust_layout * | pdlayout_get (const struct io_request *req) |
|
static uint32_t | layout_n (const struct m0_pdclust_layout *play) |
|
static uint32_t | layout_k (const struct m0_pdclust_layout *play) |
|
static uint64_t | layout_unit_size (const struct m0_pdclust_layout *play) |
|
static uint64_t | parity_units_page_nr (const struct m0_pdclust_layout *play) |
|
static uint64_t | indexvec_varr_count (struct m0_indexvec_varr *varr) |
|
static uint64_t | iomap_page_nr (struct pargrp_iomap *map) |
|
static uint64_t | data_size (const struct m0_pdclust_layout *play) |
|
static struct m0_parity_math * | parity_math (struct io_request *req) |
|
static uint64_t | group_id (m0_bindex_t index, m0_bcount_t dtsize) |
|
static bool | is_page_read (struct data_buf *dbuf) |
|
static uint64_t | target_offset (uint64_t frame, struct m0_pdclust_layout *play, m0_bindex_t gob_offset) |
|
static uint32_t | target_ioreq_type_get (struct target_ioreq *ti) |
|
static void | target_ioreq_type_set (struct target_ioreq *ti, enum target_ioreq_type type) |
|
static bool | is_pver_dud (uint32_t fdev_nr, uint32_t dev_k, uint32_t fsvc_nr, uint32_t svc_k) |
|
static uint64_t | tioreqs_hash_func (const struct m0_htable *htable, const void *k) |
|
static bool | tioreq_key_eq (const void *key1, const void *key2) |
|
| M0_HT_DESCR_DEFINE (tioreqht, "Hash of target_ioreq objects", static, struct target_ioreq, ti_link, ti_magic, M0_T1FS_TIOREQ_MAGIC, M0_T1FS_TLIST_HEAD_MAGIC, ti_fid.f_container, tioreqs_hash_func, tioreq_key_eq) |
|
| M0_HT_DEFINE (tioreqht, static, struct target_ioreq, uint64_t) |
|
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) |
|
static uint64_t | pargrp_id_find (m0_bindex_t index, const struct io_request *req, const struct io_req_fop *ir_fop) |
|
static m0_bindex_t | gfile_offset (m0_bindex_t toff, const struct pargrp_iomap *map, const struct m0_pdclust_layout *play, const struct m0_pdclust_src_addr *src) |
|
static struct m0_fid | target_fid (const struct io_request *req, struct m0_pdclust_tgt_addr *tgt) |
|
static struct m0_rpc_session * | target_session (struct io_request *req, struct m0_fid tfid) |
|
static uint64_t | page_id (m0_bindex_t offset) |
|
static uint32_t | rows_nr (struct m0_pdclust_layout *play) |
|
static uint64_t | round_down (uint64_t val, uint64_t size) |
|
static uint64_t | round_up (uint64_t val, uint64_t size) |
|
static void | page_pos_get (struct pargrp_iomap *map, m0_bindex_t index, uint32_t *row, uint32_t *col) |
|
static void | parity_page_pos_get (struct pargrp_iomap *map, m0_bindex_t index, uint32_t *row, uint32_t *col) |
|
static m0_bindex_t | data_page_offset_get (struct pargrp_iomap *map, uint32_t row, uint32_t col) |
|
M0_INTERNAL void | io_bob_tlists_init (void) |
|
static void | device_state_reset (struct nw_xfer_request *xfer, bool rmw) |
|
static void | io_rpc_item_cb (struct m0_rpc_item *item) |
|
static void | io_req_fop_release (struct m0_ref *ref) |
|
static void | cc_rpc_item_cb (struct m0_rpc_item *item) |
|
static void | cc_fop_release (struct m0_ref *ref) |
|
static bool | nw_xfer_request_invariant (const struct nw_xfer_request *xfer) |
|
static int | nw_xfer_io_distribute (struct nw_xfer_request *xfer) |
|
static void | nw_xfer_req_complete (struct nw_xfer_request *xfer, bool rmw) |
|
static int | nw_xfer_req_dispatch (struct nw_xfer_request *xfer) |
|
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) |
|
static int | nw_xfer_tioreq_get (struct nw_xfer_request *xfer, const struct m0_fid *fid, uint64_t ta_obj, struct m0_rpc_session *session, uint64_t size, struct target_ioreq **out) |
|
static int | pargrp_iomap_populate (struct pargrp_iomap *map, struct m0_ivec_varr_cursor *cursor) |
|
static bool | pargrp_iomap_spans_seg (struct pargrp_iomap *map, m0_bindex_t index, m0_bcount_t count) |
|
static int | pargrp_iomap_readrest (struct pargrp_iomap *map) |
|
static int | pargrp_iomap_seg_process (struct pargrp_iomap *map, uint64_t seg, bool rmw) |
|
static int | pargrp_iomap_parity_recalc (struct pargrp_iomap *map) |
|
static int | pargrp_iomap_parity_verify (struct pargrp_iomap *map) |
|
static uint64_t | pargrp_iomap_fullpages_count (struct pargrp_iomap *map) |
|
static int | pargrp_iomap_readold_auxbuf_alloc (struct pargrp_iomap *map) |
|
static int | pargrp_iomap_paritybufs_alloc (struct pargrp_iomap *map) |
|
static int | pargrp_iomap_dgmode_process (struct pargrp_iomap *map, struct target_ioreq *tio, m0_bindex_t *index, uint32_t count) |
|
static int | pargrp_iomap_dgmode_postprocess (struct pargrp_iomap *map) |
|
static int | pargrp_iomap_dgmode_recover (struct pargrp_iomap *map) |
|
static bool | pargrp_iomap_invariant_nr (struct io_request *req) |
|
static bool | target_ioreq_invariant (struct target_ioreq *ti) |
|
static void | target_ioreq_fini (struct target_ioreq *ti) |
|
static int | target_ioreq_iofops_prepare (struct target_ioreq *ti, enum page_attr filter) |
|
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 | target_cob_create_fop_prepare (struct target_ioreq *ti) |
|
static int | io_req_fop_dgmode_read (struct io_req_fop *irfop) |
|
static struct data_buf * | data_buf_alloc_init (enum page_attr pattr) |
|
static void | data_buf_dealloc_fini (struct data_buf *buf) |
|
static void | io_bottom_half (struct m0_sm_group *grp, struct m0_sm_ast *ast) |
|
static void | cc_bottom_half (struct m0_sm_group *grp, struct m0_sm_ast *ast) |
|
static int | ioreq_iomaps_prepare (struct io_request *req) |
|
static void | ioreq_iomaps_destroy (struct io_request *req) |
|
static int | ioreq_user_data_copy (struct io_request *req, enum copy_direction dir, enum page_attr filter) |
|
static int | ioreq_parity_recalc (struct io_request *req) |
|
static int | ioreq_parity_verify (struct io_request *req) |
|
static int | ioreq_iosm_handle (struct io_request *req) |
|
static int | ioreq_file_lock (struct io_request *req) |
|
static void | ioreq_file_unlock (struct io_request *req) |
|
static int | ioreq_no_lock (struct io_request *req) |
|
static void | ioreq_no_unlock (struct io_request *req) |
|
static int | ioreq_dgmode_read (struct io_request *req, bool rmw) |
|
static int | ioreq_dgmode_write (struct io_request *req, bool rmw) |
|
static int | ioreq_dgmode_recover (struct io_request *req) |
|
static bool | should_req_sm_complete (struct io_request *req) |
|
static uint32_t | ioreq_sm_state (const struct io_request *req) |
|
static void | ioreq_sm_failed (struct io_request *req, int rc) |
|
static void | ioreq_sm_state_set (struct io_request *req, int state) |
|
static void | ioreq_sm_state_set_nolock (struct io_request *req, int state) |
|
static bool | io_request_invariant (struct io_request *req) |
|
static bool | data_buf_invariant (const struct data_buf *db) |
|
static bool | data_buf_invariant_nr (const struct pargrp_iomap *map) |
|
static void | data_buf_init (struct data_buf *buf, void *addr, uint64_t flags) |
|
static void | data_buf_fini (struct data_buf *buf) |
|
static bool | io_req_fop_invariant (const struct io_req_fop *fop) |
|
static bool | pargrp_iomap_invariant (struct pargrp_iomap *map) |
|
static void | nw_xfer_request_init (struct nw_xfer_request *xfer) |
|
static void | nw_xfer_request_fini (struct nw_xfer_request *xfer) |
|
M0_INTERNAL int | user_page_map (struct data_buf *dbuf, unsigned long user_addr) |
|
static void | user_page_unmap (struct data_buf *dbuf, bool set_dirty) |
|
static int | user_data_copy (struct pargrp_iomap *map, m0_bindex_t start, m0_bindex_t end, struct iov_iter *it, enum copy_direction dir, enum page_attr filter) |
|
static void | ioreq_pgiomap_find (struct io_request *req, uint64_t grpid, uint64_t *cursor, struct pargrp_iomap **out) |
|
static void | indexvec_sort (struct m0_indexvec_varr *ivec) |
|
static int | pargrp_iomap_init (struct pargrp_iomap *map, struct io_request *req, uint64_t grpid) |
|
static void | pargrp_iomap_fini (struct pargrp_iomap *map) |
|
static int | pargrp_iomap_databuf_alloc (struct pargrp_iomap *map, uint32_t row, uint32_t col) |
|
static uint64_t | pargrp_iomap_auxbuf_alloc (struct pargrp_iomap *map, uint32_t row, uint32_t col) |
|
static m0_bindex_t | seg_set (struct pargrp_iomap *map, uint32_t seg, struct m0_ivec_varr_cursor *cur, m0_bindex_t grpend) |
|
static void | seg_idx_inc_round (struct pargrp_iomap *map, uint32_t seg, uint64_t sz) |
|
static void | seg_align (struct pargrp_iomap *map, uint32_t seg, m0_bindex_t end, uint64_t sz) |
|
static int | pargrp_iomap_populate_pi_ivec (struct pargrp_iomap *map, struct m0_ivec_varr_cursor *cursor, bool rmw) |
|
static int | pargrp_iomap_select_ro_rr (struct pargrp_iomap *map, m0_bcount_t data_pages_nr, m0_bcount_t parity_pages_nr) |
|
static int | pargrp_iomap_pages_mark_as_failed (struct pargrp_iomap *map, enum m0_pdclust_unit_type type) |
|
static int | unit_state (const struct m0_pdclust_src_addr *src, const struct io_request *req, enum m0_pool_nd_state *state) |
|
static int | io_spare_map (const struct pargrp_iomap *map, const struct m0_pdclust_src_addr *src, uint32_t *spare_slot, uint32_t *spare_slot_prev, enum m0_pool_nd_state *eff_state) |
|
static void | mark_page_as_read_failed (struct pargrp_iomap *map, uint32_t row, uint32_t col, enum page_attr page_type) |
|
static uint32_t | iomap_dgmode_recov_prepare (struct pargrp_iomap *map, uint8_t *failed) |
|
static int | ioreq_iomaps_parity_groups_cal (struct io_request *req) |
|
static int | dgmode_rwvec_alloc_init (struct target_ioreq *ti) |
|
static void | dgmode_rwvec_dealloc_fini (struct dgmode_rwvec *dg) |
|
static void | databufs_set_dgw_mode (struct pargrp_iomap *iomap, struct m0_ext *ext) |
|
static void | paritybufs_set_dgw_mode (struct pargrp_iomap *iomap, struct m0_pdclust_layout *play, uint64_t unit) |
|
static int | ioreq_sm_timedwait (struct io_request *req, uint64_t state) |
|
static uint64_t | tolerance_of_level (struct io_request *req, uint64_t lv) |
|
static bool | is_session_marked (struct io_request *req, struct m0_rpc_session *session) |
|
static int | device_check (struct io_request *req) |
|
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) |
|
static void | io_request_fini (struct io_request *req) |
|
static bool | should_spare_be_mapped (struct io_request *req, enum m0_pool_nd_state dev_state) |
|
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) |
|
static struct target_ioreq * | target_ioreq_locate (struct nw_xfer_request *xfer, const struct m0_fid *fid) |
|
static void | buf_page_free (struct m0_buf *buf) |
|
static int | io_req_fop_init (struct io_req_fop *fop, struct target_ioreq *ti, enum page_attr pattr) |
|
static void | io_req_fop_fini (struct io_req_fop *fop) |
|
static void | irfop_fini (struct io_req_fop *irfop) |
|
static void | ioreq_failed_fini (struct io_request *req, int rc) |
|
M0_INTERNAL ssize_t | m0t1fs_aio (struct kiocb *kcb, const struct iovec *iov, struct m0_indexvec_varr *ivv, enum io_req_type rw) |
|
static struct m0_indexvec_varr * | indexvec_create (unsigned long seg_nr, const struct iovec *iov, loff_t pos) |
|
static ssize_t | file_dio_write (struct kiocb *kcb, struct iov_iter *from) |
|
static ssize_t | aio_write (struct kiocb *kcb, struct iov_iter *from) |
|
static ssize_t | file_aio_write (struct kiocb *kcb, struct iov_iter *from) |
|
static ssize_t | aio_read (struct kiocb *kcb, struct iov_iter *from) |
|
static ssize_t | file_aio_read (struct kiocb *kcb, struct iov_iter *from) |
|
int | m0t1fs_flush (struct file *file, fl_owner_t id) |
|
static void | client_passive_recv (const struct m0_net_buffer_event *evt) |
|
static int | iofop_async_submit (struct m0_io_fop *iofop, struct m0_rpc_session *session) |
|
M0_INTERNAL struct m0_file * | m0_fop_to_file (struct m0_fop *fop) |
|
M0_INTERNAL struct m0t1fs_sb * | m0_fop_to_sb (struct m0_fop *fop) |
|
static uint32_t | io_desc_size (struct m0_net_domain *ndom) |
|
static uint32_t | io_seg_size (void) |
|
static uint32_t | io_di_size (const struct io_request *req) |
|
static int | bulk_buffer_add (struct io_req_fop *irfop, struct m0_net_domain *dom, struct m0_rpc_bulk_buf **rbuf, uint32_t *delta, uint32_t maxsize) |
|
static ssize_t | m0t1fs_direct_IO (struct kiocb *kcb, struct iov_iter *from) |
|