mirror of
https://github.com/postgres/postgres.git
synced 2025-10-27 00:12:01 +03:00
aio: Implement support for reads in smgr/md/fd
This implements the following: 1) An smgr AIO target, for AIO on smgr files. This should be usable not just for md.c but also other SMGR implementation if we ever get them. 2) readv support in fd.c, which requires a small bit of infrastructure work in fd.c 3) smgr.c and md.c support for readv There still is nothing performing AIO, but as of this commit it would be possible. As part of this change FileGetRawDesc() actually ensures that the file is opened - previously it was basically not usable. It's used to reopen a file in IO workers. Reviewed-by: Noah Misch <noah@leadboat.com> Discussion: https://postgr.es/m/uvrtrknj4kdytuboidbhwclo4gxhswwcpgadptsjvjqcluzmah%40brqs62irg4dt Discussion: https://postgr.es/m/20210223100344.llw5an2aklengrmn@alap3.anarazel.de Discussion: https://postgr.es/m/stj36ea6yyhoxtqkhpieia2z4krnam7qyetc57rfezgk4zgapf@gcnactj4z56m
This commit is contained in:
@@ -101,6 +101,8 @@ extern PGDLLIMPORT int max_safe_fds;
|
||||
* prototypes for functions in fd.c
|
||||
*/
|
||||
|
||||
struct PgAioHandle;
|
||||
|
||||
/* Operations on virtual Files --- equivalent to Unix kernel file ops */
|
||||
extern File PathNameOpenFile(const char *fileName, int fileFlags);
|
||||
extern File PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode);
|
||||
@@ -109,6 +111,7 @@ extern void FileClose(File file);
|
||||
extern int FilePrefetch(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
||||
extern ssize_t FileReadV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info);
|
||||
extern ssize_t FileWriteV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info);
|
||||
extern int FileStartReadV(struct PgAioHandle *ioh, File file, int iovcnt, off_t offset, uint32 wait_event_info);
|
||||
extern int FileSync(File file, uint32 wait_event_info);
|
||||
extern int FileZero(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
||||
extern int FileFallocate(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
||||
|
||||
Reference in New Issue
Block a user