Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:
Andrew Morton wrote:
2.4:
MS_ASYNC: dirty the pagecache pages, start I/O
MS_SYNC: dirty the pagecache pages, start I/O, wait on I/O
2.6:
MS_ASYNC: dirty the pagecache pages
MS_SYNC: dirty the pagecache pages, start I/O, wait on I/O.
So you're saying that doing the I/O in that 25-100msec window allowed your
app to do more pipelining.
I think for most scenarios, what we have in 2.6 is better: it gives the app
more control over when the I/O should be started.
How so?
Well, for example you might want to msync a number of disjoint parts of the
mapping, then write them all out in one hit.
Or you may not actually _want_ to start the I/O now - you just want pdflush
to write things back in a reasonable time period, so you don't have unsynced
data floating about in memory for eight hours. That's a quite reasonable
application of msync(MS_ASYNC).