|
@@ -369,10 +369,11 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *iser_task,
|
|
|
regd_buf = &iser_task->rdma_regd[cmd_dir];
|
|
|
|
|
|
aligned_len = iser_data_buf_aligned_len(mem, ibdev);
|
|
|
- if (aligned_len != mem->dma_nents) {
|
|
|
+ if (aligned_len != mem->dma_nents ||
|
|
|
+ (!ib_conn->fmr_pool && mem->dma_nents > 1)) {
|
|
|
iscsi_conn->fmr_unalign_cnt++;
|
|
|
- iser_warn("rdma alignment violation %d/%d aligned\n",
|
|
|
- aligned_len, mem->size);
|
|
|
+ iser_warn("rdma alignment violation (%d/%d aligned) or FMR not supported\n",
|
|
|
+ aligned_len, mem->size);
|
|
|
iser_data_buf_dump(mem, ibdev);
|
|
|
|
|
|
/* unmap the command data before accessing it */
|