diff options
author | Sagi Grimberg | 2016-08-04 10:18:49 +0200 |
---|---|---|
committer | Sagi Grimberg | 2016-08-04 16:45:10 +0200 |
commit | 28b89118539da03f4b188763e1b2fd1aec0f580a (patch) | |
tree | 2c004bc3fe811df5a1abf39771c82c9ef518c18c /drivers/nvme/target/core.c | |
parent | nvmet-rdma: Don't use the inline buffer in order to avoid allocation for smal... (diff) | |
download | kernel-qcow2-linux-28b89118539da03f4b188763e1b2fd1aec0f580a.tar.gz kernel-qcow2-linux-28b89118539da03f4b188763e1b2fd1aec0f580a.tar.xz kernel-qcow2-linux-28b89118539da03f4b188763e1b2fd1aec0f580a.zip |
nvmet: Fix controller serial number inconsistency
The host is allowed to issue identify as many times
as it wants, we need to stay consistent when reporting
the serial number for a given controller.
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/nvme/target/core.c')
-rw-r--r-- | drivers/nvme/target/core.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c index 8a891ca53367..6559d5afa7bf 100644 --- a/drivers/nvme/target/core.c +++ b/drivers/nvme/target/core.c @@ -13,6 +13,7 @@ */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include <linux/module.h> +#include <linux/random.h> #include "nvmet.h" static struct nvmet_fabrics_ops *nvmet_transports[NVMF_TRTYPE_MAX]; @@ -728,6 +729,9 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn, memcpy(ctrl->subsysnqn, subsysnqn, NVMF_NQN_SIZE); memcpy(ctrl->hostnqn, hostnqn, NVMF_NQN_SIZE); + /* generate a random serial number as our controllers are ephemeral: */ + get_random_bytes(&ctrl->serial, sizeof(ctrl->serial)); + kref_init(&ctrl->ref); ctrl->subsys = subsys; |