From: | Bruno Wolff III <bruno(at)wolff(dot)to> |
---|---|
To: | Marco Colombo <marco(at)esi(dot)it> |
Cc: | Alex Satrapa <alex(at)lintelsys(dot)com(dot)au>, "Pgsql (E-mail)" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: disaster recovery |
Date: | 2003-11-28 20:18:30 |
Message-ID: | 20031128201830.GA23706@wolff.to |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Fri, Nov 28, 2003 at 12:28:25 +0100,
Marco Colombo <marco(at)esi(dot)it> wrote:
>
> My understanding of the problem is: UNIX fsync(), historically,
> used to sync also directory data (filename entries) before returning.
> MTAs used to call rename()/fsync() or link()/unlink()/fsync()
> sequences to "commit" a message to disk. In Linux, fsync() is
> documented _not_ to sync directory data, "just" file data and metadata
> (inode). While the UNIX behaviour turned out to be very useful,
> personally I don't think Linux fsync() is broken/buggy. A file in
> UNIX is just that, data blocks and inode. Syncing directory data
> was just a (useful) side-effect of one implementation. In Linux,
> an explicit fsync() on the directory itself is needed (and in each
> path component if you changed one of them too), if you want to
> commit changes to disk. Doing that is just as safe as on any filesystem,
> even on ext2 with async writes enabled (it doesn't mean "ignore fsync()"
> after all!).
A new function name should have been used to go along with the new semantics.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2003-11-28 21:17:34 | Re: 7.3.4 and 7.4 ORDER in queries |
Previous Message | Mounir Benzid | 2003-11-28 20:14:16 | [pg 7.4 / Solaris 8] Could not bind socket for statistics collector |