All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ted Ts'o <tytso@mit.edu>
To: Jiaying Zhang <jiayingz@google.com>
Cc: linux-ext4@vger.kernel.org
Subject: Re: [PATCH] ext4: Flush any pending end_io requests before O_direct read on dioread_nolock
Date: Fri, 19 Aug 2011 16:57:22 -0400	[thread overview]
Message-ID: <20110819205722.GA3578@thunk.org> (raw)
In-Reply-To: <20110819012845.7A4A32012F@ruihe2.smo.corp.google.com>

On Thu, Aug 18, 2011 at 06:28:45PM -0700, Jiaying Zhang wrote:
> @@ -800,12 +800,17 @@ ssize_t ext4_ind_direct_IO(int rw, struct kiocb *iocb,
>  	}
>  
>  retry:
> -	if (rw == READ && ext4_should_dioread_nolock(inode))
> +	if (rw == READ && ext4_should_dioread_nolock(inode)) {
> +		if (unlikely(!list_empty(&ei->i_completed_io_list))) {
> +			mutex_lock(&inode->i_mutex);
> +			ext4_flush_completed_IO(inode);
> +			mutex_unlock(&inode->i_mutex);
> +		}

Doesn't this largely invalidate the reasons for using dioread_nolock
in the first place, which was to avoid taking the i_mutex for
performance reasons?  If we are willing to solve the problem this way,
I wonder if we be better off just simply telling users to disable
dioread_nolock if they care about cache consistency between DIO reads
and buffered writes?  

(Yes, I do understand that in the hopefully common case where a user
is not trying to do buffered writes and DIO reads at the same time,
we'll just take and release the mutex very quickly, but still, it's
got to have a performance impact.)

I seem to recall a conversation I had with Stephen Tweedie over a
decade ago, where he noted that many other Unix systems made
absolutely no cache consistency guarantees with respect to DIO and the
page cache, but he wanted to set a higher standard for Linux.  Which
is fair enough, but I wonder if for the case of dioread_nolock, since
its raison d'etre is to avoid the i_mutex lock, to simply just say
that one of the side effects of dioread_nolock is that (for now) the
cache consistency guarantees are repealed if this mount option is
chosen.

What do folks think?

					- Ted

  reply	other threads:[~2011-08-19 20:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-19  1:28 [PATCH] ext4: Flush any pending end_io requests before O_direct read on dioread_nolock Jiaying Zhang
2011-08-19 20:57 ` Ted Ts'o [this message]
2011-08-19 21:08   ` Jiaying Zhang

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=20110819205722.GA3578@thunk.org \
    --to=tytso@mit.edu \
    --cc=jiayingz@google.com \
    --cc=linux-ext4@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.