aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Dorfman <dorfman.eli@gmail.com>2008-04-29 16:46:52 -0400
committerRoland Dreier <rolandd@cisco.com>2008-04-29 16:46:52 -0400
commit87528227dfa8776d12779d073c217f0835fd6d20 (patch)
treeb81e95f35826bc266fef2f425bee225f4b347a02
parent6f735e36bad6fa4949271b3c3d0f331aad812313 (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.c4
-rw-r--r--drivers/infiniband/ulp/iser/iser_memory.c2
-rw-r--r--include/scsi/libiscsi.h1
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
485static int 487static 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)
423int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask, 423int 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
230struct iscsi_pool { 231struct iscsi_pool {