Skip to content

Commit 0f90607

Browse files
SantoshShilimkarjfvogel
authored andcommitted
Revert "RDS: don't commit to queue till transport connection is up"
This reverts commit 238a807. This change was introduced to address the RDS internal sendQ occupancy for the messages targeted to dead/non-existing nodes. It was discovered as part of a customer issue where remote node was shut down and RDS attempted to repeatedly establish a connection without success. Same issue can be exploited by sending messages to non-existing node too since RDS forms connection as part of sendmsg if it doesn't exist already. While at that time sending EAGAIN instead of adding messages to sendQ when remote connection not up, looked straightforward, it has undesired effect on application to keep spinning even though there is space to write on socket buffer. And application has no notion of underneath connections, so RDS needs to handle this problem internally and transparently. Application will automatically move to POLL OUT once its own socket buffer is full and will avoid the CPU tight spinning. To address draining the internal sendQ messages targeted to dead nodes or non-existing nodes, one possible way is to retire/destroy those connections, after some large timeout. That will also drop those messages from sendQ. This change will be addressed separately. orabug: 27585810 Signed-off-by: Santosh Shilimkar <[email protected]> Reviewed-by: Wei Lin Guay <[email protected]> Signed-off-by: Somasundaram Krishnasamy <[email protected]> Orabug: 33590097 UEK6 => UEK7 (cherry picked from commit be1250c) cherry-pick-repo=UEK/production/linux-uek.git Signed-off-by: Gerd Rausch <[email protected]> Reviewed-by: William Kucharski <[email protected]>
1 parent ad33470 commit 0f90607

File tree

1 file changed

+0
-5
lines changed

1 file changed

+0
-5
lines changed

net/rds/send.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,11 +1424,6 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len)
14241424
goto out;
14251425
}
14261426

1427-
if (!rds_conn_path_up(cpath)) {
1428-
ret = -EAGAIN;
1429-
goto out;
1430-
}
1431-
14321427
while (!rds_send_queue_rm(rs, conn, cpath, rm, rs->rs_bound_port,
14331428
dport, &queued)) {
14341429
rds_stats_inc(s_send_queue_full);

0 commit comments

Comments
 (0)