Motr  M0
Fop State Machines for IO FOPs

Data Structures

struct  m0_stob_io_desc
 
struct  m0_io_fom_cob_rw
 
struct  m0_io_fom_cob_rw_state_transition
 

Enumerations

enum  m0_avi_ios_io_labels {
  M0_AVI_IOS_IO_DESCR = M0_AVI_IOS_RANGE_START + 1, M0_AVI_IOS_IO_ATTR_FOMCRW_NDESC, M0_AVI_IOS_IO_ATTR_FOMCRW_TOTAL_IOIVEC_CNT, M0_AVI_IOS_IO_ATTR_FOMCRW_COUNT,
  M0_AVI_IOS_IO_ATTR_FOMCRW_BYTES, M0_AVI_IOS_IO_ATTR_FOMCOB_FOP_TYPE, M0_AVI_IOS_IO_ATTR_FOMCOB_GFID_CONT, M0_AVI_IOS_IO_ATTR_FOMCOB_GFID_KEY,
  M0_AVI_IOS_IO_ATTR_FOMCOB_CFID_CONT, M0_AVI_IOS_IO_ATTR_FOMCOB_CFID_KEY
}
 
enum  { IO_FOM_STOB_KEY_MAX = 0x10000000ULL }
 
enum  m0_io_fom_cob_rw_phases {
  M0_FOPH_IO_FOM_PREPARE = M0_FOPH_TYPE_SPECIFIC, M0_FOPH_IO_FOM_BUFFER_ACQUIRE, M0_FOPH_IO_FOM_BUFFER_WAIT, M0_FOPH_IO_STOB_INIT,
  M0_FOPH_IO_STOB_WAIT, M0_FOPH_IO_ZERO_COPY_INIT, M0_FOPH_IO_ZERO_COPY_WAIT, M0_FOPH_IO_BUFFER_RELEASE,
  M0_FOPH_IO_SYNC
}
 

Functions

 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_TL_DEFINE (stobio, static, struct m0_stob_io_desc)
 
 M0_TL_DESCR_DEFINE (netbufs, "Aquired net buffers", static, struct m0_net_buffer, nb_extern_linkage, nb_magic, M0_NET_BUFFER_LINK_MAGIC, M0_IOS_NET_BUFFER_HEAD_MAGIC)
 
 M0_TL_DEFINE (netbufs, static, struct m0_net_buffer)
 
 M0_TL_DESCR_DEFINE (rpcbulkbufs, "rpc bulk buffers", static, struct m0_rpc_bulk_buf, bb_link, bb_magic, M0_RPC_BULK_BUF_MAGIC, M0_RPC_BULK_MAGIC)
 
 M0_TL_DEFINE (rpcbulkbufs, static, struct m0_rpc_bulk_buf)
 
 M0_TL_DESCR_DECLARE (bufferpools, M0_EXTERN)
 
 M0_TL_DECLARE (bufferpools, M0_EXTERN, struct m0_rios_buffer_pool)
 
M0_INTERNAL bool m0_is_read_fop (const struct m0_fop *fop)
 
M0_INTERNAL bool m0_is_write_fop (const struct m0_fop *fop)
 
M0_INTERNAL bool m0_is_io_fop (const struct m0_fop *fop)
 
M0_INTERNAL struct m0_fop_cob_rwio_rw_get (struct m0_fop *fop)
 
M0_INTERNAL struct m0_fop_cob_rw_replyio_rw_rep_get (struct m0_fop *fop)
 
M0_INTERNAL bool m0_is_cob_create_fop (const struct m0_fop *fop)
 
M0_INTERNAL bool m0_is_cob_delete_fop (const struct m0_fop *fop)
 
