OSDN Git Service

nvmet-fc: add LS failure messages
authorJames Smart <jsmart2021@gmail.com>
Tue, 31 Mar 2020 16:49:55 +0000 (09:49 -0700)
committerJens Axboe <axboe@kernel.dk>
Sat, 9 May 2020 22:18:34 +0000 (16:18 -0600)
Add LS reception failure messages

Signed-off-by: James Smart <jsmart2021@gmail.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/target/fc.c

index 5739df7..a91c443 100644 (file)
@@ -1598,15 +1598,31 @@ nvmet_fc_rcv_ls_req(struct nvmet_fc_target_port *target_port,
 {
        struct nvmet_fc_tgtport *tgtport = targetport_to_tgtport(target_port);
        struct nvmet_fc_ls_iod *iod;
-
-       if (lsreqbuf_len > sizeof(union nvmefc_ls_requests))
+       struct fcnvme_ls_rqst_w0 *w0 = (struct fcnvme_ls_rqst_w0 *)lsreqbuf;
+
+       if (lsreqbuf_len > sizeof(union nvmefc_ls_requests)) {
+               dev_info(tgtport->dev,
+                       "RCV %s LS failed: payload too large (%d)\n",
+                       (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?
+                               nvmefc_ls_names[w0->ls_cmd] : "",
+                       lsreqbuf_len);
                return -E2BIG;
+       }
 
-       if (!nvmet_fc_tgtport_get(tgtport))
+       if (!nvmet_fc_tgtport_get(tgtport)) {
+               dev_info(tgtport->dev,
+                       "RCV %s LS failed: target deleting\n",
+                       (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?
+                               nvmefc_ls_names[w0->ls_cmd] : "");
                return -ESHUTDOWN;
+       }
 
        iod = nvmet_fc_alloc_ls_iod(tgtport);
        if (!iod) {
+               dev_info(tgtport->dev,
+                       "RCV %s LS failed: context allocation failed\n",
+                       (w0->ls_cmd <= NVME_FC_LAST_LS_CMD_VALUE) ?
+                               nvmefc_ls_names[w0->ls_cmd] : "");
                nvmet_fc_tgtport_put(tgtport);
                return -ENOENT;
        }