X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmd%2Fmultipath.c;h=96f7af4ae400ad4eaa2dd7d47d9e1a1ce1ca3efa;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=1cc9de44ce86c2cce64c58fb72d8b3f33245a83f;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c index 1cc9de44c..96f7af4ae 100644 --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c @@ -35,6 +35,18 @@ #define NR_RESERVED_BUFS 32 +static void *mp_pool_alloc(gfp_t gfp_flags, void *data) +{ + struct multipath_bh *mpb; + mpb = kzalloc(sizeof(*mpb), gfp_flags); + return mpb; +} + +static void mp_pool_free(void *mpb, void *data) +{ + kfree(mpb); +} + static int multipath_map (multipath_conf_t *conf) { int i, disks = conf->raid_disks; @@ -482,8 +494,9 @@ static int multipath_run (mddev_t *mddev) } mddev->degraded = conf->raid_disks = conf->working_disks; - conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS, - sizeof(struct multipath_bh)); + conf->pool = mempool_create(NR_RESERVED_BUFS, + mp_pool_alloc, mp_pool_free, + NULL); if (conf->pool == NULL) { printk(KERN_ERR "multipath: couldn't allocate memory for %s\n",