|
Hannes Reinecke |
d25f68 |
From: James Smart <jsmart2021@gmail.com>
|
|
Hannes Reinecke |
d25f68 |
Date: Tue, 31 Mar 2020 09:49:55 -0700
|
|
Hannes Reinecke |
d25f68 |
Subject: [PATCH] nvmet-fc: add LS failure messages
|
|
Hannes Reinecke |
d25f68 |
Git-commit: 1b435f26db2eb9d13ebcf4a53b58039ae99ac093
|
|
Hannes Reinecke |
d25f68 |
Git-repo: git://git.infradead.org/nvme.git
|
|
Hannes Reinecke |
d25f68 |
Patch-mainline: Queued in subsystem maintainer repository
|
|
Hannes Reinecke |
d25f68 |
References: bsc#1169045
|
|
Hannes Reinecke |
d25f68 |
|
|
Hannes Reinecke |
d25f68 |
Add LS reception failure messages
|
|
Hannes Reinecke |
d25f68 |
|
|
Hannes Reinecke |
d25f68 |
Signed-off-by: James Smart <jsmart2021@gmail.com>
|
|
Hannes Reinecke |
d25f68 |
Reviewed-by: Hannes Reinecke <hare@suse.de>
|
|
Hannes Reinecke |
d25f68 |
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
|
Hannes Reinecke |
d25f68 |
Acked-by: Hannes Reinecke <hare@suse.com>
|
|
Hannes Reinecke |
d25f68 |
---
|
|
Hannes Reinecke |
d25f68 |
drivers/nvme/target/fc.c | 22 +++++++++++++++++++---
|
|
Hannes Reinecke |
d25f68 |
1 file changed, 19 insertions(+), 3 deletions(-)
|
|
Hannes Reinecke |
d25f68 |
|
|
Hannes Reinecke |
d25f68 |
diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c
|
|
Hannes Reinecke |
d25f68 |
index 5739df7edc59..a91c443c9098 100644
|
|
Hannes Reinecke |
d25f68 |
--- a/drivers/nvme/target/fc.c
|
|
Hannes Reinecke |
d25f68 |
+++ b/drivers/nvme/target/fc.c
|
|
Hannes Reinecke |
d25f68 |
@@ -1598,15 +1598,31 @@ nvmet_fc_rcv_ls_req(struct nvmet_fc_target_port *target_port,
|
|
Hannes Reinecke |
d25f68 |
{
|
|
Hannes Reinecke |
d25f68 |
struct nvmet_fc_tgtport *tgtport = targetport_to_tgtport(target_port);
|
|
Hannes Reinecke |
d25f68 |
struct nvmet_fc_ls_iod *iod;
|
|
Hannes Reinecke |
d25f68 |
-
|
|
Hannes Reinecke |
d25f68 |
- if (lsreqbuf_len > sizeof(union nvmefc_ls_requests))
|
|
Hannes Reinecke |
d25f68 |
+ struct fcnvme_ls_rqst_w0 *w0 = (struct fcnvme_ls_rqst_w0 *)lsreqbuf;
|
|
Hannes Reinecke |
d25f68 |
+
|
|
Hannes Reinecke |
d25f68 |
+ if (lsreqbuf_len > sizeof(union nvmefc_ls_requests)) {
|
|
Hannes Reinecke |
d25f68 |
+ dev_info(tgtport->dev,
|
|
Hannes Reinecke |
d25f68 |
+ "RCV %s LS failed: payload too large (%d)\n",
|
|
Hannes Reinecke |
d25f68 |
+ (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?
|
|
Hannes Reinecke |
d25f68 |
+ nvmefc_ls_names[w0->ls_cmd] : "",
|
|
Hannes Reinecke |
d25f68 |
+ lsreqbuf_len);
|
|
Hannes Reinecke |
d25f68 |
return -E2BIG;
|
|
Hannes Reinecke |
d25f68 |
+ }
|
|
Hannes Reinecke |
d25f68 |
|
|
Hannes Reinecke |
d25f68 |
- if (!nvmet_fc_tgtport_get(tgtport))
|
|
Hannes Reinecke |
d25f68 |
+ if (!nvmet_fc_tgtport_get(tgtport)) {
|
|
Hannes Reinecke |
d25f68 |
+ dev_info(tgtport->dev,
|
|
Hannes Reinecke |
d25f68 |
+ "RCV %s LS failed: target deleting\n",
|
|
Hannes Reinecke |
d25f68 |
+ (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?
|
|
Hannes Reinecke |
d25f68 |
+ nvmefc_ls_names[w0->ls_cmd] : "");
|
|
Hannes Reinecke |
d25f68 |
return -ESHUTDOWN;
|
|
Hannes Reinecke |
d25f68 |
+ }
|
|
Hannes Reinecke |
d25f68 |
|
|
Hannes Reinecke |
d25f68 |
iod = nvmet_fc_alloc_ls_iod(tgtport);
|
|
Hannes Reinecke |
d25f68 |
if (!iod) {
|
|
Hannes Reinecke |
d25f68 |
+ dev_info(tgtport->dev,
|
|
Hannes Reinecke |
d25f68 |
+ "RCV %s LS failed: context allocation failed\n",
|
|
Hannes Reinecke |
d25f68 |
+ (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?
|
|
Hannes Reinecke |
d25f68 |
+ nvmefc_ls_names[w0->ls_cmd] : "");
|
|
Hannes Reinecke |
d25f68 |
nvmet_fc_tgtport_put(tgtport);
|
|
Hannes Reinecke |
d25f68 |
return -ENOENT;
|
|
Hannes Reinecke |
d25f68 |
}
|
|
Hannes Reinecke |
d25f68 |
--
|
|
Hannes Reinecke |
d25f68 |
2.16.4
|
|
Hannes Reinecke |
d25f68 |
|