static int m0_io_fom_cob_rw_create (struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
 
static int m0_io_fom_cob_rw_tick (struct m0_fom *fom)
 
static void m0_io_fom_cob_rw_fini (struct m0_fom *fom)
 
static size_t m0_io_fom_cob_rw_locality_get (const struct m0_fom *fom)
 
M0_INTERNAL const char * m0_io_fom_cob_rw_service_name (struct m0_fom *fom)
 
static bool m0_io_fom_cob_rw_invariant (const struct m0_io_fom_cob_rw *io)
 
static int net_buffer_acquire (struct m0_fom *)
 
static int io_prepare (struct m0_fom *)
 
static int io_launch (struct m0_fom *)
 
static int io_finish (struct m0_fom *)
 
static int io_sync (struct m0_fom *fom)
 
static int zero_copy_initiate (struct m0_fom *)
 
static int zero_copy_finish (struct m0_fom *)
 
static int net_buffer_release (struct m0_fom *)
 
static int nbuf_release_done (struct m0_fom *fom, int still_required)
 
static int cob_bytecount_increment (struct m0_cob *cob, struct m0_cob_bckey *key, uint64_t bytecount, struct m0_be_tx *tx)
 
static void io_fom_addb2_descr (struct m0_fom *fom)
 
static bool m0_stob_io_desc_invariant (const struct m0_stob_io_desc *stobio_desc)
 
static void stobio_complete_cb (struct m0_fom_callback *cb)
 
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)
 
static struct m0_cob_domainfom_cdom (struct m0_fom *fom)
 
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)
 
static int io_fom_cob2file (struct m0_fom *fom, struct m0_fid *fid, struct m0_file **out)
 
static int align_bufvec (struct m0_fom *fom, struct m0_bufvec *obuf, struct m0_bufvec *ibuf, m0_bcount_t ivec_count, uint32_t bshift)
 
static int fom_cob_locate (struct m0_fom *fom)
 
static int stob_object_find (struct m0_fom *fom)
 
static void stio_desc_fini (struct m0_stob_io_desc *stio_desc)
 
M0_INTERNAL uint64_t m0_io_size (struct m0_stob_io *sio, uint32_t bshift)
 
static int indexvec_wire2mem (struct m0_fom *fom)
 
static int stob_io_create (struct m0_fom *fom)
 
static void stob_io_destroy (struct m0_fom *fom)
 
static void stob_be_credit (struct m0_fom *fom)
 

Variables

enum m0_avi_ios_io_labels M0_XCA_ENUM
 
struct m0_fom_ops ops
 
const struct m0_fom_type_ops io_fom_type_ops
 
static struct m0_io_fom_cob_rw_state_transition io_fom_read_st []
 
static const struct m0_io_fom_cob_rw_state_transition io_fom_write_st []
 
struct m0_sm_state_descr io_phases []
 
struct m0_sm_trans_descr io_phases_trans []
 
struct m0_sm_conf io_conf
 

Detailed Description

Fop state machine for IO operations

See also
fom
DLD of Bulk Server

FOP state machines for various IO operations like

Note
Naming convention: For operation xyz, the FOP is named as m0_fop_xyz, its corresponding reply FOP is named as m0_fop_xyz_rep and FOM is named as m0_fom_xyz. For each FOM type, its corresponding create, state and fini methods are named as m0_fom_xyz_create, m0_fom_xyz_state, m0_fom_xyz_fini respectively.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
IO_FOM_STOB_KEY_MAX 
See also
io_fom_cob_rw_fid2stob_map(), io_fom_cob_rw_stob2fid_map().

Definition at line 896 of file io_foms.c.

◆ m0_avi_ios_io_labels

Enumerator
M0_AVI_IOS_IO_DESCR 
M0_AVI_IOS_IO_ATTR_FOMCRW_NDESC 
M0_AVI_IOS_IO_ATTR_FOMCRW_TOTAL_IOIVEC_CNT 
M0_AVI_IOS_IO_ATTR_FOMCRW_COUNT 
M0_AVI_IOS_IO_ATTR_FOMCRW_BYTES 
M0_AVI_IOS_IO_ATTR_FOMCOB_FOP_TYPE 
M0_AVI_IOS_IO_ATTR_FOMCOB_GFID_CONT 
M0_AVI_IOS_IO_ATTR_FOMCOB_GFID_KEY 
M0_AVI_IOS_IO_ATTR_FOMCOB_CFID_CONT 
M0_AVI_IOS_IO_ATTR_FOMCOB_CFID_KEY 

Definition at line 38 of file io_addb2.h.

