diff options
author | Eli Dorfman <dorfman.eli@gmail.com> | 2008-04-29 16:46:52 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2008-04-29 16:46:52 -0400 |
commit | 87528227dfa8776d12779d073c217f0835fd6d20 (patch) | |
tree | b81e95f35826bc266fef2f425bee225f4b347a02 | |
parent | 6f735e36bad6fa4949271b3c3d0f331aad812313 (diff) |
IB/iser: Count FMR alignment violations per session
Count FMR alignment violations per session as part of the iscsi
statistics.
Signed-off-by: Eli Dorfman <elid@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/ulp/iser/iser_memory.c | 2 | ||||
-rw-r--r-- | include/scsi/libiscsi.h | 1 |
3 files changed, 6 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c index be1b9fbd416..aeb58cae9a3 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.c +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c | |||
@@ -473,13 +473,15 @@ iscsi_iser_conn_get_stats(struct iscsi_cls_conn *cls_conn, struct iscsi_stats *s | |||
473 | stats->r2t_pdus = conn->r2t_pdus_cnt; /* always 0 */ | 473 | stats->r2t_pdus = conn->r2t_pdus_cnt; /* always 0 */ |
474 | stats->tmfcmd_pdus = conn->tmfcmd_pdus_cnt; | 474 | stats->tmfcmd_pdus = conn->tmfcmd_pdus_cnt; |
475 | stats->tmfrsp_pdus = conn->tmfrsp_pdus_cnt; | 475 | stats->tmfrsp_pdus = conn->tmfrsp_pdus_cnt; |
476 | stats->custom_length = 3; | 476 | stats->custom_length = 4; |
477 | strcpy(stats->custom[0].desc, "qp_tx_queue_full"); | 477 | strcpy(stats->custom[0].desc, "qp_tx_queue_full"); |
478 | stats->custom[0].value = 0; /* TB iser_conn->qp_tx_queue_full; */ | 478 | stats->custom[0].value = 0; /* TB iser_conn->qp_tx_queue_full; */ |
479 | strcpy(stats->custom[1].desc, "fmr_map_not_avail"); | 479 | strcpy(stats->custom[1].desc, "fmr_map_not_avail"); |
480 | stats->custom[1].value = 0; /* TB iser_conn->fmr_map_not_avail */; | 480 | stats->custom[1].value = 0; /* TB iser_conn->fmr_map_not_avail */; |
481 | strcpy(stats->custom[2].desc, "eh_abort_cnt"); | 481 | strcpy(stats->custom[2].desc, "eh_abort_cnt"); |
482 | stats->custom[2].value = conn->eh_abort_cnt; | 482 | stats->custom[2].value = conn->eh_abort_cnt; |
483 | strcpy(stats->custom[3].desc, "fmr_unalign_cnt"); | ||
484 | stats->custom[3].value = conn->fmr_unalign_cnt; | ||
483 | } | 485 | } |
484 | 486 | ||
485 | static int | 487 | static int |
diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c index ee58199136a..cac50c4dc15 100644 --- a/drivers/infiniband/ulp/iser/iser_memory.c +++ b/drivers/infiniband/ulp/iser/iser_memory.c | |||
@@ -423,6 +423,7 @@ void iser_dma_unmap_task_data(struct iscsi_iser_cmd_task *iser_ctask) | |||
423 | int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask, | 423 | int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask, |
424 | enum iser_data_dir cmd_dir) | 424 | enum iser_data_dir cmd_dir) |
425 | { | 425 | { |
426 | struct iscsi_conn *iscsi_conn = iser_ctask->iser_conn->iscsi_conn; | ||
426 | struct iser_conn *ib_conn = iser_ctask->iser_conn->ib_conn; | 427 | struct iser_conn *ib_conn = iser_ctask->iser_conn->ib_conn; |
427 | struct iser_device *device = ib_conn->device; | 428 | struct iser_device *device = ib_conn->device; |
428 | struct ib_device *ibdev = device->ib_device; | 429 | struct ib_device *ibdev = device->ib_device; |
@@ -437,6 +438,7 @@ int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask, | |||
437 | 438 | ||
438 | aligned_len = iser_data_buf_aligned_len(mem, ibdev); | 439 | aligned_len = iser_data_buf_aligned_len(mem, ibdev); |
439 | if (aligned_len != mem->dma_nents) { | 440 | if (aligned_len != mem->dma_nents) { |
441 | iscsi_conn->fmr_unalign_cnt++; | ||
440 | iser_warn("rdma alignment violation %d/%d aligned\n", | 442 | iser_warn("rdma alignment violation %d/%d aligned\n", |
441 | aligned_len, mem->size); | 443 | aligned_len, mem->size); |
442 | iser_data_buf_dump(mem, ibdev); | 444 | iser_data_buf_dump(mem, ibdev); |
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index 7b90b63fb5c..cd3ca63d4fb 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h | |||
@@ -225,6 +225,7 @@ struct iscsi_conn { | |||
225 | 225 | ||
226 | /* custom statistics */ | 226 | /* custom statistics */ |
227 | uint32_t eh_abort_cnt; | 227 | uint32_t eh_abort_cnt; |
228 | uint32_t fmr_unalign_cnt; | ||
228 | }; | 229 | }; |
229 | 230 | ||
230 | struct iscsi_pool { | 231 | struct iscsi_pool { |