mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 10:01:43 +00:00
nvme: add nvme_get_ns helper
Add a helper to avoid opencoding ns->kref increment. Decrement is already done via nvme_put_ns helper. Signed-off-by: Kanchan Joshi <joshi.k@samsung.com> Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
48145b6256
commit
4c74d1f803
@ -576,6 +576,11 @@ static void nvme_free_ns(struct kref *kref)
|
|||||||
kfree(ns);
|
kfree(ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool nvme_get_ns(struct nvme_ns *ns)
|
||||||
|
{
|
||||||
|
return kref_get_unless_zero(&ns->kref);
|
||||||
|
}
|
||||||
|
|
||||||
void nvme_put_ns(struct nvme_ns *ns)
|
void nvme_put_ns(struct nvme_ns *ns)
|
||||||
{
|
{
|
||||||
kref_put(&ns->kref, nvme_free_ns);
|
kref_put(&ns->kref, nvme_free_ns);
|
||||||
@ -1494,7 +1499,7 @@ static int nvme_ns_open(struct nvme_ns *ns)
|
|||||||
/* should never be called due to GENHD_FL_HIDDEN */
|
/* should never be called due to GENHD_FL_HIDDEN */
|
||||||
if (WARN_ON_ONCE(nvme_ns_head_multipath(ns->head)))
|
if (WARN_ON_ONCE(nvme_ns_head_multipath(ns->head)))
|
||||||
goto fail;
|
goto fail;
|
||||||
if (!kref_get_unless_zero(&ns->kref))
|
if (!nvme_get_ns(ns))
|
||||||
goto fail;
|
goto fail;
|
||||||
if (!try_module_get(ns->ctrl->ops->module))
|
if (!try_module_get(ns->ctrl->ops->module))
|
||||||
goto fail_put_ns;
|
goto fail_put_ns;
|
||||||
@ -3582,7 +3587,7 @@ struct nvme_ns *nvme_find_get_ns(struct nvme_ctrl *ctrl, unsigned nsid)
|
|||||||
down_read(&ctrl->namespaces_rwsem);
|
down_read(&ctrl->namespaces_rwsem);
|
||||||
list_for_each_entry(ns, &ctrl->namespaces, list) {
|
list_for_each_entry(ns, &ctrl->namespaces, list) {
|
||||||
if (ns->head->ns_id == nsid) {
|
if (ns->head->ns_id == nsid) {
|
||||||
if (!kref_get_unless_zero(&ns->kref))
|
if (!nvme_get_ns(ns))
|
||||||
continue;
|
continue;
|
||||||
ret = ns;
|
ret = ns;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user