Re: [PATCH v2] mm/hugetlb: Defer freeing of huge pages if in non-task context

From: Mike Kravetz
Date: Tue Dec 17 2019 - 13:34:38 EST


On 12/17/19 1:31 AM, Michal Hocko wrote:
> On Mon 16-12-19 20:25:08, Waiman Long wrote:
> [...]
>> Both the hugetbl_lock and the subpool lock can be acquired in
>> free_huge_page(). One way to solve the problem is to make both locks
>> irq-safe.
>
> Please document why we do not take this, quite natural path and instead
> we have to come up with an elaborate way instead. I believe the primary
> motivation is that some operations under those locks are quite
> expensive. Please add that to the changelog and ideally to the code as
> well. We probably want to fix those anyway and then this would be a
> temporary workaround.

We may have talked in the past about how hugetlbfs locking is not ideal.
However, there are many things in hugetlbfs that are not ideal. :( The
thought was to avoid making changes unless they showed up as real problems.
Looks like the locking is now a real issue.

I'll start work on restructuring at least this part of the locking. But,
let's move forward with the deferred freeing approach until that is ready.
--
Mike Kravetz