Re: sync_file_range(SYNC_FILE_RANGE_WRITE) blocks?

From: Andrew Morton
Date: Sun Jun 01 2008 - 04:16:46 EST


On Sun, 1 Jun 2008 08:23:43 +0100 (BST) Hugh Dickins <hugh@xxxxxxxxxxx> wrote:

> On Sat, 31 May 2008, Andrew Morton wrote:
> > On Sat, 31 May 2008 19:44:49 +0100 (BST) Hugh Dickins <hugh@xxxxxxxxxxx> 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.
--
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/