dm: move dm_stats_account_io before generic_end_io_acct
Subsystems (2)
Mikulas Patocka
maintainerPATCH 1/3 dm: move dm_stats_account_io before generic_end_io_acct
Make sure that the statistics are not updated while the device is suspended. So, we move statistics update before generic_end_io_acct.
Signed-off-by Mikulas Patocka <[email protected]>
--- drivers/md/dm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/md/dm.c +5 -5
@@ -674,6 +674,11 @@ static void end_io_acct(struct dm_io *iostruct bio *bio = io->orig_bio;unsigned long duration = jiffies - io->start_time; +if (unlikely (dm_stats_used (&md->stats))) +dm_stats_account_io (&md->stats,bio_data_dir (bio), + bio->bi_iter.bi_sector,bio_sectors (bio), + true, duration, &io->stats_aux); +/* * make sure that atomic_dec in generic_end_io_acct is not reordered * with previous writes
@@ -687,11 +692,6 @@ static void end_io_acct(struct dm_io *io*/ smp_mb__after_atomic (); -if (unlikely (dm_stats_used (&md->stats))) -dm_stats_account_io (&md->stats,bio_data_dir (bio), - bio->bi_iter.bi_sector,bio_sectors (bio), - true, duration, &io->stats_aux); -/* nudge anyone waiting on suspend queue */ if (unlikely (waitqueue_active (&md->wait))) {if (!md_in_flight (md))