blk-core: use pr_warn_ratelimited() in bio_check_ro()
authorYu Kuai <yukuai3@huawei.com>
Tue, 7 Nov 2023 11:12:47 +0000 (19:12 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:52:17 +0000 (11:52 +0100)
[ Upstream commit 1b0a151c10a6d823f033023b9fdd9af72a89591b ]

If one of the underlying disks of raid or dm is set to read-only, then
each io will generate new log, which will cause message storm. This
environment is indeed problematic, however we can't make sure our
naive custormer won't do this, hence use pr_warn_ratelimited() to
prevent message storm in this case.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Fixes: 57e95e4670d1 ("block: fix and cleanup bio_check_ro")
Signed-off-by: Ye Bin <yebin10@huawei.com>
Link: https://lore.kernel.org/r/20231107111247.2157820-1-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
block/blk-core.c

index ebb7a1689b2610fb69d93e7a91f485e4ecc35697..6eaf2b0ad7cca7d5b3eb1bc2dd5a42bb9c4e1ca7 100644 (file)
@@ -490,8 +490,8 @@ static inline void bio_check_ro(struct bio *bio)
        if (op_is_write(bio_op(bio)) && bdev_read_only(bio->bi_bdev)) {
                if (op_is_flush(bio->bi_opf) && !bio_sectors(bio))
                        return;
-               pr_warn("Trying to write to read-only block-device %pg\n",
-                       bio->bi_bdev);
+               pr_warn_ratelimited("Trying to write to read-only block-device %pg\n",
+                                   bio->bi_bdev);
                /* Older lvm-tools actually trigger this */
        }
 }