Rx: Do not hold call lock across memcpy in rx_ReadProc/rx_WriteProc
authorJeffrey Altman <jaltman@your-file-system.com>
Mon, 20 Sep 2010 12:11:20 +0000 (05:11 -0700)
committerDerrick Brashear <shadow@dementia.org>
Tue, 21 Sep 2010 05:07:04 +0000 (22:07 -0700)
commite197c19cedaafa0d2bb59212fb171083f2140041
tree5c676c204ba0a2a513edf88ae4fee216de5d630c
parent7b9607639816b19fdf1b70b4c04ba984f9bf3613
Rx: Do not hold call lock across memcpy in rx_ReadProc/rx_WriteProc

1.4.x does not hold the call lock across memcpy operations in
rx_ReadProc, rx_ReadProc32, rx_WriteProc, rx_WriteProc32.  The
claim is that the call curpos, curlen, and nLeft fields which
refer to the current packet being processed will not be touched
by any other thread.  Therefore it is safe to drop the call lock
to permit another thread to add packets to the call while the memcpy
is performed in parallel.

This patchset continues to hold the call lock longer than the
original implementation but does drop it for the length of time
it takes to copy data from the packet buffer to the application
buffer.

Change-Id: I87dacdf541ba50db80ab55e500b38edab5126dc2
Reviewed-on: http://gerrit.openafs.org/2817
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/rx/rx_rdwr.c