[RFC PATCH 4/9] nvmet: add a controller "start" hook
Ming Lin
mlin at kernel.org
Thu Nov 19 21:31:10 PST 2015
On Fri, 2015-11-20 at 06:13 +0100, Christoph Hellwig wrote:
> On Thu, Nov 19, 2015 at 04:21:03PM -0800, Ming Lin wrote:
> > #define NVMET_SUBSYS_NAME_LEN 256
> > char subsys_name[NVMET_SUBSYS_NAME_LEN];
> > +
> > + void *opaque;
> > + void (*start)(void *);
> > };
>
> Why can't vhost use container_of to get at the containing structure
> similar to what the loop driver does?
struct nvme_loop_ctrl {
struct nvme_ctrl ctrl;
struct nvmet_ctrl *target_ctrl;
};
static inline struct nvme_loop_ctrl *to_loop_ctrl(struct nvme_ctrl *ctrl)
{
return container_of(ctrl, struct nvme_loop_ctrl, ctrl);
}
loop driver's container_of is used for "nvme_ctrl", not "nvmet_ctrl"
Possibly change:
struct nvmet_ctrl *nvmet_alloc_ctrl(struct nvmet_subsys *subsys,
const char *subsys_name)
to
int nvmet_init_ctrl(struct nvmet_ctrl *, ....)
?
So we can embed "struct nvmet_ctrl" to upper layer structure.
>
> In addition I think we'll eventually need an ops structure here,
> but I can take care of that later.
More information about the Linux-nvme
mailing list