summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-23 14:56:12 -0700
committerSage Weil <sage@inktank.com>2013-08-23 14:56:23 -0700
commite48ef9ea59aaf310c235d6a3f0b0bc785bb487a3 (patch)
tree298c4768f852042d03dd76963b770cc15f9c80fd
parent476e4902907dfadb3709ba820453299ececf990b (diff)
downloadceph-e48ef9ea59aaf310c235d6a3f0b0bc785bb487a3.tar.gz
librados: make safe and complete callback arguments separate
Fixes: #2914 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/librados/AioCompletionImpl.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/librados/AioCompletionImpl.h b/src/librados/AioCompletionImpl.h
index cf049e0a9a2..a40282a7c25 100644
--- a/src/librados/AioCompletionImpl.h
+++ b/src/librados/AioCompletionImpl.h
@@ -35,7 +35,7 @@ struct librados::AioCompletionImpl {
eversion_t objver;
rados_callback_t callback_complete, callback_safe;
- void *callback_arg;
+ void *callback_complete_arg, *callback_safe_arg;
// for read
bool is_read;
@@ -49,21 +49,24 @@ struct librados::AioCompletionImpl {
AioCompletionImpl() : lock("AioCompletionImpl lock", false, false),
ref(1), rval(0), released(false), ack(false), safe(false),
- callback_complete(0), callback_safe(0), callback_arg(0),
+ callback_complete(0),
+ callback_safe(0),
+ callback_complete_arg(0),
+ callback_safe_arg(0),
is_read(false), pbl(0), buf(0), maxlen(0),
io(NULL), aio_write_seq(0), aio_write_list_item(this) { }
int set_complete_callback(void *cb_arg, rados_callback_t cb) {
lock.Lock();
callback_complete = cb;
- callback_arg = cb_arg;
+ callback_complete_arg = cb_arg;
lock.Unlock();
return 0;
}
int set_safe_callback(void *cb_arg, rados_callback_t cb) {
lock.Lock();
callback_safe = cb;
- callback_arg = cb_arg;
+ callback_safe_arg = cb_arg;
lock.Unlock();
return 0;
}
@@ -171,7 +174,7 @@ struct C_AioComplete : public Context {
void finish(int r) {
rados_callback_t cb = c->callback_complete;
- void *cb_arg = c->callback_arg;
+ void *cb_arg = c->callback_complete_arg;
cb(c, cb_arg);
c->lock.Lock();
@@ -190,7 +193,7 @@ struct C_AioSafe : public Context {
void finish(int r) {
rados_callback_t cb = c->callback_safe;
- void *cb_arg = c->callback_arg;
+ void *cb_arg = c->callback_safe_arg;
cb(c, cb_arg);
c->lock.Lock();
@@ -222,13 +225,14 @@ struct C_AioCompleteAndSafe : public Context {
c->safe = true;
c->lock.Unlock();
rados_callback_t cb_complete = c->callback_complete;
- void *cb_arg = c->callback_arg;
+ void *cb_complete_arg = c->callback_complete_arg;
if (cb_complete)
- cb_complete(c, cb_arg);
+ cb_complete(c, cb_complete_arg);
rados_callback_t cb_safe = c->callback_safe;
+ void *cb_safe_arg = c->callback_safe_arg;
if (cb_safe)
- cb_safe(c, cb_arg);
+ cb_safe(c, cb_safe_arg);
c->lock.Lock();
c->callback_complete = NULL;