Message ID | alpine.LRH.2.02.1905091252300.19234@file01.intranet.prod.int.rdu2.redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | brd: add cond_resched to brd_free_pages | expand |
On 5/9/19 10:54 AM, Mikulas Patocka wrote: > The loop that frees all the pages can take unbounded amount of time, so > add cond_resched() to it. Looks fine to me, would be nice with a comment on why the cond_resched() is needed though.
On Thu, 9 May 2019, Jens Axboe wrote: > On 5/9/19 10:54 AM, Mikulas Patocka wrote: > > The loop that frees all the pages can take unbounded amount of time, so > > add cond_resched() to it. > > Looks fine to me, would be nice with a comment on why the cond_resched() > is needed though. > > -- > Jens Axboe OK - here I added the comment. Mikulas From: Mikulas Patocka <mpatocka@redhat.com> Subject: [PATCH] brd: add cond_resched to brd_free_pages The loop that frees all the pages can take unbounded amount of time, so add cond_resched() to it. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> --- drivers/block/brd.c | 6 ++++++ 1 file changed, 6 insertions(+) Index: linux-2.6/drivers/block/brd.c =================================================================== --- linux-2.6.orig/drivers/block/brd.c 2019-05-09 20:46:23.000000000 +0200 +++ linux-2.6/drivers/block/brd.c 2019-05-09 20:47:43.000000000 +0200 @@ -158,6 +158,12 @@ static void brd_free_pages(struct brd_de pos++; /* + * It takes 3.4 seconds to remove 80GiB ramdisk. + * So, we need cond_resched to avoid stalling the CPU. + */ + cond_resched(); + + /* * This assumes radix_tree_gang_lookup always returns as * many pages as possible. If the radix-tree code changes, * so will this have to.
On 5/9/19 12:50 PM, Mikulas Patocka wrote: > > > On Thu, 9 May 2019, Jens Axboe wrote: > >> On 5/9/19 10:54 AM, Mikulas Patocka wrote: >>> The loop that frees all the pages can take unbounded amount of time, so >>> add cond_resched() to it. >> >> Looks fine to me, would be nice with a comment on why the cond_resched() >> is needed though. >> >> -- >> Jens Axboe > > OK - here I added the comment. Great thanks, applied.
Index: linux-4.19.41/drivers/block/brd.c =================================================================== --- linux-4.19.41.orig/drivers/block/brd.c 2019-01-22 12:26:42.000000000 +0100 +++ linux-4.19.41/drivers/block/brd.c 2019-05-09 17:09:11.000000000 +0200 @@ -157,6 +157,8 @@ static void brd_free_pages(struct brd_de pos++; + cond_resched(); + /* * This assumes radix_tree_gang_lookup always returns as * many pages as possible. If the radix-tree code changes,
The loop that frees all the pages can take unbounded amount of time, so add cond_resched() to it. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> --- drivers/block/brd.c | 2 ++ 1 file changed, 2 insertions(+)