All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.