◆ m0_io_fom_cob_rw_phases

The various phases for I/O FOM. complete FOM and reqh infrastructure is in place.

Enumerator
M0_FOPH_IO_FOM_PREPARE 
M0_FOPH_IO_FOM_BUFFER_ACQUIRE 
M0_FOPH_IO_FOM_BUFFER_WAIT 
M0_FOPH_IO_STOB_INIT 
M0_FOPH_IO_STOB_WAIT 
M0_FOPH_IO_ZERO_COPY_INIT 
M0_FOPH_IO_ZERO_COPY_WAIT 
M0_FOPH_IO_BUFFER_RELEASE 
M0_FOPH_IO_SYNC 

Definition at line 241 of file io_foms.h.

Function Documentation

◆ align_bufvec()

static int align_bufvec ( struct m0_fom fom,
struct m0_bufvec obuf,
struct m0_bufvec ibuf,
m0_bcount_t  ivec_count,
uint32_t  bshift 
)
static

Copy aligned bufvec segments addresses from net buffer to stob bufvec. STOB I/O expects exact same number of bufvec as index vecs for I/O request. This function copies segment from network buffer with size same as ivec_count.

Parameters
fomfile operation machine instance.
obufpointer to bufvec from stobio object.
ibufpointer to bufve from network buffer from buffer pool.
ivec_countnumber of vectors for stob I/O request.
bshiftshift value for current stob to align bufvecs.
Precondition
obuf != NULL
ibuf != NULL

Definition at line 1035 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cob_bytecount_increment()

static int cob_bytecount_increment ( struct m0_cob cob,
struct m0_cob_bckey key,
uint64_t  bytecount,
struct m0_be_tx tx 
)
static

Definition at line 2516 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fom_cdom()

static struct m0_cob_domain* fom_cdom ( struct m0_fom fom)
static

Definition at line 941 of file io_foms.c.

Here is the caller graph for this function:

◆ fom_cob_locate()

static int fom_cob_locate ( struct m0_fom fom)
static

Definition at line 1090 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ indexvec_wire2mem()

static int indexvec_wire2mem ( struct m0_fom fom)
static

Definition at line 2004 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ io_finish()

static int io_finish ( struct m0_fom fom)
static

This function finish STOB I/O. It's check for STOB I/O result and return back STOB instance.

Parameters
fominstance file operation machine under execution
Precondition
fom != NULL
m0_fom_phase(fom) == M0_FOPH_IO_STOB_WAIT

Definition at line 1899 of file io_foms.c.

Here is the call graph for this function:

◆ io_fom_addb2_descr()

static void io_fom_addb2_descr ( struct m0_fom fom)
static

Definition at line 2501 of file io_foms.c.

Here is the call graph for this function:

◆ io_fom_cob2file()

static int io_fom_cob2file ( struct m0_fom fom,
struct m0_fid fid,
struct m0_file **  out 
)
static

Definition at line 995 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ io_launch()

static int io_launch ( struct m0_fom fom)
static

Launch STOB I/O Helper function to launch STOB I/O. This function initiates STOB I/O for all index vecs. STOB I/O signaled on channel in m0_stob_io::si_wait. There is a clink for each STOB I/O waiting on respective m0_stob_io::si_wait. For every STOB I/O completion call-back is launched to check its results and mark complete. After all STOB I/O completes call-back function send signal to FOM so that FOM gets out of wait-queue and placed in run-queue.

Parameters
fomfile operation machine
Precondition
fom != NULL
m0_fom_phase(fom) == M0_FOPH_IO_STOB_INIT

Definition at line 1696 of file io_foms.c.

Here is the call graph for this function:

◆ io_prepare()

static int io_prepare ( struct m0_fom fom)
static

Definition at line 1204 of file io_foms.c.

Here is the call graph for this function:

◆ io_rw_get()

M0_INTERNAL struct m0_fop_cob_rw * io_rw_get ( struct m0_fop fop)

Definition at line 1037 of file io_fops.c.

Here is the caller graph for this function:

◆ io_rw_rep_get()

M0_INTERNAL struct m0_fop_cob_rw_reply * io_rw_rep_get ( struct m0_fop fop)

