Messages in this thread | | | Subject | Re: [PATCH] lightnvm: pblk: use vfree_atomic when freeing line metadata | From | Andrey Ryabinin <> | Date | Tue, 3 Oct 2017 17:20:20 +0300 |
| |
On 10/03/2017 05:11 PM, Javier González wrote: >> On 3 Oct 2017, at 16.07, Andrey Ryabinin <aryabinin@virtuozzo.com> wrote: >> >> >> >> On 10/03/2017 04:48 PM, Hans Holmberg wrote: >>> From: Hans Holmberg <hans.holmberg@cnexlabs.com> >>> >>> The commit bf22e37a6413 ("mm: add vfree_atomic()") made vfree unsafe to >>> call in atomic context (unless the call came from an interrupt) and >>> introduced vfree_atomic that is safe to call in atomic context. >>> >>> So, since we're holding locks when freeing line metadata, we need to >>> use the atomic version of vfree. >>> >>> Fix this by introducing an atomic variant of pblk_mfree and >>> switching to that in pblk_line_meta_free. >>> >>> Signed-off-by: Hans Holmberg <hans.holmberg@cnexlabs.com> >>> --- >>> >>> The patch is for: >>> https://github.com/OpenChannelSSD/linux branch for-4.15/pblk >>> >>> drivers/lightnvm/pblk-init.c | 3 ++- >>> drivers/lightnvm/pblk.h | 8 ++++++++ >>> 2 files changed, 10 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c >>> index c452478..3a191a6 100644 >>> --- a/drivers/lightnvm/pblk-init.c >>> +++ b/drivers/lightnvm/pblk-init.c >>> @@ -396,7 +396,8 @@ static void pblk_line_meta_free(struct pblk *pblk) >>> spin_lock(&l_mg->free_lock); >> >> What's the point in holding ->free_lock here? It seems like it could be just dropped. >> > > This lock can indeed be dropped,
So, let's do this. This would be the best way to fix this.
> but the general pblk semaphore, which > serializes initialization and tear down cannot. This is taken on > pblk_exit(). >
But semaphore is not the problem here. We can sleep under semaphore, so it's fine.
> Javier >
| |