| 
    Motr
    M0
    
   | 
 
#include <fom.h>

Data Fields | |
| struct m0_fom_locality * | fo_loc | 
| size_t | fo_loc_idx | 
| const struct m0_fom_type * | fo_type | 
| const struct m0_fom_ops * | fo_ops | 
| struct m0_fom_callback | fo_cb | 
| struct m0_fop * | fo_fop | 
| struct m0_fop * | fo_rep_fop | 
| struct m0_dtx | fo_tx | 
| bool | fo_local | 
| struct m0_reqh_service * | fo_service | 
| struct m0_tlink | fo_linkage | 
| unsigned | fo_transitions | 
| unsigned | fo_transitions_saved | 
| struct m0_sm | fo_sm_phase | 
| struct m0_sm | fo_sm_state | 
| struct m0_loc_thread * | fo_thread | 
| struct m0_fom_callback * | fo_pending | 
| int | fo_log [32] | 
| uint64_t | fo_magic | 
Fop state machine.
Once the fom is initialised, fom invariant, should hold true as fom execution enters various phases, including before fom is finalised.
m0_fom is usually embedded into an ambient fom-type-specific object allocated by m0_fom_type_ops::fto_create() or other means.
m0_fom is geared towards supporting foms executing file operation requests (fops), but can be used for any kind of server activity.
| struct m0_fom_callback fo_cb | 
| struct m0_tlink fo_linkage | 
| struct m0_fom_locality* fo_loc | 
| bool fo_local | 
| const struct m0_fom_ops* fo_ops | 
| struct m0_fom_callback* fo_pending | 
| struct m0_reqh_service* fo_service | 
| struct m0_sm fo_sm_phase | 
| struct m0_loc_thread* fo_thread | 
| unsigned fo_transitions | 
| unsigned fo_transitions_saved | 
| struct m0_dtx fo_tx | 
Transaction object to be used by this fom.
| const struct m0_fom_type* fo_type |