From: "Love, Robert W" <robert.w.love@intel.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: "linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
"james.smart@emulex.com" <james.smart@emulex.com>,
"giridhar.malavali@qlogic.com" <giridhar.malavali@qlogic.com>
Subject: Re: [PATCH 3/4] libfcoe: Add fcoe_sysfs
Date: Wed, 14 Mar 2012 01:19:44 +0000 [thread overview]
Message-ID: <4F5FF22F.2030105@intel.com> (raw)
In-Reply-To: <20120313050013.GB15426@kroah.com>
On 03/12/2012 10:00 PM, Greg KH wrote:
> On Mon, Mar 12, 2012 at 04:09:31PM -0700, Robert Love wrote:
>> +static void fcoe_ctlr_attrs_release(struct device *dev)
>> +{
>> + struct fcoe_ctlr_attrs *ctlr = dev_to_ctlr(dev);
>> +
>> + put_device(ctlr->dev.parent);
>> + ctlr->dev.parent = NULL;
> You should never have to put a reference count on your parent, nor worry
> about setting this value to NULL. Just assign the parent when you
> register the device, no need to increment it.
Cool, I'll make these changes.
>> +#define fcoe_ctlr_id(x) \
>> + ((x)->id)
>> +#define fcoe_ctlr_work_q_name(x) \
>> + ((x)->work_q_name)
> <snip>
>
> Ick, what are all of these for, please don't do that.
>
These are only interesting when you look at the macros used to create
the show/store handlers for the attributes.
#define fcoe_ctlr_show_function(field, format_string, sz, cast) \
static ssize_t show_fcoe_ctlr_attrs_##field(struct device *dev, \
struct device_attribute
*attr, \
char *buf) \
{ \
struct fcoe_ctlr_attrs *ctlr = dev_to_ctlr(dev); \
if (ctlr->f->get_fcoe_ctlr_##field) \
ctlr->f->get_fcoe_ctlr_##field(ctlr); \
return snprintf(buf, sz, format_string, \
cast fcoe_ctlr_##field(ctlr)); \
}
It's the last functional line that matters. I might be able to change
that to something like:
cast ctlr->field
I'm pretty sure that won't compile, but if it did, it would only work
for the simple members of fcoe_ctlr_attrs. It gets a bit more
complicated because I have an embedded structure in fcoe_ctlr_attrs:
struct fcoe_ctlr_attrs {
u32 id;
...
struct fcoe_fc_els_lesb lesb;
};
So, when I want to use the fcoe_ctlr_show_function to build the 'show
handler' for this sysfs attribute I rely on the following:
#define fcoe_ctlr_link_fail(x) \
((x)->lesb.lesb_link_fail)
This allows my fcoe_ctlr_show_function macro to be generic and the fact
that the lesb members are within a sub-structure is contained within the
attribute's accessor macro.
I'm sure I could come up with a workaround, it would likely require me
to have a separate fcoe_ctlr_show_function for the lesb attributes. I
like that my fcoe_ctlr_show_function works for the simple
fcoe_ctlr_attrs members as well as for the embedded lesb members.
My feeling is that when you looked at the code you just saw unnecessary
accessors routines as their usage is not so obvious. I do not intend to
be using these accessors anywhere else other than the withing the
show/store building routines.
Given my explanation, do you still dislike these?
I could move them to the fcoe_sysfs.c so they're not in a header and
therefore would look less like accessors that developers should use...
Thanks, //Rob
PS: I'll also address your documentation concern before I repost.
next prev parent reply other threads:[~2012-03-14 1:19 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-12 23:09 [PATCH 0/4] FCoE Sysfs Robert Love
2012-03-12 23:09 ` [PATCH 1/4] fcoe: Allocate fcoe_ctlr with fcoe_interface, not as a member Robert Love
2012-03-12 23:09 ` [PATCH 2/4] bnx2fc: Allocate fcoe_ctlr with bnx2fc_interface, " Robert Love
2012-03-12 23:09 ` [PATCH 3/4] libfcoe: Add fcoe_sysfs Robert Love
2012-03-13 5:00 ` Greg KH
2012-03-14 1:19 ` Love, Robert W [this message]
2012-03-14 2:42 ` Greg KH
2012-03-12 23:09 ` [PATCH 4/4] fcoe, bnx2fc, libfcoe: SW FCoE and bnx2fc use FCoE Syfs Robert Love
2012-03-13 4:56 ` [PATCH 0/4] FCoE Sysfs Greg KH
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=4F5FF22F.2030105@intel.com \
--to=robert.w.love@intel.com \
--cc=giridhar.malavali@qlogic.com \
--cc=gregkh@linuxfoundation.org \
--cc=james.smart@emulex.com \
--cc=linux-scsi@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