diff options
author | Alex Elder <elder@inktank.com> | 2012-06-01 14:56:43 -0500 |
---|---|---|
committer | Alex Elder <elder@dreamhost.com> | 2012-06-06 09:23:54 -0500 |
commit | 6740a845b2543cc46e1902ba21bac743fbadd0dc (patch) | |
tree | c59f9b2eaf77083a1432ee1c24ffbffc081b9c0d /net/ceph/messenger.c | |
parent | 92ce034b5a740046cc643a21ea21eaad589e0043 (diff) |
libceph: make ceph_con_revoke() a msg operation
ceph_con_revoke() is passed both a message and a ceph connection.
Now that any message associated with a connection holds a pointer
to that connection, there's no need to provide the connection when
revoking a message.
This has the added benefit of precluding the possibility of the
providing the wrong connection pointer. If the message's connection
pointer is null, it is not being tracked by any connection, so
revoking it is a no-op. This is supported as a convenience for
upper layers, so they can revoke a message that is not actually
"in flight."
Rename the function ceph_msg_revoke() to reflect that it is really
an operation on a message, not a connection.
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'net/ceph/messenger.c')
-rw-r--r-- | net/ceph/messenger.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index 88ac083bb99..d636903ad4b 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -2421,8 +2421,13 @@ EXPORT_SYMBOL(ceph_con_send); /* * Revoke a message that was previously queued for send */ -void ceph_con_revoke(struct ceph_connection *con, struct ceph_msg *msg) +void ceph_msg_revoke(struct ceph_msg *msg) { + struct ceph_connection *con = msg->con; + + if (!con) + return; /* Message not in our possession */ + mutex_lock(&con->mutex); if (!list_empty(&msg->list_head)) { dout("%s %p msg %p - was on queue\n", __func__, con, msg); |