mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
lightnvm: remove sysfs configuration interface
LightNVM used to be managed and configured through sysfs. Since the introduction of management ioctls this interface is redundant and outdated. Get rid of it. Signed-off-by: Javier González <javier@cnexlabs.com> Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
f0b01b6a61
commit
17b25cfc87
@ -780,140 +780,6 @@ static int __nvm_configure_create(struct nvm_ioctl_create *create)
|
||||
return dev->mt->create_tgt(dev, create);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NVM_DEBUG
|
||||
static int nvm_configure_show(const char *val)
|
||||
{
|
||||
struct nvm_dev *dev;
|
||||
char opcode, devname[DISK_NAME_LEN];
|
||||
int ret;
|
||||
|
||||
ret = sscanf(val, "%c %32s", &opcode, devname);
|
||||
if (ret != 2) {
|
||||
pr_err("nvm: invalid command. Use \"opcode devicename\".\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
down_write(&nvm_lock);
|
||||
dev = nvm_find_nvm_dev(devname);
|
||||
up_write(&nvm_lock);
|
||||
if (!dev) {
|
||||
pr_err("nvm: device not found\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!dev->mt)
|
||||
return 0;
|
||||
|
||||
dev->mt->lun_info_print(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nvm_configure_remove(const char *val)
|
||||
{
|
||||
struct nvm_ioctl_remove remove;
|
||||
struct nvm_dev *dev;
|
||||
char opcode;
|
||||
int ret = 0;
|
||||
|
||||
ret = sscanf(val, "%c %256s", &opcode, remove.tgtname);
|
||||
if (ret != 2) {
|
||||
pr_err("nvm: invalid command. Use \"d targetname\".\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
remove.flags = 0;
|
||||
|
||||
list_for_each_entry(dev, &nvm_devices, devices) {
|
||||
ret = dev->mt->remove_tgt(dev, &remove);
|
||||
if (!ret)
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int nvm_configure_create(const char *val)
|
||||
{
|
||||
struct nvm_ioctl_create create;
|
||||
char opcode;
|
||||
int lun_begin, lun_end, ret;
|
||||
|
||||
ret = sscanf(val, "%c %256s %256s %48s %u:%u", &opcode, create.dev,
|
||||
create.tgtname, create.tgttype,
|
||||
&lun_begin, &lun_end);
|
||||
if (ret != 6) {
|
||||
pr_err("nvm: invalid command. Use \"opcode device name tgttype lun_begin:lun_end\".\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
create.flags = 0;
|
||||
create.conf.type = NVM_CONFIG_TYPE_SIMPLE;
|
||||
create.conf.s.lun_begin = lun_begin;
|
||||
create.conf.s.lun_end = lun_end;
|
||||
|
||||
return __nvm_configure_create(&create);
|
||||
}
|
||||
|
||||
|
||||
/* Exposes administrative interface through /sys/module/lnvm/configure_by_str */
|
||||
static int nvm_configure_by_str_event(const char *val,
|
||||
const struct kernel_param *kp)
|
||||
{
|
||||
char opcode;
|
||||
int ret;
|
||||
|
||||
ret = sscanf(val, "%c", &opcode);
|
||||
if (ret != 1) {
|
||||
pr_err("nvm: string must have the format of \"cmd ...\"\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (opcode) {
|
||||
case 'a':
|
||||
return nvm_configure_create(val);
|
||||
case 'd':
|
||||
return nvm_configure_remove(val);
|
||||
case 's':
|
||||
return nvm_configure_show(val);
|
||||
default:
|
||||
pr_err("nvm: invalid command\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nvm_configure_get(char *buf, const struct kernel_param *kp)
|
||||
{
|
||||
int sz;
|
||||
struct nvm_dev *dev;
|
||||
|
||||
sz = sprintf(buf, "available devices:\n");
|
||||
down_write(&nvm_lock);
|
||||
list_for_each_entry(dev, &nvm_devices, devices) {
|
||||
if (sz > 4095 - DISK_NAME_LEN - 2)
|
||||
break;
|
||||
sz += sprintf(buf + sz, " %32s\n", dev->name);
|
||||
}
|
||||
up_write(&nvm_lock);
|
||||
|
||||
return sz;
|
||||
}
|
||||
|
||||
static const struct kernel_param_ops nvm_configure_by_str_event_param_ops = {
|
||||
.set = nvm_configure_by_str_event,
|
||||
.get = nvm_configure_get,
|
||||
};
|
||||
|
||||
#undef MODULE_PARAM_PREFIX
|
||||
#define MODULE_PARAM_PREFIX "lnvm."
|
||||
|
||||
module_param_cb(configure_debug, &nvm_configure_by_str_event_param_ops, NULL,
|
||||
0644);
|
||||
|
||||
#endif /* CONFIG_NVM_DEBUG */
|
||||
|
||||
static long nvm_ioctl_info(struct file *file, void __user *arg)
|
||||
{
|
||||
struct nvm_ioctl_info *info;
|
||||
|
Loading…
Reference in New Issue
Block a user