]>
Commit | Line | Data |
---|---|---|
35d01876 GKH |
1 | From 2e7f5d2af2155084c6f7c86328d36e698cd84954 Mon Sep 17 00:00:00 2001 |
2 | From: Johannes Thumshirn <jthumshirn@suse.de> | |
3 | Date: Fri, 14 Jul 2017 15:36:55 +0200 | |
4 | Subject: nvmet: Move serial number from controller to subsystem | |
5 | ||
6 | From: Johannes Thumshirn <jthumshirn@suse.de> | |
7 | ||
8 | commit 2e7f5d2af2155084c6f7c86328d36e698cd84954 upstream. | |
9 | ||
10 | The NVMe specification defines the serial number as: | |
11 | ||
12 | "Serial Number (SN): Contains the serial number for the NVM subsystem | |
13 | that is assigned by the vendor as an ASCII string. Refer to section | |
14 | 7.10 for unique identifier requirements. Refer to section 1.5 for ASCII | |
15 | string requirements" | |
16 | ||
17 | So move it from the controller to the subsystem, where it belongs. | |
18 | ||
19 | Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de> | |
20 | Reviewed-by: Christoph Hellwig <hch@lst.de> | |
21 | Signed-off-by: Christoph Hellwig <hch@lst.de> | |
22 | Signed-off-by: Jens Axboe <axboe@kernel.dk> | |
23 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
24 | ||
25 | --- | |
26 | drivers/nvme/target/admin-cmd.c | 2 +- | |
27 | drivers/nvme/target/core.c | 5 ++--- | |
28 | drivers/nvme/target/nvmet.h | 2 +- | |
29 | 3 files changed, 4 insertions(+), 5 deletions(-) | |
30 | ||
31 | --- a/drivers/nvme/target/admin-cmd.c | |
32 | +++ b/drivers/nvme/target/admin-cmd.c | |
33 | @@ -183,7 +183,7 @@ static void nvmet_execute_identify_ctrl( | |
34 | id->ssvid = 0; | |
35 | ||
36 | memset(id->sn, ' ', sizeof(id->sn)); | |
37 | - snprintf(id->sn, sizeof(id->sn), "%llx", ctrl->serial); | |
38 | + snprintf(id->sn, sizeof(id->sn), "%llx", ctrl->subsys->serial); | |
39 | ||
40 | memset(id->mn, ' ', sizeof(id->mn)); | |
41 | strncpy((char *)id->mn, "Linux", sizeof(id->mn)); | |
42 | --- a/drivers/nvme/target/core.c | |
43 | +++ b/drivers/nvme/target/core.c | |
44 | @@ -743,9 +743,6 @@ u16 nvmet_alloc_ctrl(const char *subsysn | |
45 | memcpy(ctrl->subsysnqn, subsysnqn, NVMF_NQN_SIZE); | |
46 | memcpy(ctrl->hostnqn, hostnqn, NVMF_NQN_SIZE); | |
47 | ||
48 | - /* generate a random serial number as our controllers are ephemeral: */ | |
49 | - get_random_bytes(&ctrl->serial, sizeof(ctrl->serial)); | |
50 | - | |
51 | kref_init(&ctrl->ref); | |
52 | ctrl->subsys = subsys; | |
53 | ||
54 | @@ -904,6 +901,8 @@ struct nvmet_subsys *nvmet_subsys_alloc( | |
55 | return NULL; | |
56 | ||
57 | subsys->ver = NVME_VS(1, 2, 1); /* NVMe 1.2.1 */ | |
58 | + /* generate a random serial number as our controllers are ephemeral: */ | |
59 | + get_random_bytes(&subsys->serial, sizeof(subsys->serial)); | |
60 | ||
61 | switch (type) { | |
62 | case NVME_NQN_NVME: | |
63 | --- a/drivers/nvme/target/nvmet.h | |
64 | +++ b/drivers/nvme/target/nvmet.h | |
65 | @@ -110,7 +110,6 @@ struct nvmet_ctrl { | |
66 | ||
67 | struct mutex lock; | |
68 | u64 cap; | |
69 | - u64 serial; | |
70 | u32 cc; | |
71 | u32 csts; | |
72 | ||
73 | @@ -151,6 +150,7 @@ struct nvmet_subsys { | |
74 | u16 max_qid; | |
75 | ||
76 | u64 ver; | |
77 | + u64 serial; | |
78 | char *subsysnqn; | |
79 | ||
80 | struct config_group group; |