libceph: separate non-locked fault handling
authorAlex Elder <elder@inktank.com>
Tue, 19 Feb 2013 18:25:57 +0000 (12:25 -0600)
committerAlex Elder <elder@inktank.com>
Mon, 25 Feb 2013 21:37:28 +0000 (15:37 -0600)
commit93209264203987cdd2c69d34df6eaa2cd184e283
tree88dd732371a1e3d5be90ca0fa15472bef59a1e42
parentf20a39fd6e6356b4cf3c1650c4dc6c66c99d8bae
libceph: separate non-locked fault handling

An error occurring on a ceph connection is treated as a fault,
causing the connection to be reset.  The initial part of this fault
handling has to be done while holding the connection mutex, but
it must then be dropped for the last part.

Separate the part of this fault handling that executes without the
lock into its own function, con_fault_finish().  Move the call to
this new function, as well as call that drops the connection mutex,
into ceph_fault().  Rename that function con_fault() to reflect that
it's only handling the connection part of the fault handling.

The motivation for this was a warning from sparse about the locking
being done here.  Rearranging things this way keeps all the mutex
manipulation within ceph_fault(), and this stops sparse from
complaining.

This partially resolves:
    http://tracker.ceph.com/issues/4184

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
net/ceph/messenger.c