lightnvm: refactor target type lookup
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>
This commit is contained in:
parent
fae7fae407
commit
e29c80e6dd
1 changed files with 17 additions and 13 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue