Re: Allowing WAL fsync to be done via O_SYNC
От | Tom Lane |
---|---|
Тема | Re: Allowing WAL fsync to be done via O_SYNC |
Дата | |
Msg-id | 15718.984694279@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Allowing WAL fsync to be done via O_SYNC (Peter Eisentraut <peter_e@gmx.net>) |
Ответы |
Re: Allowing WAL fsync to be done via O_SYNC
|
Список | pgsql-hackers |
Peter Eisentraut <peter_e@gmx.net> writes: > We postulate that one of those has to exist. Alternatively, you make the > option read > wal_sync_method = fsync | open_sync > In the "parse_hook" for the parameter you if #ifdef out 'open_sync' as a > valid option if none of those exist, so a user will get "'open_sync' is > not a valid option value". I like this a lot. In fact, I am mightily tempted to make it wal_sync_method = fsync | fdatasync | open_sync | open_datasync where fdatasync would only be valid if configure found fdatasync() and open_datasync would only be valid if we found O_DSYNC exists and isn't O_SYNC. This would let people try all the available methods under realistic test conditions, for hardly any extra work. Furthermore, the documentation could say something like "The default is the first available method in the order open_datasync, fdatasync, fsync, open_sync" (assuming that Vadim's preferences are right). A small problem is that I don't want to be doing multiple strcasecmp's to figure out what to do in xlog.c. Do you object if I add an "assign_hook" to guc.c that's called when an actual assignment is made? That would provide a place to set up the flag variables that xlog.c would actually look at. Furthermore, having an assign_hook would let us support changing this value at SIGHUP, not only at postmaster start. (The assign hook would just need to fsync whatever WAL file is currently open and possibly close/reopen the file, to ensure that no blocks miss getting synced when we change conventions.) Creeping featurism strikes again ;-) ... but this feels right ... regards, tom lane
В списке pgsql-hackers по дате отправления: