22 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_COB 85 .sd_name =
"datasync",
197 txid =
req->ff_be_remid.tri_txid;
205 M0_LEAVE(
"fom is in a generic phase");
232 if (target_tx ==
NULL) {
278 M0_LEAVE(
"wait for the target tx to be logged");
287 rep->ffr_be_remid.tri_txid = txid;
296 M0_LEAVE(
"fsync fop request processed");
352 return M0_ERR_INFO(-ENOMEM,
"unable to allocate fom");
359 M0_LEAVE(
"unable to allocate fop reply");
360 return M0_ERR_INFO(-ENOMEM,
"unable to allocate fop reply");
372 #undef M0_TRACE_SUBSYSTEM
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)
struct m0_be_domain * bs_domain
M0_INTERNAL struct m0_be_tx * m0_be_engine__tx_find(struct m0_be_engine *en, uint64_t id)
M0_INTERNAL void m0_fom_block_enter(struct m0_fom *fom)
struct m0_fop_type m0_fop_fsync_rep_fopt
static struct io_request req
#define M0_LOG(level,...)
static const struct m0_fom_ops fsync_fom_ops
struct m0_fop_type m0_fop_fsync_ios_fopt
static struct m0_be_tx * fsync_target_tx_get(struct m0_fom *fom, uint64_t txid)
void * m0_fop_data(const struct m0_fop *fop)
M0_INTERNAL void m0_fom_wait_on(struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
#define container_of(ptr, type, member)
struct m0_sm_state_descr m0_fsync_fom_phases[]
static void fsync_fom_fini(struct m0_fom *fom)
struct m0_fop_type m0_fop_fsync_mds_fopt
struct m0_fop_getxattr_rep * rep
struct m0_fom_type ft_fom_type
M0_INTERNAL int m0_fsync_req_fom_create(struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
M0_INTERNAL struct m0_sm_conf m0_fsync_fom_conf
struct m0_reqh_context rctx
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)
struct m0_fop_type * f_type
#define M0_ERR_INFO(rc, fmt,...)
M0_INTERNAL void m0_storage_devs_lock(struct m0_storage_devs *devs)
int m0_fom_tick_generic(struct m0_fom *fom)
void m0_fom_fini(struct m0_fom *fom)
M0_INTERNAL void m0_fom_block_leave(struct m0_fom *fom)
static struct m0_sm_trans_descr fsync_fom_phases_trans[]
M0_INTERNAL struct m0_storage_devs * m0_cs_storage_devs_get(void)
static size_t fsync_fom_locality_get(const struct m0_fom *fom)
struct m0_fop * m0_fop_reply_alloc(struct m0_fop *req, struct m0_fop_type *rept)
struct m0_fop_type m0_fop_fsync_cas_fopt
#define M0_ALLOC_PTR(ptr)
struct m0_sm_trans_descr m0_generic_phases_trans[]
static struct m0_fop * fop
M0_INTERNAL void m0_be_tx_put(struct m0_be_tx *tx)
struct m0_be_seg * rh_beseg
M0_INTERNAL void m0_storage_devs_unlock(struct m0_storage_devs *devs)
void(* fo_fini)(struct m0_fom *fom)
static int fsync_fom_tick(struct m0_fom *fom)
struct m0_be_engine bd_engine
void m0_fom_phase_set(struct m0_fom *fom, int phase)
bool rc_disable_direct_io
M0_INTERNAL int m0_storage_devs_fdatasync(struct m0_storage_devs *sdevs)
M0_INTERNAL void m0_be_tx_force(struct m0_be_tx *tx)
M0_INTERNAL struct m0_reqh * m0_fom_reqh(const struct m0_fom *fom)
#define M0_IMPOSSIBLE(fmt,...)