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 patch on all the machines where you hit the bug and if you still hit the bug with this patch, report it.
I've tested it for a bit and did not hit the issue again.
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))