OSDN Git Service

libceph: recheck con state after allocating incoming message
authorSage Weil <sage@inktank.com>
Tue, 31 Jul 2012 01:19:45 +0000 (18:19 -0700)
committerSage Weil <sage@inktank.com>
Tue, 31 Jul 2012 01:19:45 +0000 (18:19 -0700)
commit6139919133377652992a5fe134e22abce3e9c25e
tree57245239564583e968e4e8fb94d493bde69fb18b
parent4740a623d20c51d167da7f752b63e2b8714b2543
libceph: recheck con state after allocating incoming message

We drop the lock when calling the ->alloc_msg() con op, which means
we need to (a) not clobber con->in_msg without the mutex held, and (b)
we need to verify that we are still in the OPEN state when we retake
it to avoid causing any mayhem.  If the state does change, -EAGAIN
will get us back to con_work() and loop.

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