]> git.michaelhowe.org Git - packages/o/openafs.git/commit
rx: Don't clear the receive queue when out of packets
authorSimon Wilkinson <sxw@your-file-system.com>
Wed, 12 Oct 2011 13:47:14 +0000 (09:47 -0400)
committerDerrick Brashear <shadow@dementix.org>
Wed, 9 Nov 2011 03:40:11 +0000 (19:40 -0800)
commit4ff4ec8ac94a75385d919f9031abaec31aca9b26
tree33402febcfa52d34d243a4c6f315cdb40c207a75
parent7b1f8cf3780b6a90dedd82c41e27be016486ac74
rx: Don't clear the receive queue when out of packets

We can end up discarding a receive queue that's been soft acked,
effectively taking back soft acks we sent. Whilst the RX
documentation says that a client can drop soft acked packets at
will, our RX implementation assumes that if the final packet in
a call has been soft acked, we won't clear the queue. If a client
clears the queue in this situation, the call will hang.

What *should* happen is that we should take necessary locks,
confirm that we have not soft-acked all of the packets in a flow,
and then discard, or, if we're just going to discard, error the
call.

Reviewed-on: http://gerrit.openafs.org/5603
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>
(cherry-picked from f722a75fe21963d64217375f1f7bbb0eb14befb4)

Change-Id: Ie2f14a0ed7b6d258a7f456387df44ac95fd1748c
Reviewed-on: http://gerrit.openafs.org/5820
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/rx/rx.c
src/rx/rx_globals.h