summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaulo Alcantara (SUSE) <pc@cjr.nz>2019-10-10 12:31:58 -0300
committerSteve French <stfrench@microsoft.com>2019-10-20 19:19:49 -0500
commitd532cc7efdfd7bf4b9e1c287d823e584843f1de1 (patch)
tree599d16d32e3d5de86353b42ebf18c08c8bf81a3a
parent7d194c2100ad2a6dded545887d02754948ca5241 (diff)
downloadlinux-d532cc7efdfd7bf4b9e1c287d823e584843f1de1.tar.bz2
cifs: Handle -EINPROGRESS only when noblockcnt is set
We only want to avoid blocking in connect when mounting SMB root filesystems, otherwise bail out from generic_ip_connect() so cifs.ko can perform any reconnect failover appropriately. This fixes DFS failover/reconnection tests in upstream buildbot. Fixes: 8eecd1c2e5bc ("cifs: Add support for root file systems") Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz> Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r--fs/cifs/connect.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index a64dfa95a925..bdea4b3e8005 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -3882,8 +3882,12 @@ generic_ip_connect(struct TCP_Server_Info *server)
rc = socket->ops->connect(socket, saddr, slen,
server->noblockcnt ? O_NONBLOCK : 0);
-
- if (rc == -EINPROGRESS)
+ /*
+ * When mounting SMB root file systems, we do not want to block in
+ * connect. Otherwise bail out and then let cifs_reconnect() perform
+ * reconnect failover - if possible.
+ */
+ if (server->noblockcnt && rc == -EINPROGRESS)
rc = 0;
if (rc < 0) {
cifs_dbg(FYI, "Error %d connecting to server\n", rc);