diff options
Diffstat (limited to 'drivers/md/raid5.c')
| -rw-r--r-- | drivers/md/raid5.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 24909eb13fe..f4e87bfc756 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -184,6 +184,8 @@ static void return_io(struct bio *return_bi)  		return_bi = bi->bi_next;  		bi->bi_next = NULL;  		bi->bi_size = 0; +		trace_block_bio_complete(bdev_get_queue(bi->bi_bdev), +					 bi, 0);  		bio_endio(bi, 0);  		bi = return_bi;  	} @@ -3914,6 +3916,8 @@ static void raid5_align_endio(struct bio *bi, int error)  	rdev_dec_pending(rdev, conf->mddev);  	if (!error && uptodate) { +		trace_block_bio_complete(bdev_get_queue(raid_bi->bi_bdev), +					 raid_bi, 0);  		bio_endio(raid_bi, 0);  		if (atomic_dec_and_test(&conf->active_aligned_reads))  			wake_up(&conf->wait_for_stripe); @@ -4382,6 +4386,8 @@ static void make_request(struct mddev *mddev, struct bio * bi)  		if ( rw == WRITE )  			md_write_end(mddev); +		trace_block_bio_complete(bdev_get_queue(bi->bi_bdev), +					 bi, 0);  		bio_endio(bi, 0);  	}  } @@ -4758,8 +4764,11 @@ static int  retry_aligned_read(struct r5conf *conf, struct bio *raid_bio)  		handled++;  	}  	remaining = raid5_dec_bi_active_stripes(raid_bio); -	if (remaining == 0) +	if (remaining == 0) { +		trace_block_bio_complete(bdev_get_queue(raid_bio->bi_bdev), +					 raid_bio, 0);  		bio_endio(raid_bio, 0); +	}  	if (atomic_dec_and_test(&conf->active_aligned_reads))  		wake_up(&conf->wait_for_stripe);  	return handled;  |