From: Kent Overstreet <koverstreet@google.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org,
dm-devel@redhat.com, tj@kernel.org, mpatocka@redhat.com,
bharrosh@panasas.com, Alasdair Kergon <agk@redhat.com>
Subject: Re: [PATCH v6 02/13] dm: Use bioset's front_pad for dm_rq_clone_bio_info
Date: Fri, 24 Aug 2012 00:14:48 -0700 [thread overview]
Message-ID: <20120824071448.GF11977@moria.home.lan> (raw)
In-Reply-To: <20120822213010.GA8020@redhat.com>
On Wed, Aug 22, 2012 at 05:30:10PM -0400, Vivek Goyal wrote:
> On Wed, Aug 22, 2012 at 10:03:59AM -0700, Kent Overstreet wrote:
> > Previously, dm_rq_clone_bio_info needed to be freed by the bio's
> > destructor to avoid a memory leak in the blk_rq_prep_clone() error path.
> > This gets rid of a memory allocation and means we can kill
> > dm_rq_bio_destructor.
> >
> > v6: Fix comment on struct dm_rq_clone_bio_info, per Tejun
> >
> > Signed-off-by: Kent Overstreet <koverstreet@google.com>
> > CC: Alasdair Kergon <agk@redhat.com>
> > ---
> > drivers/md/dm.c | 39 +++++++++++----------------------------
> > 1 file changed, 11 insertions(+), 28 deletions(-)
> >
> > diff --git a/drivers/md/dm.c b/drivers/md/dm.c
> > index 0c3d6dd..5ed9779 100644
> > --- a/drivers/md/dm.c
> > +++ b/drivers/md/dm.c
> > @@ -86,12 +86,17 @@ struct dm_rq_target_io {
> > };
> >
> > /*
> > - * For request-based dm.
> > - * One of these is allocated per bio.
> > + * For request-based dm - the bio clones we allocate are embedded in these
> > + * structs.
> > + *
> > + * We allocate these with bio_alloc_bioset, using the front_pad parameter when
> > + * the bioset is created - this means the bio has to come at the end of the
> > + * struct.
> > */
> > struct dm_rq_clone_bio_info {
> > struct bio *orig;
> > struct dm_rq_target_io *tio;
> > + struct bio clone;
> > };
> >
> > union map_info *dm_get_mapinfo(struct bio *bio)
> > @@ -467,16 +472,6 @@ static void free_rq_tio(struct dm_rq_target_io *tio)
> > mempool_free(tio, tio->md->tio_pool);
> > }
> >
> > -static struct dm_rq_clone_bio_info *alloc_bio_info(struct mapped_device *md)
> > -{
> > - return mempool_alloc(md->io_pool, GFP_ATOMIC);
> > -}
> > -
> > -static void free_bio_info(struct dm_rq_clone_bio_info *info)
> > -{
> > - mempool_free(info, info->tio->md->io_pool);
> > -}
> > -
>
> With this change, do you still need "_rq_bio_info_cache" slab cache? I would
> think that it can be cleaned up now?
It looks like it, but I'm hesitent to make more extensive changes to the
dm code given that I'm unfamiliar with it and I haven't been able to
personally test the request type dm target code.
That and the way io_pool is overloaded. I see too many ways I could
screw things up.
Also it looks like the equivalent change ought to be done with struct
dm_io first (then we'd have removed all the users of io_pool), but
honestly it takes me forever to do anything in the dm code so I'd rather
leave that to someone else.
next prev parent reply other threads:[~2012-08-24 7:15 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-22 17:03 [PATCH v6 00/13] Block cleanups Kent Overstreet
2012-08-22 17:03 ` [PATCH v6 01/13] block: Generalized bio pool freeing Kent Overstreet
2012-08-22 21:27 ` Nicholas A. Bellinger
2012-08-22 17:03 ` [PATCH v6 02/13] dm: Use bioset's front_pad for dm_rq_clone_bio_info Kent Overstreet
2012-08-22 18:32 ` Tejun Heo
2012-08-22 21:30 ` Vivek Goyal
2012-08-24 7:14 ` Kent Overstreet [this message]
2012-08-24 18:40 ` Vivek Goyal
2012-08-22 17:04 ` [PATCH v6 03/13] block: Add bio_reset() Kent Overstreet
2012-08-22 18:34 ` Tejun Heo
2012-08-22 19:51 ` Tejun Heo
2012-08-22 17:04 ` [PATCH v6 04/13] pktcdvd: Switch to bio_kmalloc() Kent Overstreet
2012-08-22 19:55 ` Tejun Heo
2012-08-28 23:19 ` Jiri Kosina
2012-08-29 4:35 ` Peter Osterlund
2012-09-03 16:15 ` Jiri Kosina
2012-08-22 17:04 ` [PATCH v6 05/13] block: Kill bi_destructor Kent Overstreet
2012-08-22 20:00 ` Tejun Heo
2012-08-24 5:09 ` Kent Overstreet
2012-08-22 17:04 ` [PATCH v6 06/13] block: Consolidate bio_alloc_bioset(), bio_kmalloc() Kent Overstreet
2012-08-22 20:17 ` Tejun Heo
2012-08-24 5:04 ` Kent Overstreet
2012-08-24 20:08 ` Tejun Heo
2012-08-22 17:04 ` [PATCH v6 07/13] block: Avoid deadlocks with bio allocation by stacking drivers Kent Overstreet
2012-08-22 20:30 ` Tejun Heo
2012-08-24 5:55 ` Kent Overstreet
2012-08-24 20:28 ` Tejun Heo
2012-08-22 17:04 ` [PATCH v6 08/13] block: Add an explicit bio flag for bios that own their bvec Kent Overstreet
2012-08-22 17:43 ` Adrian Bunk
2012-08-22 19:22 ` Kent Overstreet
2012-08-22 20:00 ` Adrian Bunk
2012-08-28 17:23 ` Kent Overstreet
2012-08-22 17:04 ` [PATCH v6 09/13] block: Rename bio_split() -> bio_pair_split() Kent Overstreet
2012-08-22 17:04 ` [PATCH v6 10/13] block: Introduce new bio_split() Kent Overstreet
2012-08-22 20:46 ` Tejun Heo
2012-08-22 17:04 ` [PATCH v6 11/13] block: Rework bio_pair_split() Kent Overstreet
2012-08-22 21:04 ` Tejun Heo
2012-08-24 2:25 ` Martin K. Petersen
2012-08-24 10:37 ` Kent Overstreet
2012-08-24 20:58 ` Tejun Heo
2012-08-24 10:30 ` Kent Overstreet
2012-08-24 20:53 ` Tejun Heo
2012-08-22 17:04 ` [PATCH v6 12/13] block: Add bio_clone_bioset(), bio_clone_kmalloc() Kent Overstreet
2012-08-22 17:13 ` Jeff Garzik
2012-08-22 21:07 ` Tejun Heo
2012-08-24 6:24 ` Kent Overstreet
2012-08-24 20:36 ` Tejun Heo
2012-08-22 17:04 ` [PATCH v6 13/13] block: Only clone bio vecs that are in use Kent Overstreet
2012-08-22 21:10 ` Tejun Heo
2012-08-24 7:05 ` Kent Overstreet
2012-08-24 20:42 ` Tejun Heo
2012-08-23 18:00 ` [PATCH v6 00/13] Block cleanups Vivek Goyal
2012-08-24 12:46 ` Kent Overstreet
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=20120824071448.GF11977@moria.home.lan \
--to=koverstreet@google.com \
--cc=agk@redhat.com \
--cc=bharrosh@panasas.com \
--cc=dm-devel@redhat.com \
--cc=linux-bcache@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=tj@kernel.org \
--cc=vgoyal@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).