Message ID | 20171001132633.GA5783@hercules.tuxera.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> On 1 Oct 2017, at 15.26, Rakesh Pandit <rakesh@tuxera.com> wrote: > > If pblk_core_init fails lets destroy all global caches. > > Signed-off-by: Rakesh Pandit <rakesh@tuxera.com> > --- > drivers/lightnvm/pblk-init.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c > index 519e5cf..9f39800 100644 > --- a/drivers/lightnvm/pblk-init.c > +++ b/drivers/lightnvm/pblk-init.c > @@ -246,7 +246,7 @@ static int pblk_core_init(struct pblk *pblk) > pblk->page_bio_pool = mempool_create_page_pool(nvm_max_phys_sects(dev), > 0); > if (!pblk->page_bio_pool) > - return -ENOMEM; > + goto free_global_caches; > > pblk->gen_ws_pool = mempool_create_slab_pool(PBLK_GEN_WS_POOL_SIZE, > pblk_ws_cache); > @@ -314,6 +314,12 @@ static int pblk_core_init(struct pblk *pblk) > mempool_destroy(pblk->gen_ws_pool); > free_page_bio_pool: > mempool_destroy(pblk->page_bio_pool); > +free_global_caches: > + kmem_cache_destroy(pblk_ws_cache); > + kmem_cache_destroy(pblk_rec_cache); > + kmem_cache_destroy(pblk_g_rq_cache); > + kmem_cache_destroy(pblk_e_rq_cache); > + kmem_cache_destroy(pblk_w_rq_cache); > return -ENOMEM; > } > > -- > 2.7.4 Looks good. I'll refactor it on a single function so that we can reuse it on tear down. It will also be simpler to add/remove caches in the future. Since it depends on the last patch, I'll wait until you reply to it before making the changes. Javier
On Mon, Oct 02, 2017 at 02:44:23PM +0200, Javier González wrote: > > On 1 Oct 2017, at 15.26, Rakesh Pandit <rakesh@tuxera.com> wrote: > > > > If pblk_core_init fails lets destroy all global caches. > > > > Signed-off-by: Rakesh Pandit <rakesh@tuxera.com> > > --- > > drivers/lightnvm/pblk-init.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c > > index 519e5cf..9f39800 100644 > > --- a/drivers/lightnvm/pblk-init.c > > +++ b/drivers/lightnvm/pblk-init.c > > @@ -246,7 +246,7 @@ static int pblk_core_init(struct pblk *pblk) > > pblk->page_bio_pool = mempool_create_page_pool(nvm_max_phys_sects(dev), > > 0); > > if (!pblk->page_bio_pool) > > - return -ENOMEM; > > + goto free_global_caches; > > > > pblk->gen_ws_pool = mempool_create_slab_pool(PBLK_GEN_WS_POOL_SIZE, > > pblk_ws_cache); > > @@ -314,6 +314,12 @@ static int pblk_core_init(struct pblk *pblk) > > mempool_destroy(pblk->gen_ws_pool); > > free_page_bio_pool: > > mempool_destroy(pblk->page_bio_pool); > > +free_global_caches: > > + kmem_cache_destroy(pblk_ws_cache); > > + kmem_cache_destroy(pblk_rec_cache); > > + kmem_cache_destroy(pblk_g_rq_cache); > > + kmem_cache_destroy(pblk_e_rq_cache); > > + kmem_cache_destroy(pblk_w_rq_cache); > > return -ENOMEM; > > } > > > > -- > > 2.7.4 > > Looks good. I'll refactor it on a single function so that we can reuse > it on tear down. It will also be simpler to add/remove caches in the > future. > > Since it depends on the last patch, I'll wait until you reply to it > before making the changes. Please go ahead. Now that previous patch is can be ignored, you can adjust accordingly. Thank you. > > Javier
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c index 519e5cf..9f39800 100644 --- a/drivers/lightnvm/pblk-init.c +++ b/drivers/lightnvm/pblk-init.c @@ -246,7 +246,7 @@ static int pblk_core_init(struct pblk *pblk) pblk->page_bio_pool = mempool_create_page_pool(nvm_max_phys_sects(dev), 0); if (!pblk->page_bio_pool) - return -ENOMEM; + goto free_global_caches; pblk->gen_ws_pool = mempool_create_slab_pool(PBLK_GEN_WS_POOL_SIZE, pblk_ws_cache); @@ -314,6 +314,12 @@ static int pblk_core_init(struct pblk *pblk) mempool_destroy(pblk->gen_ws_pool); free_page_bio_pool: mempool_destroy(pblk->page_bio_pool); +free_global_caches: + kmem_cache_destroy(pblk_ws_cache); + kmem_cache_destroy(pblk_rec_cache); + kmem_cache_destroy(pblk_g_rq_cache); + kmem_cache_destroy(pblk_e_rq_cache); + kmem_cache_destroy(pblk_w_rq_cache); return -ENOMEM; }
If pblk_core_init fails lets destroy all global caches. Signed-off-by: Rakesh Pandit <rakesh@tuxera.com> --- drivers/lightnvm/pblk-init.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)