diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2009-03-11 18:10:21 (GMT) |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-03-11 18:10:21 (GMT) |
commit | fe315e76fc3a3f9f7e1581dc22fec7e7719f0896 (patch) | |
tree | 15ba17ab92691d55f3e3168df8fef2fb366339c0 /fs | |
parent | 01d37c428ae080563c0a3bb8bdfa88c65a6891d3 (diff) | |
download | linux-fe315e76fc3a3f9f7e1581dc22fec7e7719f0896.tar.xz |
SUNRPC: Avoid spurious wake-up during UDP connect processing
To clear out old state, the UDP connect workers unconditionally invoke
xs_close() before proceeding with a new connect. Nowadays this causes
a spurious wake-up of the task waiting for the connect to complete.
This is a little racey, but usually harmless. The waiting task
immediately retries the connect via a call_bind/call_connect sequence,
which usually finds the transport already in the connected state
because the connect worker has finished in the background.
To avoid a spurious wake-up, factor the xs_close() logic that resets
the underlying socket into a helper, and have the UDP connect workers
call that helper instead of xs_close().
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
0 files changed, 0 insertions, 0 deletions