On Wed, Jan 15, 2014 at 07:31:15PM -0500, Tom Lane wrote: > Dave Chinner <da...@fromorbit.com> writes: > > On Wed, Jan 15, 2014 at 07:08:18PM -0500, Tom Lane wrote: > >> No, we'd be happy to re-request it during each checkpoint cycle, as > >> long as that wasn't an unduly expensive call to make. I'm not quite > >> sure where such requests ought to "live" though. One idea is to tie > >> them to file descriptors; but the data to be written might be spread > >> across more files than we really want to keep open at one time. > > > It would be a property of the inode, as that is how writeback is > > tracked and timed. Set and queried through a file descriptor, > > though - it's basically the same context that fadvise works > > through. > > Ah, got it. That would be fine on our end, I think. > > >> We could probably live with serially checkpointing data > >> in sets of however-many-files-we-can-have-open, if file descriptors are > >> the place to keep the requests. > > > Inodes live longer than file descriptors, but there's no guarantee > > that they live from one fd context to another. Hence my question > > about persistence ;) > > I plead ignorance about what an "fd context" is.
open-to-close life time. fd = open("some/file", ....); ..... close(fd); is a single context. If multiple fd contexts of the same file overlap in lifetime, then the inode is constantly referenced and the inode won't get reclaimed so the value won't get lost. However, is there is no open fd context, there are no external references to the inode so it can get reclaimed. Hence there's not guarantee that the inode is present and the writeback property maintained across close-to-open timeframes. > We're ahead of the game as long as it usually works. *nod* Cheers, Dave. -- Dave Chinner da...@fromorbit.com -- Sent via pgsql-hackers mailing list (firstname.lastname@example.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers