Patchwork [3.5.yuz,extended,stable] Patch "libceph: don't use bio_iter as a flag" has been added to staging queue

mail settings
Submitter Herton Ronaldo Krzesinski
Date Nov. 20, 2012, 5:16 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/200438/
State New
Headers show


Herton Ronaldo Krzesinski - Nov. 20, 2012, 5:16 p.m.
This is a note to let you know that I have just added a patch titled

    libceph: don't use bio_iter as a flag

to the linux-3.5.y-queue branch of the 3.5.yuz extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.yuz tree, see



From 282f152ee1eab0457e4f64f65f106dac7ab9a988 Mon Sep 17 00:00:00 2001
From: Alex Elder <>
Date: Mon, 11 Jun 2012 14:57:13 -0500
Subject: [PATCH 31/78] libceph: don't use bio_iter as a flag

commit abdaa6a849af1d63153682c11f5bbb22dacb1f6b upstream.

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
    commit 43643528cce60ca184fe8197efa8e8da7c89a037
    Author: Yan, Zheng <>
    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 <>
Reviewed-by: Sage Weil <>
Signed-off-by: Herton Ronaldo Krzesinski <>
 net/ceph/messenger.c |    6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)



diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index b83c963..d47305a 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -604,7 +604,7 @@  static void prepare_write_message_data(struct ceph_connection *con)
 		con->out_msg_pos.page_pos = 0;
-	if (msg->bio && !msg->bio_iter)
+	if (msg->bio)
 		init_bio_iter(msg->bio, &msg->bio_iter, &msg->bio_seg);
 	con->out_msg_pos.data_pos = 0;
@@ -672,10 +672,6 @@  static void prepare_write_message(struct ceph_connection *con)
 		m->hdr.seq = cpu_to_le64(++con->out_seq);
 		m->needs_out_seq = false;
-	else
-		m->bio_iter = NULL;

 	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),