On 2014-09-29 14:09:01 +0530, Abhijit Menon-Sen wrote: > Hi. > > I just noticed that initdb -S ("Safely write all database files to disk > and exit") does (only) the following in perform_fsync: > > pre_sync_fname(pdir, true); > walkdir(pg_data, pre_sync_fname); > > fsync_fname(pdir, true); > walkdir(pg_data, fsync_fname); > > walkdir() reads the directory and calls itself recursively for S_ISDIR > entries, or calls the function for S_ISREG entries… which means it > doesn't follow links. > > Which means it doesn't fsync the contents of tablespaces.
Which means at least pg_upgrade is unsafe right now... c.f. 630cd14426dc1daf85163ad417f3a224eb4ac7b0. Note that the perform_fsync() *was* ok for its original purpose in initdb. At the end of initdb there's no relevant tablespaces. But if used *after* pg_upgrade, that's not necessarily the case. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers