IB/isert: Accept RDMA_WRITE completions
In case of protected transactions, we will need to check the protection status of the transaction before sending SCSI response. So be ready for RDMA_WRITE completions. currently we don't ask for these completions, but for T10-PI we will. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
		
					parent
					
						
							
								d3e125dac1
							
						
					
				
			
			
				commit
				
					
						f93f3a70da
					
				
			
		
					 1 changed files with 17 additions and 2 deletions
				
			
		| 
						 | 
					@ -51,6 +51,8 @@ isert_unreg_rdma(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn);
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
 | 
					isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
 | 
				
			||||||
	       struct isert_rdma_wr *wr);
 | 
						       struct isert_rdma_wr *wr);
 | 
				
			||||||
 | 
					static int
 | 
				
			||||||
 | 
					isert_put_response(struct iscsi_conn *conn, struct iscsi_cmd *cmd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
isert_qp_event_callback(struct ib_event *e, void *context)
 | 
					isert_qp_event_callback(struct ib_event *e, void *context)
 | 
				
			||||||
| 
						 | 
					@ -1651,6 +1653,18 @@ isert_completion_put(struct iser_tx_desc *tx_desc, struct isert_cmd *isert_cmd,
 | 
				
			||||||
	isert_put_cmd(isert_cmd);
 | 
						isert_put_cmd(isert_cmd);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					isert_completion_rdma_write(struct iser_tx_desc *tx_desc,
 | 
				
			||||||
 | 
								    struct isert_cmd *isert_cmd)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
 | 
				
			||||||
 | 
						struct isert_conn *isert_conn = isert_cmd->conn;
 | 
				
			||||||
 | 
						struct isert_device *device = isert_conn->conn_device;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						device->unreg_rdma_mem(isert_cmd, isert_conn);
 | 
				
			||||||
 | 
						isert_put_response(isert_conn->conn, cmd);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
isert_completion_rdma_read(struct iser_tx_desc *tx_desc,
 | 
					isert_completion_rdma_read(struct iser_tx_desc *tx_desc,
 | 
				
			||||||
			   struct isert_cmd *isert_cmd)
 | 
								   struct isert_cmd *isert_cmd)
 | 
				
			||||||
| 
						 | 
					@ -1773,8 +1787,9 @@ __isert_send_completion(struct iser_tx_desc *tx_desc,
 | 
				
			||||||
					  isert_conn, ib_dev);
 | 
										  isert_conn, ib_dev);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case ISER_IB_RDMA_WRITE:
 | 
						case ISER_IB_RDMA_WRITE:
 | 
				
			||||||
		pr_err("isert_send_completion: Got ISER_IB_RDMA_WRITE\n");
 | 
							pr_debug("isert_send_completion: Got ISER_IB_RDMA_WRITE\n");
 | 
				
			||||||
		dump_stack();
 | 
							atomic_dec(&isert_conn->post_send_buf_count);
 | 
				
			||||||
 | 
							isert_completion_rdma_write(tx_desc, isert_cmd);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case ISER_IB_RDMA_READ:
 | 
						case ISER_IB_RDMA_READ:
 | 
				
			||||||
		pr_debug("isert_send_completion: Got ISER_IB_RDMA_READ:\n");
 | 
							pr_debug("isert_send_completion: Got ISER_IB_RDMA_READ:\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue