From: Kimberly Brown <kimbrownkd@gmail.com>
To: Michael Kelley <mikelley@microsoft.com>
Cc: Long Li <longli@microsoft.com>,
Sasha Levin <Alexander.Levin@microsoft.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
Dexuan Cui <decui@microsoft.com>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
KY Srinivasan <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4] Drivers: hv: vmbus: Expose monitor data only when monitor pages are used
Date: Sun, 3 Mar 2019 16:40:56 -0500 [thread overview]
Message-ID: <20190303214056.GB2071@ubu-Virtual-Machine> (raw)
In-Reply-To: <DM5PR2101MB091825C55612FBCEA3322119D7770@DM5PR2101MB0918.namprd21.prod.outlook.com>
On Sat, Mar 02, 2019 at 06:39:30PM +0000, Michael Kelley wrote:
> From: Kimberly Brown <kimbrownkd@gmail.com> Sent: Friday, March 1, 2019 11:18 AM
> >
> > +/*
> > + * Channel-level attribute_group callback function. Returns the permission for
> > + * each attribute, and returns 0 if an attribute is not visible.
> > + */
> > +static umode_t vmbus_chan_attr_is_visible(struct kobject *kobj,
> > + struct attribute *attr, int idx)
> > +{
> > + const struct vmbus_channel *channel =
> > + container_of(kobj, struct vmbus_channel, kobj);
> > +
> > + /* Hide the monitor attributes if the monitor mechanism is not used. */
> > + if (!channel->offermsg.monitor_allocated &&
> > + (attr == &chan_attr_pending.attr ||
> > + attr == &chan_attr_latency.attr ||
> > + attr == &chan_attr_monitor_id.attr))
> > + return 0;
> > +
> > + return attr->mode;
> > +}
> > +
> > +static struct attribute_group vmbus_chan_group = {
> > + .attrs = vmbus_chan_attrs,
> > + .is_visible = vmbus_chan_attr_is_visible
> > +};
> > +
> > static struct kobj_type vmbus_chan_ktype = {
> > .sysfs_ops = &vmbus_chan_sysfs_ops,
> > .release = vmbus_chan_release,
> > - .default_attrs = vmbus_chan_attrs,
>
> Just to double-check my understanding, removing the default_attrs
> here means that in vmbus_add_channel_kobj(), the call to
> kobject_init_and_add() will only create the sub-directory that is the
> channel number. The sub-directory will be empty. Then the new
> call to sysfs_create_group() that you added below will populate
> the subdirectory, as filtered by vmbus_chan_attr_is_visible().
Yes, that's my understanding as well.
>
> > };
> >
> > /*
> > @@ -1571,6 +1624,12 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct
> > vmbus_channel *channel)
> > if (ret)
> > return ret;
> >
> > + ret = sysfs_create_group(kobj, &vmbus_chan_group);
> > + if (ret) {
> > + pr_err("Unable to set up channel sysfs files\n");
> > + return ret;
>
> In this error case, the previously created sub-directory that is the
> channel number needs to be deleted/cleaned up.
I was going to let the kobject and sysfs systems take care of that. If
vmbus_add_channel_kobj() returns an error to the calling functions, they
call kobject_put(), which eventually removes the directory.
There are two functions that call vmbus_add_channel_kobj():
vmbus_add_channel_work() and vmbus_device_register(). If
vmbus_add_channel_kobj() returns an error to vmbus_add_channel_work(),
the function calls are:
free_channel() => kobject_put() (channel kobj ref. count should now be
0) => kobject_release() => kobject_cleanup() => kobject_del() =>
sysfs_remove_dir()
If vmbus_add_channel_kobject() returns an error to
vmbus_device_register(), the device's sub-directory is removed:
device_unregister() => put_device() => kobject_put() (device kobj ref.
count should now be 0) => kobject_release() => ...
So, I don't think its necessary to cleanup the subdirectory created by
kobject_init_and_add() here.
Thanks,
Kim
>
> > + }
> > +
>
> Michael
next prev parent reply other threads:[~2019-03-03 21:41 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-08 9:57 [PATCH 0/2] Drivers: hv: vmbus: Fix sysfs functions that display monitor id and page data Kimberly Brown
2019-02-08 9:58 ` [PATCH 1/2] Drivers: hv: vmbus: Change server monitor_pages index to 0 Kimberly Brown
2019-02-08 22:28 ` Stephen Hemminger
2019-02-08 10:01 ` [PATCH 2/2] Drivers: hv: vmbus: Display nothing in sysfs if monitor_allocated not set Kimberly Brown
2019-02-08 22:32 ` Stephen Hemminger
2019-02-11 7:01 ` Kimberly Brown
2019-02-11 18:02 ` Stephen Hemminger
2019-02-14 6:11 ` Kimberly Brown
2019-02-14 19:50 ` Stephen Hemminger
2019-02-19 5:37 ` [PATCH v2 0/2] Drivers: hv: vmbus: Fix sysfs functions that display monitor id and page data Kimberly Brown
2019-02-19 5:38 ` [PATCH v2 1/2] Drivers: hv: vmbus: Change server monitor_pages index to 0 Kimberly Brown
2019-02-20 14:35 ` Michael Kelley
[not found] ` <cover.1550554279.git.kimbrownkd@gmail.com>
2019-02-19 5:38 ` [PATCH v2 2/2] Drivers: hv: vmbus: Return -EINVAL if monitor_allocated not set Kimberly Brown
2019-02-20 16:11 ` Michael Kelley
2019-02-26 5:35 ` [PATCH v3] Drivers: hv: vmbus: Expose monitor data when channel uses monitor pages Kimberly Brown
2019-02-26 8:18 ` Greg KH
2019-03-01 19:18 ` [PATCH v4] Drivers: hv: vmbus: Expose monitor data only when monitor pages are used Kimberly Brown
2019-03-02 18:39 ` Michael Kelley
2019-03-03 21:40 ` Kimberly Brown [this message]
2019-03-03 8:05 ` Greg KH
2019-03-03 21:11 ` Kimberly Brown
2019-03-04 7:38 ` Greg KH
2019-03-08 22:46 ` [PATCH v5] " Kimberly Brown
2019-03-09 7:21 ` Greg KH
2019-03-12 0:04 ` Kimberly Brown
2019-03-19 4:04 ` [PATCH v6] " Kimberly Brown
2019-03-19 9:26 ` Greg KH
2019-03-20 20:18 ` Michael Kelley
2019-03-21 3:57 ` Sasha Levin
2019-03-21 15:55 ` Michael Kelley
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=20190303214056.GB2071@ubu-Virtual-Machine \
--to=kimbrownkd@gmail.com \
--cc=Alexander.Levin@microsoft.com \
--cc=decui@microsoft.com \
--cc=gregkh@linuxfoundation.org \
--cc=haiyangz@microsoft.com \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=mikelley@microsoft.com \
--cc=sthemmin@microsoft.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.