From patchwork Sat Mar 9 16:43:09 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 2241921 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id A75A53FCF6 for ; Sat, 9 Mar 2013 16:43:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932773Ab3CIQnM (ORCPT ); Sat, 9 Mar 2013 11:43:12 -0500 Received: from mail-ie0-f180.google.com ([209.85.223.180]:59212 "EHLO mail-ie0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932441Ab3CIQnL (ORCPT ); Sat, 9 Mar 2013 11:43:11 -0500 Received: by mail-ie0-f180.google.com with SMTP id bn7so3297537ieb.11 for ; Sat, 09 Mar 2013 08:43:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding :x-gm-message-state; bh=/1MZIwSrHT6QWgsb7x9P5Et9Absva9Ra2h/TOIZ3TI0=; b=T5nxJcFAzR0Z4/910wO78PFtW/a1U/fEGMnq2MVxfbKe6TOwR4AuASwAAUIds/Qisx tXLpacGqjtx0NF6OnzD8vcBIxQAQoPVWLrl6vIQOfYOHP3g4r8aMpdwr26xYbUwL06aM NRZvalGhmsKcS0uMJA33UFtQ5wQJDPHv3dPZ2FW3PW9gNnrj6ogys8qCVOJvPVpLD1IG YJiVPqy2yhaQ4Z8HzpDkuHvKl/uWoF1W0RFbl29kxiEioAC7HCJg4W5syxQNbYCVSI8n 9UlXb88dEuUk2w14Dxcr2aEF8ijyS+Lfe6orLvYS9QlK0sao1NeX6UsL9VK5dW/RjB1H +qRw== X-Received: by 10.50.45.40 with SMTP id j8mr2721055igm.109.1362847390996; Sat, 09 Mar 2013 08:43:10 -0800 (PST) Received: from [172.22.22.4] (c-71-195-31-37.hsd1.mn.comcast.net. [71.195.31.37]) by mx.google.com with ESMTPS id ur12sm4835837igb.8.2013.03.09.08.43.09 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 09 Mar 2013 08:43:10 -0800 (PST) Message-ID: <513B669D.8020806@inktank.com> Date: Sat, 09 Mar 2013 10:43:09 -0600 From: Alex Elder User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130221 Thunderbird/17.0.3 MIME-Version: 1.0 To: ceph-devel@vger.kernel.org Subject: [PATCH 3/6] libceph: small write_partial_msg_pages() refactor References: <513B661F.4050203@inktank.com> In-Reply-To: <513B661F.4050203@inktank.com> X-Gm-Message-State: ALoCoQkokXyEXm7C8pg8AvIL5T4IYaQH2+N4hC7GzALQPtenEyTRLrk/J2l0OEyodWQdhITDt2NN Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org Define local variables page_offset and length to represent the range of bytes within a page that will be sent by ceph_tcp_sendpage() in write_partial_msg_pages(). Signed-off-by: Alex Elder --- net/ceph/messenger.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) int total_max_write; @@ -1102,6 +1101,8 @@ static int write_partial_msg_pages(struct ceph_connection *con) */ while (data_len > msg_pos->data_pos) { struct page *page = NULL; + size_t page_offset; + size_t length; int max_write = PAGE_SIZE; int bio_offset = 0; @@ -1131,9 +1132,10 @@ static int write_partial_msg_pages(struct ceph_connection *con) } else { page = zero_page; } - len = min_t(int, max_write - msg_pos->page_pos, + length = min_t(int, max_write - msg_pos->page_pos, total_max_write); + page_offset = msg_pos->page_pos + bio_offset; if (do_datacrc && !msg_pos->did_page_crc) { void *base; u32 crc = le32_to_cpu(msg->footer.data_crc); @@ -1141,19 +1143,18 @@ static int write_partial_msg_pages(struct ceph_connection *con) kaddr = kmap(page); BUG_ON(kaddr == NULL); - base = kaddr + msg_pos->page_pos + bio_offset; - crc = crc32c(crc, base, len); + base = kaddr + page_offset; + crc = crc32c(crc, base, length); kunmap(page); msg->footer.data_crc = cpu_to_le32(crc); msg_pos->did_page_crc = true; } - ret = ceph_tcp_sendpage(con->sock, page, - msg_pos->page_pos + bio_offset, - len, true); + ret = ceph_tcp_sendpage(con->sock, page, page_offset, + length, true); if (ret <= 0) goto out; - out_msg_pos_next(con, page, len, (size_t) ret, in_trail); + out_msg_pos_next(con, page, length, (size_t) ret, in_trail); } dout("write_partial_msg_pages %p msg %p done\n", con, msg); diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index e8fa449..813c299 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -1081,7 +1081,6 @@ static int write_partial_msg_pages(struct ceph_connection *con) struct ceph_msg *msg = con->out_msg; struct ceph_msg_pos *msg_pos = &con->out_msg_pos; unsigned int data_len = le32_to_cpu(msg->hdr.data_len); - size_t len; bool do_datacrc = !con->msgr->nocrc; int ret;