diff options
Diffstat (limited to 'fs/buffer.c')
| -rw-r--r-- | fs/buffer.c | 38 | 
1 files changed, 9 insertions, 29 deletions
| diff --git a/fs/buffer.c b/fs/buffer.c index 6c48f20eddd4..20805db2c987 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -128,21 +128,15 @@ __clear_page_buffers(struct page *page)  	page_cache_release(page);  } - -static int quiet_error(struct buffer_head *bh) -{ -	if (!test_bit(BH_Quiet, &bh->b_state) && printk_ratelimit()) -		return 0; -	return 1; -} - - -static void buffer_io_error(struct buffer_head *bh) +static void buffer_io_error(struct buffer_head *bh, char *msg)  {  	char b[BDEVNAME_SIZE]; -	printk(KERN_ERR "Buffer I/O error on device %s, logical block %Lu\n", + +	if (!test_bit(BH_Quiet, &bh->b_state)) +		printk_ratelimited(KERN_ERR +			"Buffer I/O error on dev %s, logical block %llu%s\n",  			bdevname(bh->b_bdev, b), -			(unsigned long long)bh->b_blocknr); +			(unsigned long long)bh->b_blocknr, msg);  }  /* @@ -177,17 +171,10 @@ EXPORT_SYMBOL(end_buffer_read_sync);  void end_buffer_write_sync(struct buffer_head *bh, int uptodate)  { -	char b[BDEVNAME_SIZE]; -  	if (uptodate) {  		set_buffer_uptodate(bh);  	} else { -		if (!quiet_error(bh)) { -			buffer_io_error(bh); -			printk(KERN_WARNING "lost page write due to " -					"I/O error on %s\n", -				       bdevname(bh->b_bdev, b)); -		} +		buffer_io_error(bh, ", lost sync page write");  		set_buffer_write_io_error(bh);  		clear_buffer_uptodate(bh);  	} @@ -304,8 +291,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)  		set_buffer_uptodate(bh);  	} else {  		clear_buffer_uptodate(bh); -		if (!quiet_error(bh)) -			buffer_io_error(bh); +		buffer_io_error(bh, ", async page read");  		SetPageError(page);  	} @@ -353,7 +339,6 @@ still_busy:   */  void end_buffer_async_write(struct buffer_head *bh, int uptodate)  { -	char b[BDEVNAME_SIZE];  	unsigned long flags;  	struct buffer_head *first;  	struct buffer_head *tmp; @@ -365,12 +350,7 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate)  	if (uptodate) {  		set_buffer_uptodate(bh);  	} else { -		if (!quiet_error(bh)) { -			buffer_io_error(bh); -			printk(KERN_WARNING "lost page write due to " -					"I/O error on %s\n", -			       bdevname(bh->b_bdev, b)); -		} +		buffer_io_error(bh, ", lost async page write");  		set_bit(AS_EIO, &page->mapping->flags);  		set_buffer_write_io_error(bh);  		clear_buffer_uptodate(bh); | 
