aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ext3/inode.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
index 74b432fa166b..36f74f17a11c 100644
--- a/fs/ext3/inode.c
+++ b/fs/ext3/inode.c
@@ -2521,6 +2521,16 @@ static int __ext3_get_inode_loc(struct inode *inode,
2521 } 2521 }
2522 if (!buffer_uptodate(bh)) { 2522 if (!buffer_uptodate(bh)) {
2523 lock_buffer(bh); 2523 lock_buffer(bh);
2524
2525 /*
2526 * If the buffer has the write error flag, we have failed
2527 * to write out another inode in the same block. In this
2528 * case, we don't have to read the block because we may
2529 * read the old inode data successfully.
2530 */
2531 if (buffer_write_io_error(bh) && !buffer_uptodate(bh))
2532 set_buffer_uptodate(bh);
2533
2524 if (buffer_uptodate(bh)) { 2534 if (buffer_uptodate(bh)) {
2525 /* someone brought it uptodate while we waited */ 2535 /* someone brought it uptodate while we waited */
2526 unlock_buffer(bh); 2536 unlock_buffer(bh);