]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ratelimit I/O error printk's
authorAndrew Morton <akpm@osdl.org>
Tue, 20 Jan 2004 11:16:56 +0000 (03:16 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Tue, 20 Jan 2004 11:16:56 +0000 (03:16 -0800)
Ratelimit a couple of potentially-stormy printk's in the writeback code.

fs/buffer.c

index 64287bebdbf2c00811671f4e66904ca41a495d0e..cb8c281fa0be58bfb57a191b6b54673a68114f8f 100644 (file)
@@ -189,9 +189,12 @@ void end_buffer_write_sync(struct buffer_head *bh, int uptodate)
        if (uptodate) {
                set_buffer_uptodate(bh);
        } else {
-               buffer_io_error(bh);
-               printk(KERN_WARNING "lost page write due to I/O error on %s\n",
-                      bdevname(bh->b_bdev, b));
+               if (printk_ratelimit()) {
+                       buffer_io_error(bh);
+                       printk(KERN_WARNING "lost page write due to "
+                                       "I/O error on %s\n",
+                                      bdevname(bh->b_bdev, b));
+               }
                set_buffer_write_io_error(bh);
                clear_buffer_uptodate(bh);
        }
@@ -572,9 +575,12 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate)
        if (uptodate) {
                set_buffer_uptodate(bh);
        } else {
-               buffer_io_error(bh);
-               printk(KERN_WARNING "lost page write due to I/O error on %s\n",
-                      bdevname(bh->b_bdev, b));
+               if (printk_ratelimit()) {
+                       buffer_io_error(bh);
+                       printk(KERN_WARNING "lost page write due to "
+                                       "I/O error on %s\n",
+                              bdevname(bh->b_bdev, b));
+               }
                set_bit(AS_EIO, &page->mapping->flags);
                clear_buffer_uptodate(bh);
                SetPageError(page);