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>
This commit is contained in:
parent
6f735e36ba
commit
87528227df
3 changed files with 6 additions and 1 deletions
|
@ -473,13 +473,15 @@ iscsi_iser_conn_get_stats(struct iscsi_cls_conn *cls_conn, struct iscsi_stats *s
|
||||||
stats->r2t_pdus = conn->r2t_pdus_cnt; /* always 0 */
|
stats->r2t_pdus = conn->r2t_pdus_cnt; /* always 0 */
|
||||||
stats->tmfcmd_pdus = conn->tmfcmd_pdus_cnt;
|
stats->tmfcmd_pdus = conn->tmfcmd_pdus_cnt;
|
||||||
stats->tmfrsp_pdus = conn->tmfrsp_pdus_cnt;
|
stats->tmfrsp_pdus = conn->tmfrsp_pdus_cnt;
|
||||||
stats->custom_length = 3;
|
stats->custom_length = 4;
|
||||||
strcpy(stats->custom[0].desc, "qp_tx_queue_full");
|
strcpy(stats->custom[0].desc, "qp_tx_queue_full");
|
||||||
stats->custom[0].value = 0; /* TB iser_conn->qp_tx_queue_full; */
|
stats->custom[0].value = 0; /* TB iser_conn->qp_tx_queue_full; */
|
||||||
strcpy(stats->custom[1].desc, "fmr_map_not_avail");
|
strcpy(stats->custom[1].desc, "fmr_map_not_avail");
|
||||||
stats->custom[1].value = 0; /* TB iser_conn->fmr_map_not_avail */;
|
stats->custom[1].value = 0; /* TB iser_conn->fmr_map_not_avail */;
|
||||||
strcpy(stats->custom[2].desc, "eh_abort_cnt");
|
strcpy(stats->custom[2].desc, "eh_abort_cnt");
|
||||||
stats->custom[2].value = conn->eh_abort_cnt;
|
stats->custom[2].value = conn->eh_abort_cnt;
|
||||||
|
strcpy(stats->custom[3].desc, "fmr_unalign_cnt");
|
||||||
|
stats->custom[3].value = conn->fmr_unalign_cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -423,6 +423,7 @@ void iser_dma_unmap_task_data(struct iscsi_iser_cmd_task *iser_ctask)
|
||||||
int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask,
|
int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask,
|
||||||
enum iser_data_dir cmd_dir)
|
enum iser_data_dir cmd_dir)
|
||||||
{
|
{
|
||||||
|
struct iscsi_conn *iscsi_conn = iser_ctask->iser_conn->iscsi_conn;
|
||||||
struct iser_conn *ib_conn = iser_ctask->iser_conn->ib_conn;
|
struct iser_conn *ib_conn = iser_ctask->iser_conn->ib_conn;
|
||||||
struct iser_device *device = ib_conn->device;
|
struct iser_device *device = ib_conn->device;
|
||||||
struct ib_device *ibdev = device->ib_device;
|
struct ib_device *ibdev = device->ib_device;
|
||||||
|
@ -437,6 +438,7 @@ int iser_reg_rdma_mem(struct iscsi_iser_cmd_task *iser_ctask,
|
||||||
|
|
||||||
aligned_len = iser_data_buf_aligned_len(mem, ibdev);
|
aligned_len = iser_data_buf_aligned_len(mem, ibdev);
|
||||||
if (aligned_len != mem->dma_nents) {
|
if (aligned_len != mem->dma_nents) {
|
||||||
|
iscsi_conn->fmr_unalign_cnt++;
|
||||||
iser_warn("rdma alignment violation %d/%d aligned\n",
|
iser_warn("rdma alignment violation %d/%d aligned\n",
|
||||||
aligned_len, mem->size);
|
aligned_len, mem->size);
|
||||||
iser_data_buf_dump(mem, ibdev);
|
iser_data_buf_dump(mem, ibdev);
|
||||||
|
|
|
@ -225,6 +225,7 @@ struct iscsi_conn {
|
||||||
|
|
||||||
/* custom statistics */
|
/* custom statistics */
|
||||||
uint32_t eh_abort_cnt;
|
uint32_t eh_abort_cnt;
|
||||||
|
uint32_t fmr_unalign_cnt;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct iscsi_pool {
|
struct iscsi_pool {
|
||||||
|
|
Loading…
Reference in a new issue