2006-08-14 18:39:51

by Jeff Garzik

[permalink] [raw]
Subject: Getting 'sync' to flush disk cache?

So... has anybody given any thought to enabling fsync(2), fdatasync(2),
and sync_file_range(2) issuing a [FLUSH|SYNCHRONIZE] CACHE command?

This has bugged me for _years_, that Linux does not do this. Looking at
forums on the web, it bugs a lot of other people too.

My suggestion would be to add a FLUSH op alongside the existing READ and
WRITE[_SYNC] ops, rather than passing down WRITE_SYNC. Why? Doing so
maintains a 1-1 translation between requests and disk commands, and it
would allow MD and DM more flexibility in handling this operation.

But that's just a guess. I'm open to suggestions.

Jeff



2006-08-14 19:35:57

by Arjan van de Ven

[permalink] [raw]
Subject: Re: Getting 'sync' to flush disk cache?

On Mon, 2006-08-14 at 14:39 -0400, Jeff Garzik wrote:
> So... has anybody given any thought to enabling fsync(2), fdatasync(2),
> and sync_file_range(2) issuing a [FLUSH|SYNCHRONIZE] CACHE command?
>
> This has bugged me for _years_, that Linux does not do this. Looking at
> forums on the web, it bugs a lot of other people too.

eh afaik 2.6.17 and such do this if you have barriers enabled...

2006-08-14 20:14:08

by Jens Axboe

[permalink] [raw]
Subject: Re: Getting 'sync' to flush disk cache?

On Mon, Aug 14 2006, Arjan van de Ven wrote:
> On Mon, 2006-08-14 at 14:39 -0400, Jeff Garzik wrote:
> > So... has anybody given any thought to enabling fsync(2), fdatasync(2),
> > and sync_file_range(2) issuing a [FLUSH|SYNCHRONIZE] CACHE command?
> >
> > This has bugged me for _years_, that Linux does not do this. Looking at
> > forums on the web, it bugs a lot of other people too.
>
> eh afaik 2.6.17 and such do this if you have barriers enabled...

That is correct, but it only works on reiserfs and XFS and user space
really cannot tell whether it did the right thing or not. File system
developers really should take this more seriously...

--
Jens Axboe

2006-08-14 21:04:40

by Jeff Garzik

[permalink] [raw]
Subject: Re: Getting 'sync' to flush disk cache?

Jens Axboe wrote:
> On Mon, Aug 14 2006, Arjan van de Ven wrote:
>> On Mon, 2006-08-14 at 14:39 -0400, Jeff Garzik wrote:
>>> So... has anybody given any thought to enabling fsync(2), fdatasync(2),
>>> and sync_file_range(2) issuing a [FLUSH|SYNCHRONIZE] CACHE command?
>>>
>>> This has bugged me for _years_, that Linux does not do this. Looking at
>>> forums on the web, it bugs a lot of other people too.
>> eh afaik 2.6.17 and such do this if you have barriers enabled...
>
> That is correct, but it only works on reiserfs and XFS and user space
> really cannot tell whether it did the right thing or not. File system
> developers really should take this more seriously...

IMO the non-journalling fs's should have some sort of common fsync
helper via sync_inode(), sync_mapping_buffers(), and similar paths...
Should be able get a bunch of fs's in one big swath that way.

Jeff



2006-08-14 23:10:51

by Robert Hancock

[permalink] [raw]
Subject: Re: Getting 'sync' to flush disk cache?

Jens Axboe wrote:
> On Mon, Aug 14 2006, Arjan van de Ven wrote:
>> On Mon, 2006-08-14 at 14:39 -0400, Jeff Garzik wrote:
>>> So... has anybody given any thought to enabling fsync(2), fdatasync(2),
>>> and sync_file_range(2) issuing a [FLUSH|SYNCHRONIZE] CACHE command?
>>>
>>> This has bugged me for _years_, that Linux does not do this. Looking at
>>> forums on the web, it bugs a lot of other people too.
>> eh afaik 2.6.17 and such do this if you have barriers enabled...
>
> That is correct, but it only works on reiserfs and XFS and user space
> really cannot tell whether it did the right thing or not. File system
> developers really should take this more seriously...
>

I was under the impression that this just worked under recent kernels.
I'm disappointed to hear that it doesn't. It always annoys me that
issues like this sometimes just seem to stick around forever in the
kernel without getting the attention they should (and tend not to be
well documented either..)

--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from [email protected]
Home Page: http://www.roberthancock.com/

2006-08-15 05:43:33

by Jens Axboe

[permalink] [raw]
Subject: Re: Getting 'sync' to flush disk cache?

On Mon, Aug 14 2006, Robert Hancock wrote:
> Jens Axboe wrote:
> >On Mon, Aug 14 2006, Arjan van de Ven wrote:
> >>On Mon, 2006-08-14 at 14:39 -0400, Jeff Garzik wrote:
> >>>So... has anybody given any thought to enabling fsync(2), fdatasync(2),
> >>>and sync_file_range(2) issuing a [FLUSH|SYNCHRONIZE] CACHE command?
> >>>
> >>>This has bugged me for _years_, that Linux does not do this. Looking at
> >>>forums on the web, it bugs a lot of other people too.
> >>eh afaik 2.6.17 and such do this if you have barriers enabled...
> >
> >That is correct, but it only works on reiserfs and XFS and user space
> >really cannot tell whether it did the right thing or not. File system
> >developers really should take this more seriously...
> >
>
> I was under the impression that this just worked under recent kernels.
> I'm disappointed to hear that it doesn't. It always annoys me that
> issues like this sometimes just seem to stick around forever in the
> kernel without getting the attention they should (and tend not to be
> well documented either..)

It is an embarassment that it doesn't just work. For the longest time,
it seemed nobody really cared about it enough to get it fixed. At least
now it's gathering a bit of momentum.

--
Jens Axboe