Message ID | 20180323081209.31387-2-oohall@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Mar 23, 2018 at 1:12 AM, Oliver O'Halloran <oohall@gmail.com> wrote: > Currently there's no way to remove a region from and nvdimm_bus without > tearing down the whole bus. This patch adds an API for removing a single > region from the bus so that we can implement a sensible unbind operation > for the of_nd_region platform driver. > > Signed-off-by: Oliver O'Halloran <oohall@gmail.com> > --- > drivers/nvdimm/region_devs.c | 6 ++++++ > include/linux/libnvdimm.h | 1 + > 2 files changed, 7 insertions(+) > > diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c > index 2f1d5771100e..76f46fd1fae0 100644 > --- a/drivers/nvdimm/region_devs.c > +++ b/drivers/nvdimm/region_devs.c > @@ -1039,6 +1039,12 @@ struct nd_region *nvdimm_blk_region_create(struct nvdimm_bus *nvdimm_bus, > } > EXPORT_SYMBOL_GPL(nvdimm_blk_region_create); > > +void nd_region_destroy(struct nd_region *region) Let's put this in the "nvdimm_" namespace so it pairs with the nvdimm_*_region_create() apis.
On Fri, 23 Mar 2018 19:12:05 +1100 Oliver O'Halloran <oohall@gmail.com> wrote: > Currently there's no way to remove a region from and nvdimm_bus without > tearing down the whole bus. This patch adds an API for removing a single > region from the bus so that we can implement a sensible unbind operation > for the of_nd_region platform driver. > > Signed-off-by: Oliver O'Halloran <oohall@gmail.com> > --- > drivers/nvdimm/region_devs.c | 6 ++++++ > include/linux/libnvdimm.h | 1 + > 2 files changed, 7 insertions(+) > > diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c > index 2f1d5771100e..76f46fd1fae0 100644 > --- a/drivers/nvdimm/region_devs.c > +++ b/drivers/nvdimm/region_devs.c > @@ -1039,6 +1039,12 @@ struct nd_region *nvdimm_blk_region_create(struct nvdimm_bus *nvdimm_bus, > } > EXPORT_SYMBOL_GPL(nvdimm_blk_region_create); > > +void nd_region_destroy(struct nd_region *region) > +{ > + nd_device_unregister(®ion->dev, ND_SYNC); child_unregister seems to do the same thing, but is expected to be used as a callback from device_for_each_child() I'd suggest we merge the two and rename child_unregister and nd_region_unregister Balbir Singh.
diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c index 2f1d5771100e..76f46fd1fae0 100644 --- a/drivers/nvdimm/region_devs.c +++ b/drivers/nvdimm/region_devs.c @@ -1039,6 +1039,12 @@ struct nd_region *nvdimm_blk_region_create(struct nvdimm_bus *nvdimm_bus, } EXPORT_SYMBOL_GPL(nvdimm_blk_region_create); +void nd_region_destroy(struct nd_region *region) +{ + nd_device_unregister(®ion->dev, ND_SYNC); +} +EXPORT_SYMBOL_GPL(nd_region_destroy); + struct nd_region *nvdimm_volatile_region_create(struct nvdimm_bus *nvdimm_bus, struct nd_region_desc *ndr_desc) { diff --git a/include/linux/libnvdimm.h b/include/linux/libnvdimm.h index f61cb5050297..df21ca176e98 100644 --- a/include/linux/libnvdimm.h +++ b/include/linux/libnvdimm.h @@ -192,6 +192,7 @@ struct nd_region *nvdimm_blk_region_create(struct nvdimm_bus *nvdimm_bus, struct nd_region_desc *ndr_desc); struct nd_region *nvdimm_volatile_region_create(struct nvdimm_bus *nvdimm_bus, struct nd_region_desc *ndr_desc); +void nd_region_destroy(struct nd_region *region); void *nd_region_provider_data(struct nd_region *nd_region); void *nd_blk_region_provider_data(struct nd_blk_region *ndbr); void nd_blk_region_set_provider_data(struct nd_blk_region *ndbr, void *data);
Currently there's no way to remove a region from and nvdimm_bus without tearing down the whole bus. This patch adds an API for removing a single region from the bus so that we can implement a sensible unbind operation for the of_nd_region platform driver. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> --- drivers/nvdimm/region_devs.c | 6 ++++++ include/linux/libnvdimm.h | 1 + 2 files changed, 7 insertions(+)