All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Christoph Hellwig <hch@lst.de>, xfs@oss.sgi.com
Subject: Re: [RFC] allow enabling reflinks at runtime
Date: Tue, 12 Jul 2016 22:36:39 -0700	[thread overview]
Message-ID: <20160713053639.GG13625@birch.djwong.org> (raw)
In-Reply-To: <20160609233344.GA26977@dastard>

On Fri, Jun 10, 2016 at 09:33:44AM +1000, Dave Chinner wrote:
> On Wed, Jun 08, 2016 at 09:11:30AM +0200, Christoph Hellwig wrote:
> > On Fri, Jun 03, 2016 at 08:54:15AM +1000, Dave Chinner wrote:
> > > On Thu, Jun 02, 2016 at 04:19:07PM +0200, Christoph Hellwig wrote:
> > > > I've had some vocal user requests to allow enabling reflinks at run time,
> > > > which happens to be a mostly trivial feature.  The only caveat is that we
> > > > need a large enough log size to support the reflink requirements, but for
> > > > typical large file systems that's not an issue.
> > > 
> > > Hmmm - how does this interact with all the rmap code? I was not
> > > planning on enabling reflink without rmap and vice versa simply
> > > because it makes the validation and testing matrix vastly more
> > > complex.
> > 
> > Uh.  So far I've only been testing pure reflink code, mostly because
> > rmap really doesn't buy much for the use case I'm working on.
> > Enabling rmap post-mkfs is defintively a different ballpark, and probably
> > not worth it even if it would be doable.
> 
> Wasn't expecting rmap to ever be dynamically enabled ;)
> 
> So ignoring the testing side of things, and looking more at the
> implementation of the enabling, I'm not sure I really like the idea
> of doing this via a mount option. Because we've got to make
> significant additions to the on disk format in each AG, this seems
> more like a "growfs style" operation than anything. i.e. lock out
> allocation, add all the structures to the AG headers and allocate
> all the blocks needed, re-initialise the per-ag structures with all
> the necessary info, then switch on the feature bit and commit the
> change.

I'd been wondering if we could just make a new FS_SET_GEOMETRY xfsctl
where you'd pass in the same xfs_fsop_geom you got from FSGEOMETRY.
The kernel would either decide that it liked the changes and do them,
or reject the whole thing with -EINVAL.

> It's probably a little more intricate than doing it at mount time,
> but it gets around the fact that users have to add a mount option
> and bounce the filesystem to turn on reflinks.
> I can see this being much easier than a mount option in some
> situations, (e.g. for the root filesystem), and I don't think it's
> much harder to test than the mount option (e.g. the way growfs is
> tested under stress by xfs/104)...

But otherwise we'd probably want to check log size and free counts, and then
fill in the refcount btree root.  We'd also have to make sure that the root
inode chunk doesn't change as a result of xfs_prealloc_blocks changing, since I
think mkfs puts the root inode chunk in the first aligned space after all the
AG metadata.

<shrug> It's been a while, I'll look at this closer when I get back to reflink.

> Your thoughts, Christoph?

--D

> 
> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

  reply	other threads:[~2016-07-13  5:36 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-02 14:19 [RFC] allow enabling reflinks at runtime Christoph Hellwig
2016-06-02 14:19 ` [PATCH 1/3] xfs: add xfs_mp_hasreflink Christoph Hellwig
2016-06-02 14:19 ` [PATCH 2/3] xfs: refactor xfs_refcountbt_alloc_block Christoph Hellwig
2016-06-02 14:19 ` [PATCH 3/3] xfs: add an option to enable reflinks at mount time Christoph Hellwig
2016-06-06 11:23   ` Carlos Maiolino
2016-06-06 11:29     ` Carlos Maiolino
2016-06-06 16:52       ` Darrick J. Wong
2016-06-08  7:04     ` Christoph Hellwig
2016-06-08  8:07       ` Carlos Maiolino
2016-06-08  8:10         ` Carlos Maiolino
2016-06-09 22:57           ` Dave Chinner
2016-06-02 22:54 ` [RFC] allow enabling reflinks at runtime Dave Chinner
2016-06-03  1:58   ` Darrick J. Wong
2016-06-06 18:52     ` Darrick J. Wong
2016-06-08  7:10     ` Christoph Hellwig
2016-06-08  7:11   ` Christoph Hellwig
2016-06-09 17:45     ` Darrick J. Wong
2016-06-09 23:33     ` Dave Chinner
2016-07-13  5:36       ` Darrick J. Wong [this message]
2016-10-26 20:49 ` Darrick J. Wong
2016-11-03 16:10   ` Christoph Hellwig

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=20160713053639.GG13625@birch.djwong.org \
    --to=darrick.wong@oracle.com \
    --cc=david@fromorbit.com \
    --cc=hch@lst.de \
    --cc=xfs@oss.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 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.