All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	ocfs2-devel@oss.oracle.com, Tao Ma <tao.ma@oracle.com>,
	Dave Chinner <dchinner@redhat.com>,
	Christoph Hellwig <hch@lst.de>, Mark Fasheh <mfasheh@suse.com>
Subject: [Ocfs2-devel] [PATCH] Revert "writeback: limit write_cache_pages integrity scanning to current EOF"
Date: Tue, 29 Jun 2010 12:27:57 +1000	[thread overview]
Message-ID: <20100629022757.GA6590@dastard> (raw)
In-Reply-To: <20100629020420.GE24343@mail.oracle.com>

On Mon, Jun 28, 2010 at 07:04:20PM -0700, Joel Becker wrote:
> On Tue, Jun 29, 2010 at 11:56:15AM +1000, Dave Chinner wrote:
> > > 	Regarding XFS, how do you handle catching the tail of an
> > > allocation with an lseek(2)'d write?  That is, your current allocation
> > > has a few blocks outside of i_size, then I lseek(2) a gigabyte past EOF
> > > and write there.  The code has to recognize to zero around old_i_size
> > > before moving out to new_i_size, right?  I think that's where our old
> > > approaches had problems.
> > 
> > xfs_file_aio_write() handles both those cases for us via
> > xfs_zero_eof().  What it does is map the region from the old EOF to
> > the start of the new write and zeroes any allocated blocks that are
> > not marked unwritten that lie within the range. It does this via the
> > internal mapping interface because we hide allocated blocks past EOF
> > from the page cache and higher layers.
> 
> 	Makes sense as an approach.  We deliberately do this through the
> page cache to take advantage of its I/O patterns and tie in with JBD2.
> Also, we don't feel like maintaining an entire shadow page cache ;-)

Just to clarify any possible misunderstanding here, xfs_zero_eof()
also does it's IO through the page cache for similar reasons.  It's
just the mappings are found via the internal interfaces before the
zeroing is done via the anonymous pagecache_write_begin()/
pagecache_write_end() functions (in xfs_iozero()) rather than using
the generic block functions.

Cheers,

Dave.
-- 
Dave Chinner
david at fromorbit.com

WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	ocfs2-devel@oss.oracle.com, Tao Ma <tao.ma@oracle.com>,
	Dave Chinner <dchinner@redhat.com>,
	Christoph Hellwig <hch@lst.de>, Mark Fasheh <mfasheh@suse.com>
Subject: Re: [PATCH] Revert "writeback: limit write_cache_pages integrity scanning to current EOF"
Date: Tue, 29 Jun 2010 12:27:57 +1000	[thread overview]
Message-ID: <20100629022757.GA6590@dastard> (raw)
In-Reply-To: <20100629020420.GE24343@mail.oracle.com>

On Mon, Jun 28, 2010 at 07:04:20PM -0700, Joel Becker wrote:
> On Tue, Jun 29, 2010 at 11:56:15AM +1000, Dave Chinner wrote:
> > > 	Regarding XFS, how do you handle catching the tail of an
> > > allocation with an lseek(2)'d write?  That is, your current allocation
> > > has a few blocks outside of i_size, then I lseek(2) a gigabyte past EOF
> > > and write there.  The code has to recognize to zero around old_i_size
> > > before moving out to new_i_size, right?  I think that's where our old
> > > approaches had problems.
> > 
> > xfs_file_aio_write() handles both those cases for us via
> > xfs_zero_eof().  What it does is map the region from the old EOF to
> > the start of the new write and zeroes any allocated blocks that are
> > not marked unwritten that lie within the range. It does this via the
> > internal mapping interface because we hide allocated blocks past EOF
> > from the page cache and higher layers.
> 
> 	Makes sense as an approach.  We deliberately do this through the
> page cache to take advantage of its I/O patterns and tie in with JBD2.
> Also, we don't feel like maintaining an entire shadow page cache ;-)

