From 10096bc54522248f4c382e03fee060b666aa76f8 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 10 Sep 2009 14:57:13 -0700 Subject: [PATCH] msgr: be slightly smarter about corking on partial msgs, acks Actually, if MSG_MORE will cork indefinitely, that may not be what we want for write_ack()... :/ --- src/msg/SimpleMessenger.cc | 8 ++++---- src/msg/SimpleMessenger.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index c4158c33d9fb3..2c1955c3b0b7e 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -1666,7 +1666,7 @@ Message *SimpleMessenger::Pipe::read_message() } -int SimpleMessenger::Pipe::do_sendmsg(int sd, struct msghdr *msg, int len) +int SimpleMessenger::Pipe::do_sendmsg(int sd, struct msghdr *msg, int len, bool more) { while (len > 0) { if (0) { // sanity @@ -1676,7 +1676,7 @@ int SimpleMessenger::Pipe::do_sendmsg(int sd, struct msghdr *msg, int len) assert(l == len); } - int r = ::sendmsg(sd, msg, 0); + int r = ::sendmsg(sd, msg, more ? MSG_MORE : 0); if (r == 0) dout(10) << "do_sendmsg hmm do_sendmsg got r==0!" << dendl; if (r < 0) { @@ -1766,7 +1766,7 @@ int SimpleMessenger::Pipe::write_ack(__u64 seq) msg.msg_iov = msgvec; msg.msg_iovlen = 2; - if (do_sendmsg(sd, &msg, 1 + sizeof(s)) < 0) + if (do_sendmsg(sd, &msg, 1 + sizeof(s), true) < 0) return -1; return 0; } @@ -1848,7 +1848,7 @@ int SimpleMessenger::Pipe::write_message(Message *m) << dendl; if (msg.msg_iovlen >= IOV_MAX-2) { - if (do_sendmsg(sd, &msg, msglen)) + if (do_sendmsg(sd, &msg, msglen, true)) return -1; // and restart the iov diff --git a/src/msg/SimpleMessenger.h b/src/msg/SimpleMessenger.h index 6f8242ba1fd3a..531708ed9ee5e 100644 --- a/src/msg/SimpleMessenger.h +++ b/src/msg/SimpleMessenger.h @@ -160,7 +160,7 @@ private: Message *read_message(); int write_message(Message *m); - int do_sendmsg(int sd, struct msghdr *msg, int len); + int do_sendmsg(int sd, struct msghdr *msg, int len, bool more=false); int write_ack(__u64 s); int write_keepalive(); -- 2.39.5