ceph: clean up mds reply, error handling
authorSage Weil <sage@newdream.net>
Thu, 13 May 2010 18:19:06 +0000 (11:19 -0700)
committerSage Weil <sage@newdream.net>
Mon, 17 May 2010 17:25:44 +0000 (10:25 -0700)
commite1518c7c0a67a75727f7285780dbef0ca7121cc9
tree0f0895ab0291f7ddf2ccbcfbd77018eebce171d5
parente40152ee1e1c7a63f4777791863215e3faa37a86
ceph: clean up mds reply, error handling

We would occasionally BUG out in the reply handler because r_reply was
nonzero, due to a race with ceph_mdsc_do_request temporarily setting
r_reply to an ERR_PTR value.  This is unnecessary, messy, and also wrong
in the EIO case.

Clean up by consistently using r_err for errors and r_reply for messages.
Also fix the abort logic to trigger consistently for all errors that return
to the caller early (e.g., EIO from timeout case).  If an abort races with
a reply, use the result from the reply.

Also fix locking for r_err, r_reply update in the reply handler.

Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/mds_client.c
fs/ceph/mds_client.h