Messages in this thread |  | | | Date | Sun, 1 Jun 2008 01:15:01 -0700 | | From | Andrew Morton <> | | Subject | Re: sync_file_range(SYNC_FILE_RANGE_WRITE) blocks? | |
On Sun, 1 Jun 2008 08:23:43 +0100 (BST) Hugh Dickins <hugh@veritas.com> wrote:
> On Sat, 31 May 2008, Andrew Morton wrote:
> > On Sat, 31 May 2008 19:44:49 +0100 (BST) Hugh Dickins <hugh@veritas.com> wrote:
> > >
> > > All I can say so far is that I find the same as you do:
> > > SYNC_FILE_RANGE_WRITE (after writing) takes a significant amount of time,
> > > more than half as long as when you add in SYNC_FILE_RANGE_WAIT_AFTER too.
> > >
> > > Which make the sync_file_range call pretty pointless: your usage seems
> > > perfectly reasonable to me, but somehow we've broken its behaviour.
> > > I'll be investigating ...
> >
> > It will block on disk queue fullness - sysrq-W will tell.
>
> Ah, thank you. What a disappointment, though it's understandable.
> Doesn't that very severely limit the usefulness of the system call?
A bit. The request queue size is runtime tunable though.
I expect major users of this system call will be applications which do
small-sized overwrites into large files, mainly databases. That is,
once the application developers discover its existence. I'm still
getting expressions of wonder from people who I tell about the
five-year-old fadvise().
> I admit the flag isn't called SYNC_FILE_RANGE_WRITE_WITHOUT_WAITING,
> but I don't suppose Pavel and I are the only ones misled by it.
Yup, this caveat/restriction should be in the manpage.
|  |