summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2011-01-11 07:24:02 -0500
committerSteve French <sfrench@us.ibm.com>2011-01-20 17:41:02 +0000
commit74dd92a881b62014ca3c754db6868e1f142f2fb9 (patch)
treec6e8c0ad9a722602d55511d11e8353f67bfb80f6
parentdad255b182363db1d1124458cd3fb0a4deac0d0f (diff)
cifs: clean up sync_mid_result
Make it use a switch statement based on the value of the midStatus. If the resp_buf is set, then MID_RESPONSE_RECEIVED is too. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r--fs/cifs/transport.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index f65cdec042e..6abd1445c98 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -363,28 +363,29 @@ sync_mid_result(struct mid_q_entry *mid, struct TCP_Server_Info *server)
{
int rc = 0;
- spin_lock(&GlobalMid_Lock);
+ cFYI(1, "%s: cmd=%d mid=%d state=%d", __func__, mid->command,
+ mid->mid, mid->midState);
- if (mid->resp_buf) {
+ spin_lock(&GlobalMid_Lock);
+ switch (mid->midState) {
+ case MID_RESPONSE_RECEIVED:
spin_unlock(&GlobalMid_Lock);
return rc;
- }
-
- cERROR(1, "No response to cmd %d mid %d", mid->command, mid->mid);
- if (mid->midState == MID_REQUEST_SUBMITTED) {
- if (server->tcpStatus == CifsExiting)
+ case MID_REQUEST_SUBMITTED:
+ /* socket is going down, reject all calls */
+ if (server->tcpStatus == CifsExiting) {
+ cERROR(1, "%s: canceling mid=%d cmd=0x%x state=%d",
+ __func__, mid->mid, mid->command, mid->midState);
rc = -EHOSTDOWN;
- else
- mid->midState = MID_RETRY_NEEDED;
- }
-
- if (rc != -EHOSTDOWN) {
- if (mid->midState == MID_RETRY_NEEDED) {
- rc = -EAGAIN;
- cFYI(1, "marking request for retry");
- } else {
- rc = -EIO;
+ break;
}
+ case MID_RETRY_NEEDED:
+ rc = -EAGAIN;
+ break;
+ default:
+ cERROR(1, "%s: invalid mid state mid=%d state=%d", __func__,
+ mid->mid, mid->midState);
+ rc = -EIO;
}
spin_unlock(&GlobalMid_Lock);