Re: [PATCH] mm/page_io: Use pr_alert_ratelimited for swap read/write errors

From: Miaohe Lin
Date: Mon Feb 01 2021 - 21:16:33 EST


Hi:
On 2021/2/1 22:20, Georgi Djakov wrote:
> If there are errors during swap read or write, they can easily fill
> the log buffer and remove any previous messages that might be useful
> for debugging, especially on systems that rely for logging only on
> the kernel ring-buffer.
>
> For example, on a systems using zram as swap, we are more likely to
> see any page allocation errors preceding the swap write errors if the
> alerts are ratelimited.
>
> Signed-off-by: Georgi Djakov <georgi.djakov@xxxxxxxxxx>

Make sense for me. Thanks.
Reviewed-by: Miaohe Lin <linmiaohe@xxxxxxxxxx>

> ---
> mm/page_io.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/mm/page_io.c b/mm/page_io.c
> index 92f7941c6d01..485fa5cca4a2 100644
> --- a/mm/page_io.c
> +++ b/mm/page_io.c
> @@ -41,9 +41,9 @@ void end_swap_bio_write(struct bio *bio)
> * Also clear PG_reclaim to avoid rotate_reclaimable_page()
> */
> set_page_dirty(page);
> - pr_alert("Write-error on swap-device (%u:%u:%llu)\n",
> - MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)),
> - (unsigned long long)bio->bi_iter.bi_sector);
> + pr_alert_ratelimited("Write-error on swap-device (%u:%u:%llu)\n",
> + MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)),
> + (unsigned long long)bio->bi_iter.bi_sector);
> ClearPageReclaim(page);
> }
> end_page_writeback(page);
> @@ -106,9 +106,9 @@ static void end_swap_bio_read(struct bio *bio)
> if (bio->bi_status) {
> SetPageError(page);
> ClearPageUptodate(page);
> - pr_alert("Read-error on swap-device (%u:%u:%llu)\n",
> - MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)),
> - (unsigned long long)bio->bi_iter.bi_sector);
> + pr_alert_ratelimited("Read-error on swap-device (%u:%u:%llu)\n",
> + MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)),
> + (unsigned long long)bio->bi_iter.bi_sector);
> goto out;
> }
>
>
> .
>