From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boaz Harrosh Subject: Re: [PATCH v4 10/12] block: Add bio_clone_kmalloc() Date: Wed, 25 Jul 2012 15:05:40 +0300 Message-ID: <500FE114.1000707@panasas.com> References: <1343160689-12378-1-git-send-email-koverstreet@google.com> <1343160689-12378-11-git-send-email-koverstreet@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1343160689-12378-11-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> Sender: linux-bcache-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Kent Overstreet Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org, agk-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, neilb-l3A5Bk7waGM@public.gmane.org, drbd-dev-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org, vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, mpatocka-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, sage-BnTBU8nroG7k1uMJSBkQmQ@public.gmane.org, yehuda-L5o5AL9CYN0tUFlbccrkMA@public.gmane.org List-Id: dm-devel.ids On 07/24/2012 11:11 PM, Kent Overstreet wrote: ACK-by: Boaz Harrosh > Signed-off-by: Kent Overstreet Thanks looks nice > --- > drivers/block/osdblk.c | 3 +-- > fs/bio.c | 13 +++++++++++++ > fs/exofs/ore.c | 5 ++--- > include/linux/bio.h | 1 + > 4 files changed, 17 insertions(+), 5 deletions(-) > > diff --git a/drivers/block/osdblk.c b/drivers/block/osdblk.c > index 87311eb..1bbc681 100644 > --- a/drivers/block/osdblk.c > +++ b/drivers/block/osdblk.c > @@ -266,11 +266,10 @@ static struct bio *bio_chain_clone(struct bio *old_chain, gfp_t gfpmask) > struct bio *tmp, *new_chain = NULL, *tail = NULL; > > while (old_chain) { > - tmp = bio_kmalloc(gfpmask, old_chain->bi_max_vecs); > + tmp = bio_clone_kmalloc(old_chain, gfpmask); > if (!tmp) > goto err_out; > > - __bio_clone(tmp, old_chain); > tmp->bi_bdev = NULL; > gfpmask &= ~__GFP_WAIT; > tmp->bi_next = NULL; > diff --git a/fs/bio.c b/fs/bio.c > index fa6dee4..9d0ceb2 100644 > --- a/fs/bio.c > +++ b/fs/bio.c > @@ -499,6 +499,19 @@ struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask) > } > EXPORT_SYMBOL(bio_clone); > > +struct bio *bio_clone_kmalloc(struct bio *bio, gfp_t gfp_mask) > +{ > + struct bio *b = bio_kmalloc(gfp_mask, bio->bi_max_vecs); > + > + if (!b) > + return NULL; > + > + __bio_clone(b, bio); > + > + return b; > +} > +EXPORT_SYMBOL(bio_clone_kmalloc); > + > /** > * bio_get_nr_vecs - return approx number of vecs > * @bdev: I/O target > diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c > index 24a49d4..a8d92fc 100644 > --- a/fs/exofs/ore.c > +++ b/fs/exofs/ore.c > @@ -814,8 +814,8 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp) > struct bio *bio; > > if (per_dev != master_dev) { > - bio = bio_kmalloc(GFP_KERNEL, > - master_dev->bio->bi_max_vecs); > + bio = bio_clone_kmalloc(master_dev->bio, > + GFP_KERNEL); > if (unlikely(!bio)) { > ORE_DBGMSG( > "Failed to allocate BIO size=%u\n", > @@ -824,7 +824,6 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp) > goto out; > } > > - __bio_clone(bio, master_dev->bio); > bio->bi_bdev = NULL; > bio->bi_next = NULL; > per_dev->offset = master_dev->offset; > diff --git a/include/linux/bio.h b/include/linux/bio.h > index 9720544..e180f1d 100644 > --- a/include/linux/bio.h > +++ b/include/linux/bio.h > @@ -221,6 +221,7 @@ extern int bio_phys_segments(struct request_queue *, struct bio *); > > extern void __bio_clone(struct bio *, struct bio *); > extern struct bio *bio_clone(struct bio *, gfp_t); > +struct bio *bio_clone_kmalloc(struct bio *, gfp_t); > > extern void bio_init(struct bio *); > extern void bio_reset(struct bio *); From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zimbra.linbit.com (zimbra.linbit.com [212.69.161.123]) by mail09.linbit.com (LINBIT Mail Daemon) with ESMTP id B6C761055F6A for ; Thu, 26 Jul 2012 11:35:49 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by zimbra.linbit.com (Postfix) with ESMTP id AD64B1B4368 for ; Thu, 26 Jul 2012 11:35:49 +0200 (CEST) Received: from zimbra.linbit.com ([127.0.0.1]) by localhost (zimbra.linbit.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bYtCYqFB2rq0 for ; Thu, 26 Jul 2012 11:35:49 +0200 (CEST) Received: from soda.linbit (tuerlsteher.linbit.com [86.59.100.100]) by zimbra.linbit.com (Postfix) with ESMTP id 8E51E1B4369 for ; Thu, 26 Jul 2012 11:35:49 +0200 (CEST) Resent-Message-ID: <20120726093549.GD29767@soda.linbit> Received: from natasha.panasas.com (natasha.panasas.com [67.152.220.90]) by mail09.linbit.com (LINBIT Mail Daemon) with ESMTP id E7633100542F for ; Wed, 25 Jul 2012 14:06:10 +0200 (CEST) Message-ID: <500FE114.1000707@panasas.com> Date: Wed, 25 Jul 2012 15:05:40 +0300 From: Boaz Harrosh MIME-Version: 1.0 To: Kent Overstreet References: <1343160689-12378-1-git-send-email-koverstreet@google.com> <1343160689-12378-11-git-send-email-koverstreet@google.com> In-Reply-To: <1343160689-12378-11-git-send-email-koverstreet@google.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: axboe@kernel.dk, dm-devel@redhat.com, neilb@suse.de, linux-kernel@vger.kernel.org, linux-bcache@vger.kernel.org, mpatocka@redhat.com, vgoyal@redhat.com, yehuda@hq.newdream.net, tj@kernel.org, sage@newdream.net, agk@redhat.com, drbd-dev@lists.linbit.com Subject: Re: [Drbd-dev] [PATCH v4 10/12] block: Add bio_clone_kmalloc() List-Id: Coordination of development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On 07/24/2012 11:11 PM, Kent Overstreet wrote: ACK-by: Boaz Harrosh > Signed-off-by: Kent Overstreet Thanks looks nice > --- > drivers/block/osdblk.c | 3 +-- > fs/bio.c | 13 +++++++++++++ > fs/exofs/ore.c | 5 ++--- > include/linux/bio.h | 1 + > 4 files changed, 17 insertions(+), 5 deletions(-) > > diff --git a/drivers/block/osdblk.c b/drivers/block/osdblk.c > index 87311eb..1bbc681 100644 > --- a/drivers/block/osdblk.c > +++ b/drivers/block/osdblk.c > @@ -266,11 +266,10 @@ static struct bio *bio_chain_clone(struct bio *old_chain, gfp_t gfpmask) > struct bio *tmp, *new_chain = NULL, *tail = NULL; > > while (old_chain) { > - tmp = bio_kmalloc(gfpmask, old_chain->bi_max_vecs); > + tmp = bio_clone_kmalloc(old_chain, gfpmask); > if (!tmp) > goto err_out; > > - __bio_clone(tmp, old_chain); > tmp->bi_bdev = NULL; > gfpmask &= ~__GFP_WAIT; > tmp->bi_next = NULL; > diff --git a/fs/bio.c b/fs/bio.c > index fa6dee4..9d0ceb2 100644 > --- a/fs/bio.c > +++ b/fs/bio.c > @@ -499,6 +499,19 @@ struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask) > } > EXPORT_SYMBOL(bio_clone); > > +struct bio *bio_clone_kmalloc(struct bio *bio, gfp_t gfp_mask) > +{ > + struct bio *b = bio_kmalloc(gfp_mask, bio->bi_max_vecs); > + > + if (!b) > + return NULL; > + > + __bio_clone(b, bio); > + > + return b; > +} > +EXPORT_SYMBOL(bio_clone_kmalloc); > + > /** > * bio_get_nr_vecs - return approx number of vecs > * @bdev: I/O target > diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c > index 24a49d4..a8d92fc 100644 > --- a/fs/exofs/ore.c > +++ b/fs/exofs/ore.c > @@ -814,8 +814,8 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp) > struct bio *bio; > > if (per_dev != master_dev) { > - bio = bio_kmalloc(GFP_KERNEL, > - master_dev->bio->bi_max_vecs); > + bio = bio_clone_kmalloc(master_dev->bio, > + GFP_KERNEL); > if (unlikely(!bio)) { > ORE_DBGMSG( > "Failed to allocate BIO size=%u\n", > @@ -824,7 +824,6 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp) > goto out; > } > > - __bio_clone(bio, master_dev->bio); > bio->bi_bdev = NULL; > bio->bi_next = NULL; > per_dev->offset = master_dev->offset; > diff --git a/include/linux/bio.h b/include/linux/bio.h > index 9720544..e180f1d 100644 > --- a/include/linux/bio.h > +++ b/include/linux/bio.h > @@ -221,6 +221,7 @@ extern int bio_phys_segments(struct request_queue *, struct bio *); > > extern void __bio_clone(struct bio *, struct bio *); > extern struct bio *bio_clone(struct bio *, gfp_t); > +struct bio *bio_clone_kmalloc(struct bio *, gfp_t); > > extern void bio_init(struct bio *); > extern void bio_reset(struct bio *); From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756627Ab2GYMGT (ORCPT ); Wed, 25 Jul 2012 08:06:19 -0400 Received: from natasha.panasas.com ([67.152.220.90]:36208 "EHLO natasha.panasas.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756558Ab2GYMGS (ORCPT ); Wed, 25 Jul 2012 08:06:18 -0400 Message-ID: <500FE114.1000707@panasas.com> Date: Wed, 25 Jul 2012 15:05:40 +0300 From: Boaz Harrosh User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111113 Thunderbird/8.0 MIME-Version: 1.0 To: Kent Overstreet CC: , , , , , , , , , , , Subject: Re: [PATCH v4 10/12] block: Add bio_clone_kmalloc() References: <1343160689-12378-1-git-send-email-koverstreet@google.com> <1343160689-12378-11-git-send-email-koverstreet@google.com> In-Reply-To: <1343160689-12378-11-git-send-email-koverstreet@google.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/24/2012 11:11 PM, Kent Overstreet wrote: ACK-by: Boaz Harrosh > Signed-off-by: Kent Overstreet Thanks looks nice > --- > drivers/block/osdblk.c | 3 +-- > fs/bio.c | 13 +++++++++++++ > fs/exofs/ore.c | 5 ++--- > include/linux/bio.h | 1 + > 4 files changed, 17 insertions(+), 5 deletions(-) > > diff --git a/drivers/block/osdblk.c b/drivers/block/osdblk.c > index 87311eb..1bbc681 100644 > --- a/drivers/block/osdblk.c > +++ b/drivers/block/osdblk.c > @@ -266,11 +266,10 @@ static struct bio *bio_chain_clone(struct bio *old_chain, gfp_t gfpmask) > struct bio *tmp, *new_chain = NULL, *tail = NULL; > > while (old_chain) { > - tmp = bio_kmalloc(gfpmask, old_chain->bi_max_vecs); > + tmp = bio_clone_kmalloc(old_chain, gfpmask); > if (!tmp) > goto err_out; > > - __bio_clone(tmp, old_chain); > tmp->bi_bdev = NULL; > gfpmask &= ~__GFP_WAIT; > tmp->bi_next = NULL; > diff --git a/fs/bio.c b/fs/bio.c > index fa6dee4..9d0ceb2 100644 > --- a/fs/bio.c > +++ b/fs/bio.c > @@ -499,6 +499,19 @@ struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask) > } > EXPORT_SYMBOL(bio_clone); > > +struct bio *bio_clone_kmalloc(struct bio *bio, gfp_t gfp_mask) > +{ > + struct bio *b = bio_kmalloc(gfp_mask, bio->bi_max_vecs); > + > + if (!b) > + return NULL; > + > + __bio_clone(b, bio); > + > + return b; > +} > +EXPORT_SYMBOL(bio_clone_kmalloc); > + > /** > * bio_get_nr_vecs - return approx number of vecs > * @bdev: I/O target > diff --git a/fs/exofs/ore.c b/fs/exofs/ore.c > index 24a49d4..a8d92fc 100644 > --- a/fs/exofs/ore.c > +++ b/fs/exofs/ore.c > @@ -814,8 +814,8 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp) > struct bio *bio; > > if (per_dev != master_dev) { > - bio = bio_kmalloc(GFP_KERNEL, > - master_dev->bio->bi_max_vecs); > + bio = bio_clone_kmalloc(master_dev->bio, > + GFP_KERNEL); > if (unlikely(!bio)) { > ORE_DBGMSG( > "Failed to allocate BIO size=%u\n", > @@ -824,7 +824,6 @@ static int _write_mirror(struct ore_io_state *ios, int cur_comp) > goto out; > } > > - __bio_clone(bio, master_dev->bio); > bio->bi_bdev = NULL; > bio->bi_next = NULL; > per_dev->offset = master_dev->offset; > diff --git a/include/linux/bio.h b/include/linux/bio.h > index 9720544..e180f1d 100644 > --- a/include/linux/bio.h > +++ b/include/linux/bio.h > @@ -221,6 +221,7 @@ extern int bio_phys_segments(struct request_queue *, struct bio *); > > extern void __bio_clone(struct bio *, struct bio *); > extern struct bio *bio_clone(struct bio *, gfp_t); > +struct bio *bio_clone_kmalloc(struct bio *, gfp_t); > > extern void bio_init(struct bio *); > extern void bio_reset(struct bio *);