diff options
author | Sage Weil <sage@newdream.net> | 2010-05-13 11:19:06 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-05-17 10:25:44 -0700 |
commit | e1518c7c0a67a75727f7285780dbef0ca7121cc9 (patch) | |
tree | 0f0895ab0291f7ddf2ccbcfbd77018eebce171d5 /fs/ceph/mds_client.h | |
parent | e40152ee1e1c7a63f4777791863215e3faa37a86 (diff) | |
download | op-kernel-dev-e1518c7c0a67a75727f7285780dbef0ca7121cc9.zip op-kernel-dev-e1518c7c0a67a75727f7285780dbef0ca7121cc9.tar.gz |
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>
Diffstat (limited to 'fs/ceph/mds_client.h')
-rw-r--r-- | fs/ceph/mds_client.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index 961cc6f..0b1dd10b 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -213,7 +213,7 @@ struct ceph_mds_request { struct completion r_safe_completion; ceph_mds_request_callback_t r_callback; struct list_head r_unsafe_item; /* per-session unsafe list item */ - bool r_got_unsafe, r_got_safe; + bool r_got_unsafe, r_got_safe, r_got_result; bool r_did_prepopulate; u32 r_readdir_offset; |