From: "Darrick J. Wong" <djwong@kernel.org>
To: Andrey Albershteyn <aalbersh@redhat.com>
Cc: cem@kernel.org, linux-xfs@vger.kernel.org, hch@infradead.org
Subject: Re: [PATCH 2/2] xfs_db: add helper for flist_find_type for clearer field matching
Date: Tue, 16 Apr 2024 13:53:48 -0700 [thread overview]
Message-ID: <20240416205348.GE11948@frogsfrogsfrogs> (raw)
In-Reply-To: <20240416202841.725706-4-aalbersh@redhat.com>
On Tue, Apr 16, 2024 at 10:28:42PM +0200, Andrey Albershteyn wrote:
> Make flist_find_type() more readable by unloading field type
> matching to the helper.
>
> Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
> ---
> db/flist.c | 59 ++++++++++++++++++++++++++++++++++--------------------
> 1 file changed, 37 insertions(+), 22 deletions(-)
>
> diff --git a/db/flist.c b/db/flist.c
> index 0a6cc5fcee43..18052a744a65 100644
> --- a/db/flist.c
> +++ b/db/flist.c
> @@ -400,6 +400,40 @@ flist_split(
> return v;
> }
>
> +flist_t *
> +flist_field_match(
Is this function going to be used outside of this module, or should it
be declared static?
> + const field_t *field,
> + fldt_t type,
> + void *obj,
> + int startoff)
> +{
> + flist_t *fl;
> + int count;
> + const ftattr_t *fa;
> +
> + fl = flist_make(field->name);
> + fl->fld = field;
> + if (field->ftyp == type)
> + return fl;
> + count = fcount(field, obj, startoff);
> + if (!count)
> + goto out;
> + fa = &ftattrtab[field->ftyp];
> + if (fa->subfld) {
You could do:
if (!fa->subfld)
goto out;
nfl = flist_find_ftyp(...);
to reduce the indenting here. But I think you were trying to make
before and after as identical as possible, right?
> + flist_t *nfl;
> +
> + nfl = flist_find_ftyp(fa->subfld, type, obj, startoff);
> + if (nfl) {
> + fl->child = nfl;
> + return fl;
> + }
> + }
> +
> +out:
> + flist_free(fl);
> + return NULL;
> +}
> +
> /*
> * Given a set of fields, scan for a field of the given type.
> * Return an flist leading to the first found field
> @@ -413,33 +447,14 @@ flist_find_ftyp(
> void *obj,
> int startoff)
> {
> - flist_t *fl;
> const field_t *f;
> - int count;
> - const ftattr_t *fa;
> + flist_t *fl;
>
> for (f = fields; f->name; f++) {
> - fl = flist_make(f->name);
> - fl->fld = f;
> - if (f->ftyp == type)
> + if ((fl = flist_field_match(f, type, obj, startoff)) != NULL)
> return fl;
Normally these days we expand assign-and-check when not in a loop
control test:
fl = flist_field_match(...);
if (fl)
return fl;
But those last two comments merely reflect my style preference; the
question I care most about is the one about the static attribute.
--D
> - count = fcount(f, obj, startoff);
> - if (!count) {
> - flist_free(fl);
> - continue;
> - }
> - fa = &ftattrtab[f->ftyp];
> - if (fa->subfld) {
> - flist_t *nfl;
> -
> - nfl = flist_find_ftyp(fa->subfld, type, obj, startoff);
> - if (nfl) {
> - fl->child = nfl;
> - return fl;
> - }
> - }
> - flist_free(fl);
> }
> +
> return NULL;
> }
>
> --
> 2.42.0
>
>
next prev parent reply other threads:[~2024-04-16 20:53 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-16 20:28 [PATCH 0/2] Refactoring from Coverity scan fixes Andrey Albershteyn
2024-04-16 20:28 ` [PATCH 1/2] xfs_fsr: replace atoi() with strtol() Andrey Albershteyn
2024-04-16 20:49 ` Darrick J. Wong
2024-04-16 20:28 ` [PATCH 2/2] xfs_db: add helper for flist_find_type for clearer field matching Andrey Albershteyn
2024-04-16 20:53 ` Darrick J. Wong [this message]
2024-04-17 5:03 ` 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=20240416205348.GE11948@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=aalbersh@redhat.com \
--cc=cem@kernel.org \
--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