28#define PGAIO_SUBMIT_BATCH_SIZE 32
344#define PGAIO_VERBOSE 1
355#define pgaio_debug(elevel, msg, ...) \
359 errhidestmt(true), errhidecontext(true), \
360 errmsg_internal(msg, \
368#define pgaio_debug_io(elevel, ioh, msg, ...) \
369 pgaio_debug(elevel, "io %-10d|op %-5s|target %-4s|state %-16s: " msg, \
370 pgaio_io_get_id(ioh), \
371 pgaio_io_get_op_name(ioh), \
372 pgaio_io_get_target_name(ioh), \
373 pgaio_io_get_state_name(ioh), \
377#ifdef USE_INJECTION_POINTS
386#define pgaio_io_call_inj(ioh, injection_point) (void) 0
399#ifdef IOMETHOD_IO_URING_ENABLED
#define PGAIO_HANDLE_MAX_CALLBACKS
void pgaio_io_process_completion(PgAioHandle *ioh, int result)
void pgaio_io_perform_synchronously(PgAioHandle *ioh)
struct IoMethodOps IoMethodOps
const char * pgaio_result_status_string(PgAioResultStatus rs)
void pgaio_io_call_stage(PgAioHandle *ioh)
PGDLLIMPORT const IoMethodOps pgaio_worker_ops
@ PGAIO_HS_COMPLETED_SHARED
@ PGAIO_HS_COMPLETED_LOCAL
bool pgaio_io_needs_synchronous_execution(PgAioHandle *ioh)
const char * pgaio_io_get_op_name(PgAioHandle *ioh)
PgAioResult pgaio_io_call_complete_local(PgAioHandle *ioh)
#define pgaio_io_call_inj(ioh, injection_point)
void pgaio_io_reopen(PgAioHandle *ioh)
bool pgaio_io_uses_fd(PgAioHandle *ioh, int fd)
bool pgaio_io_can_reopen(PgAioHandle *ioh)
void pgaio_io_call_complete_shared(PgAioHandle *ioh)
void pgaio_io_stage(PgAioHandle *ioh, PgAioOp op)
PGDLLIMPORT PgAioBackend * pgaio_my_backend
struct PgAioBackend PgAioBackend
PGDLLIMPORT PgAioCtl * pgaio_ctl
PGDLLIMPORT const IoMethodOps pgaio_sync_ops
PGDLLIMPORT const IoMethodOps * pgaio_method_ops
const char * pgaio_io_get_target_name(PgAioHandle *ioh)
const char * pgaio_io_get_state_name(PgAioHandle *ioh)
bool pgaio_io_was_recycled(PgAioHandle *ioh, uint64 ref_generation, PgAioHandleState *state)
void pgaio_io_prepare_submit(PgAioHandle *ioh)
void pgaio_shutdown(int code, Datum arg)
#define PGAIO_SUBMIT_BATCH_SIZE
static int fd(const char *x, int i)
size_t(* shmem_size)(void)
bool wait_on_fd_before_close
void(* shmem_init)(bool first_time)
void(* init_backend)(void)
int(* submit)(uint16 num_staged_ios, PgAioHandle **staged_ios)
void(* wait_one)(PgAioHandle *ioh, uint64 ref_generation)
bool(* needs_synchronous_execution)(PgAioHandle *ioh)
dclist_head in_flight_ios
PgAioHandle * staged_ios[PGAIO_SUBMIT_BATCH_SIZE]
PgAioHandle * handed_out_io
PgAioBackend * backend_state
PgAioTargetData target_data
struct ResourceOwnerData * resowner
PgAioResult distilled_result
uint8 callbacks[PGAIO_HANDLE_MAX_CALLBACKS]
PgAioReturn * report_return
uint8 callbacks_data[PGAIO_HANDLE_MAX_CALLBACKS]