diff options
author | Sagi Grimberg <sagi@grimberg.me> | 2016-08-04 11:18:49 +0300 |
---|---|---|
committer | Sagi Grimberg <sagi@grimberg.me> | 2016-08-04 17:45:10 +0300 |
commit | 28b89118539da03f4b188763e1b2fd1aec0f580a (patch) | |
tree | 2c004bc3fe811df5a1abf39771c82c9ef518c18c /drivers/nvme/target/core.c | |
parent | 40e64e07213201710a51e270595d6e6c028f9502 (diff) | |
download | linux-28b89118539da03f4b188763e1b2fd1aec0f580a.tar.gz linux-28b89118539da03f4b188763e1b2fd1aec0f580a.tar.xz |
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; |