On Tue, August 4, 2009 6:54 am, Sage Weil wrote: > The kzalloc mempool does not re-zero items that have been used and then > returned to the pool. Manually zero the allocated multipath_bh instead. > > CC: linux-raid@xxxxxxxxxxxxxxx > CC: Neil Brown <neilb@xxxxxxx> Acked-by: NeilBrown <neilb@xxxxxxx> Thanks. In fact, you don't even need the memset. After allocation no assumptions are made about the content of the structure. Every field is immediately initialised except retry_list, which is never accessed until after the object is placed on a list.h list. So this code never needed kzalloc_pool. Thanks, NeilBrown > CC: <stable@xxxxxxxxxx> > Signed-off-by: Sage Weil <sage@xxxxxxxxxxxx> > --- > drivers/md/multipath.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c > index 237fe3f..151ce69 100644 > --- a/drivers/md/multipath.c > +++ b/drivers/md/multipath.c > @@ -150,6 +150,7 @@ static int multipath_make_request (struct > request_queue *q, struct bio * bio) > } > > mp_bh = mempool_alloc(conf->pool, GFP_NOIO); > + memset(mp_bh, 0, sizeof(*mp_bh)); > > mp_bh->master_bio = bio; > mp_bh->mddev = mddev; > @@ -490,7 +491,7 @@ static int multipath_run (mddev_t *mddev) > } > mddev->degraded = conf->raid_disks - conf->working_disks; > > - conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS, > + conf->pool = mempool_create_kmalloc_pool(NR_RESERVED_BUFS, > sizeof(struct multipath_bh)); > if (conf->pool == NULL) { > printk(KERN_ERR > -- > 1.5.6.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html