lightnvm: refactor target type lookup
authorJavier González <javier@cnexlabs.com>
Fri, 5 Jan 2018 13:16:04 +0000 (14:16 +0100)
committerJens Axboe <axboe@kernel.dk>
Fri, 5 Jan 2018 15:50:12 +0000 (08:50 -0700)
Refactor target type lookup to use/not use locks explicitly instead of
using a hidden parameter to make the function locking.

Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/lightnvm/core.c

index 6d6d2c12ff5bbb7af8289ef03b8c21b6dc896b86..5c2d0f3a830b772195b9106d21d140c2a3538d3a 100644 (file)
@@ -220,21 +220,25 @@ static const struct block_device_operations nvm_fops = {
        .owner          = THIS_MODULE,
 };
 
-static struct nvm_tgt_type *nvm_find_target_type(const char *name, int lock)
+static struct nvm_tgt_type *__nvm_find_target_type(const char *name)
 {
-       struct nvm_tgt_type *tmp, *tt = NULL;
+       struct nvm_tgt_type *tt;
 
-       if (lock)
-               down_write(&nvm_tgtt_lock);
+       list_for_each_entry(tt, &nvm_tgt_types, list)
+               if (!strcmp(name, tt->name))
+                       return tt;
 
-       list_for_each_entry(tmp, &nvm_tgt_types, list)
-               if (!strcmp(name, tmp->name)) {
-                       tt = tmp;
-                       break;
-               }
+       return NULL;
+}
+
+static struct nvm_tgt_type *nvm_find_target_type(const char *name)
+{
+       struct nvm_tgt_type *tt;
+
+       down_write(&nvm_tgtt_lock);
+       tt = __nvm_find_target_type(name);
+       up_write(&nvm_tgtt_lock);
 
-       if (lock)
-               up_write(&nvm_tgtt_lock);
        return tt;
 }
 
@@ -249,7 +253,7 @@ static int nvm_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create)
        void *targetdata;
        int ret;
 
-       tt = nvm_find_target_type(create->tgttype, 1);
+       tt = nvm_find_target_type(create->tgttype);
        if (!tt) {
                pr_err("nvm: target type %s not found\n", create->tgttype);
                return -EINVAL;
@@ -523,7 +527,7 @@ int nvm_register_tgt_type(struct nvm_tgt_type *tt)
        int ret = 0;
 
        down_write(&nvm_tgtt_lock);
-       if (nvm_find_target_type(tt->name, 0))
+       if (__nvm_find_target_type(tt->name))
                ret = -EEXIST;
        else
                list_add(&tt->list, &nvm_tgt_types);