Commit 3fabaa27 authored by Pavel Shilovsky's avatar Pavel Shilovsky Committed by Steve French
Browse files

CIFS: Indicate reconnect with ECONNABORTED error code



that let us not mix it with EAGAIN.

Signed-off-by: default avatarPavel Shilovsky <pshilovsky@samba.org>
Signed-off-by: default avatarSteve French <smfrench@gmail.com>
parent bed9da02
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -557,7 +557,7 @@ cifs_readv_from_socket(struct TCP_Server_Info *server, struct kvec *iov_orig,
		try_to_freeze();

		if (server_unresponsive(server)) {
			total_read = -EAGAIN;
			total_read = -ECONNABORTED;
			break;
		}

@@ -571,7 +571,7 @@ cifs_readv_from_socket(struct TCP_Server_Info *server, struct kvec *iov_orig,
			break;
		} else if (server->tcpStatus == CifsNeedReconnect) {
			cifs_reconnect(server);
			total_read = -EAGAIN;
			total_read = -ECONNABORTED;
			break;
		} else if (length == -ERESTARTSYS ||
			   length == -EAGAIN ||
@@ -588,7 +588,7 @@ cifs_readv_from_socket(struct TCP_Server_Info *server, struct kvec *iov_orig,
			cifs_dbg(FYI, "Received no data or error: expecting %d\n"
				 "got %d", to_read, length);
			cifs_reconnect(server);
			total_read = -EAGAIN;
			total_read = -ECONNABORTED;
			break;
		}
	}
@@ -786,7 +786,7 @@ standard_receive3(struct TCP_Server_Info *server, struct mid_q_entry *mid)
		cifs_dbg(VFS, "SMB response too long (%u bytes)\n", pdu_length);
		cifs_reconnect(server);
		wake_up(&server->response_q);
		return -EAGAIN;
		return -ECONNABORTED;
	}

	/* switch to large buffer if too big for a small one */
+2 −2
Original line number Diff line number Diff line
@@ -2909,7 +2909,7 @@ cifs_uncached_read_into_pages(struct TCP_Server_Info *server,
		total_read += result;
	}

	return total_read > 0 && result != -EAGAIN ? total_read : result;
	return total_read > 0 && result != -ECONNABORTED ? total_read : result;
}

static int
@@ -3359,7 +3359,7 @@ cifs_readpages_read_into_pages(struct TCP_Server_Info *server,
		total_read += result;
	}

	return total_read > 0 && result != -EAGAIN ? total_read : result;
	return total_read > 0 && result != -ECONNABORTED ? total_read : result;
}

static int