Definition at line 1056 of file io_fops.c.

Here is the caller graph for this function:

◆ io_sync()

static int io_sync ( struct m0_fom fom)
static

If necessary, waits until the transaction for this fom becomes persistent.

Definition at line 1985 of file io_foms.c.

Here is the call graph for this function:

◆ m0_io_cob_create()

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 
)

Definition at line 903 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_io_cob_stob_create()

M0_INTERNAL int m0_io_cob_stob_create ( struct m0_fom fom,
struct m0_cob_domain ios_cdom,
struct m0_fid fid,
struct m0_fid pver,
uint64_t  lid,
bool  crow,
struct m0_cob **  out 
)

If cob of different version exists, it will delete it and recreate the cob with pool version pver. If crow is true, it will create the cob if it does not exist.

Todo:
delete stob too.

Definition at line 951 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_io_fom_cob_rw_create()

M0_INTERNAL int m0_io_fom_cob_rw_create ( struct m0_fop fop,
struct m0_fom **  out,
struct m0_reqh reqh 
)
static

Create and initiate I/O FOM and return generic struct m0_fom Find the corresponding fom_type and associate it with m0_fom. Associate fop with fom type.

Parameters
fopfile operation packet need to process
outfile operation machine need to allocate and initiate
Precondition
fop != NULL
out != NULL

Definition at line 1144 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_io_fom_cob_rw_fini()

static void m0_io_fom_cob_rw_fini ( struct m0_fom fom)
static

Finalise of I/O file operation machine. This is the right place to free all resources acquired by FOM

Parameters
fominstance file operation machine under execution
Precondition
fom != NULL

Definition at line 2396 of file io_foms.c.

Here is the call graph for this function:

◆ m0_io_fom_cob_rw_invariant()

static bool m0_io_fom_cob_rw_invariant ( const struct m0_io_fom_cob_rw io)
static

Definition at line 830 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_io_fom_cob_rw_locality_get()

static size_t m0_io_fom_cob_rw_locality_get ( const struct m0_fom fom)
static

Get locality of file operation machine.

Definition at line 2478 of file io_foms.c.

Here is the call graph for this function:

◆ m0_io_fom_cob_rw_service_name()

M0_INTERNAL const char * m0_io_fom_cob_rw_service_name ( struct m0_fom fom)

Returns service name which executes this fom.

Parameters
fominstance file operation machine under execution
Precondition
fom != NULL
fom->fo_fop != NULL

Returns string representing ioservice name given a fom.

Definition at line 2493 of file io_foms.c.

◆ m0_io_fom_cob_rw_tick()

static int m0_io_fom_cob_rw_tick ( struct m0_fom fom)
static

State Transition function for I/O operation that executes on data server.

Parameters
fominstance file operation machine under execution
Precondition
fom != NULL

XXX: Overlapping cob extentds are not accounted for during cob overwrite. IF a cob is overwritten, it will make cob size inaccurate.

Definition at line 2233 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_io_size()

M0_INTERNAL uint64_t m0_io_size ( struct m0_stob_io sio,
uint32_t  bshift 
)

Definition at line 1670 of file io_foms.c.

Here is the caller graph for this function:

◆ m0_is_cob_create_fop()

M0_INTERNAL bool m0_is_cob_create_fop ( const struct m0_fop fop)

Definition at line 950 of file io_fops.c.

Here is the caller graph for this function:

◆ m0_is_cob_delete_fop()

M0_INTERNAL bool m0_is_cob_delete_fop ( const struct m0_fop fop)

Definition at line 957 of file io_fops.c.

Here is the caller graph for this function:

◆ m0_is_io_fop()

M0_INTERNAL bool m0_is_io_fop ( const struct m0_fop fop)

Definition at line 928 of file io_fops.c.

Here is the caller graph for this function:

◆ m0_is_read_fop()

M0_INTERNAL bool m0_is_read_fop ( const struct m0_fop fop)

Definition at line 916 of file io_fops.c.

Here is the caller graph for this function:

◆ m0_is_write_fop()

M0_INTERNAL bool m0_is_write_fop ( const struct m0_fop fop)

