RDS: Make sure we do a signaled send for large-send
WR(Work Requests )always generate a WC(Work Completion) with signaled send. Default RDS ib code is setup for un-signaled completion. Since RDS connction is persistent, we can end up sending the data even after large-send when the remote end is not active(for any reason). By doing a signaled send at least once per large-send, we can at least detect the problem in work completion handler there by avoiding sending more data to inactive remote. Reviewed-by: Ajaykumar Hotchandani <ajaykumar.hotchandani@oracle.com> Signed-off-by: Santosh Shilimkar <ssantosh@kernel.org> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
4f73113c63
Коммит
3049147ca7
|
@ -709,6 +709,11 @@ int rds_ib_xmit(struct rds_connection *conn, struct rds_message *rm,
|
|||
if (scat == &rm->data.op_sg[rm->data.op_count]) {
|
||||
prev->s_op = ic->i_data_op;
|
||||
prev->s_wr.send_flags |= IB_SEND_SOLICITED;
|
||||
if (!(prev->s_wr.send_flags & IB_SEND_SIGNALED)) {
|
||||
ic->i_unsignaled_wrs = rds_ib_sysctl_max_unsig_wrs;
|
||||
prev->s_wr.send_flags |= IB_SEND_SIGNALED;
|
||||
nr_sig++;
|
||||
}
|
||||
ic->i_data_op = NULL;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче