From patchwork Mon Oct 15 20:09:24 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kent Overstreet X-Patchwork-Id: 1595881 Return-Path: X-Original-To: patchwork-dm-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by patchwork1.kernel.org (Postfix) with ESMTP id 7305D3FD86 for ; Mon, 15 Oct 2012 20:14:34 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q9FKBdaB010551; Mon, 15 Oct 2012 16:11:40 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q9FKB2tp027340 for ; Mon, 15 Oct 2012 16:11:02 -0400 Received: from mx1.redhat.com (ext-mx13.extmail.prod.ext.phx2.redhat.com [10.5.110.18]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q9FKAvGV004966 for ; Mon, 15 Oct 2012 16:10:57 -0400 Received: from mail-pa0-f46.google.com (mail-pa0-f46.google.com [209.85.220.46]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q9FK9m88007505 for ; Mon, 15 Oct 2012 16:10:56 -0400 Received: by mail-pa0-f46.google.com with SMTP id hz1so5214201pad.33 for ; Mon, 15 Oct 2012 13:10:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=psSj0bUIwZM7p54XaLt7kC+/H9adWWRUih2mKxDArkc=; b=eUJIjMMq7hycodS2jTa0KTQz0zkDZ6iKBfqy536YlELmDVrRZePuTLI5RYNyBOOPI+ CRAlmf8BzkwQqLgXRn2CLZ4mtnW2fA+HELmBfkpbwFbdTFmH4C6T6lgu2sqo27owQsCp Nsb0hCdjSmCbztGRB26C3+4JsBuQh8sxaHDKbPzwshDL1ILVZVjaEwUfS+53W6HFSTX7 owO7BH8CeopfUAgTV4i1bChS9eLxnHsOMUp6thvCSMr7X+H8UTElIHAIu8BmjX43HqSl aTz8Tq5bRS7mii4xQ/PuuplEgX+JqaHoan4UtwFY34Bp7WzJlJK2jXcKeFD4j0pKgOif Bm/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=psSj0bUIwZM7p54XaLt7kC+/H9adWWRUih2mKxDArkc=; b=eOevB3D9/JYy5hcvkYQeehtifkhJCcgN9Ct6vOFwdWUaLSiTV6jOkXmGW/L+CxDUtt 3ywF6l+qLv3FUk7MabeURWVzHTHaBX6Vtu0rHJvh///E1xUXa8IOwid46Il1yRVHO9QP cfwwiDIxQjjhAsICkgfq0Yw5jwZXj7Fdazbx4oYZ/XuCtTfbQMrfSizZU8hn7efsxBkN pi9deDE7W4EZskg0euNfOL+HfaEWhGv4fpGu1rxoaqUPCRwlMSs65RGufPoyXqNHwCV6 n4Ujrc5PyZGOVkCwfpM2zKvADhhmEg4NBPlCkVmPXke4j+6wFKujvbGLwftZexn590El KZaA== Received: by 10.68.212.74 with SMTP id ni10mr40373979pbc.20.1350331856160; Mon, 15 Oct 2012 13:10:56 -0700 (PDT) Received: from formenos.mtv.corp.google.com (formenos.mtv.corp.google.com [172.18.110.66]) by mx.google.com with ESMTPS id k9sm3021703paz.22.2012.10.15.13.10.54 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 15 Oct 2012 13:10:55 -0700 (PDT) From: Kent Overstreet To: linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org, dm-devel@redhat.com Date: Mon, 15 Oct 2012 13:09:24 -0700 Message-Id: <1350331769-14856-51-git-send-email-koverstreet@google.com> In-Reply-To: <1350331769-14856-1-git-send-email-koverstreet@google.com> References: <1350331769-14856-1-git-send-email-koverstreet@google.com> X-Gm-Message-State: ALoCoQmIM1D8yeClNx8t1cajaY8EwEwunHu7cLG036KF2OGOg4t1Kuhxs0gMABvnhITdjnOxhJHeAMZkoKKLH0dswdF9eAu+gOxN7JJeYXnYcAUHHUAHIJ7QMkx/1auHlPaO70QWOCTEyitQ67CcmIuvobAXkhLDSS/v3FZlOrQJ9aGvJUKWkj3XzY7oRygs2uzCXW0Hhg/N X-RedHat-Spam-Score: -3.072 (BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_LOW, RP_MATCHES_RCVD, SPF_PASS) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Scanned-By: MIMEDefang 2.68 on 10.5.110.18 X-loop: dm-devel@redhat.com Cc: tj@kernel.org, axboe@kernel.dk, Kent Overstreet Subject: [dm-devel] [PATCH v2 21/26] block: Convert some code to bio_for_each_segment_all() X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk Reply-To: device-mapper development List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com A few places in the code were either open coding or using the wrong version - fix. Signed-off-by: Kent Overstreet CC: Jens Axboe CC: NeilBrown --- drivers/md/dm-crypt.c | 3 +-- drivers/md/raid1.c | 10 +++------- fs/bio.c | 20 ++++++++++---------- fs/direct-io.c | 8 ++++---- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index bbf459b..f50798e 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c @@ -858,8 +858,7 @@ static void crypt_free_buffer_pages(struct crypt_config *cc, struct bio *clone) unsigned int i; struct bio_vec *bv; - for (i = 0; i < clone->bi_vcnt; i++) { - bv = bio_iovec_idx(clone, i); + bio_for_each_segment_all(bv, clone, i) { BUG_ON(!bv->bv_page); mempool_free(bv->bv_page, cc->page_pool); bv->bv_page = NULL; diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index ade95ac..d30b4cb 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -921,7 +921,7 @@ static void alloc_behind_pages(struct bio *bio, struct r1bio *r1_bio) if (unlikely(!bvecs)) return; - bio_for_each_segment(bvec, bio, i) { + bio_for_each_segment_all(bvec, bio, i) { bvecs[i] = *bvec; bvecs[i].bv_page = alloc_page(GFP_NOIO); if (unlikely(!bvecs[i].bv_page)) @@ -1276,12 +1276,8 @@ read_again: struct bio_vec *bvec; int j; - /* Yes, I really want the '__' version so that - * we clear any unused pointer in the io_vec, rather - * than leave them unchanged. This is important - * because when we come to free the pages, we won't - * know the original bi_idx, so we just free - * them all + /* + * We trimmed the bio, so _all is legit */ bio_for_each_segment_all(bvec, mbio, j) bvec->bv_page = r1_bio->behind_bvecs[j].bv_page; diff --git a/fs/bio.c b/fs/bio.c index efdc437..d88ad77 100644 --- a/fs/bio.c +++ b/fs/bio.c @@ -1546,11 +1546,11 @@ EXPORT_SYMBOL(bio_copy_kern); */ void bio_set_pages_dirty(struct bio *bio) { - struct bio_vec *bvec = bio->bi_io_vec; + struct bio_vec *bvec; int i; - for (i = 0; i < bio->bi_vcnt; i++) { - struct page *page = bvec[i].bv_page; + bio_for_each_segment_all(bvec, bio, i) { + struct page *page = bvec->bv_page; if (page && !PageCompound(page)) set_page_dirty_lock(page); @@ -1559,11 +1559,11 @@ void bio_set_pages_dirty(struct bio *bio) static void bio_release_pages(struct bio *bio) { - struct bio_vec *bvec = bio->bi_io_vec; + struct bio_vec *bvec; int i; - for (i = 0; i < bio->bi_vcnt; i++) { - struct page *page = bvec[i].bv_page; + bio_for_each_segment_all(bvec, bio, i) { + struct page *page = bvec->bv_page; if (page) put_page(page); @@ -1612,16 +1612,16 @@ static void bio_dirty_fn(struct work_struct *work) void bio_check_pages_dirty(struct bio *bio) { - struct bio_vec *bvec = bio->bi_io_vec; + struct bio_vec *bvec; int nr_clean_pages = 0; int i; - for (i = 0; i < bio->bi_vcnt; i++) { - struct page *page = bvec[i].bv_page; + bio_for_each_segment_all(bvec, bio, i) { + struct page *page = bvec->bv_page; if (PageDirty(page) || PageCompound(page)) { page_cache_release(page); - bvec[i].bv_page = NULL; + bvec->bv_page = NULL; } else { nr_clean_pages++; } diff --git a/fs/direct-io.c b/fs/direct-io.c index f86c720..6089916 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -441,8 +441,8 @@ static struct bio *dio_await_one(struct dio *dio) static int dio_bio_complete(struct dio *dio, struct bio *bio) { const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); - struct bio_vec *bvec = bio->bi_io_vec; - int page_no; + struct bio_vec *bvec; + unsigned i; if (!uptodate) dio->io_error = -EIO; @@ -450,8 +450,8 @@ static int dio_bio_complete(struct dio *dio, struct bio *bio) if (dio->is_async && dio->rw == READ) { bio_check_pages_dirty(bio); /* transfers ownership */ } else { - for (page_no = 0; page_no < bio->bi_vcnt; page_no++) { - struct page *page = bvec[page_no].bv_page; + bio_for_each_segment_all(bvec, bio, i) { + struct page *page = bvec->bv_page; if (dio->rw == READ && !PageCompound(page)) set_page_dirty_lock(page);