All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] libceph: more miscellaneous cleanups
@ 2012-02-29  4:52 Alex Elder
  2012-02-29  4:55 ` Alex Elder
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Alex Elder @ 2012-02-29  4:52 UTC (permalink / raw)
  To: ceph-devel

Messaging code again.  The biggest improvement here is encapsulating
the code that puts data into the write vectors.  The second patch just
adds more simple cleanups.

					-Alex

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/2] libceph: more miscellaneous cleanups
  2012-02-29  4:52 [PATCH 0/2] libceph: more miscellaneous cleanups Alex Elder
@ 2012-02-29  4:55 ` Alex Elder
  2012-02-29  4:55 ` [PATCH 1/2] libceph: small refactor in write_partial_kvec() Alex Elder
  2012-02-29  4:55 ` [PATCH 2/2] libceph: some simple changes Alex Elder
  2 siblings, 0 replies; 5+ messages in thread
From: Alex Elder @ 2012-02-29  4:55 UTC (permalink / raw)
  To: ceph-devel

On 02/28/2012 08:52 PM, Alex Elder wrote:
> Messaging code again. The biggest improvement here is encapsulating
> the code that puts data into the write vectors. The second patch just
> adds more simple cleanups.

What I meant to say was...

These are two simple patches, the first is just a simple logic change
whose result I thought was slightly more readable.

					-Alex


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] libceph: small refactor in write_partial_kvec()
  2012-02-29  4:52 [PATCH 0/2] libceph: more miscellaneous cleanups Alex Elder
  2012-02-29  4:55 ` Alex Elder
@ 2012-02-29  4:55 ` Alex Elder
  2012-02-29  4:55 ` [PATCH 2/2] libceph: some simple changes Alex Elder
  2 siblings, 0 replies; 5+ messages in thread
From: Alex Elder @ 2012-02-29  4:55 UTC (permalink / raw)
  To: ceph-devel

Make a small change in the code that counts down kvecs consumed by
a ceph_tcp_sendmsg() call.  Same functionality, just blocked out
a little differently.

Signed-off-by: Alex Elder <elder@dreamhost.com>
---
  net/ceph/messenger.c |   23 ++++++++++++-----------
  1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index 693be64..63f281f 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -744,17 +744,18 @@ static int write_partial_kvec(struct 
ceph_connection *con)
  		con->out_kvec_bytes -= ret;
  		if (con->out_kvec_bytes == 0)
  			break;            /* done */
-		while (ret > 0) {
-			if (ret >= con->out_kvec_cur->iov_len) {
-				ret -= con->out_kvec_cur->iov_len;
-				con->out_kvec_cur++;
-				con->out_kvec_left--;
-			} else {
-				con->out_kvec_cur->iov_len -= ret;
-				con->out_kvec_cur->iov_base += ret;
-				ret = 0;
-				break;
-			}
+
+		/* account for full iov entries consumed */
+		while (ret >= con->out_kvec_cur->iov_len) {
+			BUG_ON(!con->out_kvec_left);
+			ret -= con->out_kvec_cur->iov_len;
+			con->out_kvec_cur++;
+			con->out_kvec_left--;
+		}
+		/* and for a partially-consumed entry */
+		if (ret) {
+			con->out_kvec_cur->iov_len -= ret;
+			con->out_kvec_cur->iov_base += ret;
  		}
  	}
  	con->out_kvec_left = 0;
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] libceph: some simple changes
  2012-02-29  4:52 [PATCH 0/2] libceph: more miscellaneous cleanups Alex Elder
  2012-02-29  4:55 ` Alex Elder
  2012-02-29  4:55 ` [PATCH 1/2] libceph: small refactor in write_partial_kvec() Alex Elder
@ 2012-02-29  4:55 ` Alex Elder
  2012-03-02 21:49   ` Sage Weil
  2 siblings, 1 reply; 5+ messages in thread
From: Alex Elder @ 2012-02-29  4:55 UTC (permalink / raw)
  To: ceph-devel

Nothing too big here.
     - define the size of the buffer used for consuming ignored
       incoming data using a symbolic constant
     - simplify the condition determining whether to unmap the page
       in write_partial_msg_pages(): do it for crc but not if the
       page is the zero page

Signed-off-by: Alex Elder <elder@dreamhost.com>
---
  net/ceph/messenger.c |   13 +++++++++----
  1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index 63f281f..27a1364 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -38,6 +38,11 @@ static char tag_keepalive = CEPH_MSGR_TAG_KEEPALIVE;
  static struct lock_class_key socket_class;
  #endif

+/*
+ * When skipping (ignoring) a block of input we read it into a "skip
+ * buffer," which is this many bytes in size.
+ */
+#define SKIP_BUF_SIZE	1024

  static void queue_con(struct ceph_connection *con);
  static void con_work(struct work_struct *);
@@ -889,8 +894,7 @@ static int write_partial_msg_pages(struct 
ceph_connection *con)
  				      MSG_DONTWAIT | MSG_NOSIGNAL |
  				      MSG_MORE);

-		if (do_crc &&
-		    (msg->pages || msg->pagelist || msg->bio || in_trail))
+		if (do_crc && kaddr != zero_page_address)
  			kunmap(page);

  		if (ret == -EAGAIN)
@@ -1979,8 +1983,9 @@ more:
  		 *
  		 * FIXME: there must be a better way to do this!
  		 */
-		static char buf[1024];
-		int skip = min(1024, -con->in_base_pos);
+		static char buf[SKIP_BUF_SIZE];
+		int skip = min((int) sizeof buf, -con->in_base_pos);
+
  		dout("skipping %d / %d bytes\n", skip, -con->in_base_pos);
  		ret = ceph_tcp_recvmsg(con->sock, buf, skip);
  		if (ret <= 0)
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] libceph: some simple changes
  2012-02-29  4:55 ` [PATCH 2/2] libceph: some simple changes Alex Elder
