From b3d1dbbdd5670d8a9fb01f7dfb1cac522ff6795a Mon Sep 17 00:00:00 2001
From: Sage Weil <sage@newdream.net>
Date: Mon, 14 Dec 2009 14:58:11 -0800
Subject: [PATCH] ceph: don't save sent messages on lossy connections

For lossy connections we drop all state on socket errors, so there is no
reason to keep sent ceph_msg's around.

Signed-off-by: Sage Weil <sage@newdream.net>
---
 fs/ceph/messenger.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/fs/ceph/messenger.c b/fs/ceph/messenger.c
index 986d8fb9c574..d5eef76a253c 100644
--- a/fs/ceph/messenger.c
+++ b/fs/ceph/messenger.c
@@ -453,12 +453,16 @@ static void prepare_write_message(struct ceph_connection *con)
 		con->out_kvec_bytes = 1 + sizeof(con->out_temp_ack);
 	}
 
-	/* move message to sending/sent list */
 	m = list_first_entry(&con->out_queue,
 		       struct ceph_msg, list_head);
 	con->out_msg = m;
-	ceph_msg_get(m);
-	list_move_tail(&m->list_head, &con->out_sent);
+	if (test_bit(LOSSYTX, &con->state)) {
+		/* put message on sent list */
+		ceph_msg_get(m);
+		list_move_tail(&m->list_head, &con->out_sent);
+	} else {
+		list_del_init(&m->list_head);
+	}
 
 	m->hdr.seq = cpu_to_le64(++con->out_seq);
 
-- 
2.34.1