diff options
Diffstat (limited to 'fs/ocfs2/buffer_head_io.c')
| -rw-r--r-- | fs/ocfs2/buffer_head_io.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c index 1edcb141f639..fe50ded1b4ce 100644 --- a/fs/ocfs2/buffer_head_io.c +++ b/fs/ocfs2/buffer_head_io.c @@ -316,6 +316,12 @@ int ocfs2_read_blocks(struct ocfs2_caching_info *ci, u64 block, int nr,  		bh = bhs[i];  		if (!(flags & OCFS2_BH_READAHEAD)) { +			if (status) { +				/* Clear the rest of the buffers on error */ +				put_bh(bh); +				bhs[i] = NULL; +				continue; +			}  			/* We know this can't have changed as we hold the  			 * owner sem. Avoid doing any work on the bh if the  			 * journal has it. */  |