[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Z6u5OJIQBw8QLGe_@slm.duckdns.org>
Date: Tue, 11 Feb 2025 10:55:20 -1000
From: Tejun Heo <tj@...nel.org>
To: Michal Hocko <mhocko@...nel.org>
Cc: Dennis Zhou <dennis@...nel.org>, Filipe Manana <fdmanana@...e.com>,
Andrew Morton <akpm@...ux-foundation.org>, linux-mm@...ck.org,
LKML <linux-kernel@...r.kernel.org>, Michal Hocko <mhocko@...e.com>
Subject: Re: [PATCH] mm, percpu: do not consider sleepable allocations atomic
Hello, Michal.
On Thu, Feb 06, 2025 at 01:26:33PM +0100, Michal Hocko wrote:
...
> It has turned out that iscsid has worked around this by dropping
> PR_SET_IO_FLUSHER (https://github.com/open-iscsi/open-iscsi/pull/382)
> when scanning host. But we can do better in this case on the kernel side
FWIW, requiring GFP_KERNEL context for probing doesn't sound too crazy to
me.
> @@ -2204,7 +2204,12 @@ static void pcpu_balance_workfn(struct work_struct *work)
> * to grow other chunks. This then gives pcpu_reclaim_populated() time
> * to move fully free chunks to the active list to be freed if
> * appropriate.
> + *
> + * Enforce GFP_NOIO allocations because we have pcpu_alloc users
> + * constrained to GFP_NOIO/NOFS contexts and they could form lock
> + * dependency through pcpu_alloc_mutex
> */
> + unsigned int flags = memalloc_noio_save();
Just for context, the reason why the allocation mask support was limited to
GFP_KERNEL or not rather than supporting full range of GFP flags is because
percpu memory area expansion can involve page table allocations in the
vmalloc area which always uses GFP_KERNEL. memalloc_noio_save() masks IO
part out of that, right? It might be worthwhile to explain why we aren't
passing down GPF flags throughout and instead depending on masking.
Also, doesn't the above always prevent percpu allocations from doing fs/io
reclaims? ie. Shouldn't the masking only be used if the passed in gfp
doesn't allow fs/io?
Thanks.
--
tejun
Powered by blists - more mailing lists