linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Chinner <dgc@sgi.com>
To: Greg Banks <gnb@sgi.com>
Cc: David Chinner <dgc@sgi.com>, Neil Brown <neilb@suse.de>,
	Linux Filesystem Mailing List <linux-fsdevel@vger.kernel.org>,
	David Chinner <dgc@melbourne.sgi.com>,
	Donald Douwsma <donaldd@melbourne.sgi.com>,
	Christoph Hellwig <hch@infradead.org>,
	Roger Strassburg <rls@sgi.com>, Mark Goodwin <markgw@sgi.com>,
	Brett Jon Grandbois <brettg@melbourne.sgi.com>,
	Arnd Bergmann <arnd@arndb.de>
Subject: Re: Proposal to improve filesystem/block snapshot interaction
Date: Wed, 31 Oct 2007 18:04:02 +1100	[thread overview]
Message-ID: <20071031070402.GZ995458@sgi.com> (raw)
In-Reply-To: <20071031040158.GC9041@sgi.com>

On Wed, Oct 31, 2007 at 03:01:58PM +1100, Greg Banks wrote:
> On Wed, Oct 31, 2007 at 10:56:52AM +1100, David Chinner wrote:
> > On Tue, Oct 30, 2007 at 03:16:06PM +1100, Neil Brown wrote:
> > > On Tuesday October 30, gnb@sgi.com wrote:
> > > > BIO_HINT_RELEASE
> > > >     The bio's block extent is no longer in use by the filesystem
> > > >     and will not be read in the future.  Any storage used to back
> > > >     the extent may be released without any threat to filesystem
> > > >     or data integrity.
> > > 
> > > If the allocation unit of the storage device (e.g. a few MB) does not
> > > match the allocation unit of the filesystem (e.g. a few KB) then for
> > > this to be useful either the storage device must start recording tiny
> > > allocations, or the filesystem should re-release areas as they grow.
> > > i.e. when releasing a range of a device, look in the filesystem's usage
> > > records for the largest surrounding free space, and release all of that.
> > 
> > I figured that the easiest way around this is reporting free space
> > extents, not the amoutn actually freed. e.g.
> > 
> > 	4k in file A @ block 10
> > 	4k in file B @ block 11
> > 	4k free space @ block 12
> > 	4k in file C @ block 13
> > 	1008k in free space at block 14.
> > 
> > If we free file A, we report that we've released an extent of 4k @ block 10.
> > if we then free file B, we report we've released an extent of 12k @ block 10.
> > If we then free file C, we report a release of 1024k @ block 10.
> > 
> > Then the underlying device knows what the aggregated free space regions
> > are and can easily release large regions without needing to track tiny
> > allocations and frees done by the filesystem.
> 
> If you could do that in the filesystem, it certainly solve the problem.
> In which case I'll explicitly allow for the hint's extent to overlap
> extents previous extents thus hinted, and define the semantics
> for overlaps.  I think I'll rename the hint to BIO_HINT_RELEASED,
> I think that will make the semantics a little clearer.

I think that can be done - i wouldn't have mentioned it if I didn't
think it was possible to implement ;).

It will require a further btree lookup once the free transaction
hits the disk, but I think that's pretty easy to do. I'd probably
hook xfs_alloc_clear_busy() to do this.

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group

  reply	other threads:[~2007-10-31  7:04 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070927063113.GD2989@sgi.com>
2007-10-30  1:04 ` Proposal to improve filesystem/block snapshot interaction Greg Banks
2007-10-30  1:11   ` Greg Banks
2007-10-30  4:16   ` Neil Brown
2007-10-30  5:12     ` Greg Banks
2007-10-30  7:43       ` Arnd Bergmann
2007-11-20 23:43       ` Roger Strassburg
2007-10-30 23:56     ` David Chinner
2007-10-31  4:01       ` Greg Banks
2007-10-31  7:04         ` David Chinner [this message]
2007-10-30  9:35   ` Dongjun Shin
2007-10-30 10:15     ` Arnd Bergmann
2007-10-30 10:49       ` Dongjun Shin
2007-10-30 12:38         ` Arnd Bergmann
2007-10-30 14:19           ` Dongjun Shin
2007-10-30 15:37             ` Jörn Engel
2007-10-30 16:37               ` Arnd Bergmann
2007-10-30 23:19                 ` Kyungmin Park
2007-10-30 23:42       ` Kyungmin Park
2007-10-30 14:06     ` Jörn Engel
2007-10-31  3:44     ` Greg Banks

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=20071031070402.GZ995458@sgi.com \
    --to=dgc@sgi.com \
    --cc=arnd@arndb.de \
    --cc=brettg@melbourne.sgi.com \
    --cc=dgc@melbourne.sgi.com \
    --cc=donaldd@melbourne.sgi.com \
    --cc=gnb@sgi.com \
    --cc=hch@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=markgw@sgi.com \
    --cc=neilb@suse.de \
    --cc=rls@sgi.com \
    /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).