cifs: handle cancelled requests better
authorJeff Layton <jlayton@redhat.com>
Fri, 28 Jan 2011 12:08:28 +0000 (07:08 -0500)
committerSteve French <sfrench@us.ibm.com>
Mon, 31 Jan 2011 04:23:31 +0000 (04:23 +0000)
commit1be912dde772b77aaaa21770eeabb0a7a5e297a6
tree2f3a01093c80ea90675b2d8102ecc7f5dcf9ccae
parent58b8a5b45a097b477c037bc376e65dc5f214bf3d
cifs: handle cancelled requests better

Currently, when a request is cancelled via signal, we delete the mid
immediately. If the request was already transmitted however, the client
is still likely to receive a response. When it does, it won't recognize
it however and will pop a printk.

It's also a little dangerous to just delete the mid entry like this. We
may end up reusing that mid. If we do then we could potentially get the
response from the first request confused with the later one.

Prevent the reuse of mids by marking them as cancelled and keeping them
on the pending_mid_q list. If the reply comes in, we'll delete it from
the list then. If it never comes, then we'll delete it at reconnect
or when cifsd comes down.

Reviewed-by: Pavel Shilovsky <piastryyy@gmail.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/transport.c