From: Robert Hancock <hancockr@shaw.ca>
To: Ricardo Correia <rcorreia@wizy.org>,
linux-kernel <linux-kernel@vger.kernel.org>
Cc: Jens Axboe <jens.axboe@oracle.com>
Subject: Re: How to flush the disk write cache from userspace
Date: Thu, 18 Jan 2007 18:35:08 -0600 [thread overview]
Message-ID: <45B0123C.3080506@shaw.ca> (raw)
In-Reply-To: <fa.lqQRZqIqMX2chyIAM888fc1jCuY@ifi.uio.no>
Ricardo Correia wrote:
> On Tuesday 16 January 2007 00:38, you wrote:
>> As always with these things, the devil is in the details. It requires
>> the device to support a ->prepare_flush() queue hook, and not all
>> devices do that. It will work for IDE/SATA/SCSI, though. In some devices
>> you don't want/need to do a real disk flush, it depends on the write
>> cache settings, battery backing, etc.
>
> Is there any chance that someone could implement this (I don't have the
> skills, unfortunately)? Maybe add a new ioctl() to block devices, so that it
> doesn't break any existing code?
I think we really should have support for doing cache flushes
automatically on fsync, etc. User space code should not have to worry
about this problem, it's pretty silly that for example MySQL has to
advise people to use hdparm -W 0 to disable the write cache on their IDE
drives in order to get proper data integrity guarantees - and disabling
the cache on IDE without command queueing really slaughters the
performance, unnecessarily in this case.
There may be some cases where the controller provides a battery-backed
cache and thus we don't want to actually force the controller to flush
everything out to the drive on fsync, so we may need to be able to
disable this, but these controllers may ignore flushes anyway. I know
IBM ServeRAID appears to fail requests for write cache info and so the
kernel assumes drive cache: write through and doesn't do any flushes.
>
> I believe it's a very useful (and relatively simple) feature that increases
> data integrity and reliability for applications that need this functionality.
>
> I think it must be considered that most people have disk write caches enabled
> and are using IDE, SATA or SCSI disks.
>
> I also think there's no point in disabling disks' write caches, since it slows
> writes and decreases disks' lifetime, and because there's a better solution.
Yes, ideally doing all writes to the drive with write cache enabled and
then flushing them out afterwards would be much more efficient (at least
when no command queueing is involved) since the drive can choose what
order to complete the writes in.
>
> Personally, I'm not really interested in specific filesystem behaviour, since
> my application uses block devices directly (it's a filesystem itself).
> Although I think all filesystems should guarantee data integrity in the face
> of fsync() or metadata modifications, even if it costs a little performance.
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
next parent reply other threads:[~2007-01-19 0:36 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.y+HJNAxqDqX5AHUxcmThAo20Ivo@ifi.uio.no>
[not found] ` <fa.xbdrjhFpvWMJeTroG2DpPE4wd+M@ifi.uio.no>
[not found] ` <fa.lqQRZqIqMX2chyIAM888fc1jCuY@ifi.uio.no>
2007-01-19 0:35 ` Robert Hancock [this message]
2007-01-21 3:50 ` How to flush the disk write cache from userspace Jens Axboe
2007-01-14 4:05 Ricardo Correia
2007-01-16 0:38 ` Jens Axboe
2007-01-18 1:15 ` Ricardo Correia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45B0123C.3080506@shaw.ca \
--to=hancockr@shaw.ca \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rcorreia@wizy.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox