Skip to content

Commit 28be4fd

Browse files
Christoph Hellwigliu-song-6
authored andcommitted
md: add a mddev_add_trace_msg helper
Add a small wrapper around blk_add_trace_msg that hides some argument dereferences and the check for a DM-mapped MD device. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed--by: Song Liu <[email protected]> Tested-by: Song Liu <[email protected]> Signed-off-by: Song Liu <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent c396b90 commit 28be4fd

File tree

6 files changed

+28
-29
lines changed

6 files changed

+28
-29
lines changed

drivers/md/md-bitmap.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,9 +1046,8 @@ void md_bitmap_unplug(struct bitmap *bitmap)
10461046
if (dirty || need_write) {
10471047
if (!writing) {
10481048
md_bitmap_wait_writes(bitmap);
1049-
if (bitmap->mddev->queue)
1050-
blk_add_trace_msg(bitmap->mddev->queue,
1051-
"md bitmap_unplug");
1049+
mddev_add_trace_msg(bitmap->mddev,
1050+
"md bitmap_unplug");
10521051
}
10531052
clear_page_attr(bitmap, i, BITMAP_PAGE_PENDING);
10541053
filemap_write_page(bitmap, i, false);
@@ -1319,9 +1318,7 @@ void md_bitmap_daemon_work(struct mddev *mddev)
13191318
}
13201319
bitmap->allclean = 1;
13211320

1322-
if (bitmap->mddev->queue)
1323-
blk_add_trace_msg(bitmap->mddev->queue,
1324-
"md bitmap_daemon_work");
1321+
mddev_add_trace_msg(bitmap->mddev, "md bitmap_daemon_work");
13251322

13261323
/* Any file-page which is PENDING now needs to be written.
13271324
* So set NEEDWRITE now, then after we make any last-minute changes

drivers/md/md.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2856,8 +2856,7 @@ void md_update_sb(struct mddev *mddev, int force_change)
28562856
pr_debug("md: updating %s RAID superblock on device (in sync %d)\n",
28572857
mdname(mddev), mddev->in_sync);
28582858

2859-
if (mddev->queue)
2860-
blk_add_trace_msg(mddev->queue, "md md_update_sb");
2859+
mddev_add_trace_msg(mddev, "md md_update_sb");
28612860
rewrite:
28622861
md_bitmap_update_sb(mddev->bitmap);
28632862
rdev_for_each(rdev, mddev) {

drivers/md/md.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,4 +918,10 @@ static inline void mddev_trace_remap(struct mddev *mddev, struct bio *bio,
918918
trace_block_bio_remap(bio, disk_devt(mddev->gendisk), sector);
919919
}
920920

921+
#define mddev_add_trace_msg(mddev, fmt, args...) \
922+
do { \
923+
if ((mddev)->gendisk) \
924+
blk_add_trace_msg((mddev)->queue, fmt, ##args); \
925+
} while (0)
926+
921927
#endif /* _MD_MD_H */

drivers/md/raid1.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@
4646
static void allow_barrier(struct r1conf *conf, sector_t sector_nr);
4747
static void lower_barrier(struct r1conf *conf, sector_t sector_nr);
4848

