30#define PGAIO_SUBMIT_BATCH_SIZE 32
376#define PGAIO_VERBOSE 1
387#define pgaio_debug(elevel, msg, ...) \
391 errhidestmt(true), errhidecontext(true), \
392 errmsg_internal(msg, \
400#define pgaio_debug_io(elevel, ioh, msg, ...) \
401 pgaio_debug(elevel, "io %-10d|op %-5s|target %-4s|state %-16s: " msg, \
402 pgaio_io_get_id(ioh), \
403 pgaio_io_get_op_name(ioh), \
404 pgaio_io_get_target_name(ioh), \
405 pgaio_io_get_state_name(ioh), \
411#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)
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)
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
int pgaio_io_get_iovec_length(PgAioHandle *ioh, struct iovec **iov)
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)
bool wait_on_fd_before_close
void(* init_backend)(void)
void(* check_one)(PgAioHandle *ioh, uint64 ref_generation)
ShmemCallbacks shmem_callbacks
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]