From: Boaz Harrosh <bharrosh-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
To: koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@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
Subject: Re: [PATCH 09/13] block: Add an explicit bio flag for bios that own their bvec
Date: Fri, 18 May 2012 20:07:40 +0300 [thread overview]
Message-ID: <4FB681DC.7000700@panasas.com> (raw)
In-Reply-To: <363875943e9d0e13bee6ed28239280543e6e5055.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
On 05/18/2012 05:59 AM, koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org wrote:
> From: Kent Overstreet <koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
>
> This is for the new bio splitting code. When we split a bio, if the
> split occured on a bvec boundry we reuse the bvec for the new bio. But
> that means bio_free() can't free it, hence the explicit flag.
>
> Signed-off-by: Kent Overstreet <koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
> ---
> fs/bio.c | 3 ++-
> include/linux/blk_types.h | 1 +
> 2 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/fs/bio.c b/fs/bio.c
> index ecc9088..3332800 100644
> --- a/fs/bio.c
> +++ b/fs/bio.c
> @@ -234,7 +234,7 @@ void bio_free(struct bio *bio, struct bio_set *bs)
> {
> void *p;
>
> - if (bio_has_allocated_vec(bio))
> + if (bio_flagged(bio, BIO_HAS_VEC))
> bvec_free_bs(bs, bio->bi_io_vec, BIO_POOL_IDX(bio));
>
> if (bio_integrity(bio))
> @@ -305,6 +305,7 @@ struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs)
> goto err_free;
>
> nr_iovecs = bvec_nr_vecs(idx);
> + bio->bi_flags |= 1 << BIO_HAS_VEC;
> }
> out_set:
> bio->bi_flags |= idx << BIO_POOL_OFFSET;
> diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
> index bd9a610..10fca21 100644
> --- a/include/linux/blk_types.h
> +++ b/include/linux/blk_types.h
> @@ -101,6 +101,7 @@ struct bio {
> #define BIO_FS_INTEGRITY 9 /* fs owns integrity data, not block layer */
> #define BIO_QUIET 10 /* Make BIO Quiet */
> #define BIO_MAPPED_INTEGRITY 11/* integrity metadata has been remapped */
> +#define BIO_HAS_VEC 12 /* bio_free() should free bvec */
Just an English nit
BIO with out any VECs is when bi_max_vecs is zero. Id prefer a name that
denotes allocation or ownership.
BIO_OWN_VEC or BIO_ALLOC_VEC or BIO_DELETE_VEC
And one technical problem.
I would prefer to negate this bit. Zero is the default, set on
the exception. Safer and also more logical.
BIO_NO_DELETE_VEC
> #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag)))
>
> /*
Thanks
Boaz
WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
To: <koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Cc: <linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
<dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
<linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@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>
Subject: Re: [PATCH 09/13] block: Add an explicit bio flag for bios that own their bvec
Date: Fri, 18 May 2012 20:07:40 +0300 [thread overview]
Message-ID: <4FB681DC.7000700@panasas.com> (raw)
In-Reply-To: <363875943e9d0e13bee6ed28239280543e6e5055.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
On 05/18/2012 05:59 AM, koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org wrote:
> From: Kent Overstreet <koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
>
> This is for the new bio splitting code. When we split a bio, if the
> split occured on a bvec boundry we reuse the bvec for the new bio. But
> that means bio_free() can't free it, hence the explicit flag.
>
> Signed-off-by: Kent Overstreet <koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
> ---
> fs/bio.c | 3 ++-
> include/linux/blk_types.h | 1 +
> 2 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/fs/bio.c b/fs/bio.c
> index ecc9088..3332800 100644
> --- a/fs/bio.c
> +++ b/fs/bio.c
> @@ -234,7 +234,7 @@ void bio_free(struct bio *bio, struct bio_set *bs)
> {
> void *p;
>
> - if (bio_has_allocated_vec(bio))
> + if (bio_flagged(bio, BIO_HAS_VEC))
> bvec_free_bs(bs, bio->bi_io_vec, BIO_POOL_IDX(bio));
>
> if (bio_integrity(bio))
> @@ -305,6 +305,7 @@ struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs)
> goto err_free;
>
> nr_iovecs = bvec_nr_vecs(idx);
> + bio->bi_flags |= 1 << BIO_HAS_VEC;
> }
> out_set:
> bio->bi_flags |= idx << BIO_POOL_OFFSET;
> diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
> index bd9a610..10fca21 100644
> --- a/include/linux/blk_types.h
> +++ b/include/linux/blk_types.h
> @@ -101,6 +101,7 @@ struct bio {
> #define BIO_FS_INTEGRITY 9 /* fs owns integrity data, not block layer */
> #define BIO_QUIET 10 /* Make BIO Quiet */
> #define BIO_MAPPED_INTEGRITY 11/* integrity metadata has been remapped */
> +#define BIO_HAS_VEC 12 /* bio_free() should free bvec */
Just an English nit
BIO with out any VECs is when bi_max_vecs is zero. Id prefer a name that
denotes allocation or ownership.
BIO_OWN_VEC or BIO_ALLOC_VEC or BIO_DELETE_VEC
And one technical problem.
I would prefer to negate this bit. Zero is the default, set on
the exception. Safer and also more logical.
BIO_NO_DELETE_VEC
> #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag)))
>
> /*
Thanks
Boaz
WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh@panasas.com>
To: <koverstreet@google.com>
Cc: <linux-bcache@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<dm-devel@redhat.com>, <linux-fsdevel@vger.kernel.org>,
<tj@kernel.org>, <axboe@kernel.dk>, <agk@redhat.com>,
<neilb@suse.de>
Subject: Re: [PATCH 09/13] block: Add an explicit bio flag for bios that own their bvec
Date: Fri, 18 May 2012 20:07:40 +0300 [thread overview]
Message-ID: <4FB681DC.7000700@panasas.com> (raw)
In-Reply-To: <363875943e9d0e13bee6ed28239280543e6e5055.1337308722.git.koverstreet@google.com>
On 05/18/2012 05:59 AM, koverstreet@google.com wrote:
> From: Kent Overstreet <koverstreet@google.com>
>
> This is for the new bio splitting code. When we split a bio, if the
> split occured on a bvec boundry we reuse the bvec for the new bio. But
> that means bio_free() can't free it, hence the explicit flag.
>
> Signed-off-by: Kent Overstreet <koverstreet@google.com>
> ---
> fs/bio.c | 3 ++-
> include/linux/blk_types.h | 1 +
> 2 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/fs/bio.c b/fs/bio.c
> index ecc9088..3332800 100644
> --- a/fs/bio.c
> +++ b/fs/bio.c
> @@ -234,7 +234,7 @@ void bio_free(struct bio *bio, struct bio_set *bs)
> {
> void *p;
>
> - if (bio_has_allocated_vec(bio))
> + if (bio_flagged(bio, BIO_HAS_VEC))
> bvec_free_bs(bs, bio->bi_io_vec, BIO_POOL_IDX(bio));
>
> if (bio_integrity(bio))
> @@ -305,6 +305,7 @@ struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs)
> goto err_free;
>
> nr_iovecs = bvec_nr_vecs(idx);
> + bio->bi_flags |= 1 << BIO_HAS_VEC;
> }
> out_set:
> bio->bi_flags |= idx << BIO_POOL_OFFSET;
> diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
> index bd9a610..10fca21 100644
> --- a/include/linux/blk_types.h
> +++ b/include/linux/blk_types.h
> @@ -101,6 +101,7 @@ struct bio {
> #define BIO_FS_INTEGRITY 9 /* fs owns integrity data, not block layer */
> #define BIO_QUIET 10 /* Make BIO Quiet */
> #define BIO_MAPPED_INTEGRITY 11/* integrity metadata has been remapped */
> +#define BIO_HAS_VEC 12 /* bio_free() should free bvec */
Just an English nit
BIO with out any VECs is when bi_max_vecs is zero. Id prefer a name that
denotes allocation or ownership.
BIO_OWN_VEC or BIO_ALLOC_VEC or BIO_DELETE_VEC
And one technical problem.
I would prefer to negate this bit. Zero is the default, set on
the exception. Safer and also more logical.
BIO_NO_DELETE_VEC
> #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag)))
>
> /*
Thanks
Boaz
next prev parent reply other threads:[~2012-05-18 17:07 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-18 2:59 [PATCH 00/13] Block cleanups (for bcache) koverstreet
2012-05-18 2:59 ` koverstreet
2012-05-18 2:59 ` [PATCH 01/13] block: Generalized bio pool freeing koverstreet
[not found] ` <ea774fea2a27c9f1028a12ce31a7ee5e5517bef4.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 15:55 ` Tejun Heo
2012-05-18 15:55 ` Tejun Heo
[not found] ` <20120518155538.GA19388-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 16:14 ` [dm-devel] " Alasdair G Kergon
2012-05-18 16:14 ` Alasdair G Kergon
2012-05-18 2:59 ` [PATCH 02/13] dm: kill dm_rq_bio_destructor koverstreet
2012-05-18 15:57 ` Tejun Heo
[not found] ` <20120518155729.GB19388-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 16:43 ` [dm-devel] " Alasdair G Kergon
2012-05-18 16:43 ` Alasdair G Kergon
[not found] ` <20120518164319.GJ29330-FDJ95KluN3Z0klwcnFlA1dvLeJWuRmrY@public.gmane.org>
2012-05-18 18:50 ` Kent Overstreet
2012-05-18 18:50 ` Kent Overstreet
[not found] ` <20120518185027.GA9673-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-22 4:29 ` Jun'ichi Nomura
2012-05-22 4:29 ` Jun'ichi Nomura
2012-05-18 2:59 ` [PATCH 03/13] block: Add bio_clone_bioset() koverstreet
2012-05-18 2:59 ` koverstreet
2012-05-18 16:05 ` Tejun Heo
2012-05-18 20:31 ` Kent Overstreet
[not found] ` <eb6a7d3fe7ae203202bc365d7274ee531631a9ca.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 16:11 ` [dm-devel] " Vivek Goyal
2012-05-18 16:11 ` Vivek Goyal
2012-05-18 18:55 ` Kent Overstreet
2012-05-18 2:59 ` [PATCH 04/13] block: Add bio_clone_kmalloc() koverstreet
2012-05-18 2:59 ` koverstreet
[not found] ` <1c7c2d4b89bc3d0e907608cec37bcf0ee50f4c0e.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 16:09 ` Tejun Heo
2012-05-18 16:09 ` Tejun Heo
[not found] ` <20120518160903.GD19388-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 20:39 ` Kent Overstreet
2012-05-18 20:39 ` Kent Overstreet
2012-05-18 16:45 ` Boaz Harrosh
2012-05-18 16:45 ` Boaz Harrosh
2012-05-18 2:59 ` [PATCH 05/13] block: Only clone bio vecs that are in use koverstreet
2012-05-18 2:59 ` koverstreet
2012-05-18 16:13 ` Tejun Heo
2012-05-18 21:14 ` Kent Overstreet
2012-05-18 2:59 ` [PATCH 06/13] block: Add bio_reset() koverstreet
2012-05-18 2:59 ` koverstreet
2012-05-18 16:16 ` Tejun Heo
[not found] ` <20120518161608.GF19388-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 21:48 ` Kent Overstreet
2012-05-18 21:48 ` Kent Overstreet
2012-05-18 2:59 ` [PATCH 07/13] pktcdvd: Switch to bio_kmalloc() koverstreet
2012-05-18 2:59 ` koverstreet
[not found] ` <04a4d6c2c8b6f0097e3594c6e0932093afffc1da.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 16:18 ` Tejun Heo
2012-05-18 16:18 ` Tejun Heo
2012-05-18 2:59 ` [PATCH 08/13] block: Kill bi_destructor koverstreet
2012-05-18 2:59 ` koverstreet
[not found] ` <de05855cf0fa4800cfab7e8340f106dccc7a75a1.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 16:21 ` Tejun Heo
2012-05-18 16:21 ` Tejun Heo
[not found] ` <20120518162142.GH19388-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 22:21 ` Kent Overstreet
2012-05-18 22:21 ` Kent Overstreet
2012-05-18 2:59 ` [PATCH 09/13] block: Add an explicit bio flag for bios that own their bvec koverstreet
[not found] ` <363875943e9d0e13bee6ed28239280543e6e5055.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 16:30 ` Tejun Heo
2012-05-18 16:30 ` Tejun Heo
2012-05-18 21:49 ` Kent Overstreet
2012-05-18 17:07 ` Boaz Harrosh [this message]
2012-05-18 17:07 ` Boaz Harrosh
2012-05-18 17:07 ` Boaz Harrosh
2012-05-18 2:59 ` [PATCH 10/13] block: Rework bio splitting koverstreet
[not found] ` <ac4c1cbd10934fdc3a4af74d4cb5ec370f9139d5.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 17:07 ` Tejun Heo
2012-05-18 17:07 ` Tejun Heo
2012-05-18 17:46 ` Boaz Harrosh
2012-05-18 17:46 ` Boaz Harrosh
[not found] ` <cover.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 2:59 ` [PATCH 11/13] Closures koverstreet-hpIqsD4AKlfQT0dZR+AlfA
2012-05-18 2:59 ` koverstreet
[not found] ` <a184989cfbf92297d4cca2f823e5ac24ec8fe1e3.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 17:08 ` Tejun Heo
2012-05-18 17:08 ` Tejun Heo
2012-05-18 2:59 ` [PATCH 12/13] Make generic_make_request handle arbitrarily large bios koverstreet
2012-05-18 8:05 ` NeilBrown
[not found] ` <20120518180550.0a6cdc34-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2012-05-18 8:14 ` Kent Overstreet
2012-05-18 8:14 ` Kent Overstreet
[not found] ` <20120518081444.GA27205-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-21 17:17 ` [dm-devel] " Vivek Goyal
2012-05-21 17:17 ` Vivek Goyal
2012-05-21 17:55 ` Kent Overstreet
2012-05-21 18:32 ` Vivek Goyal
2012-05-18 17:52 ` Tejun Heo
2012-05-19 0:59 ` [dm-devel] " Alasdair G Kergon
[not found] ` <1114e7019b0055fc09a54b59b36398d5c54f5e32.1337308722.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 22:48 ` Mikulas Patocka
2012-05-18 22:48 ` Mikulas Patocka
2012-05-18 3:00 ` [PATCH 13/13] Gut bio_add_page() koverstreet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FB681DC.7000700@panasas.com \
--to=bharrosh-c4p08nqkorlbdgjk7y7tuq@public.gmane.org \
--cc=agk-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org \
--cc=dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=neilb-l3A5Bk7waGM@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.