linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Moyer <jmoyer@redhat.com>
To: Jamie Lokier <jamie@shareable.org>
Cc: Nick Piggin <npiggin@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-fsdevel@vger.kernel.org, mpatocka@redhat.com
Subject: Re: [rfc][patch] mm: direct io less aggressive syncs and invalidates
Date: Wed, 29 Oct 2008 09:30:12 -0400	[thread overview]
Message-ID: <x49prlj1qcb.fsf@segfault.boston.devel.redhat.com> (raw)
In-Reply-To: <20081029005600.GA24030@shareable.org> (Jamie Lokier's message of "Wed, 29 Oct 2008 00:56:00 +0000")

Jamie Lokier <jamie@shareable.org> writes:

> Jeff Moyer wrote:
>> > Index: linux-2.6/mm/filemap.c
>> > ===================================================================
>> > --- linux-2.6.orig/mm/filemap.c	2008-10-03 11:21:31.000000000 +1000
>> > +++ linux-2.6/mm/filemap.c	2008-10-03 12:00:17.000000000 +1000
>> > @@ -1304,11 +1304,8 @@ generic_file_aio_read(struct kiocb *iocb
>> >  			goto out; /* skip atime */
>> >  		size = i_size_read(inode);
>> >  		if (pos < size) {
>> > -			retval = filemap_write_and_wait(mapping);
>> > -			if (!retval) {
>> > -				retval = mapping->a_ops->direct_IO(READ, iocb,
>> > +			retval = mapping->a_ops->direct_IO(READ, iocb,
>> >  							iov, pos, nr_segs);
>> > -			}
>> 
>> So why is it safe to get rid of this?  Can't this result in reading
>> stale data from disk?
>
> It seems that could be easily tested in one of the test suites, by
> writing a page without O_DIRECT to make a dirty page, then reading the
> same page with O_DIRECT.  Do it a few times to be sure.

Sure, are you volunteering to write this? =)  For completeness, it
should probably do this via mmap, too.

> Do the test suites verify O_DIRECT / page-cache coherency?

aio-dio-regress has a couple of targeted tests, but nothing I would call
comprehensive.  I know that during the development of the direct I/O
code, there were some tests kicking around for this.  The small test
cases I can find include:

/*
 * aiodio_sparse - issue async O_DIRECT writes to holes is a file while
 *      concurrently reading the file and checking that the read never reads
 *      uninitailized data.
 */

dio_sparse -- same theme but no async I/O

aiodio_append -- this seems to fork a child which continually seeks to
the end of the file and tries to read data.  Meanwhile, the parent
continually appends zeroed data to the file using async direct I/O.  If
the child ever reads anything other than zeroes, it kicks an error.

dio_truncate -- 
        /*
         * Parent creates a zero file using DIO.
         * Truncates it to zero
         * Create another file with '0xaa'
         */
I have no idea why it creates a different file and fills it with 0xaa.
The child process continually reads the first file, ensuring that all of
the returned data is zeroes.

I'll see about incorporating the above into aio-dio-regress.

Cheers,

Jeff

  reply	other threads:[~2008-10-29 13:30 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-28 15:54 [rfc][patch] mm: direct io less aggressive syncs and invalidates Nick Piggin
2008-10-28 21:11 ` Jeff Moyer
2008-10-28 23:52   ` Nick Piggin
2008-10-29 13:12     ` Jeff Moyer
2008-10-29 21:47       ` Dave Chinner
2008-10-30  2:11       ` Nick Piggin
2008-10-30 19:14         ` Jeff Moyer
2008-10-29  0:56   ` Jamie Lokier
2008-10-29 13:30     ` Jeff Moyer [this message]
2008-10-29 21:48       ` Dave Chinner
2008-10-29 14:02 ` Mikulas Patocka
2008-10-30  2:08   ` Nick Piggin

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=x49prlj1qcb.fsf@segfault.boston.devel.redhat.com \
    --to=jmoyer@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=jamie@shareable.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --cc=npiggin@suse.de \
    /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;
as well as URLs for NNTP newsgroup(s).