]>
Commit | Line | Data |
---|---|---|
fb43722c SL |
1 | From 3c525a2cb2cd69dda285dd8a7de0bf7a7d9e5038 Mon Sep 17 00:00:00 2001 |
2 | From: Christoph Hellwig <hch@lst.de> | |
3 | Date: Fri, 17 May 2019 02:47:35 -0700 | |
4 | Subject: nvme: merge nvme_ns_ioctl into nvme_ioctl | |
5 | ||
6 | [ Upstream commit 90ec611adcf20b96d0c2b7166497d53e4301a57f ] | |
7 | ||
8 | Merge the two functions to make future changes a little easier. | |
9 | ||
10 | Signed-off-by: Christoph Hellwig <hch@lst.de> | |
11 | Reviewed-by: Keith Busch <keith.busch@intel.com> | |
12 | Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> | |
13 | Signed-off-by: Sasha Levin <sashal@kernel.org> | |
14 | --- | |
15 | drivers/nvme/host/core.c | 47 ++++++++++++++++++++-------------------- | |
16 | 1 file changed, 24 insertions(+), 23 deletions(-) | |
17 | ||
18 | diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c | |
19 | index decc0b3a3854..8b77e6a05f4b 100644 | |
20 | --- a/drivers/nvme/host/core.c | |
21 | +++ b/drivers/nvme/host/core.c | |
22 | @@ -1383,32 +1383,11 @@ static void nvme_put_ns_from_disk(struct nvme_ns_head *head, int idx) | |
23 | srcu_read_unlock(&head->srcu, idx); | |
24 | } | |
25 | ||
26 | -static int nvme_ns_ioctl(struct nvme_ns *ns, unsigned cmd, unsigned long arg) | |
27 | -{ | |
28 | - switch (cmd) { | |
29 | - case NVME_IOCTL_ID: | |
30 | - force_successful_syscall_return(); | |
31 | - return ns->head->ns_id; | |
32 | - case NVME_IOCTL_ADMIN_CMD: | |
33 | - return nvme_user_cmd(ns->ctrl, NULL, (void __user *)arg); | |
34 | - case NVME_IOCTL_IO_CMD: | |
35 | - return nvme_user_cmd(ns->ctrl, ns, (void __user *)arg); | |
36 | - case NVME_IOCTL_SUBMIT_IO: | |
37 | - return nvme_submit_io(ns, (void __user *)arg); | |
38 | - default: | |
39 | - if (ns->ndev) | |
40 | - return nvme_nvm_ioctl(ns, cmd, arg); | |
41 | - if (is_sed_ioctl(cmd)) | |
42 | - return sed_ioctl(ns->ctrl->opal_dev, cmd, | |
43 | - (void __user *) arg); | |
44 | - return -ENOTTY; | |
45 | - } | |
46 | -} | |
47 | - | |
48 | static int nvme_ioctl(struct block_device *bdev, fmode_t mode, | |
49 | unsigned int cmd, unsigned long arg) | |
50 | { | |
51 | struct nvme_ns_head *head = NULL; | |
52 | + void __user *argp = (void __user *)arg; | |
53 | struct nvme_ns *ns; | |
54 | int srcu_idx, ret; | |
55 | ||
56 | @@ -1416,7 +1395,29 @@ static int nvme_ioctl(struct block_device *bdev, fmode_t mode, | |
57 | if (unlikely(!ns)) | |
58 | return -EWOULDBLOCK; | |
59 | ||
60 | - ret = nvme_ns_ioctl(ns, cmd, arg); | |
61 | + switch (cmd) { | |
62 | + case NVME_IOCTL_ID: | |
63 | + force_successful_syscall_return(); | |
64 | + ret = ns->head->ns_id; | |
65 | + break; | |
66 | + case NVME_IOCTL_ADMIN_CMD: | |
67 | + ret = nvme_user_cmd(ns->ctrl, NULL, argp); | |
68 | + break; | |
69 | + case NVME_IOCTL_IO_CMD: | |
70 | + ret = nvme_user_cmd(ns->ctrl, ns, argp); | |
71 | + break; | |
72 | + case NVME_IOCTL_SUBMIT_IO: | |
73 | + ret = nvme_submit_io(ns, argp); | |
74 | + break; | |
75 | + default: | |
76 | + if (ns->ndev) | |
77 | + ret = nvme_nvm_ioctl(ns, cmd, arg); | |
78 | + else if (is_sed_ioctl(cmd)) | |
79 | + ret = sed_ioctl(ns->ctrl->opal_dev, cmd, argp); | |
80 | + else | |
81 | + ret = -ENOTTY; | |
82 | + } | |
83 | + | |
84 | nvme_put_ns_from_disk(head, srcu_idx); | |
85 | return ret; | |
86 | } | |
87 | -- | |
88 | 2.20.1 | |
89 |