Definition at line 922 of file io_fops.c.

Here is the caller graph for this function:

◆ m0_stob_io_desc_invariant()

static bool m0_stob_io_desc_invariant ( const struct m0_stob_io_desc stobio_desc)
static

Definition at line 851 of file io_foms.c.

Here is the caller graph for this function:

◆ M0_TL_DECLARE()

M0_TL_DECLARE ( bufferpools  ,
M0_EXTERN  ,
struct m0_rios_buffer_pool   
)

◆ M0_TL_DEFINE() [1/3]

M0_TL_DEFINE ( stobio  ,
static  ,
struct m0_stob_io_desc   
)

◆ M0_TL_DEFINE() [2/3]

M0_TL_DEFINE ( netbufs  ,
static  ,
struct m0_net_buffer   
)

◆ M0_TL_DEFINE() [3/3]

M0_TL_DEFINE ( rpcbulkbufs  ,
static  ,
struct m0_rpc_bulk_buf   
)

◆ M0_TL_DESCR_DECLARE()

M0_TL_DESCR_DECLARE ( bufferpools  ,
M0_EXTERN   
)

◆ M0_TL_DESCR_DEFINE() [1/3]

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_TL_DESCR_DEFINE() [2/3]

M0_TL_DESCR_DEFINE ( netbufs  ,
"Aquired net buffers"  ,
static  ,
struct m0_net_buffer  ,
nb_extern_linkage  ,
nb_magic  ,
M0_NET_BUFFER_LINK_MAGIC  ,
M0_IOS_NET_BUFFER_HEAD_MAGIC   
)

◆ M0_TL_DESCR_DEFINE() [3/3]

M0_TL_DESCR_DEFINE ( rpcbulkbufs  ,
"rpc bulk buffers"  ,
static  ,
struct m0_rpc_bulk_buf  ,
bb_link  ,
bb_magic  ,
M0_RPC_BULK_BUF_MAGIC  ,
M0_RPC_BULK_MAGIC   
)

◆ nbuf_release_done()

static int nbuf_release_done ( struct m0_fom fom,
int  still_required 
)
static

Definition at line 1450 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ net_buffer_acquire()

static int net_buffer_acquire ( struct m0_fom fom)
static

Acquire network buffers. Gets as many network buffer as it can to process io request. It needs at least one network buffer to start io processing. If not able to get single buffer, FOM wait for buffer pool to become non-empty.

If acquired buffers are less than number of fop descriptors then I/O processing will be done by batch.

Parameters
fomfile operation machine instance.
Precondition
fom != NULL
fom->fo_service != NULL
m0_fom_phase(fom) == M0_FOPH_IO_FOM_BUFFER_ACQUIRE

Cache buffer pool pointer with FOM object.

Definition at line 1305 of file io_foms.c.

Here is the call graph for this function:

◆ net_buffer_release()

static int net_buffer_release ( struct m0_fom fom)
static

Release network buffer. Return back network buffer to buffer pool. If acquired buffers are more than the remaining descriptors release extra buffers so that other FOM can use.

Parameters
fomfile operation machine.
Precondition
fom != NULL
fom->fo_service != NULL
m0_fom_phase(fom) == M0_FOPH_IO_BUFFER_RELEASE

Definition at line 1428 of file io_foms.c.

Here is the call graph for this function:

◆ stio_desc_fini()

static void stio_desc_fini ( struct m0_stob_io_desc stio_desc)
static

Definition at line 1663 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stob_be_credit()

static void stob_be_credit ( struct m0_fom fom)
static

Definition at line 2197 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stob_io_create()

static int stob_io_create ( struct m0_fom fom)
static

CKSUM_TODO: Check this and use function call




M0_ASSERT(rwfop->crw_di_data_cksum.b_nob == 0);



M0_ASSERT(rwfop->crw_di_data_cksum.b_addr == NULL);


Get the cksum nob expected for given stio

assign checksum buffer to repsective stob
Increment the current cksum count

Definition at line 2035 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stob_io_destroy()

static void stob_io_destroy ( struct m0_fom fom)
static

Definition at line 2175 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stob_object_find()

