From: Greg KH <gregkh@linuxfoundation.org>
To: "Matias Bjørling" <mb@lightnvm.io>
Cc: "Simon A. F. Lund" <slund@cnexlabs.com>,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] lightnvm: expose configuration through sysfs
Date: Fri, 6 May 2016 12:37:04 -0400 [thread overview]
Message-ID: <20160506163704.GA13946@kroah.com> (raw)
In-Reply-To: <5721126F.4090108@lightnvm.io>
On Wed, Apr 27, 2016 at 09:26:39PM +0200, Matias Bjørling wrote:
> On 04/27/2016 09:00 PM, Greg KH wrote:
> > On Wed, Apr 27, 2016 at 08:20:33PM +0200, Matias Bjørling wrote:
> > >
> > >
> > > On 04/27/2016 07:41 PM, Greg KH wrote:
> > > > On Wed, Apr 27, 2016 at 10:18:57AM -0700, Simon A. F. Lund wrote:
> > > > > --- a/include/linux/lightnvm.h
> > > > > +++ b/include/linux/lightnvm.h
> > > > > @@ -174,6 +174,7 @@ struct nvm_id_group {
> > > > > u16 cpar;
> > > > >
> > > > > struct nvm_id_lp_tbl lptbl;
> > > > > + struct kobject kobj;
> > > > > };
> > > > >
> > > > > struct nvm_addr_format {
> > > > > @@ -205,6 +206,7 @@ struct nvm_target {
> > > > > struct list_head list;
> > > > > struct nvm_tgt_type *type;
> > > > > struct gendisk *disk;
> > > > > + struct kobject kobj;
> > > > > };
> > > > >
> > > > > struct nvm_tgt_instance {
> > > > > @@ -360,6 +362,8 @@ struct nvm_dev {
> > > > >
> > > > > struct mutex mlock;
> > > > > spinlock_t lock;
> > > > > +
> > > > > + struct kobject kobj;
> > > > > };
> > > > >
> > > > > static inline struct ppa_addr generic_to_dev_addr(struct nvm_dev *dev,
> > > >
> > > > Never use "raw" kobjects in a driver for a device. You just guaranteed
> > > > that userspace tools will not see these devices or attributes, which
> > > > implies you didn't really test this using libudev :(
> > > >
> > > > Please use real devices, attached to the real devices your disks already
> > > > have in the tree.
> > > >
> > > > And are you sure you didn't just mess up your reference counting by
> > > > now having the lifecycle of these structures be dictated by the kobject?
> > > >
> > > > thanks,
> > > >
> > > > greg k-h
> > > >
> > >
> > > Hi Greg,
> > >
> > > Thanks for the feedback.
> > >
> > > lightnvm doesn't have anything to hook up with in the /dev/block/* until a
> > > device is exposed through a target. A device goes into a staging area, and
> > > then later is configured to expose a block device.
> > >
> > > In the case of NVMe device driver, the driver brings up a device, identifies
> > > it as a lightnvm device, then calls nvm_register and registers the device.
> > > It skips the registration as a block device.
> >
> > But you could register it with sysfs at this point in time, giving you
> > a place in the device tree. Which would be good.
>
> As an example, when the device is identified by the nvme device driver, the
> nvm_register() registers the device (e.g. nvme0n1) in sysfs and places it
> here until further configuration:
>
> /sys/devices/virtual/misc/lightnvm/devices/nvme0n1
>
> It would expose a representation of the lightnvm configuration
>
> Then when targets are added, we would put the target (e.g. tgt0) in
>
> /sys/devices/virtual/misc/lightnvm/targets/tgt0
>
> and that one could reference the device by
>
> /sys/devices/virtual/misc/lightnvm/targets/tgt0/devices/nvme0n1
>
> pointing to
>
> /sys/devices/virtual/misc/lightnvm/devices/nvme0n1
>
> A target can span multiple devices (that's why the targets/*/devices link is
> there)
>
> Does that make sense? and in this case, the raw kobjects make sense to use,
> as we don't have anything to bind them up to, other than the misc device we
> registered.
Maybe, but really, why not use a struct device? You just prevented all
userspace tools from finding your devices (i.e. libudev), so you are
going to have a hard time with any tools that want to see the tree of
devices in the system.
And you also just lost the power management chain as well, the driver
model doesn't know to drop into a kobject, as it can't, so you might not
be working properly at all with that here for suspend/resume and the
like.
good luck,
greg k-h
next prev parent reply other threads:[~2016-05-06 17:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-27 17:18 [RFC PATCH] lightnvm: expose configuration through sysfs Simon A. F. Lund
2016-04-27 17:18 ` Simon A. F. Lund
2016-04-27 17:41 ` Greg KH
2016-04-27 18:20 ` Matias Bjørling
2016-04-27 19:00 ` Greg KH
2016-04-27 19:26 ` Matias Bjørling
2016-05-06 16:37 ` Greg KH [this message]
2016-05-06 17:41 ` Matias Bjørling
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=20160506163704.GA13946@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mb@lightnvm.io \
--cc=slund@cnexlabs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox