Re: Volatile write caches on macOS and Windows, redux
| От | Peter Eisentraut |
|---|---|
| Тема | Re: Volatile write caches on macOS and Windows, redux |
| Дата | |
| Msg-id | 01b98671-1f23-447a-95e2-36a2b5a7bf05@eisentraut.org обсуждение исходный текст |
| Ответ на | Re: Volatile write caches on macOS and Windows, redux (Nathan Bossart <nathandbossart@gmail.com>) |
| Список | pgsql-hackers |
On 03.06.24 17:28, Nathan Bossart wrote:
>> I agree, two states should be enough. It could basically just be
>>
>> pg_fsync(int fd)
>> {
>> #if macos
>> fcntl(fd, F_FULLFSYNC);
>> #else
>> fsync(fd);
>> #endif
>> }
> IIUC with this approach, anyone who is using a file system that fails
> fcntl(F_FULLSYNC) with ENOSUPP would have to turn fsync off. That might be
> the right thing to do since having a third option that sends the data to
> the disk cache but doesn't provide any real guarantees if you lose power
> may not be worth much. However, if such a file system_did_ provide such
> guarantees with just fsync(), then it would be unfortunate to force people
> to turn fsync off. But this could very well all be hypothetical, for all I
> know... In any case, I agree that we should probably use F_FULLFSYNC by
> default on macOS.
Yeah, my example code above says "#if macos", not "#ifdef F_FULLSYNC".
The latter might be a problem along the lines you describe if other
systems use that symbol in a slightly different manner.
В списке pgsql-hackers по дате отправления: