| From: | Alfred Perlstein <bright(at)wintelcom(dot)net> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | "Mikheev, Vadim" <vmikheev(at)SECTORBASE(dot)COM>, Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>, Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: Allowing WAL fsync to be done via O_SYNC |
| Date: | 2001-03-15 23:02:20 |
| Message-ID: | 20010315150220.F29888@fw.wintelcom.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
* Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> [010315 14:54] wrote:
> Alfred Perlstein <bright(at)wintelcom(dot)net> writes:
> > How many files need to be fsync'd?
>
> Only one.
>
> > If it's more than one, what might work is using mmap() to map the
> > files in adjacent areas, then calling msync() on the entire range,
> > this would allow you to batch fsync the data.
>
> Interesting thought, but mmap to a prespecified address is most
> definitely not portable, whether or not you want to assume that
> plain mmap is ...
Yeah... :(
Evil thought though (for reference):
mmap(anon memory) returns addr1
addr2 = addr1 + maplen
split addr1<->addr2 on points A B and C
mmap(file1 over addr1 to A)
mmap(file2 over A to B)
mmap(file3 over B to C)
mmap(file4 over C to addr2)
It _should_ work, but there's probably some corner cases where it
doesn't.
--
-Alfred Perlstein - [bright(at)wintelcom(dot)net|alfred(at)freebsd(dot)org]
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2001-03-15 23:11:16 | Re: Allowing WAL fsync to be done via O_SYNC |
| Previous Message | ryan | 2001-03-15 22:59:42 | PostgreSQL Search Engine - searchraw.php3 (1/1) |