|
|
3604df |
From e823c2f8f4b53aedc2bd69408966ca2df5869bfa Mon Sep 17 00:00:00 2001
|
|
|
3604df |
From: moagrawa <moagrawa@redhat.com>
|
|
|
3604df |
Date: Thu, 2 Feb 2017 09:26:25 +0530
|
|
|
3604df |
Subject: [PATCH 281/285] rpc/socket.c : Bonnie++ hangs during rewrites in
|
|
|
3604df |
ganesha + SSL
|
|
|
3604df |
|
|
|
3604df |
Problem: Bonnie++ rewrite operation hangs in ganesha + SSL environment
|
|
|
3604df |
|
|
|
3604df |
Solution: Bonnie++ hangs during execution of rewrite operation in
|
|
|
3604df |
ganesha + SSL environment.It was hanged due to blocking on poll
|
|
|
3604df |
call in ssl_do because no POLLOUT event was getting on socket.
|
|
|
3604df |
Socket is not getting POLLOUT event because all other threads
|
|
|
3604df |
are waiting to get lock and lock is not released ssl_do
|
|
|
3604df |
because it is not getting any event on poll.To correct it
|
|
|
3604df |
update the condition in ssl_do as same in getting error
|
|
|
3604df |
SSL_ERROR_WANT_READ.
|
|
|
3604df |
|
|
|
3604df |
Test: To test the patch followed below procedure
|
|
|
3604df |
1) Setup 2X2 Ganesha + SSL environment.
|
|
|
3604df |
2) Run bonnie from 3 nfs client parallely
|
|
|
3604df |
3) After run "Rewwrite operation" by bonnie it is hanged.
|
|
|
3604df |
4) After apply the patch it is not hanged.
|
|
|
3604df |
|
|
|
3604df |
> BUG: 1418213
|
|
|
3604df |
> Change-Id: I5985cbbc4cfdac5d287268d791e31c274abc3c8d
|
|
|
3604df |
> Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
|
|
|
3604df |
> Reviewed-on: https://review.gluster.org/16501
|
|
|
3604df |
> Smoke: Gluster Build System <jenkins@build.gluster.org>
|
|
|
3604df |
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
|
|
|
3604df |
> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
|
|
|
3604df |
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
|
|
|
3604df |
> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
|
|
|
3604df |
> cherry picked from commit d7077bca4b372a056d23416294e729637e9af94e
|
|
|
3604df |
|
|
|
3604df |
BUG: 1408576
|
|
|
3604df |
Change-Id: Ida63faaf07f090f2e433fc19630bbb18f6b4619b
|
|
|
3604df |
Signed-off-by: moagrawa <moagrawa@redhat.com>
|
|
|
3604df |
Reviewed-on: https://code.engineering.redhat.com/gerrit/96684
|
|
|
3604df |
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
3604df |
---
|
|
|
3604df |
rpc/rpc-transport/socket/src/socket.c | 5 +++++
|
|
|
3604df |
1 file changed, 5 insertions(+)
|
|
|
3604df |
|
|
|
3604df |
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
|
|
|
3604df |
index da2f97f..7314047 100644
|
|
|
3604df |
--- a/rpc/rpc-transport/socket/src/socket.c
|
|
|
3604df |
+++ b/rpc/rpc-transport/socket/src/socket.c
|
|
|
3604df |
@@ -263,6 +263,11 @@ ssl_do (rpc_transport_t *this, void *buf, size_t len, SSL_trinary_func *func)
|
|
|
3604df |
}
|
|
|
3604df |
break;
|
|
|
3604df |
case SSL_ERROR_WANT_WRITE:
|
|
|
3604df |
+ if ((func == (SSL_trinary_func *)SSL_read)
|
|
|
3604df |
+ || (func == (SSL_trinary_func *) SSL_write)) {
|
|
|
3604df |
+ errno = EAGAIN;
|
|
|
3604df |
+ return r;
|
|
|
3604df |
+ }
|
|
|
3604df |
pfd.fd = priv->sock;
|
|
|
3604df |
pfd.events = POLLOUT;
|
|
|
3604df |
if (poll(&pfd,1,-1) < 0) {
|
|
|
3604df |
--
|
|
|
3604df |
2.9.3
|
|
|
3604df |
|