From: Kent Overstreet <koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
To: Jun'ichi Nomura <j-nomura-JhyGz2TFV9J8UrSeD/g0lQ@public.gmane.org>
Cc: device-mapper development
<dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org,
yehuda-L5o5AL9CYN0tUFlbccrkMA@public.gmane.org,
mpatocka-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
bharrosh-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org,
tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
sage-BnTBU8nroG7k1uMJSBkQmQ@public.gmane.org,
agk-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
drbd-dev-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org
Subject: Re: [dm-devel] [PATCH v2 02/14] dm: kill dm_rq_bio_destructor
Date: Thu, 24 May 2012 16:33:07 -0700 [thread overview]
Message-ID: <20120524233307.GD22664@google.com> (raw)
In-Reply-To: <4FBD8BD9.8070708-JhyGz2TFV9J8UrSeD/g0lQ@public.gmane.org>
On Thu, May 24, 2012 at 10:16:09AM +0900, Jun'ichi Nomura wrote:
> On 05/24/12 09:39, Kent Overstreet wrote:
> > On Thu, May 24, 2012 at 09:19:12AM +0900, Jun'ichi Nomura wrote:
> >> The destructor may also be called from blk_rq_unprep_clone(),
> >> which just puts bio.
> >> So this patch will introduce a memory leak.
> >
> > Well, keeping around bi_destructor solely for that reason would be
> > pretty lousy. Can you come up with a better solution?
>
> I don't have good one but here are some ideas:
> a) Do bio_endio() rather than bio_put() in blk_rq_unprep_clone()
> and let bi_end_io reap additional data.
> It looks ugly.
> b) Separate the constructor from blk_rq_prep_clone().
> dm has to do rq_for_each_bio loop again for constructor.
> Possible performance impact.
> c) Open code blk_rq_prep/unprep_clone() in dm.
> It exposes unnecessary block-internals to dm.
> d) Pass destructor function to blk_rq_prep/unprep_clone()
> for them to callback.
I hadn't looked at this closely enough before. But, when I did I came up
with an option e: get rid of the dm_rq_clone_bio_info allocation by
using bio_set's front_pad.
commit af696ef77e2ddc4e510f8213e14d754af41e5014
Author: Kent Overstreet <koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Date: Tue May 15 18:03:45 2012 -0700
dm: Use bioset's front_pad for dm_rq_clone_bio_info
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.
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 40b7735..4014696 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -92,6 +92,7 @@ struct dm_rq_target_io {
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 +468,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);
-}
-
static int md_in_flight(struct mapped_device *md)
{
return atomic_read(&md->pending[READ]) +
@@ -1438,30 +1429,17 @@ void dm_dispatch_request(struct request *rq)
}
EXPORT_SYMBOL_GPL(dm_dispatch_request);
-static void dm_rq_bio_destructor(struct bio *bio)
-{
- struct dm_rq_clone_bio_info *info = bio->bi_private;
- struct mapped_device *md = info->tio->md;
-
- free_bio_info(info);
- bio_free(bio, md->bs);
-}
-
static int dm_rq_bio_constructor(struct bio *bio, struct bio *bio_orig,
void *data)
{
struct dm_rq_target_io *tio = data;
- struct mapped_device *md = tio->md;
- struct dm_rq_clone_bio_info *info = alloc_bio_info(md);
-
- if (!info)
- return -ENOMEM;
+ struct dm_rq_clone_bio_info *info =
+ container_of(bio, struct dm_rq_clone_bio_info, clone);
info->orig = bio_orig;
info->tio = tio;
bio->bi_end_io = end_clone_bio;
bio->bi_private = info;
- bio->bi_destructor = dm_rq_bio_destructor;
return 0;
}
@@ -2696,7 +2674,8 @@ struct dm_md_mempools *dm_alloc_md_mempools(unsigned type, unsigned integrity)
if (!pools->tio_pool)
goto free_io_pool_and_out;
- pools->bs = bioset_create(pool_size, 0);
+ pools->bs = bioset_create(pool_size,
+ offsetof(struct dm_rq_clone_bio_info, orig));
if (!pools->bs)
goto free_tio_pool_and_out;
WARNING: multiple messages have this Message-ID (diff)
From: Kent Overstreet <koverstreet@google.com>
To: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Cc: axboe@kernel.dk, device-mapper development <dm-devel@redhat.com>,
linux-kernel@vger.kernel.org, tj@kernel.org,
linux-bcache@vger.kernel.org, mpatocka@redhat.com,
agk@redhat.com, bharrosh@panasas.com,
linux-fsdevel@vger.kernel.org, yehuda@hq.newdream.net,
drbd-dev@lists.linbit.com, vgoyal@redhat.com, sage@newdream.net
Subject: Re: [Drbd-dev] [dm-devel] [PATCH v2 02/14] dm: kill dm_rq_bio_destructor
Date: Thu, 24 May 2012 16:33:07 -0700 [thread overview]
Message-ID: <20120524233307.GD22664@google.com> (raw)
In-Reply-To: <4FBD8BD9.8070708@ce.jp.nec.com>
On Thu, May 24, 2012 at 10:16:09AM +0900, Jun'ichi Nomura wrote:
> On 05/24/12 09:39, Kent Overstreet wrote:
> > On Thu, May 24, 2012 at 09:19:12AM +0900, Jun'ichi Nomura wrote:
> >> The destructor may also be called from blk_rq_unprep_clone(),
> >> which just puts bio.
> >> So this patch will introduce a memory leak.
> >
> > Well, keeping around bi_destructor solely for that reason would be
> > pretty lousy. Can you come up with a better solution?
>
> I don't have good one but here are some ideas:
> a) Do bio_endio() rather than bio_put() in blk_rq_unprep_clone()
> and let bi_end_io reap additional data.
> It looks ugly.
> b) Separate the constructor from blk_rq_prep_clone().
> dm has to do rq_for_each_bio loop again for constructor.
> Possible performance impact.
> c) Open code blk_rq_prep/unprep_clone() in dm.
> It exposes unnecessary block-internals to dm.
> d) Pass destructor function to blk_rq_prep/unprep_clone()
> for them to callback.
I hadn't looked at this closely enough before. But, when I did I came up
with an option e: get rid of the dm_rq_clone_bio_info allocation by
using bio_set's front_pad.
commit af696ef77e2ddc4e510f8213e14d754af41e5014
Author: Kent Overstreet <koverstreet@google.com>
Date: Tue May 15 18:03:45 2012 -0700
dm: Use bioset's front_pad for dm_rq_clone_bio_info
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.
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 40b7735..4014696 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -92,6 +92,7 @@ struct dm_rq_target_io {
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 +468,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);
-}
-
static int md_in_flight(struct mapped_device *md)
{
return atomic_read(&md->pending[READ]) +
@@ -1438,30 +1429,17 @@ void dm_dispatch_request(struct request *rq)
}
EXPORT_SYMBOL_GPL(dm_dispatch_request);
-static void dm_rq_bio_destructor(struct bio *bio)
-{
- struct dm_rq_clone_bio_info *info = bio->bi_private;
- struct mapped_device *md = info->tio->md;
-
- free_bio_info(info);
- bio_free(bio, md->bs);
-}
-
static int dm_rq_bio_constructor(struct bio *bio, struct bio *bio_orig,
void *data)
{
struct dm_rq_target_io *tio = data;
- struct mapped_device *md = tio->md;
- struct dm_rq_clone_bio_info *info = alloc_bio_info(md);
-
- if (!info)
- return -ENOMEM;
+ struct dm_rq_clone_bio_info *info =
+ container_of(bio, struct dm_rq_clone_bio_info, clone);
info->orig = bio_orig;
info->tio = tio;
bio->bi_end_io = end_clone_bio;
bio->bi_private = info;
- bio->bi_destructor = dm_rq_bio_destructor;
return 0;
}
@@ -2696,7 +2674,8 @@ struct dm_md_mempools *dm_alloc_md_mempools(unsigned type, unsigned integrity)
if (!pools->tio_pool)
goto free_io_pool_and_out;
- pools->bs = bioset_create(pool_size, 0);
+ pools->bs = bioset_create(pool_size,
+ offsetof(struct dm_rq_clone_bio_info, orig));
if (!pools->bs)
goto free_tio_pool_and_out;
WARNING: multiple messages have this Message-ID (diff)
From: Kent Overstreet <koverstreet@google.com>
To: "Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
Cc: device-mapper development <dm-devel@redhat.com>,
linux-kernel@vger.kernel.org, linux-bcache@vger.kernel.org,
linux-fsdevel@vger.kernel.org, axboe@kernel.dk,
yehuda@hq.newdream.net, mpatocka@redhat.com, vgoyal@redhat.com,
bharrosh@panasas.com, tj@kernel.org, sage@newdream.net,
agk@redhat.com, drbd-dev@lists.linbit.com
Subject: Re: [dm-devel] [PATCH v2 02/14] dm: kill dm_rq_bio_destructor
Date: Thu, 24 May 2012 16:33:07 -0700 [thread overview]
Message-ID: <20120524233307.GD22664@google.com> (raw)
In-Reply-To: <4FBD8BD9.8070708@ce.jp.nec.com>
On Thu, May 24, 2012 at 10:16:09AM +0900, Jun'ichi Nomura wrote:
> On 05/24/12 09:39, Kent Overstreet wrote:
> > On Thu, May 24, 2012 at 09:19:12AM +0900, Jun'ichi Nomura wrote:
> >> The destructor may also be called from blk_rq_unprep_clone(),
> >> which just puts bio.
> >> So this patch will introduce a memory leak.
> >
> > Well, keeping around bi_destructor solely for that reason would be
> > pretty lousy. Can you come up with a better solution?
>
> I don't have good one but here are some ideas:
> a) Do bio_endio() rather than bio_put() in blk_rq_unprep_clone()
> and let bi_end_io reap additional data.
> It looks ugly.
> b) Separate the constructor from blk_rq_prep_clone().
> dm has to do rq_for_each_bio loop again for constructor.
> Possible performance impact.
> c) Open code blk_rq_prep/unprep_clone() in dm.
> It exposes unnecessary block-internals to dm.
> d) Pass destructor function to blk_rq_prep/unprep_clone()
> for them to callback.
I hadn't looked at this closely enough before. But, when I did I came up
with an option e: get rid of the dm_rq_clone_bio_info allocation by
using bio_set's front_pad.
commit af696ef77e2ddc4e510f8213e14d754af41e5014
Author: Kent Overstreet <koverstreet@google.com>
Date: Tue May 15 18:03:45 2012 -0700
dm: Use bioset's front_pad for dm_rq_clone_bio_info
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.
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 40b7735..4014696 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -92,6 +92,7 @@ struct dm_rq_target_io {
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 +468,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);
-}
-
static int md_in_flight(struct mapped_device *md)
{
return atomic_read(&md->pending[READ]) +
@@ -1438,30 +1429,17 @@ void dm_dispatch_request(struct request *rq)
}
EXPORT_SYMBOL_GPL(dm_dispatch_request);
-static void dm_rq_bio_destructor(struct bio *bio)
-{
- struct dm_rq_clone_bio_info *info = bio->bi_private;
- struct mapped_device *md = info->tio->md;
-
- free_bio_info(info);
- bio_free(bio, md->bs);
-}
-
static int dm_rq_bio_constructor(struct bio *bio, struct bio *bio_orig,
void *data)
{
struct dm_rq_target_io *tio = data;
- struct mapped_device *md = tio->md;
- struct dm_rq_clone_bio_info *info = alloc_bio_info(md);
-
- if (!info)
- return -ENOMEM;
+ struct dm_rq_clone_bio_info *info =
+ container_of(bio, struct dm_rq_clone_bio_info, clone);
info->orig = bio_orig;
info->tio = tio;
bio->bi_end_io = end_clone_bio;
bio->bi_private = info;
- bio->bi_destructor = dm_rq_bio_destructor;
return 0;
}
@@ -2696,7 +2674,8 @@ struct dm_md_mempools *dm_alloc_md_mempools(unsigned type, unsigned integrity)
if (!pools->tio_pool)
goto free_io_pool_and_out;
- pools->bs = bioset_create(pool_size, 0);
+ pools->bs = bioset_create(pool_size,
+ offsetof(struct dm_rq_clone_bio_info, orig));
if (!pools->bs)
goto free_tio_pool_and_out;
next prev parent reply other threads:[~2012-05-24 23:33 UTC|newest]
Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-24 0:02 [PATCH v2 00/14] Block cleanups (for bcache) Kent Overstreet
2012-05-24 0:02 ` Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 01/14] block: Generalized bio pool freeing Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
[not found] ` <1337817771-25038-2-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 16:09 ` Tejun Heo
2012-05-24 16:09 ` Tejun Heo
2012-05-24 16:09 ` [Drbd-dev] " Tejun Heo
[not found] ` <20120524160944.GB27983-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 16:19 ` Tejun Heo
2012-05-24 16:19 ` Tejun Heo
2012-05-24 16:19 ` [Drbd-dev] " Tejun Heo
2012-05-24 17:46 ` Vivek Goyal
2012-05-24 17:46 ` Vivek Goyal
2012-05-24 17:46 ` [Drbd-dev] " Vivek Goyal
[not found] ` <20120524174649.GC27550-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-24 18:06 ` Boaz Harrosh
2012-05-24 18:06 ` Boaz Harrosh
2012-05-24 18:06 ` Boaz Harrosh
2012-05-24 18:06 ` [Drbd-dev] " Boaz Harrosh
2012-05-24 0:02 ` [PATCH v2 02/14] dm: kill dm_rq_bio_destructor Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:19 ` [dm-devel] " Jun'ichi Nomura
2012-05-24 0:19 ` [Drbd-dev] " Jun'ichi Nomura
[not found] ` <4FBD7E80.4020005-JhyGz2TFV9J8UrSeD/g0lQ@public.gmane.org>
2012-05-24 0:39 ` Kent Overstreet
2012-05-24 0:39 ` Kent Overstreet
2012-05-24 0:39 ` [Drbd-dev] " Kent Overstreet
[not found] ` <20120524003915.GA27443-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 1:16 ` Jun'ichi Nomura
2012-05-24 1:16 ` Jun'ichi Nomura
2012-05-24 1:16 ` [Drbd-dev] " Jun'ichi Nomura
[not found] ` <4FBD8BD9.8070708-JhyGz2TFV9J8UrSeD/g0lQ@public.gmane.org>
2012-05-24 1:39 ` Jun'ichi Nomura
2012-05-24 1:39 ` Jun'ichi Nomura
2012-05-24 1:39 ` [Drbd-dev] " Jun'ichi Nomura
2012-05-24 23:33 ` Kent Overstreet [this message]
2012-05-24 23:33 ` Kent Overstreet
2012-05-24 23:33 ` [Drbd-dev] " Kent Overstreet
[not found] ` <1337817771-25038-3-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 16:11 ` Tejun Heo
2012-05-24 16:11 ` Tejun Heo
2012-05-24 16:11 ` [Drbd-dev] " Tejun Heo
2012-05-24 0:02 ` [PATCH v2 03/14] block: Add bio_clone_bioset() Kent Overstreet
2012-05-24 0:02 ` Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 16:38 ` Tejun Heo
2012-05-24 16:38 ` [Drbd-dev] " Tejun Heo
[not found] ` <1337817771-25038-4-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 18:45 ` Vivek Goyal
2012-05-24 18:45 ` Vivek Goyal
2012-05-24 18:45 ` [Drbd-dev] " Vivek Goyal
[not found] ` <20120524184507.GD27550-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-24 23:35 ` Kent Overstreet
2012-05-24 23:35 ` Kent Overstreet
2012-05-24 23:35 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 04/14] block: Add bio_clone_kmalloc() Kent Overstreet
2012-05-24 0:02 ` Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 18:59 ` Vivek Goyal
2012-05-24 18:59 ` [Drbd-dev] " Vivek Goyal
[not found] ` <20120524185919.GE27550-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-24 21:41 ` Yehuda Sadeh
2012-05-24 21:41 ` Yehuda Sadeh
2012-05-24 21:41 ` [Drbd-dev] " Yehuda Sadeh
2012-05-25 0:31 ` Kent Overstreet
2012-05-25 0:31 ` Kent Overstreet
2012-05-25 0:31 ` [Drbd-dev] " Kent Overstreet
[not found] ` <1337817771-25038-1-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 0:02 ` [PATCH v2 05/14] block: Only clone bio vecs that are in use Kent Overstreet
2012-05-24 0:02 ` Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 08/14] block: Kill bi_destructor Kent Overstreet
2012-05-24 0:02 ` Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 19:52 ` Vivek Goyal
2012-05-24 19:52 ` [Drbd-dev] " Vivek Goyal
2012-05-24 19:58 ` Vivek Goyal
2012-05-24 19:58 ` [dm-devel] " Vivek Goyal
2012-05-24 19:58 ` [Drbd-dev] " Vivek Goyal
2012-05-24 20:00 ` Kent Overstreet
2012-05-24 20:00 ` [Drbd-dev] " Kent Overstreet
[not found] ` <20120524195202.GG27550-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-25 6:43 ` Boaz Harrosh
2012-05-25 6:43 ` Boaz Harrosh
2012-05-25 6:43 ` Boaz Harrosh
2012-05-25 6:43 ` [Drbd-dev] " Boaz Harrosh
2012-05-24 0:02 ` [PATCH v2 06/14] block: Add bio_reset() Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 07/14] pktcdvd: Switch to bio_kmalloc() Kent Overstreet
2012-05-24 0:02 ` Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
[not found] ` <1337817771-25038-8-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 19:42 ` Vivek Goyal
2012-05-24 19:42 ` Vivek Goyal
2012-05-24 19:42 ` [Drbd-dev] " Vivek Goyal
2012-05-24 19:55 ` Kent Overstreet
2012-05-24 19:55 ` Kent Overstreet
2012-05-24 19:55 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 09/14] block: Add an explicit bio flag for bios that own their bvec Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
[not found] ` <1337817771-25038-10-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 16:57 ` Boaz Harrosh
2012-05-24 16:57 ` Boaz Harrosh
2012-05-24 16:57 ` Boaz Harrosh
2012-05-24 16:57 ` [Drbd-dev] " Boaz Harrosh
[not found] ` <4FBE687E.1030605-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
2012-05-24 21:31 ` Kent Overstreet
2012-05-24 21:31 ` Kent Overstreet
2012-05-24 21:31 ` [Drbd-dev] " Kent Overstreet
[not found] ` <20120524213158.GB22664-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-25 16:49 ` Vivek Goyal
2012-05-25 16:49 ` Vivek Goyal
2012-05-25 16:49 ` [Drbd-dev] " Vivek Goyal
[not found] ` <20120525164914.GE3855-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-25 20:01 ` Kent Overstreet
2012-05-25 20:01 ` Kent Overstreet
2012-05-25 20:01 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 10/14] block: Rename bio_split() -> bio_pair_split() Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 11/14] block: Rework bio splitting Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 16:56 ` Boaz Harrosh
2012-05-24 16:56 ` Boaz Harrosh
2012-05-24 16:56 ` [Drbd-dev] " Boaz Harrosh
2012-05-24 21:27 ` Kent Overstreet
2012-05-24 21:27 ` [Drbd-dev] " Kent Overstreet
[not found] ` <4FBE6823.50904-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org>
2012-05-25 18:48 ` Vivek Goyal
2012-05-25 18:48 ` Vivek Goyal
2012-05-25 18:48 ` [Drbd-dev] " Vivek Goyal
2012-05-24 0:02 ` [PATCH v2 12/14] Closures Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:47 ` Joe Perches
2012-05-24 0:47 ` [Drbd-dev] " Joe Perches
2012-05-24 1:16 ` Kent Overstreet
2012-05-24 1:16 ` [Drbd-dev] " Kent Overstreet
[not found] ` <20120524011654.GA28662-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-24 1:23 ` Joe Perches
2012-05-24 1:23 ` Joe Perches
2012-05-24 1:23 ` [Drbd-dev] " Joe Perches
[not found] ` <1337817771-25038-13-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-24 7:39 ` Leen Besselink
2012-05-25 22:54 ` Andi Kleen
2012-05-25 22:54 ` Andi Kleen
2012-05-25 22:54 ` [Drbd-dev] " Andi Kleen
2012-05-24 0:02 ` [PATCH v2 13/14] Make generic_make_request handle arbitrarily large bios Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " Kent Overstreet
2012-05-24 0:02 ` [PATCH v2 14/14] Gut bio_add_page() Kent Overstreet
2012-05-24 0:02 ` [Drbd-dev] " 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=20120524233307.GD22664@google.com \
--to=koverstreet-hpiqsd4aklfqt0dzr+alfa@public.gmane.org \
--cc=agk-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org \
--cc=bharrosh-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org \
--cc=dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=drbd-dev-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org \
--cc=j-nomura-JhyGz2TFV9J8UrSeD/g0lQ@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=mpatocka-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=sage-BnTBU8nroG7k1uMJSBkQmQ@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=yehuda-L5o5AL9CYN0tUFlbccrkMA@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.