Re: msync() behaviour broken for MS_ASYNC, revert patch?

From: Nick Piggin
Date: Thu Feb 09 2006 - 23:50:17 EST


Andrew Morton wrote:
Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:

Secondly, consider the behaviour of the above application if it is modifying

> the same page relatively frequently (quite likely). If MS_ASYNC starts I/O
> immediately, that page will get written 10, 100 or 1000 times per second. > If MS_ASYNC leaves it to pdflush, that page gets written once per 30
> seconds, so we do far much less I/O.
> > We just don't know. It's better to leave it up to the application designer
> rather than lumping too many operations into the one syscall.

Well it remains the same conceptual operation (asynchronously "schedule"
dirty pages for writeout). However it simply becomes more useful to start
the writeout immediately, given that's the (pretty explicit) hint that is
given to us.


If you want to start the I/O now, fine, start the I/O now.

If you don't want to start I/O now, fine, don't start I/O now.

If msync() were to unconditionally start I/O, you don't get that option.


Huh? Sure you do.

If you want to start the IO *now* without waiting on it, call msync(MS_ASYNC)
If you don't want to start the IO now, that's really easy, do nothing.
If you want to start the IO now and also wait for it to finish, call msync(MS_SYNC)

Presently, the first option is unavailable.

It's pretty simple, isn't it?


Yes.

--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com -
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/