@ 2012-03-02 21:49   ` Sage Weil
  0 siblings, 0 replies; 5+ messages in thread
From: Sage Weil @ 2012-03-02 21:49 UTC (permalink / raw)
  To: Alex Elder; +Cc: ceph-devel

Looks ok, as long as this isn't broken if the moving zero_page_address 
inside write_partial_msg_pages().

Reviewed-by: Sage Weil <sage@newdream.net>

On Tue, 28 Feb 2012, Alex Elder wrote:

> Nothing too big here.
>     - define the size of the buffer used for consuming ignored
>       incoming data using a symbolic constant
>     - simplify the condition determining whether to unmap the page
>       in write_partial_msg_pages(): do it for crc but not if the
>       page is the zero page
> 
> Signed-off-by: Alex Elder <elder@dreamhost.com>
> ---
>  net/ceph/messenger.c |   13 +++++++++----
>  1 files changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
> index 63f281f..27a1364 100644
> --- a/net/ceph/messenger.c
> +++ b/net/ceph/messenger.c
> @@ -38,6 +38,11 @@ static char tag_keepalive = CEPH_MSGR_TAG_KEEPALIVE;
>  static struct lock_class_key socket_class;
>  #endif
> 
> +/*
> + * When skipping (ignoring) a block of input we read it into a "skip
> + * buffer," which is this many bytes in size.
> + */
> +#define SKIP_BUF_SIZE	1024
> 
>  static void queue_con(struct ceph_connection *con);
>  static void con_work(struct work_struct *);
> @@ -889,8 +894,7 @@ static int write_partial_msg_pages(struct ceph_connection
> *con)
>  				      MSG_DONTWAIT | MSG_NOSIGNAL |
>  				      MSG_MORE);
> 
> -		if (do_crc &&
> -		    (msg->pages || msg->pagelist || msg->bio || in_trail))
> +		if (do_crc && kaddr != zero_page_address)
>  			kunmap(page);
> 
>  		if (ret == -EAGAIN)
> @@ -1979,8 +1983,9 @@ more:
>  		 *
>  		 * FIXME: there must be a better way to do this!
>  		 */
> -		static char buf[1024];
> -		int skip = min(1024, -con->in_base_pos);
> +		static char buf[SKIP_BUF_SIZE];
> +		int skip = min((int) sizeof buf, -con->in_base_pos);
> +
>  		dout("skipping %d / %d bytes\n", skip, -con->in_base_pos);
>  		ret = ceph_tcp_recvmsg(con->sock, buf, skip);
>  		if (ret <= 0)
> -- 
> 1.7.5.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-03-02 21:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-29  4:52 [PATCH 0/2] libceph: more miscellaneous cleanups Alex Elder
2012-02-29  4:55 ` Alex Elder
2012-02-29  4:55 ` [PATCH 1/2] libceph: small refactor in write_partial_kvec() Alex Elder
2012-02-29  4:55 ` [PATCH 2/2] libceph: some simple changes Alex Elder
2012-03-02 21:49   ` Sage Weil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.