diff options
Diffstat (limited to 'fs/btrfs/ordered-data.c')
| -rw-r--r-- | fs/btrfs/ordered-data.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index ecb9fb6a6fe0..a65f189a5b94 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c @@ -679,10 +679,15 @@ int btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len)  		}  		btrfs_start_ordered_extent(inode, ordered, 1);  		end = ordered->file_offset; +		/* +		 * If the ordered extent had an error save the error but don't +		 * exit without waiting first for all other ordered extents in +		 * the range to complete. +		 */  		if (test_bit(BTRFS_ORDERED_IOERR, &ordered->flags))  			ret = -EIO;  		btrfs_put_ordered_extent(ordered); -		if (ret || end == 0 || end == start) +		if (end == 0 || end == start)  			break;  		end--;  	}  |