]> www.infradead.org Git - linux-platform-drivers-x86.git/commitdiff
mm/page_io: use pr_alert_ratelimited for swap read/write errors
authorGeorgi Djakov <georgi.djakov@linaro.org>
Wed, 24 Feb 2021 20:03:01 +0000 (12:03 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 24 Feb 2021 21:38:29 +0000 (13:38 -0800)
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.

Link: https://lkml.kernel.org/r/20210201142055.29068-1-georgi.djakov@linaro.org
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
Acked-by: Minchan Kim <minchan@kernel.org>
Reviewed-by: Miaohe Lin <linmiaohe@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/page_io.c

index 92f7941c6d018b25d89b46b4f53fe56807ddf2cf..485fa5cca4a29b554bac817b8d31a15329f8f4d8 100644 (file)
@@ -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;
        }