83 ioh->op_data.read.fd =
fd;
84 ioh->op_data.read.offset = offset;
96 ioh->op_data.write.fd =
fd;
97 ioh->op_data.write.offset = offset;
129 ioh->op_data.read.iov_length,
130 ioh->op_data.read.offset);
136 ioh->op_data.write.iov_length,
137 ioh->op_data.write.offset);
141 elog(
ERROR,
"trying to execute invalid IO operation");
144 ioh->result = result < 0 ? -
errno : result;
204 return ioh->op_data.read.fd ==
fd;
206 return ioh->op_data.write.fd ==
fd;
228 return ioh->op_data.read.iov_length;
230 return ioh->op_data.write.iov_length;
void pgaio_io_process_completion(PgAioHandle *ioh, int result)
PgAioBackend * pgaio_my_backend
void pgaio_io_stage(PgAioHandle *ioh, PgAioOp op)
void pgaio_io_perform_synchronously(PgAioHandle *ioh)
const char * pgaio_io_get_op_name(PgAioHandle *ioh)
void pgaio_io_start_readv(PgAioHandle *ioh, int fd, int iovcnt, uint64 offset)
PgAioOpData * pgaio_io_get_op_data(PgAioHandle *ioh)
bool pgaio_io_uses_fd(PgAioHandle *ioh, int fd)
static void pgaio_io_before_start(PgAioHandle *ioh)
PgAioOp pgaio_io_get_op(PgAioHandle *ioh)
int pgaio_io_get_iovec_length(PgAioHandle *ioh, struct iovec **iov)
void pgaio_io_start_writev(PgAioHandle *ioh, int fd, int iovcnt, uint64 offset)
int pgaio_io_get_iovec(PgAioHandle *ioh, struct iovec **iov)
bool pgaio_io_has_target(PgAioHandle *ioh)
#define Assert(condition)
#define INTERRUPTS_CAN_BE_PROCESSED()
#define START_CRIT_SECTION()
#define END_CRIT_SECTION()
static ssize_t pg_preadv(int fd, const struct iovec *iov, int iovcnt, pgoff_t offset)
static ssize_t pg_pwritev(int fd, const struct iovec *iov, int iovcnt, pgoff_t offset)
static int fd(const char *x, int i)
PgAioHandle * handed_out_io
static void pgstat_report_wait_start(uint32 wait_event_info)
static void pgstat_report_wait_end(void)