|
@@ -137,12 +137,12 @@ static int quiet_error(struct buffer_head *bh)
|
|
|
}
|
|
|
|
|
|
|
|
|
-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",
|
|
|
+ printk(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 +177,11 @@ 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));
|
|
|
- }
|
|
|
+ if (!quiet_error(bh))
|
|
|
+ buffer_io_error(bh, ", lost sync page write");
|
|
|
set_buffer_write_io_error(bh);
|
|
|
clear_buffer_uptodate(bh);
|
|
|
}
|
|
@@ -305,7 +299,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
|
|
|
} else {
|
|
|
clear_buffer_uptodate(bh);
|
|
|
if (!quiet_error(bh))
|
|
|
- buffer_io_error(bh);
|
|
|
+ buffer_io_error(bh, ", async page read");
|
|
|
SetPageError(page);
|
|
|
}
|
|
|
|
|
@@ -353,7 +347,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 +358,8 @@ 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));
|
|
|
- }
|
|
|
+ if (!quiet_error(bh))
|
|
|
+ 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);
|