]> git.baikalelectronics.ru Git - kernel.git/commit
libceph: don't touch con state in con_close_socket()
authorAlex Elder <elder@inktank.com>
Thu, 21 Jun 2012 02:53:53 +0000 (21:53 -0500)
committerSage Weil <sage@inktank.com>
Fri, 6 Jul 2012 04:14:23 +0000 (21:14 -0700)
commitf4ae975e4a3faa5e41f9d630d08f2c7425417a7e
tree39bac208be184e2cc5f2e6921fc8c3d983fd6d05
parent1bcec07d5808b19e58ef90659281d2199018a6a5
libceph: don't touch con state in con_close_socket()

In con_close_socket(), a connection's SOCK_CLOSED flag gets set and
then cleared while its shutdown method is called and its reference
gets dropped.

Previously, that flag got set only if it had not already been set,
so setting it in con_close_socket() might have prevented additional
processing being done on a socket being shut down.  We no longer set
SOCK_CLOSED in the socket event routine conditionally, so setting
that bit here no longer provides whatever benefit it might have
provided before.

A race condition could still leave the SOCK_CLOSED bit set even
after we've issued the call to con_close_socket(), so we still clear
that bit after shutting the socket down.  Add a comment explaining
the reason for this.

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
net/ceph/messenger.c