From: Evgeniy Polyakov Date: Mon, 19 Jan 2009 17:20:36 +0000 (+0300) Subject: Staging: DST: optimize bio allocation. X-Git-Tag: v2.6.30-rc1~202^2~491 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=3e5510ab0cd73e37b1bf268ec1ec7a071e08a1d5;p=~emulex%2Finfiniband.git Staging: DST: optimize bio allocation. Use bio prepend feature as suggested by Jens Axboe. Signed-off-by: Evgeniy Polyakov Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/dst/export.c b/drivers/staging/dst/export.c index 122fe7577dc..80ae4ebe610 100644 --- a/drivers/staging/dst/export.c +++ b/drivers/staging/dst/export.c @@ -33,7 +33,7 @@ int __init dst_export_init(void) { int err = -ENOMEM; - dst_bio_set = bioset_create(32, 32); + dst_bio_set = bioset_create(32, sizeof(struct dst_export_priv)); if (!dst_bio_set) goto err_out_exit; @@ -424,12 +424,8 @@ static void dst_bio_destructor(struct bio *bio) __free_page(bv->bv_page); } - if (priv) { - struct dst_node *n = priv->state->node; - + if (priv) dst_state_put(priv->state); - mempool_free(priv, n->trans_pool); - } bio_free(bio, dst_bio_set); } @@ -555,11 +551,8 @@ int dst_process_io(struct dst_state *st) dst_bio_set); if (!bio) goto err_out_exit; - bio->bi_private = NULL; - priv = mempool_alloc(st->node->trans_pool, GFP_KERNEL); - if (!priv) - goto err_out_free; + priv = (struct dst_export_priv *)(((void *)bio) - sizeof (struct dst_export_priv)); priv->state = dst_state_get(st); priv->bio = bio;