diff options
Diffstat (limited to 'fs/block_dev.c')
| -rw-r--r-- | fs/block_dev.c | 8 | 
1 files changed, 4 insertions, 4 deletions
| diff --git a/fs/block_dev.c b/fs/block_dev.c index 78d3257435c0..24615c76c1d0 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -307,10 +307,10 @@ static void blkdev_bio_end_io(struct bio *bio)  	struct blkdev_dio *dio = bio->bi_private;  	bool should_dirty = dio->should_dirty; -	if (dio->multi_bio && !atomic_dec_and_test(&dio->ref)) { -		if (bio->bi_status && !dio->bio.bi_status) -			dio->bio.bi_status = bio->bi_status; -	} else { +	if (bio->bi_status && !dio->bio.bi_status) +		dio->bio.bi_status = bio->bi_status; + +	if (!dio->multi_bio || atomic_dec_and_test(&dio->ref)) {  		if (!dio->is_sync) {  			struct kiocb *iocb = dio->iocb;  			ssize_t ret; |