| From 3366182e1290e0a4ad8d4ee5ac06388994b6f05a Mon Sep 17 00:00:00 2001 |
| From: Alex Elder <elder@inktank.com> |
| Date: Mon, 11 Jun 2012 14:57:13 -0500 |
| Subject: libceph: don't use bio_iter as a flag |
| |
| From: Alex Elder <elder@inktank.com> |
| |
| (cherry picked from commit abdaa6a849af1d63153682c11f5bbb22dacb1f6b) |
| |
| Recently a bug was fixed in which the bio_iter field in a ceph |
| message was not being properly re-initialized when a message got |
| re-transmitted: |
| commit 43643528cce60ca184fe8197efa8e8da7c89a037 |
| Author: Yan, Zheng <zheng.z.yan@intel.com> |
| rbd: Clear ceph_msg->bio_iter for retransmitted message |
| |
| We are now only initializing the bio_iter field when we are about to |
| start to write message data (in prepare_write_message_data()), |
| rather than every time we are attempting to write any portion of the |
| message data (in write_partial_msg_pages()). This means we no |
| longer need to use the msg->bio_iter field as a flag. |
| |
| So just don't do that any more. Trust prepare_write_message_data() |
| to ensure msg->bio_iter is properly initialized, every time we are |
| about to begin writing (or re-writing) a message's bio data. |
| |
| Signed-off-by: Alex Elder <elder@inktank.com> |
| Reviewed-by: Sage Weil <sage@inktank.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ceph/messenger.c | 6 +----- |
| 1 file changed, 1 insertion(+), 5 deletions(-) |
| |
| --- a/net/ceph/messenger.c |
| +++ b/net/ceph/messenger.c |
| @@ -604,7 +604,7 @@ static void prepare_write_message_data(s |
| else |
| con->out_msg_pos.page_pos = 0; |
| #ifdef CONFIG_BLOCK |
| - if (msg->bio && !msg->bio_iter) |
| + if (msg->bio) |
| init_bio_iter(msg->bio, &msg->bio_iter, &msg->bio_seg); |
| #endif |
| con->out_msg_pos.data_pos = 0; |
| @@ -672,10 +672,6 @@ static void prepare_write_message(struct |
| m->hdr.seq = cpu_to_le64(++con->out_seq); |
| m->needs_out_seq = false; |
| } |
| -#ifdef CONFIG_BLOCK |
| - else |
| - m->bio_iter = NULL; |
| -#endif |
| |
| dout("prepare_write_message %p seq %lld type %d len %d+%d+%d %d pgs\n", |
| m, con->out_seq, le16_to_cpu(m->hdr.type), |