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, Julia Lawall <julia.lawall@inria.fr>
Subject: Re: [PATCHv2] block: Fix potential deadlock while freezing queue and acquiring sysfs_lock
Date: Wed, 11 Dec 2024 16:19:40 +0800	[thread overview]
Message-ID: <202412111553.XzRIWedS-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20241210144222.1066229-1-nilay@linux.ibm.com>
References: <20241210144222.1066229-1-nilay@linux.ibm.com>
TO: Nilay Shroff <nilay@linux.ibm.com>
TO: linux-block@vger.kernel.org
CC: Nilay Shroff <nilay@linux.ibm.com>
CC: kjain@linux.ibm.com
CC: hch@lst.de
CC: axboe@kernel.dk
CC: ritesh.list@gmail.com
CC: ming.lei@redhat.com
CC: gjoyce@linux.ibm.com

Hi Nilay,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.13-rc2 next-20241211]
[cannot apply to axboe-block/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Nilay-Shroff/block-Fix-potential-deadlock-while-freezing-queue-and-acquiring-sysfs_lock/20241210-224435
base:   linus/master
patch link:    https://lore.kernel.org/r/20241210144222.1066229-1-nilay%40linux.ibm.com
patch subject: [PATCHv2] block: Fix potential deadlock while freezing queue and acquiring sysfs_lock
:::::: branch date: 17 hours ago
:::::: commit date: 17 hours ago
config: x86_64-randconfig-101-20241211 (https://download.01.org/0day-ci/archive/20241211/202412111553.XzRIWedS-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0

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: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202412111553.XzRIWedS-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> block/blk-mq.c:4997:2-12: second lock on line 4997
   block/blk-mq.c:4998:2-12: second lock on line 4998
--
>> block/blk-mq.c:5065:0-1: preceding lock on line 4997
   block/blk-mq.c:5065:0-1: preceding lock on line 4998

vim +4997 block/blk-mq.c

d48ece209f82c9c Jianchao Wang     2018-08-21  4978  
e4dc2b32df5573b Keith Busch       2017-05-30  4979  static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,
e4dc2b32df5573b Keith Busch       2017-05-30  4980  							int nr_hw_queues)
868f2f0b72068a0 Keith Busch       2015-12-17  4981  {
868f2f0b72068a0 Keith Busch       2015-12-17  4982  	struct request_queue *q;
d48ece209f82c9c Jianchao Wang     2018-08-21  4983  	LIST_HEAD(head);
6be6d1124197133 Chengming Zhou    2023-09-08  4984  	int prev_nr_hw_queues = set->nr_hw_queues;
6be6d1124197133 Chengming Zhou    2023-09-08  4985  	int i;
868f2f0b72068a0 Keith Busch       2015-12-17  4986  
705cda97ee3abb6 Bart Van Assche   2017-04-07  4987  	lockdep_assert_held(&set->tag_list_lock);
705cda97ee3abb6 Bart Van Assche   2017-04-07  4988  
392546aed220090 Jens Axboe        2018-10-29  4989  	if (set->nr_maps == 1 && nr_hw_queues > nr_cpu_ids)
868f2f0b72068a0 Keith Busch       2015-12-17  4990  		nr_hw_queues = nr_cpu_ids;
fe35ec58f0d3392 Weiping Zhang     2020-06-17  4991  	if (nr_hw_queues < 1)
fe35ec58f0d3392 Weiping Zhang     2020-06-17  4992  		return;
fe35ec58f0d3392 Weiping Zhang     2020-06-17  4993  	if (set->nr_maps == 1 && nr_hw_queues == set->nr_hw_queues)
868f2f0b72068a0 Keith Busch       2015-12-17  4994  		return;
868f2f0b72068a0 Keith Busch       2015-12-17  4995  
38bfa3ab3c72c15 Nilay Shroff      2024-12-10  4996  	list_for_each_entry(q, &set->tag_list, tag_set_list) {
38bfa3ab3c72c15 Nilay Shroff      2024-12-10 @4997  		mutex_lock(&q->sysfs_dir_lock);
38bfa3ab3c72c15 Nilay Shroff      2024-12-10  4998  		mutex_lock(&q->sysfs_lock);
868f2f0b72068a0 Keith Busch       2015-12-17  4999  		blk_mq_freeze_queue(q);
38bfa3ab3c72c15 Nilay Shroff      2024-12-10  5000  	}
d48ece209f82c9c Jianchao Wang     2018-08-21  5001  	/*
d48ece209f82c9c Jianchao Wang     2018-08-21  5002  	 * Switch IO scheduler to 'none', cleaning up the data associated
d48ece209f82c9c Jianchao Wang     2018-08-21  5003  	 * with the previous scheduler. We will switch back once we are done
d48ece209f82c9c Jianchao Wang     2018-08-21  5004  	 * updating the new sw to hw queue mappings.
d48ece209f82c9c Jianchao Wang     2018-08-21  5005  	 */
d48ece209f82c9c Jianchao Wang     2018-08-21  5006  	list_for_each_entry(q, &set->tag_list, tag_set_list)
d48ece209f82c9c Jianchao Wang     2018-08-21  5007  		if (!blk_mq_elv_switch_none(&head, q))
d48ece209f82c9c Jianchao Wang     2018-08-21  5008  			goto switch_back;
868f2f0b72068a0 Keith Busch       2015-12-17  5009  
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5010  	list_for_each_entry(q, &set->tag_list, tag_set_list) {
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5011  		blk_mq_debugfs_unregister_hctxs(q);
eaa870f97544668 Christoph Hellwig 2022-06-28  5012  		blk_mq_sysfs_unregister_hctxs(q);
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5013  	}
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5014  
ee9d55210c2fe40 Christoph Hellwig 2022-11-09  5015  	if (blk_mq_realloc_tag_set_tags(set, nr_hw_queues) < 0)
f7e76dbc24df695 Bart Van Assche   2019-10-25  5016  		goto reregister;
f7e76dbc24df695 Bart Van Assche   2019-10-25  5017  
e01ad46d53b5972 Jianchao Wang     2018-10-12  5018  fallback:
aa880ad690ab6d4 Weiping Zhang     2020-05-13  5019  	blk_mq_update_queue_map(set);
868f2f0b72068a0 Keith Busch       2015-12-17  5020  	list_for_each_entry(q, &set->tag_list, tag_set_list) {
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5021  		struct queue_limits lim;
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5022  
868f2f0b72068a0 Keith Busch       2015-12-17  5023  		blk_mq_realloc_hw_ctxs(set, q);
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5024  
e01ad46d53b5972 Jianchao Wang     2018-10-12  5025  		if (q->nr_hw_queues != set->nr_hw_queues) {
a846a8e6c9a5949 Ye Bin            2021-11-08  5026  			int i = prev_nr_hw_queues;
a846a8e6c9a5949 Ye Bin            2021-11-08  5027  
e01ad46d53b5972 Jianchao Wang     2018-10-12  5028  			pr_warn("Increasing nr_hw_queues to %d fails, fallback to %d\n",
e01ad46d53b5972 Jianchao Wang     2018-10-12  5029  					nr_hw_queues, prev_nr_hw_queues);
a846a8e6c9a5949 Ye Bin            2021-11-08  5030  			for (; i < set->nr_hw_queues; i++)
a846a8e6c9a5949 Ye Bin            2021-11-08  5031  				__blk_mq_free_map_and_rqs(set, i);
a846a8e6c9a5949 Ye Bin            2021-11-08  5032  
e01ad46d53b5972 Jianchao Wang     2018-10-12  5033  			set->nr_hw_queues = prev_nr_hw_queues;
e01ad46d53b5972 Jianchao Wang     2018-10-12  5034  			goto fallback;
e01ad46d53b5972 Jianchao Wang     2018-10-12  5035  		}
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5036  		lim = queue_limits_start_update(q);
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5037  		if (blk_mq_can_poll(set))
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5038  			lim.features |= BLK_FEAT_POLL;
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5039  		else
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5040  			lim.features &= ~BLK_FEAT_POLL;
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5041  		if (queue_limits_commit_update(q, &lim) < 0)
8023e144f9d6e35 Christoph Hellwig 2024-06-17  5042  			pr_warn("updating the poll flag failed\n");
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5043  		blk_mq_map_swqueue(q);
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5044  	}
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5045  
f7e76dbc24df695 Bart Van Assche   2019-10-25  5046  reregister:
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5047  	list_for_each_entry(q, &set->tag_list, tag_set_list) {
eaa870f97544668 Christoph Hellwig 2022-06-28  5048  		blk_mq_sysfs_register_hctxs(q);
477e19dedc9d3e1 Jianchao Wang     2018-10-12  5049  		blk_mq_debugfs_register_hctxs(q);
868f2f0b72068a0 Keith Busch       2015-12-17  5050  	}
868f2f0b72068a0 Keith Busch       2015-12-17  5051  
d48ece209f82c9c Jianchao Wang     2018-08-21  5052  switch_back:
d48ece209f82c9c Jianchao Wang     2018-08-21  5053  	list_for_each_entry(q, &set->tag_list, tag_set_list)
d48ece209f82c9c Jianchao Wang     2018-08-21  5054  		blk_mq_elv_switch_back(&head, q);
d48ece209f82c9c Jianchao Wang     2018-08-21  5055  
38bfa3ab3c72c15 Nilay Shroff      2024-12-10  5056  	list_for_each_entry(q, &set->tag_list, tag_set_list) {
868f2f0b72068a0 Keith Busch       2015-12-17  5057  		blk_mq_unfreeze_queue(q);
38bfa3ab3c72c15 Nilay Shroff      2024-12-10  5058  		mutex_unlock(&q->sysfs_lock);
38bfa3ab3c72c15 Nilay Shroff      2024-12-10  5059  		mutex_unlock(&q->sysfs_dir_lock);
38bfa3ab3c72c15 Nilay Shroff      2024-12-10  5060  	}
6be6d1124197133 Chengming Zhou    2023-09-08  5061  
6be6d1124197133 Chengming Zhou    2023-09-08  5062  	/* Free the excess tags when nr_hw_queues shrink. */
6be6d1124197133 Chengming Zhou    2023-09-08  5063  	for (i = set->nr_hw_queues; i < prev_nr_hw_queues; i++)
6be6d1124197133 Chengming Zhou    2023-09-08  5064  		__blk_mq_free_map_and_rqs(set, i);
868f2f0b72068a0 Keith Busch       2015-12-17 @5065  }
e4dc2b32df5573b Keith Busch       2017-05-30  5066  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

             reply	other threads:[~2024-12-11  8:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-11  8:19 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-12-10 14:41 [PATCHv2] block: Fix potential deadlock while freezing queue and acquiring sysfs_lock Nilay Shroff
2024-12-11 12:00 ` Ming Lei
2024-12-11 12:32   ` Nilay Shroff
2024-12-11 12:49     ` Ming Lei
2024-12-13 17:52 ` Jens Axboe

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=202412111553.XzRIWedS-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=julia.lawall@inria.fr \
    --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.