From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH 06/11] md: avoid conflicts in active_aligned_reads operations
Date: Sun, 31 Mar 2024 21:40:02 +0800 [thread overview]
Message-ID: <202403312116.Sh5vFCWf-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <ffb112e756514a0eaab891379df0d834@kioxia.com>
References: <ffb112e756514a0eaab891379df0d834@kioxia.com>
TO: tada keisuke <keisuke1.tada@kioxia.com>
TO: "song@kernel.org" <song@kernel.org>
TO: "yukuai3@huawei.com" <yukuai3@huawei.com>
CC: "linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>
CC: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Hi tada,
kernel test robot noticed the following build warnings:
[auto build test WARNING on fcf3f7e2fc8a53a6140beee46ec782a4c88e4744]
url: https://github.com/intel-lab-lkp/linux/commits/tada-keisuke/md-add-infra-for-active_aligned_reads-changes/20240326-201827
base: fcf3f7e2fc8a53a6140beee46ec782a4c88e4744
patch link: https://lore.kernel.org/r/ffb112e756514a0eaab891379df0d834%40kioxia.com
patch subject: [PATCH 06/11] md: avoid conflicts in active_aligned_reads operations
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: i386-randconfig-141-20240328 (https://download.01.org/0day-ci/archive/20240331/202403312116.Sh5vFCWf-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202403312116.Sh5vFCWf-lkp@intel.com/
New smatch warnings:
drivers/md/raid5.c:7680 setup_conf() warn: passing zero to 'ERR_PTR'
Old smatch warnings:
drivers/md/raid5.c:2889 raid5_end_write_request() error: uninitialized symbol 'rdev'.
drivers/md/raid5.c:2894 raid5_end_write_request() error: uninitialized symbol 'rdev'.
drivers/md/raid5.c:7219 alloc_thread_groups() warn: double check that we're allocating correct size: 116 vs 1
vim +/ERR_PTR +7680 drivers/md/raid5.c
39eda94c2b8f91 tada keisuke 2024-03-26 7413
39eda94c2b8f91 tada keisuke 2024-03-26 7414 static struct r5conf *setup_conf(struct mddev *mddev, bool quiesce)
^1da177e4c3f41 Linus Torvalds 2005-04-16 7415 {
d1688a6d5515f1 NeilBrown 2011-10-11 7416 struct r5conf *conf;
5e5e3e78ed9038 NeilBrown 2009-10-16 7417 int raid_disk, memory, max_disks;
3cb03002000f13 NeilBrown 2011-10-11 7418 struct md_rdev *rdev;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7419 struct disk_info *disk;
0232605d987d82 NeilBrown 2012-07-03 7420 char pers_name[6];
566c09c53455d7 Shaohua Li 2013-11-14 7421 int i;
d2c9ad41249ac8 Guoqing Jiang 2019-12-20 7422 int group_cnt;
60aaf933854511 majianpeng 2013-11-14 7423 struct r5worker_group *new_group;
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7424 int ret = -ENOMEM;
39eda94c2b8f91 tada keisuke 2024-03-26 7425 unsigned int percpu_ref_init_flags;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7426
91adb56473febe NeilBrown 2009-03-31 7427 if (mddev->new_level != 5
91adb56473febe NeilBrown 2009-03-31 7428 && mddev->new_level != 4
91adb56473febe NeilBrown 2009-03-31 7429 && mddev->new_level != 6) {
cc6167b4f3b3ca NeilBrown 2016-11-02 7430 pr_warn("md/raid:%s: raid level not set to 4/5/6 (%d)\n",
91adb56473febe NeilBrown 2009-03-31 7431 mdname(mddev), mddev->new_level);
91adb56473febe NeilBrown 2009-03-31 7432 return ERR_PTR(-EIO);
^1da177e4c3f41 Linus Torvalds 2005-04-16 7433 }
91adb56473febe NeilBrown 2009-03-31 7434 if ((mddev->new_level == 5
91adb56473febe NeilBrown 2009-03-31 7435 && !algorithm_valid_raid5(mddev->new_layout)) ||
91adb56473febe NeilBrown 2009-03-31 7436 (mddev->new_level == 6
91adb56473febe NeilBrown 2009-03-31 7437 && !algorithm_valid_raid6(mddev->new_layout))) {
cc6167b4f3b3ca NeilBrown 2016-11-02 7438 pr_warn("md/raid:%s: layout %d not supported\n",
91adb56473febe NeilBrown 2009-03-31 7439 mdname(mddev), mddev->new_layout);
91adb56473febe NeilBrown 2009-03-31 7440 return ERR_PTR(-EIO);
99c0fb5f92828a NeilBrown 2009-03-31 7441 }
91adb56473febe NeilBrown 2009-03-31 7442 if (mddev->new_level == 6 && mddev->raid_disks < 4) {
cc6167b4f3b3ca NeilBrown 2016-11-02 7443 pr_warn("md/raid:%s: not enough configured devices (%d, minimum 4)\n",
91adb56473febe NeilBrown 2009-03-31 7444 mdname(mddev), mddev->raid_disks);
91adb56473febe NeilBrown 2009-03-31 7445 return ERR_PTR(-EINVAL);
4bbf3771ca40d0 NeilBrown 2008-10-13 7446 }
4bbf3771ca40d0 NeilBrown 2008-10-13 7447
664e7c413f1e90 Andre Noll 2009-06-18 7448 if (!mddev->new_chunk_sectors ||
664e7c413f1e90 Andre Noll 2009-06-18 7449 (mddev->new_chunk_sectors << 9) % PAGE_SIZE ||
664e7c413f1e90 Andre Noll 2009-06-18 7450 !is_power_of_2(mddev->new_chunk_sectors)) {
cc6167b4f3b3ca NeilBrown 2016-11-02 7451 pr_warn("md/raid:%s: invalid chunk size %d\n",
0c55e02259115c NeilBrown 2010-05-03 7452 mdname(mddev), mddev->new_chunk_sectors << 9);
91adb56473febe NeilBrown 2009-03-31 7453 return ERR_PTR(-EINVAL);
f67055780caac6 NeilBrown 2006-03-27 7454 }
f67055780caac6 NeilBrown 2006-03-27 7455
d1688a6d5515f1 NeilBrown 2011-10-11 7456 conf = kzalloc(sizeof(struct r5conf), GFP_KERNEL);
91adb56473febe NeilBrown 2009-03-31 7457 if (conf == NULL)
^1da177e4c3f41 Linus Torvalds 2005-04-16 7458 goto abort;
c911c46c017c74 Yufen Yu 2020-07-18 7459
e236858243d7a8 Yufen Yu 2020-07-18 7460 #if PAGE_SIZE != DEFAULT_STRIPE_SIZE
e236858243d7a8 Yufen Yu 2020-07-18 7461 conf->stripe_size = DEFAULT_STRIPE_SIZE;
e236858243d7a8 Yufen Yu 2020-07-18 7462 conf->stripe_shift = ilog2(DEFAULT_STRIPE_SIZE) - 9;
e236858243d7a8 Yufen Yu 2020-07-18 7463 conf->stripe_sectors = DEFAULT_STRIPE_SIZE >> 9;
e236858243d7a8 Yufen Yu 2020-07-18 7464 #endif
aaf9f12ebfafd1 Shaohua Li 2017-03-03 7465 INIT_LIST_HEAD(&conf->free_list);
aaf9f12ebfafd1 Shaohua Li 2017-03-03 7466 INIT_LIST_HEAD(&conf->pending_list);
6396bb221514d2 Kees Cook 2018-06-12 7467 conf->pending_data = kcalloc(PENDING_IO_MAX,
6396bb221514d2 Kees Cook 2018-06-12 7468 sizeof(struct r5pending_data),
6396bb221514d2 Kees Cook 2018-06-12 7469 GFP_KERNEL);
aaf9f12ebfafd1 Shaohua Li 2017-03-03 7470 if (!conf->pending_data)
aaf9f12ebfafd1 Shaohua Li 2017-03-03 7471 goto abort;
aaf9f12ebfafd1 Shaohua Li 2017-03-03 7472 for (i = 0; i < PENDING_IO_MAX; i++)
aaf9f12ebfafd1 Shaohua Li 2017-03-03 7473 list_add(&conf->pending_data[i].sibling, &conf->free_list);
851c30c9badfc6 Shaohua Li 2013-08-28 7474 /* Don't enable multi-threading by default*/
d2c9ad41249ac8 Guoqing Jiang 2019-12-20 7475 if (!alloc_thread_groups(conf, 0, &group_cnt, &new_group)) {
60aaf933854511 majianpeng 2013-11-14 7476 conf->group_cnt = group_cnt;
d2c9ad41249ac8 Guoqing Jiang 2019-12-20 7477 conf->worker_cnt_per_group = 0;
60aaf933854511 majianpeng 2013-11-14 7478 conf->worker_groups = new_group;
60aaf933854511 majianpeng 2013-11-14 7479 } else
851c30c9badfc6 Shaohua Li 2013-08-28 7480 goto abort;
f5efd45ae597c9 Dan Williams 2009-10-16 7481 spin_lock_init(&conf->device_lock);
0a87b25ff2eb61 Ahmed S. Darwish 2020-07-20 7482 seqcount_spinlock_init(&conf->gen_lock, &conf->device_lock);
2d5b569b665ea6 NeilBrown 2015-07-06 7483 mutex_init(&conf->cache_size_mutex);
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7484
b1b4648648e187 Yuanhan Liu 2015-05-08 7485 init_waitqueue_head(&conf->wait_for_quiescent);
6ab2a4b806ae21 Shaohua Li 2016-02-25 7486 init_waitqueue_head(&conf->wait_for_stripe);
f5efd45ae597c9 Dan Williams 2009-10-16 7487 init_waitqueue_head(&conf->wait_for_overlap);
f5efd45ae597c9 Dan Williams 2009-10-16 7488 INIT_LIST_HEAD(&conf->handle_list);
535ae4eb1225f1 Shaohua Li 2017-02-15 7489 INIT_LIST_HEAD(&conf->loprio_list);
f5efd45ae597c9 Dan Williams 2009-10-16 7490 INIT_LIST_HEAD(&conf->hold_list);
f5efd45ae597c9 Dan Williams 2009-10-16 7491 INIT_LIST_HEAD(&conf->delayed_list);
f5efd45ae597c9 Dan Williams 2009-10-16 7492 INIT_LIST_HEAD(&conf->bitmap_list);
773ca82fa1ee58 Shaohua Li 2013-08-27 7493 init_llist_head(&conf->released_stripes);
f5efd45ae597c9 Dan Williams 2009-10-16 7494 atomic_set(&conf->active_stripes, 0);
f5efd45ae597c9 Dan Williams 2009-10-16 7495 atomic_set(&conf->preread_active_stripes, 0);
39eda94c2b8f91 tada keisuke 2024-03-26 7496 if (quiesce)
39eda94c2b8f91 tada keisuke 2024-03-26 7497 percpu_ref_init_flags = PERCPU_REF_ALLOW_REINIT | PERCPU_REF_INIT_DEAD;
39eda94c2b8f91 tada keisuke 2024-03-26 7498 else
39eda94c2b8f91 tada keisuke 2024-03-26 7499 percpu_ref_init_flags = PERCPU_REF_ALLOW_REINIT;
d5f345aef75231 tada keisuke 2024-03-26 7500 ret = percpu_ref_init(&conf->active_aligned_reads, percpu_wakeup_handle_req_active,
d5f345aef75231 tada keisuke 2024-03-26 7501 percpu_ref_init_flags, GFP_KERNEL);
d5f345aef75231 tada keisuke 2024-03-26 7502 if (ret)
d5f345aef75231 tada keisuke 2024-03-26 7503 goto abort;
765d704db1f583 Shaohua Li 2017-01-04 7504 spin_lock_init(&conf->pending_bios_lock);
765d704db1f583 Shaohua Li 2017-01-04 7505 conf->batch_bio_dispatch = true;
765d704db1f583 Shaohua Li 2017-01-04 7506 rdev_for_each(rdev, mddev) {
765d704db1f583 Shaohua Li 2017-01-04 7507 if (test_bit(Journal, &rdev->flags))
765d704db1f583 Shaohua Li 2017-01-04 7508 continue;
10f0d2a517796b Christoph Hellwig 2022-04-15 7509 if (bdev_nonrot(rdev->bdev)) {
765d704db1f583 Shaohua Li 2017-01-04 7510 conf->batch_bio_dispatch = false;
765d704db1f583 Shaohua Li 2017-01-04 7511 break;
765d704db1f583 Shaohua Li 2017-01-04 7512 }
765d704db1f583 Shaohua Li 2017-01-04 7513 }
765d704db1f583 Shaohua Li 2017-01-04 7514
f5efd45ae597c9 Dan Williams 2009-10-16 7515 conf->bypass_threshold = BYPASS_THRESHOLD;
d890fa2b0586b6 NeilBrown 2011-10-26 7516 conf->recovery_disabled = mddev->recovery_disabled - 1;
91adb56473febe NeilBrown 2009-03-31 7517
f67055780caac6 NeilBrown 2006-03-27 7518 conf->raid_disks = mddev->raid_disks;
91adb56473febe NeilBrown 2009-03-31 7519 if (mddev->reshape_position == MaxSector)
91adb56473febe NeilBrown 2009-03-31 7520 conf->previous_raid_disks = mddev->raid_disks;
91adb56473febe NeilBrown 2009-03-31 7521 else
f67055780caac6 NeilBrown 2006-03-27 7522 conf->previous_raid_disks = mddev->raid_disks - mddev->delta_disks;
5e5e3e78ed9038 NeilBrown 2009-10-16 7523 max_disks = max(conf->raid_disks, conf->previous_raid_disks);
f67055780caac6 NeilBrown 2006-03-27 7524
6396bb221514d2 Kees Cook 2018-06-12 7525 conf->disks = kcalloc(max_disks, sizeof(struct disk_info),
b55e6bfcd23cb2 NeilBrown 2006-03-27 7526 GFP_KERNEL);
d7bd398e97f236 Song Liu 2016-11-23 7527
b55e6bfcd23cb2 NeilBrown 2006-03-27 7528 if (!conf->disks)
b55e6bfcd23cb2 NeilBrown 2006-03-27 7529 goto abort;
9ffae0cf3ea02f NeilBrown 2006-01-06 7530
d7bd398e97f236 Song Liu 2016-11-23 7531 for (i = 0; i < max_disks; i++) {
d7bd398e97f236 Song Liu 2016-11-23 7532 conf->disks[i].extra_page = alloc_page(GFP_KERNEL);
d7bd398e97f236 Song Liu 2016-11-23 7533 if (!conf->disks[i].extra_page)
d7bd398e97f236 Song Liu 2016-11-23 7534 goto abort;
d7bd398e97f236 Song Liu 2016-11-23 7535 }
d7bd398e97f236 Song Liu 2016-11-23 7536
afeee514ce7f4c Kent Overstreet 2018-05-20 7537 ret = bioset_init(&conf->bio_split, BIO_POOL_SIZE, 0, 0);
afeee514ce7f4c Kent Overstreet 2018-05-20 7538 if (ret)
dd7a8f5dee81ff NeilBrown 2017-04-05 7539 goto abort;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7540 conf->mddev = mddev;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7541
5f7ef4875f9953 Dan Carpenter 2022-07-19 7542 ret = -ENOMEM;
5f7ef4875f9953 Dan Carpenter 2022-07-19 7543 conf->stripe_hashtbl = kzalloc(PAGE_SIZE, GFP_KERNEL);
5f7ef4875f9953 Dan Carpenter 2022-07-19 7544 if (!conf->stripe_hashtbl)
^1da177e4c3f41 Linus Torvalds 2005-04-16 7545 goto abort;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7546
566c09c53455d7 Shaohua Li 2013-11-14 7547 /* We init hash_locks[0] separately to that it can be used
566c09c53455d7 Shaohua Li 2013-11-14 7548 * as the reference lock in the spin_lock_nest_lock() call
566c09c53455d7 Shaohua Li 2013-11-14 7549 * in lock_all_device_hash_locks_irq in order to convince
566c09c53455d7 Shaohua Li 2013-11-14 7550 * lockdep that we know what we are doing.
566c09c53455d7 Shaohua Li 2013-11-14 7551 */
566c09c53455d7 Shaohua Li 2013-11-14 7552 spin_lock_init(conf->hash_locks);
566c09c53455d7 Shaohua Li 2013-11-14 7553 for (i = 1; i < NR_STRIPE_HASH_LOCKS; i++)
566c09c53455d7 Shaohua Li 2013-11-14 7554 spin_lock_init(conf->hash_locks + i);
566c09c53455d7 Shaohua Li 2013-11-14 7555
566c09c53455d7 Shaohua Li 2013-11-14 7556 for (i = 0; i < NR_STRIPE_HASH_LOCKS; i++)
566c09c53455d7 Shaohua Li 2013-11-14 7557 INIT_LIST_HEAD(conf->inactive_list + i);
566c09c53455d7 Shaohua Li 2013-11-14 7558
566c09c53455d7 Shaohua Li 2013-11-14 7559 for (i = 0; i < NR_STRIPE_HASH_LOCKS; i++)
566c09c53455d7 Shaohua Li 2013-11-14 7560 INIT_LIST_HEAD(conf->temp_inactive_list + i);
566c09c53455d7 Shaohua Li 2013-11-14 7561
1e6d690b9334b7 Song Liu 2016-11-17 7562 atomic_set(&conf->r5c_cached_full_stripes, 0);
1e6d690b9334b7 Song Liu 2016-11-17 7563 INIT_LIST_HEAD(&conf->r5c_full_stripe_list);
1e6d690b9334b7 Song Liu 2016-11-17 7564 atomic_set(&conf->r5c_cached_partial_stripes, 0);
1e6d690b9334b7 Song Liu 2016-11-17 7565 INIT_LIST_HEAD(&conf->r5c_partial_stripe_list);
e33fbb9cc73d65 Shaohua Li 2017-02-10 7566 atomic_set(&conf->r5c_flushing_full_stripes, 0);
e33fbb9cc73d65 Shaohua Li 2017-02-10 7567 atomic_set(&conf->r5c_flushing_partial_stripes, 0);
1e6d690b9334b7 Song Liu 2016-11-17 7568
36d1c6476be511 Dan Williams 2009-07-14 7569 conf->level = mddev->new_level;
46d5b785621ad1 shli@kernel.org 2014-12-15 7570 conf->chunk_sectors = mddev->new_chunk_sectors;
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7571 ret = raid5_alloc_percpu(conf);
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7572 if (ret)
16a53ecc35f2a8 NeilBrown 2006-06-26 7573 goto abort;
36d1c6476be511 Dan Williams 2009-07-14 7574
0c55e02259115c NeilBrown 2010-05-03 7575 pr_debug("raid456: run(%s) called.\n", mdname(mddev));
^1da177e4c3f41 Linus Torvalds 2005-04-16 7576
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7577 ret = -EIO;
dafb20fa34320a NeilBrown 2012-03-19 7578 rdev_for_each(rdev, mddev) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 7579 raid_disk = rdev->raid_disk;
5e5e3e78ed9038 NeilBrown 2009-10-16 7580 if (raid_disk >= max_disks
f2076e7d0643d1 Shaohua Li 2015-10-08 7581 || raid_disk < 0 || test_bit(Journal, &rdev->flags))
^1da177e4c3f41 Linus Torvalds 2005-04-16 7582 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7583 disk = conf->disks + raid_disk;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7584
17045f52ac76d9 NeilBrown 2011-12-23 7585 if (test_bit(Replacement, &rdev->flags)) {
17045f52ac76d9 NeilBrown 2011-12-23 7586 if (disk->replacement)
17045f52ac76d9 NeilBrown 2011-12-23 7587 goto abort;
b0920ede081b3f Logan Gunthorpe 2022-04-07 7588 RCU_INIT_POINTER(disk->replacement, rdev);
17045f52ac76d9 NeilBrown 2011-12-23 7589 } else {
17045f52ac76d9 NeilBrown 2011-12-23 7590 if (disk->rdev)
17045f52ac76d9 NeilBrown 2011-12-23 7591 goto abort;
b0920ede081b3f Logan Gunthorpe 2022-04-07 7592 RCU_INIT_POINTER(disk->rdev, rdev);
17045f52ac76d9 NeilBrown 2011-12-23 7593 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 7594
b2d444d7ad975d NeilBrown 2005-11-08 7595 if (test_bit(In_sync, &rdev->flags)) {
913cce5a1e588e Christoph Hellwig 2022-05-12 7596 pr_info("md/raid:%s: device %pg operational as raid disk %d\n",
913cce5a1e588e Christoph Hellwig 2022-05-12 7597 mdname(mddev), rdev->bdev, raid_disk);
d6b212f4b19da5 Jonathan Brassow 2011-06-08 7598 } else if (rdev->saved_raid_disk != raid_disk)
8c2e870a625bd3 Neil Brown 2008-06-28 7599 /* Cannot rely on bitmap to complete recovery */
8c2e870a625bd3 Neil Brown 2008-06-28 7600 conf->fullsync = 1;
^1da177e4c3f41 Linus Torvalds 2005-04-16 7601 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 7602
91adb56473febe NeilBrown 2009-03-31 7603 conf->level = mddev->new_level;
584acdd49cd247 Markus Stockhausen 2014-12-15 7604 if (conf->level == 6) {
16a53ecc35f2a8 NeilBrown 2006-06-26 7605 conf->max_degraded = 2;
584acdd49cd247 Markus Stockhausen 2014-12-15 7606 if (raid6_call.xor_syndrome)
584acdd49cd247 Markus Stockhausen 2014-12-15 7607 conf->rmw_level = PARITY_ENABLE_RMW;
16a53ecc35f2a8 NeilBrown 2006-06-26 7608 else
584acdd49cd247 Markus Stockhausen 2014-12-15 7609 conf->rmw_level = PARITY_DISABLE_RMW;
584acdd49cd247 Markus Stockhausen 2014-12-15 7610 } else {
16a53ecc35f2a8 NeilBrown 2006-06-26 7611 conf->max_degraded = 1;
584acdd49cd247 Markus Stockhausen 2014-12-15 7612 conf->rmw_level = PARITY_ENABLE_RMW;
584acdd49cd247 Markus Stockhausen 2014-12-15 7613 }
91adb56473febe NeilBrown 2009-03-31 7614 conf->algorithm = mddev->new_layout;
fef9c61fdfabf9 NeilBrown 2009-03-31 7615 conf->reshape_progress = mddev->reshape_position;
e183eaedd53807 NeilBrown 2009-03-31 7616 if (conf->reshape_progress != MaxSector) {
09c9e5fa1b93ad Andre Noll 2009-06-18 7617 conf->prev_chunk_sectors = mddev->chunk_sectors;
e183eaedd53807 NeilBrown 2009-03-31 7618 conf->prev_algo = mddev->layout;
5cac6bcb9312a1 NeilBrown 2015-07-17 7619 } else {
5cac6bcb9312a1 NeilBrown 2015-07-17 7620 conf->prev_chunk_sectors = conf->chunk_sectors;
5cac6bcb9312a1 NeilBrown 2015-07-17 7621 conf->prev_algo = conf->algorithm;
e183eaedd53807 NeilBrown 2009-03-31 7622 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 7623
edbe83ab4c27ea NeilBrown 2015-02-26 7624 conf->min_nr_stripes = NR_STRIPES;
ad5b0f7685dbfc Shaohua Li 2016-08-30 7625 if (mddev->reshape_position != MaxSector) {
ad5b0f7685dbfc Shaohua Li 2016-08-30 7626 int stripes = max_t(int,
c911c46c017c74 Yufen Yu 2020-07-18 7627 ((mddev->chunk_sectors << 9) / RAID5_STRIPE_SIZE(conf)) * 4,
c911c46c017c74 Yufen Yu 2020-07-18 7628 ((mddev->new_chunk_sectors << 9) / RAID5_STRIPE_SIZE(conf)) * 4);
ad5b0f7685dbfc Shaohua Li 2016-08-30 7629 conf->min_nr_stripes = max(NR_STRIPES, stripes);
ad5b0f7685dbfc Shaohua Li 2016-08-30 7630 if (conf->min_nr_stripes != NR_STRIPES)
cc6167b4f3b3ca NeilBrown 2016-11-02 7631 pr_info("md/raid:%s: force stripe size %d for reshape\n",
ad5b0f7685dbfc Shaohua Li 2016-08-30 7632 mdname(mddev), conf->min_nr_stripes);
ad5b0f7685dbfc Shaohua Li 2016-08-30 7633 }
edbe83ab4c27ea NeilBrown 2015-02-26 7634 memory = conf->min_nr_stripes * (sizeof(struct stripe_head) +
5e5e3e78ed9038 NeilBrown 2009-10-16 7635 max_disks * ((sizeof(struct bio) + PAGE_SIZE))) / 1024;
4bda556aea1d29 Shaohua Li 2013-11-14 7636 atomic_set(&conf->empty_inactive_list_nr, NR_STRIPE_HASH_LOCKS);
edbe83ab4c27ea NeilBrown 2015-02-26 7637 if (grow_stripes(conf, conf->min_nr_stripes)) {
cc6167b4f3b3ca NeilBrown 2016-11-02 7638 pr_warn("md/raid:%s: couldn't allocate %dkB for buffers\n",
0c55e02259115c NeilBrown 2010-05-03 7639 mdname(mddev), memory);
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7640 ret = -ENOMEM;
91adb56473febe NeilBrown 2009-03-31 7641 goto abort;
91adb56473febe NeilBrown 2009-03-31 7642 } else
cc6167b4f3b3ca NeilBrown 2016-11-02 7643 pr_debug("md/raid:%s: allocated %dkB\n", mdname(mddev), memory);
edbe83ab4c27ea NeilBrown 2015-02-26 7644 /*
edbe83ab4c27ea NeilBrown 2015-02-26 7645 * Losing a stripe head costs more than the time to refill it,
edbe83ab4c27ea NeilBrown 2015-02-26 7646 * it reduces the queue depth and so can hurt throughput.
edbe83ab4c27ea NeilBrown 2015-02-26 7647 * So set it rather large, scaled by number of devices.
edbe83ab4c27ea NeilBrown 2015-02-26 7648 */
86298d8b8ceacc Qi Zheng 2023-09-11 7649 conf->shrinker = shrinker_alloc(0, "md-raid5:%s", mdname(mddev));
86298d8b8ceacc Qi Zheng 2023-09-11 7650 if (!conf->shrinker) {
86298d8b8ceacc Qi Zheng 2023-09-11 7651 ret = -ENOMEM;
86298d8b8ceacc Qi Zheng 2023-09-11 7652 pr_warn("md/raid:%s: couldn't allocate shrinker.\n",
6a0f53ff351dfd Chao Yu 2016-09-20 7653 mdname(mddev));
6a0f53ff351dfd Chao Yu 2016-09-20 7654 goto abort;
6a0f53ff351dfd Chao Yu 2016-09-20 7655 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 7656
86298d8b8ceacc Qi Zheng 2023-09-11 7657 conf->shrinker->seeks = DEFAULT_SEEKS * conf->raid_disks * 4;
86298d8b8ceacc Qi Zheng 2023-09-11 7658 conf->shrinker->scan_objects = raid5_cache_scan;
86298d8b8ceacc Qi Zheng 2023-09-11 7659 conf->shrinker->count_objects = raid5_cache_count;
86298d8b8ceacc Qi Zheng 2023-09-11 7660 conf->shrinker->batch = 128;
86298d8b8ceacc Qi Zheng 2023-09-11 7661 conf->shrinker->private_data = conf;
86298d8b8ceacc Qi Zheng 2023-09-11 7662
86298d8b8ceacc Qi Zheng 2023-09-11 7663 shrinker_register(conf->shrinker);
86298d8b8ceacc Qi Zheng 2023-09-11 7664
0232605d987d82 NeilBrown 2012-07-03 7665 sprintf(pers_name, "raid%d", mddev->new_level);
44693154398272 Yu Kuai 2023-05-23 7666 rcu_assign_pointer(conf->thread,
44693154398272 Yu Kuai 2023-05-23 7667 md_register_thread(raid5d, mddev, pers_name));
91adb56473febe NeilBrown 2009-03-31 7668 if (!conf->thread) {
cc6167b4f3b3ca NeilBrown 2016-11-02 7669 pr_warn("md/raid:%s: couldn't allocate thread.\n",
91adb56473febe NeilBrown 2009-03-31 7670 mdname(mddev));
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7671 ret = -ENOMEM;
16a53ecc35f2a8 NeilBrown 2006-06-26 7672 goto abort;
16a53ecc35f2a8 NeilBrown 2006-06-26 7673 }
91adb56473febe NeilBrown 2009-03-31 7674
91adb56473febe NeilBrown 2009-03-31 7675 return conf;
91adb56473febe NeilBrown 2009-03-31 7676
91adb56473febe NeilBrown 2009-03-31 7677 abort:
8fbcba6b999beb Logan Gunthorpe 2022-04-07 7678 if (conf)
95fc17aac45300 Dan Williams 2009-07-31 7679 free_conf(conf);
8fbcba6b999beb Logan Gunthorpe 2022-04-07 @7680 return ERR_PTR(ret);
^1da177e4c3f41 Linus Torvalds 2005-04-16 7681 }
91adb56473febe NeilBrown 2009-03-31 7682
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-03-31 13:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-31 13:40 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-03-26 10:29 [PATCH 06/11] md: avoid conflicts in active_aligned_reads operations tada keisuke
2024-04-02 14:15 ` Dan Carpenter
2024-04-05 5:37 ` tada keisuke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202403312116.Sh5vFCWf-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.