pgsql: Use pg_pread() and pg_pwrite() for data files and WAL.
Use pg_pread() and pg_pwrite() for data files and WAL.
Cut down on system calls by doing random I/O using offset-based OS
routines where available. Remove the code for tracking the 'virtual'
seek position. The only reason left to call FileSeek() was to get
the file's size, so provide a new function FileSize() instead.
Author: Oskari Saarenmaa, Thomas Munro
Reviewed-by: Thomas Munro, Jesper Pedersen, Tom Lane, Alvaro Herrera
Discussion: /messages/by-id/CAEepm=02rapCpPR3ZGF2vW=SBHSdFYO_bz_f-wwWJonmA3APgw@mail.gmail.com
Discussion: /messages/by-id/b8748d39-0b19-0514-a1b9-4e5a28e6a208@gmail.com
Discussion: /messages/by-id/a86bd200-ebbe-d829-e3ca-0c4474b2fcb7@ohmu.fi
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/c24dcd0cfd949bdf245814c4c2b3df828ee7db36
Modified Files
--------------
src/backend/access/heap/rewriteheap.c | 2 +-
src/backend/access/transam/xlog.c | 30 +----
src/backend/storage/file/buffile.c | 46 +-------
src/backend/storage/file/fd.c | 205 +++++-----------------------------
src/backend/storage/smgr/md.c | 35 +-----
src/include/storage/fd.h | 12 +-
6 files changed, 42 insertions(+), 288 deletions(-)
On 11/6/18 4:01 PM, Thomas Munro wrote:
Use pg_pread() and pg_pwrite() for data files and WAL.
Cut down on system calls by doing random I/O using offset-based OS
routines where available. Remove the code for tracking the 'virtual'
seek position. The only reason left to call FileSeek() was to get
the file's size, so provide a new function FileSize() instead.
Getting this warning (gcc 8.2.1 Fedora 29):
Nov 06 17:18:55
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c:
In function ‘FileSize’:
Nov 06 17:18:55
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c:2007:11:
warning: variable ‘vfdP’ set but not used [-Wunused-but-set-variable]
Nov 06 17:18:55 Vfd *vfdP;
Nov 06 17:18:55 ^~~~
cheers
andrew
--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On Wed, Nov 7, 2018 at 11:32 AM Andrew Dunstan
<andrew.dunstan@2ndquadrant.com> wrote:
On 11/6/18 4:01 PM, Thomas Munro wrote:
Use pg_pread() and pg_pwrite() for data files and WAL.
Cut down on system calls by doing random I/O using offset-based OS
routines where available. Remove the code for tracking the 'virtual'
seek position. The only reason left to call FileSeek() was to get
the file's size, so provide a new function FileSize() instead.Getting this warning (gcc 8.2.1 Fedora 29):
Nov 06 17:18:55
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c:
In function ‘FileSize’:
Nov 06 17:18:55
/home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c:2007:11:
warning: variable ‘vfdP’ set but not used [-Wunused-but-set-variable]
Nov 06 17:18:55 Vfd *vfdP;
Nov 06 17:18:55 ^~~~
Thanks, will fix.
--
Thomas Munro
http://www.enterprisedb.com