49-
#define raid1_log(md, fmt, args...) \
50-
do { if ((md)->queue) blk_add_trace_msg((md)->queue, "raid1 " fmt, ##args); } while (0)
51-
5249
#define RAID_1_10_NAME "raid1"
5350
#include "raid1-10.c"
5451

@@ -1196,7 +1193,7 @@ static void freeze_array(struct r1conf *conf, int extra)
11961193
*/
11971194
spin_lock_irq(&conf->resync_lock);
11981195
conf->array_frozen = 1;
1199-
raid1_log(conf->mddev, "wait freeze");
1196+
mddev_add_trace_msg(conf->mddev, "raid1 wait freeze");
12001197
wait_event_lock_irq_cmd(
12011198
conf->wait_barrier,
12021199
get_unqueued_pending(conf) == extra,
@@ -1385,7 +1382,7 @@ static void raid1_read_request(struct mddev *mddev, struct bio *bio,
13851382
* Reading from a write-mostly device must take care not to
13861383
* over-take any writes that are 'behind'
13871384
*/
1388-
raid1_log(mddev, "wait behind writes");
1385+
mddev_add_trace_msg(mddev, "raid1 wait behind writes");
13891386
wait_event(bitmap->behind_wait,
13901387
atomic_read(&bitmap->behind_writes) == 0);
13911388
}
@@ -1568,7 +1565,8 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
15681565
bio_wouldblock_error(bio);
15691566
return;
15701567
}
1571-
raid1_log(mddev, "wait rdev %d blocked", blocked_rdev->raid_disk);
1568+
mddev_add_trace_msg(mddev, "raid1 wait rdev %d blocked",
1569+
blocked_rdev->raid_disk);
15721570
md_wait_for_blocked_rdev(blocked_rdev, mddev);
15731571
wait_barrier(conf, bio->bi_iter.bi_sector, false);
15741572
goto retry_write;

drivers/md/raid10.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,6 @@ static void reshape_request_write(struct mddev *mddev, struct r10bio *r10_bio);
7676
static void end_reshape_write(struct bio *bio);
7777
static void end_reshape(struct r10conf *conf);
7878

79-
#define raid10_log(md, fmt, args...) \
80-
do { if ((md)->queue) blk_add_trace_msg((md)->queue, "raid10 " fmt, ##args); } while (0)
81-
8279
#include "raid1-10.c"
8380

8481
#define NULL_CMD
@@ -1019,7 +1016,7 @@ static bool wait_barrier(struct r10conf *conf, bool nowait)
10191016
ret = false;
10201017
} else {
10211018
conf->nr_waiting++;
1022-
raid10_log(conf->mddev, "wait barrier");
1019+
mddev_add_trace_msg(conf->mddev, "raid10 wait barrier");
10231020
wait_event_barrier(conf, stop_waiting_barrier(conf));
10241021
conf->nr_waiting--;
10251022
}
@@ -1138,7 +1135,7 @@ static bool regular_request_wait(struct mddev *mddev, struct r10conf *conf,
11381135
bio_wouldblock_error(bio);
11391136
return false;
11401137
}
1141-
raid10_log(conf->mddev, "wait reshape");
1138+
mddev_add_trace_msg(conf->mddev, "raid10 wait reshape");
11421139
wait_event(conf->wait_barrier,
11431140
conf->reshape_progress <= bio->bi_iter.bi_sector ||
11441141
conf->reshape_progress >= bio->bi_iter.bi_sector +
@@ -1336,8 +1333,9 @@ static void wait_blocked_dev(struct mddev *mddev, struct r10bio *r10_bio)
13361333
if (unlikely(blocked_rdev)) {
13371334
/* Have to wait for this device to get unblocked, then retry */
13381335
allow_barrier(conf);
1339-
raid10_log(conf->mddev, "%s wait rdev %d blocked",
1340-
__func__, blocked_rdev->raid_disk);
1336+
mddev_add_trace_msg(conf->mddev,
1337+
"raid10 %s wait rdev %d blocked",
1338+
__func__, blocked_rdev->raid_disk);
13411339
md_wait_for_blocked_rdev(blocked_rdev, mddev);
13421340
wait_barrier(conf, false);
13431341
goto retry_wait;
@@ -1392,7 +1390,8 @@ static void raid10_write_request(struct mddev *mddev, struct bio *bio,
13921390
bio_wouldblock_error(bio);
13931391
return;
13941392
}
1395-
raid10_log(conf->mddev, "wait reshape metadata");
1393+
mddev_add_trace_msg(conf->mddev,
1394+
"raid10 wait reshape metadata");
13961395
wait_event(mddev->sb_wait,
13971396
!test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags));
13981397

drivers/md/raid5.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4195,10 +4195,9 @@ static int handle_stripe_dirtying(struct r5conf *conf,
41954195
set_bit(STRIPE_HANDLE, &sh->state);
41964196
if ((rmw < rcw || (rmw == rcw && conf->rmw_level == PARITY_PREFER_RMW)) && rmw > 0) {
41974197
/* prefer read-modify-write, but need to get some data */
4198-
if (conf->mddev->queue)
4199-
blk_add_trace_msg(conf->mddev->queue,
4200-
"raid5 rmw %llu %d",
4201-
(unsigned long long)sh->sector, rmw);
4198+
mddev_add_trace_msg(conf->mddev, "raid5 rmw %llu %d",
4199+
sh->sector, rmw);
4200+
42024201
for (i = disks; i--; ) {
42034202
struct r5dev *dev = &sh->dev[i];
42044203
if (test_bit(R5_InJournal, &dev->flags) &&
@@ -4276,9 +4275,10 @@ static int handle_stripe_dirtying(struct r5conf *conf,
42764275
}
42774276
}
42784277
if (rcw && conf->mddev->queue)
4279-
blk_add_trace_msg(conf->mddev->queue, "raid5 rcw %llu %d %d %d",
4280-
(unsigned long long)sh->sector,
4281-
rcw, qread, test_bit(STRIPE_DELAYED, &sh->state));
4278+
mddev_add_trace_msg(conf->mddev,
4279+
"raid5 rcw %llu %d %d %d",
4280+
sh->sector, rcw, qread,
4281+
test_bit(STRIPE_DELAYED, &sh->state));
42824282
}
42834283

42844284
if (rcw > disks && rmw > disks &&

0 commit comments

Comments
 (0)