Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Eli Dorfman and committed by
Roland Dreier
87528227 6f735e36

+6 -1
+3 -1
drivers/infiniband/ulp/iser/iscsi_iser.c
··· 473 473 stats->r2t_pdus = conn->r2t_pdus_cnt; /* always 0 */ 474 474 stats->tmfcmd_pdus = conn->tmfcmd_pdus_cnt; 475 475 stats->tmfrsp_pdus = conn->tmfrsp_pdus_cnt; 476 - stats->custom_length = 3; 476 + stats->custom_length = 4; 477 477 strcpy(stats->custom[0].desc, "qp_tx_queue_full"); 478 478 stats->custom[0].value = 0; /* TB iser_conn->qp_tx_queue_full; */ 479 479 strcpy(stats->custom[1].desc, "fmr_map_not_avail"); 480 480 stats->custom[1].value = 0; /* TB iser_conn->fmr_map_not_avail */; 481 481 strcpy(stats->custom[2].desc, "eh_abort_cnt"); 482 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 487 static int
+2
drivers/infiniband/ulp/iser/iser_memory.c
··· 423 423 int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask, 424 424 enum iser_data_dir cmd_dir) 425 425 { 426 + struct iscsi_conn *iscsi_conn = iser_ctask->iser_conn->iscsi_conn; 426 427 struct iser_conn *ib_conn = iser_ctask->iser_conn->ib_conn; 427 428 struct iser_device *device = ib_conn->device; 428 429 struct ib_device *ibdev = device->ib_device; ··· 438 437 439 438 aligned_len = iser_data_buf_aligned_len(mem, ibdev); 440 439 if (aligned_len != mem->dma_nents) { 440 + iscsi_conn->fmr_unalign_cnt++; 441 441 iser_warn("rdma alignment violation %d/%d aligned\n", 442 442 aligned_len, mem->size); 443 443 iser_data_buf_dump(mem, ibdev);
+1
include/scsi/libiscsi.h
··· 225 225 226 226 /* custom statistics */ 227 227 uint32_t eh_abort_cnt; 228 + uint32_t fmr_unalign_cnt; 228 229 }; 229 230 230 231 struct iscsi_pool {