• [PATCH 6/6] lightnvm: pblk: fix releases of kmem cache in error pat

    From =?utf-8?Q?Javier_Gonz=C3=A1lez?=@21:1/5 to All on Mon Oct 2 14:50:03 2017
    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

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEEm1mT7zen+vs9+T8kYx8FO3WZGMoFAlnSNKcACgkQYx8FO3WZ GMplUQ//dUvtSpZ80+wk9nh+7VdQfy1LPDxG/d/1RoAW5ScFzOHdNCRTGgt24bGf hfk5TKujKeQH3PvCFPRO9xsKGeprrw1BvWCfCKiCb/C3/ekIsOK+9zOyKWZ9V87e h1AinaD5JvJd/PpkQAJv10H4uLXHg74XwA1URihTNWBkSxUwaDQK/x45+iuM1icC 4/grOmye0TxCjNRl24YDLNJdyVOy5SlLCfyxdrU6qn6QD4uiYoQe/RVnCCMFySOK cAk1p+yMxD8z5cAG05pE2Ve5i+2SkhwNIw8kDmTj16rh5DoWtpbnYek4AAUTPpgq E54PbdgQZvkhGQ9N+gftQJMHsaGATFDBfo/v6luANNxPgKnreXbaz8p4tjUybS+w RLieahSXLjZiyn4Ps8aSTdXBnooFCdmmlRMuk9oxuupv0NiJr+AncIgDyQ16m03/ 47zpxMedFLVOyi5wg/EGNNU5zZjkcMz3SBOn1Sjlbidz39zWxn5TVtdNPEaCiAMS nzYkDJ/7Vb2kVJso4H+pf05xapnrAyM4sO0mO6HyPz6yJfRkE5ePaz9a5CSkMJoL e2Ir+Yhs64et8RTPhGf57xh9lIvpY98qmCKWkasJvyl68laKk8mpNeESkA/crj8P MKD3hv11OXMokSGmF+0bXPo37vq1hfB8ko8vgZjalZZPaWCaOm8=
    =Frne
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rakesh Pandit@21:1/5 to All on Mon Oct 2 22:50:10 2017
    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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)