From: Greg Kroah-Hartman Date: Mon, 17 Oct 2022 13:51:59 +0000 (+0200) Subject: drop a bunch of md patches from 5.15. X-Git-Tag: v5.4.219~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9547f512f32b93736b5808028d500d479ac857a1;p=thirdparty%2Fkernel%2Fstable-queue.git drop a bunch of md patches from 5.15. Not needed just for a simple scnprintf() change. --- diff --git a/queue-5.15/md-add-support-for-req_nowait.patch b/queue-5.15/md-add-support-for-req_nowait.patch deleted file mode 100644 index 35b629744f3..00000000000 --- a/queue-5.15/md-add-support-for-req_nowait.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 6cfc59304492f77ac462a5e70c80bc43d98fee1d Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 21 Dec 2021 20:06:19 +0000 -Subject: md: add support for REQ_NOWAIT - -From: Vishal Verma - -[ Upstream commit f51d46d0e7cb5b8494aa534d276a9d8915a2443d ] - -commit 021a24460dc2 ("block: add QUEUE_FLAG_NOWAIT") added support -for checking whether a given bdev supports handling of REQ_NOWAIT or not. -Since then commit 6abc49468eea ("dm: add support for REQ_NOWAIT and enable -it for linear target") added support for REQ_NOWAIT for dm. This uses -a similar approach to incorporate REQ_NOWAIT for md based bios. - -This patch was tested using t/io_uring tool within FIO. A nvme drive -was partitioned into 2 partitions and a simple raid 0 configuration -/dev/md0 was created. - -md0 : active raid0 nvme4n1p1[1] nvme4n1p2[0] - 937423872 blocks super 1.2 512k chunks - -Before patch: - -$ ./t/io_uring /dev/md0 -p 0 -a 0 -d 1 -r 100 - -Running top while the above runs: - -$ ps -eL | grep $(pidof io_uring) - - 38396 38396 pts/2 00:00:00 io_uring - 38396 38397 pts/2 00:00:15 io_uring - 38396 38398 pts/2 00:00:13 iou-wrk-38397 - -We can see iou-wrk-38397 io worker thread created which gets created -when io_uring sees that the underlying device (/dev/md0 in this case) -doesn't support nowait. - -After patch: - -$ ./t/io_uring /dev/md0 -p 0 -a 0 -d 1 -r 100 - -Running top while the above runs: - -$ ps -eL | grep $(pidof io_uring) - - 38341 38341 pts/2 00:10:22 io_uring - 38341 38342 pts/2 00:10:37 io_uring - -After running this patch, we don't see any io worker thread -being created which indicated that io_uring saw that the -underlying device does support nowait. This is the exact behaviour -noticed on a dm device which also supports nowait. - -For all the other raid personalities except raid0, we would need -to train pieces which involves make_request fn in order for them -to correctly handle REQ_NOWAIT. - -Reviewed-by: Jens Axboe -Signed-off-by: Vishal Verma -Signed-off-by: Song Liu -Stable-dep-of: 1727fd5015d8 ("md: Replace snprintf with scnprintf") -Signed-off-by: Sasha Levin ---- - drivers/md/md.c | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/drivers/md/md.c b/drivers/md/md.c -index 04e1e294b4b1..ea21a9ddf15f 100644 ---- a/drivers/md/md.c -+++ b/drivers/md/md.c -@@ -417,6 +417,12 @@ void md_handle_request(struct mddev *mddev, struct bio *bio) - rcu_read_lock(); - if (is_suspended(mddev, bio)) { - DEFINE_WAIT(__wait); -+ /* Bail out if REQ_NOWAIT is set for the bio */ -+ if (bio->bi_opf & REQ_NOWAIT) { -+ rcu_read_unlock(); -+ bio_wouldblock_error(bio); -+ return; -+ } - for (;;) { - prepare_to_wait(&mddev->sb_wait, &__wait, - TASK_UNINTERRUPTIBLE); -@@ -5792,6 +5798,7 @@ int md_run(struct mddev *mddev) - int err; - struct md_rdev *rdev; - struct md_personality *pers; -+ bool nowait = true; - - if (list_empty(&mddev->disks)) - /* cannot run an array with no devices.. */ -@@ -5862,8 +5869,13 @@ int md_run(struct mddev *mddev) - } - } - sysfs_notify_dirent_safe(rdev->sysfs_state); -+ nowait = nowait && blk_queue_nowait(bdev_get_queue(rdev->bdev)); - } - -+ /* Set the NOWAIT flags if all underlying devices support it */ -+ if (nowait) -+ blk_queue_flag_set(QUEUE_FLAG_NOWAIT, mddev->queue); -+ - if (!bioset_initialized(&mddev->bio_set)) { - err = bioset_init(&mddev->bio_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS); - if (err) -@@ -6996,6 +7008,15 @@ static int hot_add_disk(struct mddev *mddev, dev_t dev) - set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); - if (!mddev->thread) - md_update_sb(mddev, 1); -+ /* -+ * If the new disk does not support REQ_NOWAIT, -+ * disable on the whole MD. -+ */ -+ if (!blk_queue_nowait(bdev_get_queue(rdev->bdev))) { -+ pr_info("%s: Disabling nowait because %s does not support nowait\n", -+ mdname(mddev), bdevname(rdev->bdev, b)); -+ blk_queue_flag_clear(QUEUE_FLAG_NOWAIT, mddev->queue); -+ } - /* - * Kick recovery, maybe this spare has to be added to the - * array immediately. --- -2.35.1 - diff --git a/queue-5.15/md-raid5-add-__rcu-annotation-to-struct-disk_info.patch b/queue-5.15/md-raid5-add-__rcu-annotation-to-struct-disk_info.patch deleted file mode 100644 index 86a799dd64b..00000000000 --- a/queue-5.15/md-raid5-add-__rcu-annotation-to-struct-disk_info.patch +++ /dev/null @@ -1,189 +0,0 @@ -From 28b9a9d78bb0d4e03cc8948d89d30b4efe7a03d8 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 7 Apr 2022 10:57:09 -0600 -Subject: md/raid5: Add __rcu annotation to struct disk_info - -From: Logan Gunthorpe - -[ Upstream commit b0920ede081b3f1659872f80ce552305610675a6 ] - -rdev and replacement are protected in some circumstances with -rcu_dereference and synchronize_rcu (in raid5_remove_disk()). However, -they were not annotated with __rcu so a sparse warning is emitted for -every rcu_dereference() call. - -Add the __rcu annotation and fix up the initialization with -RCU_INIT_POINTER, all pointer modifications with rcu_assign_pointer(), -a few cases where the pointer value is tested with rcu_access_pointer() -and one case where READ_ONCE() is used instead of rcu_dereference(), -a case in print_raid5_conf() that should have rcu_dereference() and -rcu_read_[un]lock() calls. - -Additional sparse issues will be fixed up in further commits. - -Signed-off-by: Logan Gunthorpe -Reviewed-by: Christoph Hellwig -Signed-off-by: Song Liu -Stable-dep-of: 1727fd5015d8 ("md: Replace snprintf with scnprintf") -Signed-off-by: Sasha Levin ---- - drivers/md/raid5.c | 46 ++++++++++++++++++++++++++-------------------- - drivers/md/raid5.h | 3 ++- - 2 files changed, 28 insertions(+), 21 deletions(-) - -diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index 19e497a7e747..01c326dc57d5 100644 ---- a/drivers/md/raid5.c -+++ b/drivers/md/raid5.c -@@ -6285,7 +6285,7 @@ static inline sector_t raid5_sync_request(struct mddev *mddev, sector_t sector_n - */ - rcu_read_lock(); - for (i = 0; i < conf->raid_disks; i++) { -- struct md_rdev *rdev = READ_ONCE(conf->disks[i].rdev); -+ struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); - - if (rdev == NULL || test_bit(Faulty, &rdev->flags)) - still_degraded = 1; -@@ -7313,11 +7313,11 @@ static struct r5conf *setup_conf(struct mddev *mddev) - if (test_bit(Replacement, &rdev->flags)) { - if (disk->replacement) - goto abort; -- disk->replacement = rdev; -+ RCU_INIT_POINTER(disk->replacement, rdev); - } else { - if (disk->rdev) - goto abort; -- disk->rdev = rdev; -+ RCU_INIT_POINTER(disk->rdev, rdev); - } - - if (test_bit(In_sync, &rdev->flags)) { -@@ -7623,11 +7623,11 @@ static int raid5_run(struct mddev *mddev) - rdev = conf->disks[i].replacement; - conf->disks[i].replacement = NULL; - clear_bit(Replacement, &rdev->flags); -- conf->disks[i].rdev = rdev; -+ rcu_assign_pointer(conf->disks[i].rdev, rdev); - } - if (!rdev) - continue; -- if (conf->disks[i].replacement && -+ if (rcu_access_pointer(conf->disks[i].replacement) && - conf->reshape_progress != MaxSector) { - /* replacements and reshape simply do not mix. */ - pr_warn("md: cannot handle concurrent replacement and reshape.\n"); -@@ -7832,8 +7832,8 @@ static void raid5_status(struct seq_file *seq, struct mddev *mddev) - - static void print_raid5_conf (struct r5conf *conf) - { -+ struct md_rdev *rdev; - int i; -- struct disk_info *tmp; - - pr_debug("RAID conf printout:\n"); - if (!conf) { -@@ -7844,14 +7844,16 @@ static void print_raid5_conf (struct r5conf *conf) - conf->raid_disks, - conf->raid_disks - conf->mddev->degraded); - -+ rcu_read_lock(); - for (i = 0; i < conf->raid_disks; i++) { - char b[BDEVNAME_SIZE]; -- tmp = conf->disks + i; -- if (tmp->rdev) -+ rdev = rcu_dereference(conf->disks[i].rdev); -+ if (rdev) - pr_debug(" disk %d, o:%d, dev:%s\n", -- i, !test_bit(Faulty, &tmp->rdev->flags), -- bdevname(tmp->rdev->bdev, b)); -+ i, !test_bit(Faulty, &rdev->flags), -+ bdevname(rdev->bdev, b)); - } -+ rcu_read_unlock(); - } - - static int raid5_spare_active(struct mddev *mddev) -@@ -7902,8 +7904,9 @@ static int raid5_remove_disk(struct mddev *mddev, struct md_rdev *rdev) - struct r5conf *conf = mddev->private; - int err = 0; - int number = rdev->raid_disk; -- struct md_rdev **rdevp; -+ struct md_rdev __rcu **rdevp; - struct disk_info *p = conf->disks + number; -+ struct md_rdev *tmp; - - print_raid5_conf(conf); - if (test_bit(Journal, &rdev->flags) && conf->log) { -@@ -7921,9 +7924,9 @@ static int raid5_remove_disk(struct mddev *mddev, struct md_rdev *rdev) - log_exit(conf); - return 0; - } -- if (rdev == p->rdev) -+ if (rdev == rcu_access_pointer(p->rdev)) - rdevp = &p->rdev; -- else if (rdev == p->replacement) -+ else if (rdev == rcu_access_pointer(p->replacement)) - rdevp = &p->replacement; - else - return 0; -@@ -7943,7 +7946,8 @@ static int raid5_remove_disk(struct mddev *mddev, struct md_rdev *rdev) - if (!test_bit(Faulty, &rdev->flags) && - mddev->recovery_disabled != conf->recovery_disabled && - !has_failed(conf) && -- (!p->replacement || p->replacement == rdev) && -+ (!rcu_access_pointer(p->replacement) || -+ rcu_access_pointer(p->replacement) == rdev) && - number < conf->raid_disks) { - err = -EBUSY; - goto abort; -@@ -7954,7 +7958,7 @@ static int raid5_remove_disk(struct mddev *mddev, struct md_rdev *rdev) - if (atomic_read(&rdev->nr_pending)) { - /* lost the race, try later */ - err = -EBUSY; -- *rdevp = rdev; -+ rcu_assign_pointer(*rdevp, rdev); - } - } - if (!err) { -@@ -7962,17 +7966,19 @@ static int raid5_remove_disk(struct mddev *mddev, struct md_rdev *rdev) - if (err) - goto abort; - } -- if (p->replacement) { -+ -+ tmp = rcu_access_pointer(p->replacement); -+ if (tmp) { - /* We must have just cleared 'rdev' */ -- p->rdev = p->replacement; -- clear_bit(Replacement, &p->replacement->flags); -+ rcu_assign_pointer(p->rdev, tmp); -+ clear_bit(Replacement, &tmp->flags); - smp_mb(); /* Make sure other CPUs may see both as identical - * but will never see neither - if they are careful - */ -- p->replacement = NULL; -+ rcu_assign_pointer(p->replacement, NULL); - - if (!err) -- err = log_modify(conf, p->rdev, true); -+ err = log_modify(conf, tmp, true); - } - - clear_bit(WantReplacement, &rdev->flags); -diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h -index 5c05acf20e1f..666943926554 100644 ---- a/drivers/md/raid5.h -+++ b/drivers/md/raid5.h -@@ -472,7 +472,8 @@ enum { - */ - - struct disk_info { -- struct md_rdev *rdev, *replacement; -+ struct md_rdev __rcu *rdev; -+ struct md_rdev __rcu *replacement; - struct page *extra_page; /* extra page to use in prexor */ - }; - --- -2.35.1 - diff --git a/queue-5.15/md-raid5-ensure-stripe_fill-happens-on-non-read-io-w.patch b/queue-5.15/md-raid5-ensure-stripe_fill-happens-on-non-read-io-w.patch index 1c2b670d6b0..838103c14a7 100644 --- a/queue-5.15/md-raid5-ensure-stripe_fill-happens-on-non-read-io-w.patch +++ b/queue-5.15/md-raid5-ensure-stripe_fill-happens-on-non-read-io-w.patch @@ -27,14 +27,12 @@ Signed-off-by: Logan Gunthorpe Signed-off-by: Song Liu Signed-off-by: Sasha Levin --- - drivers/md/raid5.c | 2 +- + drivers/md/raid5.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index 1b2f6e62507d..7a2cc1ec532b 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c -@@ -3933,7 +3933,7 @@ static void handle_stripe_fill(struct stripe_head *sh, +@@ -3936,7 +3936,7 @@ static void handle_stripe_fill(struct st * back cache (prexor with orig_page, and then xor with * page) in the read path */ @@ -43,6 +41,3 @@ index 1b2f6e62507d..7a2cc1ec532b 100644 if (test_bit(STRIPE_R5C_CACHING, &sh->state)) r5c_make_stripe_write_out(sh); goto out; --- -2.35.1 - diff --git a/queue-5.15/md-raid5-remove-unnecessary-bio_put-in-raid5_read_on.patch b/queue-5.15/md-raid5-remove-unnecessary-bio_put-in-raid5_read_on.patch index 219f578521b..2bcd61a1ad8 100644 --- a/queue-5.15/md-raid5-remove-unnecessary-bio_put-in-raid5_read_on.patch +++ b/queue-5.15/md-raid5-remove-unnecessary-bio_put-in-raid5_read_on.patch @@ -96,14 +96,12 @@ Acked-by: Guoqing Jiang Signed-off-by: Song Liu Signed-off-by: Sasha Levin --- - drivers/md/raid5.c | 1 - + drivers/md/raid5.c | 1 - 1 file changed, 1 deletion(-) -diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index 7a2cc1ec532b..d9ad66c2c8e1 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c -@@ -5427,7 +5427,6 @@ static int raid5_read_one_chunk(struct mddev *mddev, struct bio *raid_bio) +@@ -5430,7 +5430,6 @@ static int raid5_read_one_chunk(struct m if (is_badblock(rdev, sector, bio_sectors(raid_bio), &first_bad, &bad_sectors)) { @@ -111,6 +109,3 @@ index 7a2cc1ec532b..d9ad66c2c8e1 100644 rdev_dec_pending(rdev, mddev); return 0; } --- -2.35.1 - diff --git a/queue-5.15/md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch b/queue-5.15/md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch index 77c26f51109..d2d4671ce89 100644 --- a/queue-5.15/md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch +++ b/queue-5.15/md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch @@ -106,11 +106,9 @@ Signed-off-by: Logan Gunthorpe Signed-off-by: Song Liu Signed-off-by: Sasha Levin --- - drivers/md/raid5.c | 12 ++++++++++++ + drivers/md/raid5.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index d9ad66c2c8e1..7a849a4b7085 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -36,6 +36,7 @@ @@ -121,7 +119,7 @@ index d9ad66c2c8e1..7a849a4b7085 100644 #include #include #include -@@ -6518,7 +6519,18 @@ static void raid5d(struct md_thread *thread) +@@ -6521,7 +6522,18 @@ static void raid5d(struct md_thread *thr spin_unlock_irq(&conf->device_lock); md_check_recovery(mddev); spin_lock_irq(&conf->device_lock); @@ -140,6 +138,3 @@ index d9ad66c2c8e1..7a849a4b7085 100644 } pr_debug("%d stripes handled\n", handled); --- -2.35.1 - diff --git a/queue-5.15/md-remove-most-calls-to-bdevname.patch b/queue-5.15/md-remove-most-calls-to-bdevname.patch deleted file mode 100644 index 1a43bb0b088..00000000000 --- a/queue-5.15/md-remove-most-calls-to-bdevname.patch +++ /dev/null @@ -1,1133 +0,0 @@ -From e979c86f0bbad529f6976924cb1a2efb352ba946 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 12 May 2022 08:19:13 +0200 -Subject: md: remove most calls to bdevname - -From: Christoph Hellwig - -[ Upstream commit 913cce5a1e588e3470ea064fe4ea336037d3a454 ] - -Use the %pg format specifier to save on stack consumption and code size. - -Signed-off-by: Christoph Hellwig -Signed-off-by: Song Liu -Stable-dep-of: 1727fd5015d8 ("md: Replace snprintf with scnprintf") -Signed-off-by: Sasha Levin ---- - drivers/md/md-linear.c | 5 +- - drivers/md/md-multipath.c | 15 ++-- - drivers/md/md.c | 152 ++++++++++++++++---------------------- - drivers/md/raid0.c | 28 +++---- - drivers/md/raid1.c | 24 +++--- - drivers/md/raid10.c | 54 ++++++-------- - drivers/md/raid5-cache.c | 5 +- - drivers/md/raid5-ppl.c | 27 +++---- - drivers/md/raid5.c | 37 ++++------ - 9 files changed, 147 insertions(+), 200 deletions(-) - -diff --git a/drivers/md/md-linear.c b/drivers/md/md-linear.c -index 1ff51647a682..40bdc6aecd0b 100644 ---- a/drivers/md/md-linear.c -+++ b/drivers/md/md-linear.c -@@ -215,7 +215,6 @@ static void linear_free(struct mddev *mddev, void *priv) - - static bool linear_make_request(struct mddev *mddev, struct bio *bio) - { -- char b[BDEVNAME_SIZE]; - struct dev_info *tmp_dev; - sector_t start_sector, end_sector, data_offset; - sector_t bio_sector = bio->bi_iter.bi_sector; -@@ -266,10 +265,10 @@ static bool linear_make_request(struct mddev *mddev, struct bio *bio) - return true; - - out_of_bounds: -- pr_err("md/linear:%s: make_request: Sector %llu out of bounds on dev %s: %llu sectors, offset %llu\n", -+ pr_err("md/linear:%s: make_request: Sector %llu out of bounds on dev %pg: %llu sectors, offset %llu\n", - mdname(mddev), - (unsigned long long)bio->bi_iter.bi_sector, -- bdevname(tmp_dev->rdev->bdev, b), -+ tmp_dev->rdev->bdev, - (unsigned long long)tmp_dev->rdev->sectors, - (unsigned long long)start_sector); - bio_io_error(bio); -diff --git a/drivers/md/md-multipath.c b/drivers/md/md-multipath.c -index e7d6486f090f..2147a158e080 100644 ---- a/drivers/md/md-multipath.c -+++ b/drivers/md/md-multipath.c -@@ -87,10 +87,9 @@ static void multipath_end_request(struct bio *bio) - /* - * oops, IO error: - */ -- char b[BDEVNAME_SIZE]; - md_error (mp_bh->mddev, rdev); -- pr_info("multipath: %s: rescheduling sector %llu\n", -- bdevname(rdev->bdev,b), -+ pr_info("multipath: %pg: rescheduling sector %llu\n", -+ rdev->bdev, - (unsigned long long)bio->bi_iter.bi_sector); - multipath_reschedule_retry(mp_bh); - } else -@@ -157,7 +156,6 @@ static void multipath_status(struct seq_file *seq, struct mddev *mddev) - static void multipath_error (struct mddev *mddev, struct md_rdev *rdev) - { - struct mpconf *conf = mddev->private; -- char b[BDEVNAME_SIZE]; - - if (conf->raid_disks - mddev->degraded <= 1) { - /* -@@ -180,9 +178,9 @@ static void multipath_error (struct mddev *mddev, struct md_rdev *rdev) - } - set_bit(Faulty, &rdev->flags); - set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); -- pr_err("multipath: IO failure on %s, disabling IO path.\n" -+ pr_err("multipath: IO failure on %pg, disabling IO path.\n" - "multipath: Operation continuing on %d IO paths.\n", -- bdevname(rdev->bdev, b), -+ rdev->bdev, - conf->raid_disks - mddev->degraded); - } - -@@ -200,12 +198,11 @@ static void print_multipath_conf (struct mpconf *conf) - conf->raid_disks); - - for (i = 0; i < conf->raid_disks; i++) { -- char b[BDEVNAME_SIZE]; - tmp = conf->multipaths + i; - if (tmp->rdev) -- pr_debug(" disk%d, o:%d, dev:%s\n", -+ pr_debug(" disk%d, o:%d, dev:%pg\n", - i,!test_bit(Faulty, &tmp->rdev->flags), -- bdevname(tmp->rdev->bdev,b)); -+ tmp->rdev->bdev); - } - } - -diff --git a/drivers/md/md.c b/drivers/md/md.c -index 79b685fb8207..89943840afed 100644 ---- a/drivers/md/md.c -+++ b/drivers/md/md.c -@@ -1025,8 +1025,6 @@ EXPORT_SYMBOL_GPL(sync_page_io); - - static int read_disk_sb(struct md_rdev *rdev, int size) - { -- char b[BDEVNAME_SIZE]; -- - if (rdev->sb_loaded) - return 0; - -@@ -1036,8 +1034,8 @@ static int read_disk_sb(struct md_rdev *rdev, int size) - return 0; - - fail: -- pr_err("md: disabled device %s, could not read superblock.\n", -- bdevname(rdev->bdev,b)); -+ pr_err("md: disabled device %pg, could not read superblock.\n", -+ rdev->bdev); - return -EINVAL; - } - -@@ -1183,7 +1181,6 @@ EXPORT_SYMBOL(md_check_no_bitmap); - */ - static int super_90_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_version) - { -- char b[BDEVNAME_SIZE], b2[BDEVNAME_SIZE]; - mdp_super_t *sb; - int ret; - bool spare_disk = true; -@@ -1202,19 +1199,19 @@ static int super_90_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor - - ret = -EINVAL; - -- bdevname(rdev->bdev, b); - sb = page_address(rdev->sb_page); - - if (sb->md_magic != MD_SB_MAGIC) { -- pr_warn("md: invalid raid superblock magic on %s\n", b); -+ pr_warn("md: invalid raid superblock magic on %pg\n", -+ rdev->bdev); - goto abort; - } - - if (sb->major_version != 0 || - sb->minor_version < 90 || - sb->minor_version > 91) { -- pr_warn("Bad version number %d.%d on %s\n", -- sb->major_version, sb->minor_version, b); -+ pr_warn("Bad version number %d.%d on %pg\n", -+ sb->major_version, sb->minor_version, rdev->bdev); - goto abort; - } - -@@ -1222,7 +1219,7 @@ static int super_90_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor - goto abort; - - if (md_csum_fold(calc_sb_csum(sb)) != md_csum_fold(sb->sb_csum)) { -- pr_warn("md: invalid superblock checksum on %s\n", b); -+ pr_warn("md: invalid superblock checksum on %pg\n", rdev->bdev); - goto abort; - } - -@@ -1254,13 +1251,13 @@ static int super_90_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor - __u64 ev1, ev2; - mdp_super_t *refsb = page_address(refdev->sb_page); - if (!md_uuid_equal(refsb, sb)) { -- pr_warn("md: %s has different UUID to %s\n", -- b, bdevname(refdev->bdev,b2)); -+ pr_warn("md: %pg has different UUID to %pg\n", -+ rdev->bdev, refdev->bdev); - goto abort; - } - if (!md_sb_equal(refsb, sb)) { -- pr_warn("md: %s has same UUID but different superblock to %s\n", -- b, bdevname(refdev->bdev, b2)); -+ pr_warn("md: %pg has same UUID but different superblock to %pg\n", -+ rdev->bdev, refdev->bdev); - goto abort; - } - ev1 = md_event(sb); -@@ -1624,7 +1621,6 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ - int ret; - sector_t sb_start; - sector_t sectors; -- char b[BDEVNAME_SIZE], b2[BDEVNAME_SIZE]; - int bmask; - bool spare_disk = true; - -@@ -1669,13 +1665,13 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ - return -EINVAL; - - if (calc_sb_1_csum(sb) != sb->sb_csum) { -- pr_warn("md: invalid superblock checksum on %s\n", -- bdevname(rdev->bdev,b)); -+ pr_warn("md: invalid superblock checksum on %pg\n", -+ rdev->bdev); - return -EINVAL; - } - if (le64_to_cpu(sb->data_size) < 10) { -- pr_warn("md: data_size too small on %s\n", -- bdevname(rdev->bdev,b)); -+ pr_warn("md: data_size too small on %pg\n", -+ rdev->bdev); - return -EINVAL; - } - if (sb->pad0 || -@@ -1781,9 +1777,9 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ - sb->level != refsb->level || - sb->layout != refsb->layout || - sb->chunksize != refsb->chunksize) { -- pr_warn("md: %s has strangely different superblock to %s\n", -- bdevname(rdev->bdev,b), -- bdevname(refdev->bdev,b2)); -+ pr_warn("md: %pg has strangely different superblock to %pg\n", -+ rdev->bdev, -+ refdev->bdev); - return -EINVAL; - } - ev1 = le64_to_cpu(sb->events); -@@ -2372,7 +2368,6 @@ EXPORT_SYMBOL(md_integrity_register); - int md_integrity_add_rdev(struct md_rdev *rdev, struct mddev *mddev) - { - struct blk_integrity *bi_mddev; -- char name[BDEVNAME_SIZE]; - - if (!mddev->gendisk) - return 0; -@@ -2383,8 +2378,8 @@ int md_integrity_add_rdev(struct md_rdev *rdev, struct mddev *mddev) - return 0; - - if (blk_integrity_compare(mddev->gendisk, rdev->bdev->bd_disk) != 0) { -- pr_err("%s: incompatible integrity profile for %s\n", -- mdname(mddev), bdevname(rdev->bdev, name)); -+ pr_err("%s: incompatible integrity profile for %pg\n", -+ mdname(mddev), rdev->bdev); - return -ENXIO; - } - -@@ -2493,11 +2488,9 @@ static void rdev_delayed_delete(struct work_struct *ws) - - static void unbind_rdev_from_array(struct md_rdev *rdev) - { -- char b[BDEVNAME_SIZE]; -- - bd_unlink_disk_holder(rdev->bdev, rdev->mddev->gendisk); - list_del_rcu(&rdev->same_set); -- pr_debug("md: unbind<%s>\n", bdevname(rdev->bdev,b)); -+ pr_debug("md: unbind<%pg>\n", rdev->bdev); - mddev_destroy_serial_pool(rdev->mddev, rdev, false); - rdev->mddev = NULL; - sysfs_remove_link(&rdev->kobj, "block"); -@@ -2550,9 +2543,7 @@ void md_autodetect_dev(dev_t dev); - - static void export_rdev(struct md_rdev *rdev) - { -- char b[BDEVNAME_SIZE]; -- -- pr_debug("md: export_rdev(%s)\n", bdevname(rdev->bdev,b)); -+ pr_debug("md: export_rdev(%pg)\n", rdev->bdev); - md_rdev_clear(rdev); - #ifndef MODULE - if (test_bit(AutoDetected, &rdev->flags)) -@@ -2810,8 +2801,6 @@ void md_update_sb(struct mddev *mddev, int force_change) - rewrite: - md_bitmap_update_sb(mddev->bitmap); - rdev_for_each(rdev, mddev) { -- char b[BDEVNAME_SIZE]; -- - if (rdev->sb_loaded != 1) - continue; /* no noise on spare devices */ - -@@ -2819,8 +2808,8 @@ void md_update_sb(struct mddev *mddev, int force_change) - md_super_write(mddev,rdev, - rdev->sb_start, rdev->sb_size, - rdev->sb_page); -- pr_debug("md: (write) %s's sb offset: %llu\n", -- bdevname(rdev->bdev, b), -+ pr_debug("md: (write) %pg's sb offset: %llu\n", -+ rdev->bdev, - (unsigned long long)rdev->sb_start); - rdev->sb_events = mddev->events; - if (rdev->badblocks.size) { -@@ -2832,8 +2821,8 @@ void md_update_sb(struct mddev *mddev, int force_change) - } - - } else -- pr_debug("md: %s (skipping faulty)\n", -- bdevname(rdev->bdev, b)); -+ pr_debug("md: %pg (skipping faulty)\n", -+ rdev->bdev); - - if (mddev->level == LEVEL_MULTIPATH) - /* only need to write one superblock... */ -@@ -3706,7 +3695,6 @@ EXPORT_SYMBOL_GPL(md_rdev_init); - */ - static struct md_rdev *md_import_device(dev_t newdev, int super_format, int super_minor) - { -- char b[BDEVNAME_SIZE]; - int err; - struct md_rdev *rdev; - sector_t size; -@@ -3730,8 +3718,8 @@ static struct md_rdev *md_import_device(dev_t newdev, int super_format, int supe - - size = i_size_read(rdev->bdev->bd_inode) >> BLOCK_SIZE_BITS; - if (!size) { -- pr_warn("md: %s has zero or unknown size, marking faulty!\n", -- bdevname(rdev->bdev,b)); -+ pr_warn("md: %pg has zero or unknown size, marking faulty!\n", -+ rdev->bdev); - err = -EINVAL; - goto abort_free; - } -@@ -3740,14 +3728,14 @@ static struct md_rdev *md_import_device(dev_t newdev, int super_format, int supe - err = super_types[super_format]. - load_super(rdev, NULL, super_minor); - if (err == -EINVAL) { -- pr_warn("md: %s does not have a valid v%d.%d superblock, not importing!\n", -- bdevname(rdev->bdev,b), -+ pr_warn("md: %pg does not have a valid v%d.%d superblock, not importing!\n", -+ rdev->bdev, - super_format, super_minor); - goto abort_free; - } - if (err < 0) { -- pr_warn("md: could not read %s's sb, not importing!\n", -- bdevname(rdev->bdev,b)); -+ pr_warn("md: could not read %pg's sb, not importing!\n", -+ rdev->bdev); - goto abort_free; - } - } -@@ -3770,7 +3758,6 @@ static int analyze_sbs(struct mddev *mddev) - { - int i; - struct md_rdev *rdev, *freshest, *tmp; -- char b[BDEVNAME_SIZE]; - - freshest = NULL; - rdev_for_each_safe(rdev, tmp, mddev) -@@ -3782,8 +3769,8 @@ static int analyze_sbs(struct mddev *mddev) - case 0: - break; - default: -- pr_warn("md: fatal superblock inconsistency in %s -- removing from array\n", -- bdevname(rdev->bdev,b)); -+ pr_warn("md: fatal superblock inconsistency in %pg -- removing from array\n", -+ rdev->bdev); - md_kick_rdev_from_array(rdev); - } - -@@ -3801,8 +3788,8 @@ static int analyze_sbs(struct mddev *mddev) - if (mddev->max_disks && - (rdev->desc_nr >= mddev->max_disks || - i > mddev->max_disks)) { -- pr_warn("md: %s: %s: only %d devices permitted\n", -- mdname(mddev), bdevname(rdev->bdev, b), -+ pr_warn("md: %s: %pg: only %d devices permitted\n", -+ mdname(mddev), rdev->bdev, - mddev->max_disks); - md_kick_rdev_from_array(rdev); - continue; -@@ -3810,8 +3797,8 @@ static int analyze_sbs(struct mddev *mddev) - if (rdev != freshest) { - if (super_types[mddev->major_version]. - validate_super(mddev, rdev)) { -- pr_warn("md: kicking non-fresh %s from array!\n", -- bdevname(rdev->bdev,b)); -+ pr_warn("md: kicking non-fresh %pg from array!\n", -+ rdev->bdev); - md_kick_rdev_from_array(rdev); - continue; - } -@@ -5919,7 +5906,6 @@ int md_run(struct mddev *mddev) - /* Warn if this is a potentially silly - * configuration. - */ -- char b[BDEVNAME_SIZE], b2[BDEVNAME_SIZE]; - struct md_rdev *rdev2; - int warned = 0; - -@@ -5928,10 +5914,10 @@ int md_run(struct mddev *mddev) - if (rdev < rdev2 && - rdev->bdev->bd_disk == - rdev2->bdev->bd_disk) { -- pr_warn("%s: WARNING: %s appears to be on the same physical disk as %s.\n", -+ pr_warn("%s: WARNING: %pg appears to be on the same physical disk as %pg.\n", - mdname(mddev), -- bdevname(rdev->bdev,b), -- bdevname(rdev2->bdev,b2)); -+ rdev->bdev, -+ rdev2->bdev); - warned = 1; - } - } -@@ -6454,8 +6440,7 @@ static void autorun_array(struct mddev *mddev) - pr_info("md: running: "); - - rdev_for_each(rdev, mddev) { -- char b[BDEVNAME_SIZE]; -- pr_cont("<%s>", bdevname(rdev->bdev,b)); -+ pr_cont("<%pg>", rdev->bdev); - } - pr_cont("\n"); - -@@ -6482,7 +6467,6 @@ static void autorun_devices(int part) - { - struct md_rdev *rdev0, *rdev, *tmp; - struct mddev *mddev; -- char b[BDEVNAME_SIZE]; - - pr_info("md: autorun ...\n"); - while (!list_empty(&pending_raid_disks)) { -@@ -6492,12 +6476,12 @@ static void autorun_devices(int part) - rdev0 = list_entry(pending_raid_disks.next, - struct md_rdev, same_set); - -- pr_debug("md: considering %s ...\n", bdevname(rdev0->bdev,b)); -+ pr_debug("md: considering %pg ...\n", rdev0->bdev); - INIT_LIST_HEAD(&candidates); - rdev_for_each_list(rdev, tmp, &pending_raid_disks) - if (super_90_load(rdev, rdev0, 0) >= 0) { -- pr_debug("md: adding %s ...\n", -- bdevname(rdev->bdev,b)); -+ pr_debug("md: adding %pg ...\n", -+ rdev->bdev); - list_move(&rdev->same_set, &candidates); - } - /* -@@ -6514,8 +6498,8 @@ static void autorun_devices(int part) - unit = MINOR(dev); - } - if (rdev0->preferred_minor != unit) { -- pr_warn("md: unit number in %s is bad: %d\n", -- bdevname(rdev0->bdev, b), rdev0->preferred_minor); -+ pr_warn("md: unit number in %pg is bad: %d\n", -+ rdev0->bdev, rdev0->preferred_minor); - break; - } - -@@ -6528,8 +6512,8 @@ static void autorun_devices(int part) - pr_warn("md: %s locked, cannot run\n", mdname(mddev)); - else if (mddev->raid_disks || mddev->major_version - || !list_empty(&mddev->disks)) { -- pr_warn("md: %s already running, cannot run %s\n", -- mdname(mddev), bdevname(rdev0->bdev,b)); -+ pr_warn("md: %s already running, cannot run %pg\n", -+ mdname(mddev), rdev0->bdev); - mddev_unlock(mddev); - } else { - pr_debug("md: created %s\n", mdname(mddev)); -@@ -6703,7 +6687,6 @@ static int get_disk_info(struct mddev *mddev, void __user * arg) - - int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info) - { -- char b[BDEVNAME_SIZE], b2[BDEVNAME_SIZE]; - struct md_rdev *rdev; - dev_t dev = MKDEV(info->major,info->minor); - -@@ -6733,9 +6716,9 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info) - err = super_types[mddev->major_version] - .load_super(rdev, rdev0, mddev->minor_version); - if (err < 0) { -- pr_warn("md: %s has different UUID to %s\n", -- bdevname(rdev->bdev,b), -- bdevname(rdev0->bdev,b2)); -+ pr_warn("md: %pg has different UUID to %pg\n", -+ rdev->bdev, -+ rdev0->bdev); - export_rdev(rdev); - return -EINVAL; - } -@@ -6910,7 +6893,6 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info) - - static int hot_remove_disk(struct mddev *mddev, dev_t dev) - { -- char b[BDEVNAME_SIZE]; - struct md_rdev *rdev; - - if (!mddev->pers) -@@ -6945,14 +6927,13 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev) - - return 0; - busy: -- pr_debug("md: cannot remove active disk %s from %s ...\n", -- bdevname(rdev->bdev,b), mdname(mddev)); -+ pr_debug("md: cannot remove active disk %pg from %s ...\n", -+ rdev->bdev, mdname(mddev)); - return -EBUSY; - } - - static int hot_add_disk(struct mddev *mddev, dev_t dev) - { -- char b[BDEVNAME_SIZE]; - int err; - struct md_rdev *rdev; - -@@ -6985,8 +6966,8 @@ static int hot_add_disk(struct mddev *mddev, dev_t dev) - rdev->sectors = rdev->sb_start; - - if (test_bit(Faulty, &rdev->flags)) { -- pr_warn("md: can not hot-add faulty %s disk to %s!\n", -- bdevname(rdev->bdev,b), mdname(mddev)); -+ pr_warn("md: can not hot-add faulty %pg disk to %s!\n", -+ rdev->bdev, mdname(mddev)); - err = -EINVAL; - goto abort_export; - } -@@ -7013,8 +6994,8 @@ static int hot_add_disk(struct mddev *mddev, dev_t dev) - * disable on the whole MD. - */ - if (!blk_queue_nowait(bdev_get_queue(rdev->bdev))) { -- pr_info("%s: Disabling nowait because %s does not support nowait\n", -- mdname(mddev), bdevname(rdev->bdev, b)); -+ pr_info("%s: Disabling nowait because %pg does not support nowait\n", -+ mdname(mddev), rdev->bdev); - blk_queue_flag_clear(QUEUE_FLAG_NOWAIT, mddev->queue); - } - /* -@@ -8016,10 +7997,8 @@ static void status_unused(struct seq_file *seq) - seq_printf(seq, "unused devices: "); - - list_for_each_entry(rdev, &pending_raid_disks, same_set) { -- char b[BDEVNAME_SIZE]; - i++; -- seq_printf(seq, "%s ", -- bdevname(rdev->bdev,b)); -+ seq_printf(seq, "%pg ", rdev->bdev); - } - if (!i) - seq_printf(seq, ""); -@@ -8259,9 +8238,8 @@ static int md_seq_show(struct seq_file *seq, void *v) - sectors = 0; - rcu_read_lock(); - rdev_for_each_rcu(rdev, mddev) { -- char b[BDEVNAME_SIZE]; -- seq_printf(seq, " %s[%d]", -- bdevname(rdev->bdev,b), rdev->desc_nr); -+ seq_printf(seq, " %pg[%d]", rdev->bdev, rdev->desc_nr); -+ - if (test_bit(WriteMostly, &rdev->flags)) - seq_printf(seq, "(W)"); - if (test_bit(Journal, &rdev->flags)) -@@ -9656,7 +9634,6 @@ static void check_sb_changes(struct mddev *mddev, struct md_rdev *rdev) - struct mdp_superblock_1 *sb = page_address(rdev->sb_page); - struct md_rdev *rdev2, *tmp; - int role, ret; -- char b[BDEVNAME_SIZE]; - - /* - * If size is changed in another node then we need to -@@ -9680,7 +9657,8 @@ static void check_sb_changes(struct mddev *mddev, struct md_rdev *rdev) - - if (test_bit(Candidate, &rdev2->flags)) { - if (role == MD_DISK_ROLE_FAULTY) { -- pr_info("md: Removing Candidate device %s because add failed\n", bdevname(rdev2->bdev,b)); -+ pr_info("md: Removing Candidate device %pg because add failed\n", -+ rdev2->bdev); - md_kick_rdev_from_array(rdev2); - continue; - } -@@ -9697,8 +9675,8 @@ static void check_sb_changes(struct mddev *mddev, struct md_rdev *rdev) - MD_FEATURE_RESHAPE_ACTIVE)) { - rdev2->saved_raid_disk = role; - ret = remove_and_add_spares(mddev, rdev2); -- pr_info("Activated spare: %s\n", -- bdevname(rdev2->bdev,b)); -+ pr_info("Activated spare: %pg\n", -+ rdev2->bdev); - /* wakeup mddev->thread here, so array could - * perform resync with the new activated disk */ - set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); -diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c -index 8495045eb989..a7fa2c2e7748 100644 ---- a/drivers/md/raid0.c -+++ b/drivers/md/raid0.c -@@ -37,7 +37,6 @@ static void dump_zones(struct mddev *mddev) - int j, k; - sector_t zone_size = 0; - sector_t zone_start = 0; -- char b[BDEVNAME_SIZE]; - struct r0conf *conf = mddev->private; - int raid_disks = conf->strip_zone[0].nb_dev; - pr_debug("md: RAID0 configuration for %s - %d zone%s\n", -@@ -48,9 +47,8 @@ static void dump_zones(struct mddev *mddev) - int len = 0; - - for (k = 0; k < conf->strip_zone[j].nb_dev; k++) -- len += snprintf(line+len, 200-len, "%s%s", k?"/":"", -- bdevname(conf->devlist[j*raid_disks -- + k]->bdev, b)); -+ len += snprintf(line+len, 200-len, "%s%pg", k?"/":"", -+ conf->devlist[j * raid_disks + k]->bdev); - pr_debug("md: zone%d=[%s]\n", j, line); - - zone_size = conf->strip_zone[j].zone_end - zone_start; -@@ -69,8 +67,6 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf) - struct md_rdev *smallest, *rdev1, *rdev2, *rdev, **dev; - struct strip_zone *zone; - int cnt; -- char b[BDEVNAME_SIZE]; -- char b2[BDEVNAME_SIZE]; - struct r0conf *conf = kzalloc(sizeof(*conf), GFP_KERNEL); - unsigned blksize = 512; - -@@ -78,9 +74,9 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf) - if (!conf) - return -ENOMEM; - rdev_for_each(rdev1, mddev) { -- pr_debug("md/raid0:%s: looking at %s\n", -+ pr_debug("md/raid0:%s: looking at %pg\n", - mdname(mddev), -- bdevname(rdev1->bdev, b)); -+ rdev1->bdev); - c = 0; - - /* round size to chunk_size */ -@@ -92,12 +88,12 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf) - rdev1->bdev->bd_disk->queue)); - - rdev_for_each(rdev2, mddev) { -- pr_debug("md/raid0:%s: comparing %s(%llu)" -- " with %s(%llu)\n", -+ pr_debug("md/raid0:%s: comparing %pg(%llu)" -+ " with %pg(%llu)\n", - mdname(mddev), -- bdevname(rdev1->bdev,b), -+ rdev1->bdev, - (unsigned long long)rdev1->sectors, -- bdevname(rdev2->bdev,b2), -+ rdev2->bdev, - (unsigned long long)rdev2->sectors); - if (rdev2 == rdev1) { - pr_debug("md/raid0:%s: END\n", -@@ -225,15 +221,15 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf) - for (j=0; jdevlist[j]; - if (rdev->sectors <= zone->dev_start) { -- pr_debug("md/raid0:%s: checking %s ... nope\n", -+ pr_debug("md/raid0:%s: checking %pg ... nope\n", - mdname(mddev), -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - continue; - } -- pr_debug("md/raid0:%s: checking %s ..." -+ pr_debug("md/raid0:%s: checking %pg ..." - " contained as device %d\n", - mdname(mddev), -- bdevname(rdev->bdev, b), c); -+ rdev->bdev, c); - dev[c] = rdev; - c++; - if (!smallest || rdev->sectors < smallest->sectors) { -diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c -index 9fa479493642..eb6b4e7bcfa5 100644 ---- a/drivers/md/raid1.c -+++ b/drivers/md/raid1.c -@@ -398,10 +398,9 @@ static void raid1_end_read_request(struct bio *bio) - /* - * oops, read error: - */ -- char b[BDEVNAME_SIZE]; -- pr_err_ratelimited("md/raid1:%s: %s: rescheduling sector %llu\n", -+ pr_err_ratelimited("md/raid1:%s: %pg: rescheduling sector %llu\n", - mdname(conf->mddev), -- bdevname(rdev->bdev, b), -+ rdev->bdev, - (unsigned long long)r1_bio->sector); - set_bit(R1BIO_ReadError, &r1_bio->state); - reschedule_retry(r1_bio); -@@ -1264,10 +1263,10 @@ static void raid1_read_request(struct mddev *mddev, struct bio *bio, - mirror = conf->mirrors + rdisk; - - if (r1bio_existed) -- pr_info_ratelimited("md/raid1:%s: redirecting sector %llu to other mirror: %s\n", -+ pr_info_ratelimited("md/raid1:%s: redirecting sector %llu to other mirror: %pg\n", - mdname(mddev), - (unsigned long long)r1_bio->sector, -- bdevname(mirror->rdev->bdev, b)); -+ mirror->rdev->bdev); - - if (test_bit(WriteMostly, &mirror->rdev->flags) && - bitmap) { -@@ -1619,7 +1618,6 @@ static void raid1_status(struct seq_file *seq, struct mddev *mddev) - - static void raid1_error(struct mddev *mddev, struct md_rdev *rdev) - { -- char b[BDEVNAME_SIZE]; - struct r1conf *conf = mddev->private; - unsigned long flags; - -@@ -1653,9 +1651,9 @@ static void raid1_error(struct mddev *mddev, struct md_rdev *rdev) - set_bit(MD_RECOVERY_INTR, &mddev->recovery); - set_mask_bits(&mddev->sb_flags, 0, - BIT(MD_SB_CHANGE_DEVS) | BIT(MD_SB_CHANGE_PENDING)); -- pr_crit("md/raid1:%s: Disk failure on %s, disabling device.\n" -+ pr_crit("md/raid1:%s: Disk failure on %pg, disabling device.\n" - "md/raid1:%s: Operation continuing on %d devices.\n", -- mdname(mddev), bdevname(rdev->bdev, b), -+ mdname(mddev), rdev->bdev, - mdname(mddev), conf->raid_disks - mddev->degraded); - } - -@@ -1673,13 +1671,12 @@ static void print_conf(struct r1conf *conf) - - rcu_read_lock(); - for (i = 0; i < conf->raid_disks; i++) { -- char b[BDEVNAME_SIZE]; - struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); - if (rdev) -- pr_debug(" disk %d, wo:%d, o:%d, dev:%s\n", -+ pr_debug(" disk %d, wo:%d, o:%d, dev:%pg\n", - i, !test_bit(In_sync, &rdev->flags), - !test_bit(Faulty, &rdev->flags), -- bdevname(rdev->bdev,b)); -+ rdev->bdev); - } - rcu_read_unlock(); - } -@@ -2318,7 +2315,6 @@ static void fix_read_error(struct r1conf *conf, int read_disk, - } - d = start; - while (d != read_disk) { -- char b[BDEVNAME_SIZE]; - if (d==0) - d = conf->raid_disks * 2; - d--; -@@ -2331,11 +2327,11 @@ static void fix_read_error(struct r1conf *conf, int read_disk, - if (r1_sync_page_io(rdev, sect, s, - conf->tmppage, READ)) { - atomic_add(s, &rdev->corrected_errors); -- pr_info("md/raid1:%s: read error corrected (%d sectors at %llu on %s)\n", -+ pr_info("md/raid1:%s: read error corrected (%d sectors at %llu on %pg)\n", - mdname(mddev), s, - (unsigned long long)(sect + - rdev->data_offset), -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - } - rdev_dec_pending(rdev, mddev); - } else -diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c -index c4c1a3a7d7ab..27fc8dfbd24e 100644 ---- a/drivers/md/raid10.c -+++ b/drivers/md/raid10.c -@@ -390,10 +390,9 @@ static void raid10_end_read_request(struct bio *bio) - /* - * oops, read error - keep the refcount on the rdev - */ -- char b[BDEVNAME_SIZE]; -- pr_err_ratelimited("md/raid10:%s: %s: rescheduling sector %llu\n", -+ pr_err_ratelimited("md/raid10:%s: %pg: rescheduling sector %llu\n", - mdname(conf->mddev), -- bdevname(rdev->bdev, b), -+ rdev->bdev, - (unsigned long long)r10_bio->sector); - set_bit(R10BIO_ReadError, &r10_bio->state); - reschedule_retry(r10_bio); -@@ -1169,9 +1168,9 @@ static void raid10_read_request(struct mddev *mddev, struct bio *bio, - return; - } - if (err_rdev) -- pr_err_ratelimited("md/raid10:%s: %s: redirecting sector %llu to another mirror\n", -+ pr_err_ratelimited("md/raid10:%s: %pg: redirecting sector %llu to another mirror\n", - mdname(mddev), -- bdevname(rdev->bdev, b), -+ rdev->bdev, - (unsigned long long)r10_bio->sector); - if (max_sectors < bio_sectors(bio)) { - struct bio *split = bio_split(bio, max_sectors, -@@ -1947,7 +1946,6 @@ static int enough(struct r10conf *conf, int ignore) - - static void raid10_error(struct mddev *mddev, struct md_rdev *rdev) - { -- char b[BDEVNAME_SIZE]; - struct r10conf *conf = mddev->private; - unsigned long flags; - -@@ -1977,9 +1975,9 @@ static void raid10_error(struct mddev *mddev, struct md_rdev *rdev) - set_mask_bits(&mddev->sb_flags, 0, - BIT(MD_SB_CHANGE_DEVS) | BIT(MD_SB_CHANGE_PENDING)); - spin_unlock_irqrestore(&conf->device_lock, flags); -- pr_crit("md/raid10:%s: Disk failure on %s, disabling device.\n" -+ pr_crit("md/raid10:%s: Disk failure on %pg, disabling device.\n" - "md/raid10:%s: Operation continuing on %d devices.\n", -- mdname(mddev), bdevname(rdev->bdev, b), -+ mdname(mddev), rdev->bdev, - mdname(mddev), conf->geo.raid_disks - mddev->degraded); - } - -@@ -1999,13 +1997,12 @@ static void print_conf(struct r10conf *conf) - /* This is only called with ->reconfix_mutex held, so - * rcu protection of rdev is not needed */ - for (i = 0; i < conf->geo.raid_disks; i++) { -- char b[BDEVNAME_SIZE]; - rdev = conf->mirrors[i].rdev; - if (rdev) -- pr_debug(" disk %d, wo:%d, o:%d, dev:%s\n", -+ pr_debug(" disk %d, wo:%d, o:%d, dev:%pg\n", - i, !test_bit(In_sync, &rdev->flags), - !test_bit(Faulty, &rdev->flags), -- bdevname(rdev->bdev,b)); -+ rdev->bdev); - } - } - -@@ -2665,14 +2662,11 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 - check_decay_read_errors(mddev, rdev); - atomic_inc(&rdev->read_errors); - if (atomic_read(&rdev->read_errors) > max_read_errors) { -- char b[BDEVNAME_SIZE]; -- bdevname(rdev->bdev, b); -- -- pr_notice("md/raid10:%s: %s: Raid device exceeded read_error threshold [cur %d:max %d]\n", -- mdname(mddev), b, -+ pr_notice("md/raid10:%s: %pg: Raid device exceeded read_error threshold [cur %d:max %d]\n", -+ mdname(mddev), rdev->bdev, - atomic_read(&rdev->read_errors), max_read_errors); -- pr_notice("md/raid10:%s: %s: Failing raid device\n", -- mdname(mddev), b); -+ pr_notice("md/raid10:%s: %pg: Failing raid device\n", -+ mdname(mddev), rdev->bdev); - md_error(mddev, rdev); - r10_bio->devs[r10_bio->read_slot].bio = IO_BLOCKED; - return; -@@ -2742,8 +2736,6 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 - /* write it back and re-read */ - rcu_read_lock(); - while (sl != r10_bio->read_slot) { -- char b[BDEVNAME_SIZE]; -- - if (sl==0) - sl = conf->copies; - sl--; -@@ -2762,24 +2754,22 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 - s, conf->tmppage, WRITE) - == 0) { - /* Well, this device is dead */ -- pr_notice("md/raid10:%s: read correction write failed (%d sectors at %llu on %s)\n", -+ pr_notice("md/raid10:%s: read correction write failed (%d sectors at %llu on %pg)\n", - mdname(mddev), s, - (unsigned long long)( - sect + - choose_data_offset(r10_bio, - rdev)), -- bdevname(rdev->bdev, b)); -- pr_notice("md/raid10:%s: %s: failing drive\n", -+ rdev->bdev); -+ pr_notice("md/raid10:%s: %pg: failing drive\n", - mdname(mddev), -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - } - rdev_dec_pending(rdev, mddev); - rcu_read_lock(); - } - sl = start; - while (sl != r10_bio->read_slot) { -- char b[BDEVNAME_SIZE]; -- - if (sl==0) - sl = conf->copies; - sl--; -@@ -2799,23 +2789,23 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10 - READ)) { - case 0: - /* Well, this device is dead */ -- pr_notice("md/raid10:%s: unable to read back corrected sectors (%d sectors at %llu on %s)\n", -+ pr_notice("md/raid10:%s: unable to read back corrected sectors (%d sectors at %llu on %pg)\n", - mdname(mddev), s, - (unsigned long long)( - sect + - choose_data_offset(r10_bio, rdev)), -- bdevname(rdev->bdev, b)); -- pr_notice("md/raid10:%s: %s: failing drive\n", -+ rdev->bdev); -+ pr_notice("md/raid10:%s: %pg: failing drive\n", - mdname(mddev), -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - break; - case 1: -- pr_info("md/raid10:%s: read error corrected (%d sectors at %llu on %s)\n", -+ pr_info("md/raid10:%s: read error corrected (%d sectors at %llu on %pg)\n", - mdname(mddev), s, - (unsigned long long)( - sect + - choose_data_offset(r10_bio, rdev)), -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - atomic_add(s, &rdev->corrected_errors); - } - -diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c -index 0b5dcaabbc15..0323eb8fa949 100644 ---- a/drivers/md/raid5-cache.c -+++ b/drivers/md/raid5-cache.c -@@ -3067,11 +3067,10 @@ int r5l_init_log(struct r5conf *conf, struct md_rdev *rdev) - { - struct request_queue *q = bdev_get_queue(rdev->bdev); - struct r5l_log *log; -- char b[BDEVNAME_SIZE]; - int ret; - -- pr_debug("md/raid:%s: using device %s as journal\n", -- mdname(conf->mddev), bdevname(rdev->bdev, b)); -+ pr_debug("md/raid:%s: using device %pg as journal\n", -+ mdname(conf->mddev), rdev->bdev); - - if (PAGE_SIZE != 4096) - return -EINVAL; -diff --git a/drivers/md/raid5-ppl.c b/drivers/md/raid5-ppl.c -index 3ddc2aa0b530..fc42e28205d8 100644 ---- a/drivers/md/raid5-ppl.c -+++ b/drivers/md/raid5-ppl.c -@@ -807,7 +807,6 @@ static int ppl_recover_entry(struct ppl_log *log, struct ppl_header_entry *e, - int data_disks; - int i; - int ret = 0; -- char b[BDEVNAME_SIZE]; - unsigned int pp_size = le32_to_cpu(e->pp_size); - unsigned int data_size = le32_to_cpu(e->data_size); - -@@ -901,8 +900,8 @@ static int ppl_recover_entry(struct ppl_log *log, struct ppl_header_entry *e, - break; - } - -- pr_debug("%s:%*s reading data member disk %s sector %llu\n", -- __func__, indent, "", bdevname(rdev->bdev, b), -+ pr_debug("%s:%*s reading data member disk %pg sector %llu\n", -+ __func__, indent, "", rdev->bdev, - (unsigned long long)sector); - if (!sync_page_io(rdev, sector, block_size, page2, - REQ_OP_READ, 0, false)) { -@@ -946,10 +945,10 @@ static int ppl_recover_entry(struct ppl_log *log, struct ppl_header_entry *e, - parity_rdev = conf->disks[sh.pd_idx].rdev; - - BUG_ON(parity_rdev->bdev->bd_dev != log->rdev->bdev->bd_dev); -- pr_debug("%s:%*s write parity at sector %llu, disk %s\n", -+ pr_debug("%s:%*s write parity at sector %llu, disk %pg\n", - __func__, indent, "", - (unsigned long long)parity_sector, -- bdevname(parity_rdev->bdev, b)); -+ parity_rdev->bdev); - if (!sync_page_io(parity_rdev, parity_sector, block_size, - page1, REQ_OP_WRITE, 0, false)) { - pr_debug("%s:%*s parity write error!\n", __func__, -@@ -1261,7 +1260,6 @@ void ppl_exit_log(struct r5conf *conf) - - static int ppl_validate_rdev(struct md_rdev *rdev) - { -- char b[BDEVNAME_SIZE]; - int ppl_data_sectors; - int ppl_size_new; - -@@ -1278,8 +1276,8 @@ static int ppl_validate_rdev(struct md_rdev *rdev) - RAID5_STRIPE_SECTORS((struct r5conf *)rdev->mddev->private)); - - if (ppl_data_sectors <= 0) { -- pr_warn("md/raid:%s: PPL space too small on %s\n", -- mdname(rdev->mddev), bdevname(rdev->bdev, b)); -+ pr_warn("md/raid:%s: PPL space too small on %pg\n", -+ mdname(rdev->mddev), rdev->bdev); - return -ENOSPC; - } - -@@ -1289,16 +1287,16 @@ static int ppl_validate_rdev(struct md_rdev *rdev) - rdev->ppl.sector + ppl_size_new > rdev->data_offset) || - (rdev->ppl.sector >= rdev->data_offset && - rdev->data_offset + rdev->sectors > rdev->ppl.sector)) { -- pr_warn("md/raid:%s: PPL space overlaps with data on %s\n", -- mdname(rdev->mddev), bdevname(rdev->bdev, b)); -+ pr_warn("md/raid:%s: PPL space overlaps with data on %pg\n", -+ mdname(rdev->mddev), rdev->bdev); - return -EINVAL; - } - - if (!rdev->mddev->external && - ((rdev->ppl.offset > 0 && rdev->ppl.offset < (rdev->sb_size >> 9)) || - (rdev->ppl.offset <= 0 && rdev->ppl.offset + ppl_size_new > 0))) { -- pr_warn("md/raid:%s: PPL space overlaps with superblock on %s\n", -- mdname(rdev->mddev), bdevname(rdev->bdev, b)); -+ pr_warn("md/raid:%s: PPL space overlaps with superblock on %pg\n", -+ mdname(rdev->mddev), rdev->bdev); - return -EINVAL; - } - -@@ -1468,14 +1466,13 @@ int ppl_modify_log(struct r5conf *conf, struct md_rdev *rdev, bool add) - struct ppl_conf *ppl_conf = conf->log_private; - struct ppl_log *log; - int ret = 0; -- char b[BDEVNAME_SIZE]; - - if (!rdev) - return -EINVAL; - -- pr_debug("%s: disk: %d operation: %s dev: %s\n", -+ pr_debug("%s: disk: %d operation: %s dev: %pg\n", - __func__, rdev->raid_disk, add ? "add" : "remove", -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - - if (rdev->raid_disk < 0) - return 0; -diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index 01c326dc57d5..1b2f6e62507d 100644 ---- a/drivers/md/raid5.c -+++ b/drivers/md/raid5.c -@@ -2665,7 +2665,6 @@ static void raid5_end_read_request(struct bio * bi) - struct stripe_head *sh = bi->bi_private; - struct r5conf *conf = sh->raid_conf; - int disks = sh->disks, i; -- char b[BDEVNAME_SIZE]; - struct md_rdev *rdev = NULL; - sector_t s; - -@@ -2703,10 +2702,10 @@ static void raid5_end_read_request(struct bio * bi) - * any error - */ - pr_info_ratelimited( -- "md/raid:%s: read error corrected (%lu sectors at %llu on %s)\n", -+ "md/raid:%s: read error corrected (%lu sectors at %llu on %pg)\n", - mdname(conf->mddev), RAID5_STRIPE_SECTORS(conf), - (unsigned long long)s, -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - atomic_add(RAID5_STRIPE_SECTORS(conf), &rdev->corrected_errors); - clear_bit(R5_ReadError, &sh->dev[i].flags); - clear_bit(R5_ReWrite, &sh->dev[i].flags); -@@ -2723,7 +2722,6 @@ static void raid5_end_read_request(struct bio * bi) - if (atomic_read(&rdev->read_errors)) - atomic_set(&rdev->read_errors, 0); - } else { -- const char *bdn = bdevname(rdev->bdev, b); - int retry = 0; - int set_bad = 0; - -@@ -2732,25 +2730,25 @@ static void raid5_end_read_request(struct bio * bi) - atomic_inc(&rdev->read_errors); - if (test_bit(R5_ReadRepl, &sh->dev[i].flags)) - pr_warn_ratelimited( -- "md/raid:%s: read error on replacement device (sector %llu on %s).\n", -+ "md/raid:%s: read error on replacement device (sector %llu on %pg).\n", - mdname(conf->mddev), - (unsigned long long)s, -- bdn); -+ rdev->bdev); - else if (conf->mddev->degraded >= conf->max_degraded) { - set_bad = 1; - pr_warn_ratelimited( -- "md/raid:%s: read error not correctable (sector %llu on %s).\n", -+ "md/raid:%s: read error not correctable (sector %llu on %pg).\n", - mdname(conf->mddev), - (unsigned long long)s, -- bdn); -+ rdev->bdev); - } else if (test_bit(R5_ReWrite, &sh->dev[i].flags)) { - /* Oh, no!!! */ - set_bad = 1; - pr_warn_ratelimited( -- "md/raid:%s: read error NOT corrected!! (sector %llu on %s).\n", -+ "md/raid:%s: read error NOT corrected!! (sector %llu on %pg).\n", - mdname(conf->mddev), - (unsigned long long)s, -- bdn); -+ rdev->bdev); - } else if (atomic_read(&rdev->read_errors) - > conf->max_nr_stripes) { - if (!test_bit(Faulty, &rdev->flags)) { -@@ -2758,8 +2756,8 @@ static void raid5_end_read_request(struct bio * bi) - mdname(conf->mddev), - atomic_read(&rdev->read_errors), - conf->max_nr_stripes); -- pr_warn("md/raid:%s: Too many read errors, failing device %s.\n", -- mdname(conf->mddev), bdn); -+ pr_warn("md/raid:%s: Too many read errors, failing device %pg.\n", -+ mdname(conf->mddev), rdev->bdev); - } - } else - retry = 1; -@@ -2872,13 +2870,12 @@ static void raid5_end_write_request(struct bio *bi) - - static void raid5_error(struct mddev *mddev, struct md_rdev *rdev) - { -- char b[BDEVNAME_SIZE]; - struct r5conf *conf = mddev->private; - unsigned long flags; - pr_debug("raid456: error called\n"); - -- pr_crit("md/raid:%s: Disk failure on %s, disabling device.\n", -- mdname(mddev), bdevname(rdev->bdev, b)); -+ pr_crit("md/raid:%s: Disk failure on %pg, disabling device.\n", -+ mdname(mddev), rdev->bdev); - - spin_lock_irqsave(&conf->device_lock, flags); - set_bit(Faulty, &rdev->flags); -@@ -7321,9 +7318,8 @@ static struct r5conf *setup_conf(struct mddev *mddev) - } - - if (test_bit(In_sync, &rdev->flags)) { -- char b[BDEVNAME_SIZE]; -- pr_info("md/raid:%s: device %s operational as raid disk %d\n", -- mdname(mddev), bdevname(rdev->bdev, b), raid_disk); -+ pr_info("md/raid:%s: device %pg operational as raid disk %d\n", -+ mdname(mddev), rdev->bdev, raid_disk); - } else if (rdev->saved_raid_disk != raid_disk) - /* Cannot rely on bitmap to complete recovery */ - conf->fullsync = 1; -@@ -7846,12 +7842,11 @@ static void print_raid5_conf (struct r5conf *conf) - - rcu_read_lock(); - for (i = 0; i < conf->raid_disks; i++) { -- char b[BDEVNAME_SIZE]; - rdev = rcu_dereference(conf->disks[i].rdev); - if (rdev) -- pr_debug(" disk %d, o:%d, dev:%s\n", -+ pr_debug(" disk %d, o:%d, dev:%pg\n", - i, !test_bit(Faulty, &rdev->flags), -- bdevname(rdev->bdev, b)); -+ rdev->bdev); - } - rcu_read_unlock(); - } --- -2.35.1 - diff --git a/queue-5.15/md-replace-role-magic-numbers-with-defined-constants.patch b/queue-5.15/md-replace-role-magic-numbers-with-defined-constants.patch deleted file mode 100644 index 4885d22d29a..00000000000 --- a/queue-5.15/md-replace-role-magic-numbers-with-defined-constants.patch +++ /dev/null @@ -1,72 +0,0 @@ -From f3f3969728bbf0a32ac0666d91dcf7a01db28f50 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 21 Apr 2022 13:45:58 -0600 -Subject: md: Replace role magic numbers with defined constants - -From: David Sloan - -[ Upstream commit 9151ad5d8676a89cf1b6a4051037ab3ca077d938 ] - -There are several instances where magic numbers are used in md.c instead -of the defined constants in md_p.h. This patch set improves code -readability by replacing all occurrences of 0xffff, 0xfffe, and 0xfffd when -relating to md roles with their equivalent defined constant. - -Signed-off-by: David Sloan -Reviewed-by: Logan Gunthorpe -Signed-off-by: Song Liu -Stable-dep-of: 1727fd5015d8 ("md: Replace snprintf with scnprintf") -Signed-off-by: Sasha Levin ---- - drivers/md/md.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/drivers/md/md.c b/drivers/md/md.c -index ea21a9ddf15f..79b685fb8207 100644 ---- a/drivers/md/md.c -+++ b/drivers/md/md.c -@@ -2654,11 +2654,11 @@ static bool does_sb_need_changing(struct mddev *mddev) - rdev_for_each(rdev, mddev) { - role = le16_to_cpu(sb->dev_roles[rdev->desc_nr]); - /* Device activated? */ -- if (role == 0xffff && rdev->raid_disk >=0 && -+ if (role == MD_DISK_ROLE_SPARE && rdev->raid_disk >= 0 && - !test_bit(Faulty, &rdev->flags)) - return true; - /* Device turned faulty? */ -- if (test_bit(Faulty, &rdev->flags) && (role < 0xfffd)) -+ if (test_bit(Faulty, &rdev->flags) && (role < MD_DISK_ROLE_MAX)) - return true; - } - -@@ -9679,7 +9679,7 @@ static void check_sb_changes(struct mddev *mddev, struct md_rdev *rdev) - role = le16_to_cpu(sb->dev_roles[rdev2->desc_nr]); - - if (test_bit(Candidate, &rdev2->flags)) { -- if (role == 0xfffe) { -+ if (role == MD_DISK_ROLE_FAULTY) { - pr_info("md: Removing Candidate device %s because add failed\n", bdevname(rdev2->bdev,b)); - md_kick_rdev_from_array(rdev2); - continue; -@@ -9692,7 +9692,7 @@ static void check_sb_changes(struct mddev *mddev, struct md_rdev *rdev) - /* - * got activated except reshape is happening. - */ -- if (rdev2->raid_disk == -1 && role != 0xffff && -+ if (rdev2->raid_disk == -1 && role != MD_DISK_ROLE_SPARE && - !(le32_to_cpu(sb->feature_map) & - MD_FEATURE_RESHAPE_ACTIVE)) { - rdev2->saved_raid_disk = role; -@@ -9709,7 +9709,8 @@ static void check_sb_changes(struct mddev *mddev, struct md_rdev *rdev) - * as faulty. The recovery is performed by the - * one who initiated the error. - */ -- if ((role == 0xfffe) || (role == 0xfffd)) { -+ if (role == MD_DISK_ROLE_FAULTY || -+ role == MD_DISK_ROLE_JOURNAL) { - md_error(mddev, rdev2); - clear_bit(Blocked, &rdev2->flags); - } --- -2.35.1 - diff --git a/queue-5.15/md-replace-snprintf-with-scnprintf.patch b/queue-5.15/md-replace-snprintf-with-scnprintf.patch index 587dd0da5bd..d83cd779aa3 100644 --- a/queue-5.15/md-replace-snprintf-with-scnprintf.patch +++ b/queue-5.15/md-replace-snprintf-with-scnprintf.patch @@ -50,22 +50,17 @@ Signed-off-by: Saurabh Sengar Signed-off-by: Song Liu Signed-off-by: Sasha Levin --- - drivers/md/raid0.c | 2 +- + drivers/md/raid0.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c -index a7fa2c2e7748..81a34051fb17 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c -@@ -47,7 +47,7 @@ static void dump_zones(struct mddev *mddev) +@@ -48,7 +48,7 @@ static void dump_zones(struct mddev *mdd int len = 0; for (k = 0; k < conf->strip_zone[j].nb_dev; k++) -- len += snprintf(line+len, 200-len, "%s%pg", k?"/":"", -+ len += scnprintf(line+len, 200-len, "%s%pg", k?"/":"", - conf->devlist[j * raid_disks + k]->bdev); +- len += snprintf(line+len, 200-len, "%s%s", k?"/":"", ++ len += scnprintf(line+len, 200-len, "%s%s", k?"/":"", + bdevname(conf->devlist[j*raid_disks + + k]->bdev, b)); pr_debug("md: zone%d=[%s]\n", j, line); - --- -2.35.1 - diff --git a/queue-5.15/series b/queue-5.15/series index 27d3aa965af..5cc7d810d4c 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -360,10 +360,6 @@ ata-fix-ata_id_has_devslp.patch ata-fix-ata_id_has_ncq_autosense.patch ata-fix-ata_id_has_dipm.patch mtd-rawnand-meson-fix-bit-map-use-in-meson_nfc_ecc_c.patch -md-add-support-for-req_nowait.patch -md-raid5-add-__rcu-annotation-to-struct-disk_info.patch -md-replace-role-magic-numbers-with-defined-constants.patch -md-remove-most-calls-to-bdevname.patch md-replace-snprintf-with-scnprintf.patch md-raid5-ensure-stripe_fill-happens-on-non-read-io-w.patch md-raid5-remove-unnecessary-bio_put-in-raid5_read_on.patch @@ -625,3 +621,4 @@ net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch drm-amd-display-fix-build-breakage-with-config_debug_fs-n.patch phy-qcom-qmp-fix-msm8996-pcie-phy-support.patch clk-fix-pointer-casting-to-prevent-oops-in-devm_clk_release.patch +net-wwan-t7xx-use-gfp_atomic-under-spin-lock-in-t7xx_cldma_gpd_set_next_ptr.patch