linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 08/14] xfs: support embedded dfops in transaction
Date: Thu, 19 Jul 2018 16:32:49 -0400	[thread overview]
Message-ID: <20180719203249.GG29404@bfoster> (raw)
In-Reply-To: <20180719195653.GI6558@infradead.org>

On Thu, Jul 19, 2018 at 12:56:53PM -0700, Christoph Hellwig wrote:
> > +/*
> > + * Move state from one xfs_defer_ops to another and reset the source to initial
> > + * state. This is primarily used to carry state forward across transaction rolls
> > + * with internal dfops.
> > + */
> 
> > +void
> > +xfs_defer_move(
> > +	struct xfs_defer_ops	*dst,
> > +	struct xfs_defer_ops	*src)
> > +{
> > +	int			i;
> > +
> > +	ASSERT(dst != src);
> > +
> > +	list_splice_init(&src->dop_intake, &dst->dop_intake);
> > +	list_splice_init(&src->dop_pending, &dst->dop_pending);
> > +
> > +	for (i = 0; i < XFS_DEFER_OPS_NR_INODES; i++) {
> > +		if (!src->dop_inodes[i])
> > +			break;
> > +		dst->dop_inodes[i] = src->dop_inodes[i];
> > +	}
> > +	for (i = 0; i< XFS_DEFER_OPS_NR_BUFS; i++) {
> > +		if (!src->dop_bufs[i])
> > +			break;
> > +		dst->dop_bufs[i] = src->dop_bufs[i];
> > +	}
> 
> I suspect simply memcpy()ing the state over would be faster..

Hm, I figured open-coding it would be faster than function calls since
there are only 2 pointers, but tbh I'm not sure either way and don't
have a strong preference. That said, I've been thinking a bit about how
to get rid of dop_bufs/inodes entirely (see my reply to the cover letter
thread). If that looks promising then it's probably not worth changing
this over since the code will go away (but otherwise I'll change it to
memcpy() if that's preferred)..

Brian

  reply	other threads:[~2018-07-19 21:17 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-19 13:49 [PATCH 00/14] xfs: embed dfops in the transaction Brian Foster
2018-07-19 13:49 ` [PATCH 01/14] xfs: pull up dfops from xfs_itruncate_extents() Brian Foster
2018-07-19 19:50   ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 02/14] xfs: use ->t_dfops in log recovery intent processing Brian Foster
2018-07-19 19:50   ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 03/14] xfs: fix transaction leak on remote attr set/remove failure Brian Foster
2018-07-19 19:51   ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 04/14] xfs: make deferred processing safe for embedded dfops Brian Foster
2018-07-19 19:52   ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 05/14] xfs: remove unused deferred ops committed field Brian Foster
2018-07-19 19:53   ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 06/14] xfs: reset dfops to initial state after finish Brian Foster
2018-07-19 19:54   ` Christoph Hellwig
2018-07-19 20:33     ` Brian Foster
2018-07-20 16:07       ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 07/14] xfs: pack holes in xfs_defer_ops and xfs_trans Brian Foster
2018-07-19 19:54   ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 08/14] xfs: support embedded dfops in transaction Brian Foster
2018-07-19 16:18   ` Brian Foster
2018-07-19 19:47     ` Christoph Hellwig
2018-07-19 20:31       ` Brian Foster
2018-07-20 16:05         ` Christoph Hellwig
2018-07-20 16:27           ` Darrick J. Wong
2018-07-19 19:56   ` Christoph Hellwig
2018-07-19 20:32     ` Brian Foster [this message]
2018-07-20 16:06       ` Christoph Hellwig
2018-07-19 13:49 ` [PATCH 09/14] xfs: use internal dfops in cow blocks cancel Brian Foster
2018-07-19 19:57   ` Christoph Hellwig
2018-07-19 20:33     ` Brian Foster
2018-07-19 13:49 ` [PATCH 10/14] xfs: use internal dfops in attr code Brian Foster
2018-07-19 13:49 ` [PATCH 11/14] xfs: use internal dfops during [b|c]ui recovery Brian Foster
2018-07-19 13:49 ` [PATCH 12/14] xfs: remove all boilerplate defer init/finish code Brian Foster
2018-07-19 13:49 ` [PATCH 13/14] xfs: remove unnecessary dfops init calls in xattr code Brian Foster
2018-07-19 13:49 ` [PATCH 14/14] xfs: drop unnecessary xfs_defer_finish() dfops parameter Brian Foster
2018-07-19 20:05 ` [PATCH 00/14] xfs: embed dfops in the transaction Christoph Hellwig
2018-07-19 20:36   ` Brian Foster
2018-07-19 21:36     ` Darrick J. Wong
2018-07-20 14:06       ` Brian Foster
2018-07-20 14:41       ` Brian Foster
2018-07-20 16:11         ` Christoph Hellwig
2018-07-20 16:09       ` 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=20180719203249.GG29404@bfoster \
    --to=bfoster@redhat.com \
    --cc=hch@infradead.org \
    --cc=linux-xfs@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 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).