linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Allison Collins <allison.henderson@oracle.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH v5 07/14] xfs: Factor out xfs_attr_leaf_addname helper
Date: Thu, 26 Dec 2019 10:04:00 -0700	[thread overview]
Message-ID: <32f47226-d8b7-6f9e-2244-8237a8b1db6e@oracle.com> (raw)
In-Reply-To: <20191224122254.GE18379@infradead.org>

On 12/24/19 5:22 AM, Christoph Hellwig wrote:
> On Wed, Dec 11, 2019 at 09:15:06PM -0700, Allison Collins wrote:
>> Factor out new helper function xfs_attr_leaf_try_add.
>> Because new delayed attribute routines cannot roll
>> transactions, we carve off the parts of
>> xfs_attr_leaf_addname that we can use.  This will help
>> to reduce repetitive code later when we introduce
>> delayed attributes.
> 
> I have a hard time relating the subject to what is happening here,
> maybe because the patch does too many things at once.  One thing
> is plitting a xfs_attr_leaf_try_add from xfs_attr_leaf_addname, which
> seems pretty sensible, but then it also moves code from
> xfs_attr_node_addname into the only caller.  That probably should be
> a separate patch with a proper description.
> 
Sure, maybe it might help to look at it this way though: the goal of all 
this refactoring is to get all the transactions up into the 
xfs_attr_*_args routines.  Once we have them pretty much corralled, we 
replace them with a sort of state machine like mechanic.  This produces 
the "return EAGAIN for new a transaction" behavior that we need for the 
.finish_item callback.

In this case, xfs_attr_leaf_addname is a subroutine with a transaction 
in the middle.  So we split it into two functions.  Kind of like a top 
half and bottom half, and then the transaction moves up.  While I can 
separate the split and the move into separate patches, it didnt really 
feel to me like the transaction or the node logic really fit with either 
of the helpers.  They are supposed to be about leaves, not nodes.  It's 
not a big deal I suppose to split up the patches, but I thought doing so 
creates a sort of transient patch with functions that have logic not 
particularly appropriate for their scope.  Thoughts?

Also, perhaps I need to remove the line in the commit header about 
reducing repetitive code.  It might be misleading you (apologies).  This 
is left over from an earlier version of the series where I tried to 
avoid "monster function" by having two code paths: one for inline attrs 
and a separate one for delayed attrs.  It generated a lot of repetitive 
code with subtle differences though, and i think folks preferred the 
code paths to stay merged.  The goal being to first establish what 
"monster function" even looks like, and then simplify it into new 
helpers from there.

This is admittedly a very difficult series to review.  People need to 
understand patches 1 - 12 to really understand what 13 and 14 are doing. 
  But really, 13 and 14 are kind of driving the rest of the series. 
Like literally an entire patch fell out of the last set because of some 
changes we made in the end of the series.  I know 13 and 14 are the 
hardest to look at, but they very much dictate what the lower patches 
end up doing.  So I encourage people to try and focus attention there 
before loosing to much sanity on scaffolding.  Certainty it all needs to 
get reviewed of course, but it may help to make more efficient use of 
peoples review time.  :-)

Hope that helps!  Thanks for looking at it!
Allison

  reply	other threads:[~2019-12-26 17:04 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-12  4:14 [PATCH v5 00/14] xfs: Delay Ready Attributes Allison Collins
2019-12-12  4:15 ` [PATCH v5 01/14] xfs: Remove all strlen in all xfs_attr_* functions for attr names Allison Collins
2019-12-12  4:15 ` [PATCH v5 02/14] xfs: Replace attribute parameters with struct xfs_name Allison Collins
2019-12-13 13:07   ` Brian Foster
2019-12-14  6:57     ` Allison Collins
2019-12-12  4:15 ` [PATCH v5 03/14] xfs: Embed struct xfs_name in xfs_da_args Allison Collins
2019-12-12  4:15 ` [PATCH v5 04/14] xfs: Add xfs_has_attr and subroutines Allison Collins
2019-12-13 13:08   ` Brian Foster
2019-12-14  6:58     ` Allison Collins
2019-12-24 12:18   ` Christoph Hellwig
2019-12-25  4:21     ` Allison Collins
2020-01-21 22:30       ` Darrick J. Wong
2020-01-22  0:25         ` Allison Collins
2020-01-25 16:27           ` Allison Collins
2020-01-25 23:08             ` Christoph Hellwig
2020-01-26  4:03               ` Allison Collins
2019-12-12  4:15 ` [PATCH v5 05/14] xfs: Factor out new helper functions xfs_attr_rmtval_set Allison Collins
2019-12-24 12:14   ` Christoph Hellwig
2019-12-25 17:43     ` Allison Collins
2020-01-06 14:46       ` Brian Foster
2020-01-06 18:29         ` Allison Collins
2020-01-06 21:45           ` Darrick J. Wong
2020-01-06 23:33             ` Dave Chinner
2019-12-12  4:15 ` [PATCH v5 06/14] xfs: Factor up trans handling in xfs_attr3_leaf_flipflags Allison Collins
2019-12-24 12:16   ` Christoph Hellwig
2019-12-25 20:49     ` Allison Collins
2019-12-12  4:15 ` [PATCH v5 07/14] xfs: Factor out xfs_attr_leaf_addname helper Allison Collins
2019-12-13 14:15   ` Brian Foster
2019-12-14  6:58     ` Allison Collins
2019-12-24 12:22   ` Christoph Hellwig
2019-12-26 17:04     ` Allison Collins [this message]
2019-12-12  4:15 ` [PATCH v5 08/14] xfs: Factor up xfs_attr_try_sf_addname Allison Collins
2019-12-13 14:15   ` Brian Foster
2019-12-14  6:58     ` Allison Collins
2019-12-24 12:25   ` Christoph Hellwig
2019-12-27  3:23     ` Allison Collins
2019-12-12  4:15 ` [PATCH v5 09/14] xfs: Factor up trans roll from xfs_attr3_leaf_setflag Allison Collins
2019-12-24 12:26   ` Christoph Hellwig
2019-12-12  4:15 ` [PATCH v5 10/14] xfs: Factor out xfs_attr_rmtval_invalidate Allison Collins
2019-12-12  4:15 ` [PATCH v5 11/14] xfs: Factor up trans roll in xfs_attr3_leaf_clearflag Allison Collins
2019-12-24 12:28   ` Christoph Hellwig
2019-12-12  4:15 ` [PATCH v5 12/14] xfs: Check for -ENOATTR or -EEXIST Allison Collins
2019-12-13 14:16   ` Brian Foster
2019-12-14  7:56     ` Allison Collins
2019-12-12  4:15 ` [PATCH v5 13/14] xfs: Add delay ready attr remove routines Allison Collins
2019-12-13 17:30   ` Brian Foster
2019-12-14 19:21     ` Allison Collins
2019-12-24 12:30   ` Christoph Hellwig
2019-12-24 23:18     ` Allison Collins
2019-12-12  4:15 ` [PATCH v5 14/14] xfs: Add delay ready attr set routines Allison Collins
2019-12-24 12:02 ` [PATCH v5 00/14] xfs: Delay Ready Attributes 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=32f47226-d8b7-6f9e-2244-8237a8b1db6e@oracle.com \
    --to=allison.henderson@oracle.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).