On Fri, Oct 27, 2023 at 07:32:54PM +0200, Mikulas Patocka wrote:
So, we got no reponse from the MM maintainers. Marek - please try this
yes, how dare i go on holiday. i'll look at this when i'm back. probably.
patch on all the machines where you hit the bug and if you still hit the bug with this patch, report it.
Mikulas
From: Mikulas Patocka mpatocka@redhat.com Subject: [PATCH] dm-crypt: don't allocate large compound pages
It was reported that the patch 5054e778fcd9cd29ddaa8109077cd235527e4f94 ("dm crypt: allocate compound pages if possible") causes intermittent freezes [1].
So far, it is not clear what is the root cause. It was reported that with the allocation order 3 or lower it works [1], so we restrict the order to 3 (that is PAGE_ALLOC_COSTLY_ORDER).
[1] https://www.spinics.net/lists/dm-devel/msg56048.html
Signed-off-by: Mikulas Patocka mpatocka@redhat.com Reported-by: Marek Marczykowski-Górecki marmarek@invisiblethingslab.com Tested-by: Marek Marczykowski-Górecki marmarek@invisiblethingslab.com Cc: stable@vger.kernel.org # v6.5+ Fixes: 5054e778fcd9 ("dm crypt: allocate compound pages if possible")
drivers/md/dm-crypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-2.6/drivers/md/dm-crypt.c
--- linux-2.6.orig/drivers/md/dm-crypt.c +++ linux-2.6/drivers/md/dm-crypt.c @@ -1679,7 +1679,7 @@ static struct bio *crypt_alloc_buffer(st unsigned int nr_iovecs = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; gfp_t gfp_mask = GFP_NOWAIT | __GFP_HIGHMEM; unsigned int remaining_size;
- unsigned int order = MAX_ORDER - 1;
- unsigned int order = PAGE_ALLOC_COSTLY_ORDER;
retry: if (unlikely(gfp_mask & __GFP_DIRECT_RECLAIM))