aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/inode.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 9843b046c235..efe8caa3811c 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -3590,6 +3590,16 @@ static int __ext4_get_inode_loc(struct inode *inode,
3590 } 3590 }
3591 if (!buffer_uptodate(bh)) { 3591 if (!buffer_uptodate(bh)) {
3592 lock_buffer(bh); 3592 lock_buffer(bh);
3593
3594 /*
3595 * If the buffer has the write error flag, we have failed
3596 * to write out another inode in the same block. In this
3597 * case, we don't have to read the block because we may
3598 * read the old inode data successfully.
3599 */
3600 if (buffer_write_io_error(bh) && !buffer_uptodate(bh))
3601 set_buffer_uptodate(bh);
3602
3593 if (buffer_uptodate(bh)) { 3603 if (buffer_uptodate(bh)) {
3594 /* someone brought it uptodate while we waited */ 3604 /* someone brought it uptodate while we waited */
3595 unlock_buffer(bh); 3605 unlock_buffer(bh);