Just to clarify any possible misunderstanding here, xfs_zero_eof()
also does it's IO through the page cache for similar reasons.  It's
just the mappings are found via the internal interfaces before the
zeroing is done via the anonymous pagecache_write_begin()/
pagecache_write_end() functions (in xfs_iozero()) rather than using
the generic block functions.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

  reply	other threads:[~2010-06-29  2:27 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-28 17:35 [Ocfs2-devel] [PATCH] Revert "writeback: limit write_cache_pages integrity scanning to current EOF" Joel Becker
2010-06-28 17:35 ` Joel Becker
2010-06-29  0:24 ` [Ocfs2-devel] " Dave Chinner
2010-06-29  0:24   ` Dave Chinner
2010-06-29  0:54   ` [Ocfs2-devel] " Joel Becker
2010-06-29  0:54     ` Joel Becker
2010-06-29  1:12     ` [Ocfs2-devel] " Linus Torvalds
2010-06-29  1:12       ` Linus Torvalds
2010-06-29  1:58       ` [Ocfs2-devel] " Joel Becker
2010-06-29  1:58         ` Joel Becker
2010-06-29  2:20         ` Linus Torvalds
2010-06-29  2:20           ` Linus Torvalds
2010-06-29  2:44           ` Dave Chinner
2010-06-29  2:44             ` Dave Chinner
2010-06-29  8:16           ` Joel Becker
2010-06-29  8:16             ` Joel Becker
2010-06-30  1:30             ` Joel Becker
2010-06-30  1:30               ` Joel Becker
2010-07-06 19:06         ` Joel Becker
2010-07-06 19:06           ` Joel Becker
2010-06-29  1:56     ` Dave Chinner
2010-06-29  1:56       ` Dave Chinner
2010-06-29  2:04       ` [Ocfs2-devel] " Joel Becker
2010-06-29  2:04         ` Joel Becker
2010-06-29  2:27         ` Dave Chinner [this message]
2010-06-29  2:27           ` Dave Chinner
2010-06-29  7:18           ` [Ocfs2-devel] " Joel Becker
2010-06-29  7:18             ` Joel Becker
2010-07-02 22:49             ` [Ocfs2-devel] [PATCH] ocfs2: Zero the tail cluster when extending past i_size Joel Becker
2010-07-02 22:49               ` Joel Becker
2010-07-03 21:32               ` [Ocfs2-devel] [PATCH 1/2] ocfs2: Zero the tail cluster when extending past i_size v2 Joel Becker
2010-07-03 21:32                 ` Joel Becker
2010-07-03 21:33                 ` [Ocfs2-devel] [PATCH 2/2] ocfs2: No need to zero pages past i_size. " Joel Becker
2010-07-03 21:33                   ` Joel Becker
2010-07-04 15:13                   ` [Ocfs2-devel] " Tao Ma
2010-07-04 15:13                     ` Tao Ma
2010-07-05  1:38                     ` [Ocfs2-devel] " Tao Ma
2010-07-05  1:38                       ` Tao Ma
2010-07-06  7:10                       ` [Ocfs2-devel] " Joel Becker
2010-07-06  7:10                         ` Joel Becker
2010-07-06  7:09                     ` [Ocfs2-devel] " Joel Becker
2010-07-06  7:09                       ` Joel Becker
2010-07-06 18:39                       ` [Ocfs2-devel] " Joel Becker
2010-07-06 18:39                         ` Joel Becker
2010-07-05  3:51                 ` [Ocfs2-devel] [PATCH 1/2] ocfs2: Zero the tail cluster when extending past " Tao Ma
2010-07-05  3:51                   ` Tao Ma
2010-07-06  7:17                   ` [Ocfs2-devel] " Joel Becker
2010-07-06  7:17                     ` Joel Becker
2010-07-06  7:54                     ` [Ocfs2-devel] " Tao Ma
2010-07-06  7:54                       ` Tao Ma
2010-07-06 11:58                       ` [Ocfs2-devel] " Joel Becker
2010-07-06 11:58                         ` Joel Becker
2010-07-07  0:42                         ` [Ocfs2-devel] " Tao Ma
2010-07-07  0:42                           ` Tao Ma
2010-07-07  2:03                           ` [Ocfs2-devel] " Joel Becker
2010-07-07  2:03                             ` Joel Becker
2010-07-06 18:48                   ` [Ocfs2-devel] " Joel Becker
2010-07-06 18:48                     ` Joel Becker
2010-07-06 18:57                   ` [Ocfs2-devel] " Joel Becker
2010-07-06 18:57                     ` Joel Becker
2010-07-07 11:16                 ` [Ocfs2-devel] [PATCH 0/3] ocfs2: Tail zeroing fixes Joel Becker
2010-07-07 11:16                   ` Joel Becker
2010-07-12 22:45                   ` [Ocfs2-devel] " Joel Becker
2010-07-12 22:45                     ` Joel Becker
2010-07-07 11:16                 ` [Ocfs2-devel] [PATCH 1/3] ocfs2: When zero extending, do it by page Joel Becker
2010-07-07 11:16                   ` Joel Becker
2010-07-07 15:19                   ` [Ocfs2-devel] " Tao Ma
2010-07-07 15:19                     ` Tao Ma
2010-07-07 20:04                     ` [Ocfs2-devel] " Joel Becker
2010-07-07 20:04                       ` Joel Becker
2010-07-08  3:44                   ` [Ocfs2-devel] " Tao Ma
2010-07-08  3:44                     ` Tao Ma
2010-07-08  9:51                     ` [Ocfs2-devel] " Joel Becker
2010-07-08  9:51                       ` Joel Becker
2010-07-07 11:16                 ` [Ocfs2-devel] [PATCH 2/3] ocfs2: Zero the tail cluster when extending past i_size Joel Becker
2010-07-07 11:16                   ` Joel Becker
2010-07-07 11:16                 ` [Ocfs2-devel] [PATCH 3/3] ocfs2: No need to zero pages " Joel Becker
2010-07-07 11:16                   ` Joel Becker

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=20100629022757.GA6590@dastard \
    --to=david@fromorbit.com \
    --cc=dchinner@redhat.com \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mfasheh@suse.com \
    --cc=ocfs2-devel@oss.oracle.com \
    --cc=tao.ma@oracle.com \
    --cc=torvalds@linux-foundation.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.