static int stob_object_find ( struct m0_fom fom)
static

Locates a storage object.

Definition at line 1108 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stobio_complete_cb()

static void stobio_complete_cb ( struct m0_fom_callback cb)
static

Call back function which gets invoked on a single STOB I/O complete. This function check for STOB I/O list and remove stobio entry from list for completed STOB I/O. After completion of all STOB I/O it sends signal to FOM so that it can again put into run queue.

Parameters
cbfom callback for completed STOB I/O entry

Definition at line 864 of file io_foms.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ zero_copy_finish()

static int zero_copy_finish ( struct m0_fom fom)
static

Zero-copy Finish Check for zero-copy result.

Parameters
fomfile operation machine.
Precondition
fom != NULL
m0_fom_phase(fom) == M0_FOPH_IO_ZERO_COPY_WAIT

Definition at line 1624 of file io_foms.c.

Here is the call graph for this function:

◆ zero_copy_initiate()

static int zero_copy_initiate ( struct m0_fom fom)
static

Initiate zero-copy Initiates zero-copy for batch of descriptors. And wait for zero-copy to complete for all descriptors. Network layer signaled on m0_rpc_bulk::rb_chan on completion.

Parameters
fomfile operation machine.
Precondition
fom != NULL
m0_fom_phase(fom) == M0_FOPH_IO_ZERO_COPY_INIT

Definition at line 1509 of file io_foms.c.

Here is the call graph for this function:

Variable Documentation

◆ io_conf

struct m0_sm_conf io_conf
Initial value:
= {
.scf_name = "io-fom",
.scf_nr_states = ARRAY_SIZE(io_phases),
.scf_state = io_phases,
.scf_trans_nr = ARRAY_SIZE(io_phases_trans),
.scf_trans = io_phases_trans,
}
struct m0_sm_trans_descr io_phases_trans[]
Definition: io_foms.c:774
struct m0_sm_state_descr io_phases[]
Definition: io_foms.c:719
#define ARRAY_SIZE(a)
Definition: misc.h:45

Definition at line 822 of file io_foms.c.

◆ io_fom_read_st

struct m0_io_fom_cob_rw_state_transition io_fom_read_st[]
static

I/O Read FOM state transition table.

See also
DLD-bulk-server-lspec-state

Definition at line 641 of file io_foms.c.

◆ io_fom_type_ops

const struct m0_fom_type_ops io_fom_type_ops
Initial value:
= {
.fto_create = m0_io_fom_cob_rw_create,
}
static int m0_io_fom_cob_rw_create(struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
Definition: io_foms.c:1144

I/O FOM type operation vector.

Definition at line 633 of file io_foms.c.

◆ io_fom_write_st

const struct m0_io_fom_cob_rw_state_transition io_fom_write_st[]
static

I/O Write FOM state transition table.

See also
DLD-bulk-server-lspec-state

Definition at line 679 of file io_foms.c.

◆ io_phases

struct m0_sm_state_descr io_phases[]

Definition at line 719 of file io_foms.c.

◆ io_phases_trans

struct m0_sm_trans_descr io_phases_trans[]

Definition at line 774 of file io_foms.c.

◆ M0_XCA_ENUM

enum m0_avi_ios_io_labels M0_XCA_ENUM

◆ ops

struct m0_fom_ops ops
Initial value:
= {
.fo_fini = &m0_io_fom_cob_rw_fini,
.fo_tick = &m0_io_fom_cob_rw_tick,
.fo_home_locality = &m0_io_fom_cob_rw_locality_get,
.fo_addb2_descr = &io_fom_addb2_descr
}
static void m0_io_fom_cob_rw_fini(struct m0_fom *fom)
Definition: io_foms.c:2396
static void io_fom_addb2_descr(struct m0_fom *fom)
Definition: io_foms.c:2501
static size_t m0_io_fom_cob_rw_locality_get(const struct m0_fom *fom)
Definition: io_foms.c:2478
static int m0_io_fom_cob_rw_tick(struct m0_fom *fom)
Definition: io_foms.c:2233

I/O FOM operation vector.

Definition at line 623 of file io_foms.c.