* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-11-15 16:52 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-11-15 16:52 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 232081f726011f512dd6a4c7bc78bc84ef56fe38
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 2 days ago
:::::: commit date: 3 years, 8 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251116/202511160016.jN3aqV2Q-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202511160016.jN3aqV2Q-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-11-21 20:29 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-11-21 20:29 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 6c5657aecca1857be6ea39f789159c9acfde2f9e
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 4 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251122/202511220458.TXwmH6Cm-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202511220458.TXwmH6Cm-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-11-22 9:39 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-11-22 9:39 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 6c5657aecca1857be6ea39f789159c9acfde2f9e
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 4 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251122/202511221709.MU7uGnl9-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202511221709.MU7uGnl9-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-11-29 20:27 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-11-29 20:27 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: d495515f012a96ae472e8ee75c66680fbdabaddb
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 4 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251130/202511300421.1vhzaqPy-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202511300421.1vhzaqPy-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2192
ae1188963611119 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae1188963611119 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec8 Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333f Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae1188963611119 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7e Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba91505 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153ca Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2203
ae1188963611119 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae1188963611119 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d2 Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153ca Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153ca Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5ed Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153ca Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2211
e43473b7f223ec8 Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e490956 Tejun Heo 2015-08-18 2213
b9147dd1bae2b15 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2215
c9589f03e490956 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153ca Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1d Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2221
73f0d49a9637a7e Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7e Tejun Heo 2013-05-14 2223
c79892c5576163b Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5a Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df5 Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df5 Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e2 Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5a Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba91505 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5a Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5a Tejun Heo 2013-05-14 2233
9e660acffcd1b5a Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163b Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df5 Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b15 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163b Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163b Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5a Tejun Heo 2013-05-14 2241 break;
c79892c5576163b Shaohua Li 2017-03-27 2242 }
de701c74a34005e Vivek Goyal 2011-03-07 2243
9e660acffcd1b5a Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec8 Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11e Vivek Goyal 2011-03-22 2246
04521db04e9a11e Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11e Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11e Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11e Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11e Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11e Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11e Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11e Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11e Vivek Goyal 2011-03-22 2255 *
04521db04e9a11e Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11e Vivek Goyal 2011-03-22 2257 */
0f3457f60edc573 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5a Tejun Heo 2013-05-14 2259
9e660acffcd1b5a Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5a Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5a Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5a Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5a Tejun Heo 2013-05-14 2264 */
c5cc2070b45333f Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5a Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5a Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5a Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153ca Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2271
9e660acffcd1b5a Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7ac Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede246 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a60248 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a60248 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a60248 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7e Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2279
3f0abd806651df5 Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2281
b9147dd1bae2b15 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333f Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2285
7f52f98c2a83339 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a83339 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a83339 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a83339 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a83339 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a83339 Tejun Heo 2013-05-14 2291 */
0e9f4164ba91505 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b048481781 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a83339 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2296
bc16a4f933bc5ed Tejun Heo 2011-10-19 2297 out:
111be883981748a Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2299
b9147dd1bae2b15 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b15 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd72 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153ca Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153ca Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5ed Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-03 2:08 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-03 2:08 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 24 hours ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251203/202512031045.402km0Dt-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512031045.402km0Dt-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2192
ae1188963611119 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae1188963611119 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec8 Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333f Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae1188963611119 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7e Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba91505 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153ca Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2203
ae1188963611119 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae1188963611119 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d2 Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153ca Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153ca Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5ed Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153ca Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2211
e43473b7f223ec8 Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e490956 Tejun Heo 2015-08-18 2213
b9147dd1bae2b15 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2215
c9589f03e490956 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153ca Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1d Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2221
73f0d49a9637a7e Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7e Tejun Heo 2013-05-14 2223
c79892c5576163b Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5a Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df5 Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df5 Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e2 Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5a Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba91505 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5a Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5a Tejun Heo 2013-05-14 2233
9e660acffcd1b5a Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163b Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df5 Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b15 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163b Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163b Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5a Tejun Heo 2013-05-14 2241 break;
c79892c5576163b Shaohua Li 2017-03-27 2242 }
de701c74a34005e Vivek Goyal 2011-03-07 2243
9e660acffcd1b5a Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec8 Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11e Vivek Goyal 2011-03-22 2246
04521db04e9a11e Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11e Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11e Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11e Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11e Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11e Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11e Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11e Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11e Vivek Goyal 2011-03-22 2255 *
04521db04e9a11e Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11e Vivek Goyal 2011-03-22 2257 */
0f3457f60edc573 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5a Tejun Heo 2013-05-14 2259
9e660acffcd1b5a Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5a Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5a Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5a Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5a Tejun Heo 2013-05-14 2264 */
c5cc2070b45333f Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5a Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5a Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5a Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153ca Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2271
9e660acffcd1b5a Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7ac Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede246 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a60248 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a60248 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a60248 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7e Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2279
3f0abd806651df5 Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2281
b9147dd1bae2b15 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333f Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2285
7f52f98c2a83339 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a83339 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a83339 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a83339 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a83339 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a83339 Tejun Heo 2013-05-14 2291 */
0e9f4164ba91505 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b048481781 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a83339 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2296
bc16a4f933bc5ed Tejun Heo 2011-10-19 2297 out:
111be883981748a Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2299
b9147dd1bae2b15 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b15 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd72 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153ca Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153ca Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5ed Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-05 3:17 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-05 3:17 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 3 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251205/202512051143.6xyffzgX-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512051143.6xyffzgX-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2192
ae1188963611119 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae1188963611119 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec8 Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333f Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae1188963611119 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7e Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba91505 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153ca Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2203
ae1188963611119 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae1188963611119 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d2 Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153ca Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153ca Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5ed Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153ca Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2211
e43473b7f223ec8 Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e490956 Tejun Heo 2015-08-18 2213
b9147dd1bae2b15 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2215
c9589f03e490956 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153ca Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1d Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2221
73f0d49a9637a7e Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7e Tejun Heo 2013-05-14 2223
c79892c5576163b Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5a Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df5 Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df5 Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e2 Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5a Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba91505 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5a Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5a Tejun Heo 2013-05-14 2233
9e660acffcd1b5a Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163b Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df5 Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b15 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163b Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163b Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5a Tejun Heo 2013-05-14 2241 break;
c79892c5576163b Shaohua Li 2017-03-27 2242 }
de701c74a34005e Vivek Goyal 2011-03-07 2243
9e660acffcd1b5a Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec8 Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11e Vivek Goyal 2011-03-22 2246
04521db04e9a11e Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11e Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11e Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11e Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11e Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11e Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11e Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11e Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11e Vivek Goyal 2011-03-22 2255 *
04521db04e9a11e Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11e Vivek Goyal 2011-03-22 2257 */
0f3457f60edc573 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5a Tejun Heo 2013-05-14 2259
9e660acffcd1b5a Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5a Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5a Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5a Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5a Tejun Heo 2013-05-14 2264 */
c5cc2070b45333f Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5a Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5a Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5a Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153ca Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2271
9e660acffcd1b5a Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7ac Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede246 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a60248 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a60248 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a60248 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7e Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2279
3f0abd806651df5 Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2281
b9147dd1bae2b15 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333f Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2285
7f52f98c2a83339 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a83339 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a83339 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a83339 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a83339 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a83339 Tejun Heo 2013-05-14 2291 */
0e9f4164ba91505 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b048481781 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a83339 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2296
bc16a4f933bc5ed Tejun Heo 2011-10-19 2297 out:
111be883981748a Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2299
b9147dd1bae2b15 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b15 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd72 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153ca Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153ca Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5ed Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-06 11:26 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-06 11:26 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 4 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251206/202512061901.0rebIPvr-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512061901.0rebIPvr-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2192
ae1188963611119 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae1188963611119 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec8 Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333f Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae1188963611119 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7e Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba91505 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153ca Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2203
ae1188963611119 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae1188963611119 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d2 Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153ca Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153ca Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5ed Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153ca Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2211
e43473b7f223ec8 Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e490956 Tejun Heo 2015-08-18 2213
b9147dd1bae2b15 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2215
c9589f03e490956 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153ca Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1d Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2221
73f0d49a9637a7e Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7e Tejun Heo 2013-05-14 2223
c79892c5576163b Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5a Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df5 Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df5 Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e2 Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5a Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba91505 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5a Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5a Tejun Heo 2013-05-14 2233
9e660acffcd1b5a Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163b Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df5 Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b15 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163b Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163b Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5a Tejun Heo 2013-05-14 2241 break;
c79892c5576163b Shaohua Li 2017-03-27 2242 }
de701c74a34005e Vivek Goyal 2011-03-07 2243
9e660acffcd1b5a Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec8 Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11e Vivek Goyal 2011-03-22 2246
04521db04e9a11e Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11e Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11e Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11e Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11e Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11e Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11e Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11e Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11e Vivek Goyal 2011-03-22 2255 *
04521db04e9a11e Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11e Vivek Goyal 2011-03-22 2257 */
0f3457f60edc573 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5a Tejun Heo 2013-05-14 2259
9e660acffcd1b5a Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5a Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5a Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5a Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5a Tejun Heo 2013-05-14 2264 */
c5cc2070b45333f Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5a Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5a Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5a Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153ca Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2271
9e660acffcd1b5a Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7ac Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede246 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a60248 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a60248 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a60248 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7e Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2279
3f0abd806651df5 Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2281
b9147dd1bae2b15 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333f Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2285
7f52f98c2a83339 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a83339 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a83339 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a83339 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a83339 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a83339 Tejun Heo 2013-05-14 2291 */
0e9f4164ba91505 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b048481781 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a83339 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2296
bc16a4f933bc5ed Tejun Heo 2011-10-19 2297 out:
111be883981748a Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2299
b9147dd1bae2b15 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b15 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd72 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153ca Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153ca Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5ed Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-07 2:09 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-07 2:09 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 5 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251207/202512071049.T3qZyM7F-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512071049.T3qZyM7F-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-08 2:02 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-08 2:02 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 6 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251208/202512081001.1fYaXWns-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512081001.1fYaXWns-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-08 21:50 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-08 21:50 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 7 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251209/202512090557.RL4CYH2Z-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512090557.RL4CYH2Z-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-09 15:16 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-09 15:16 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 8 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251209/202512092335.eRqTRuaI-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512092335.eRqTRuaI-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-10 20:10 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-10 20:10 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5bd996476c86f9b6d2039f9ab662f38d64fa6c70
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 9 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251211/202512110442.gfZo1z8s-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512110442.gfZo1z8s-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-14 21:51 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-14 21:51 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5a399b91821faeec2466751db2d714b24f8eb17c
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 2 days ago
:::::: commit date: 3 years, 9 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251215/202512150546.pzMk2PP1-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512150546.pzMk2PP1-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2192
ae1188963611119 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae1188963611119 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec8 Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333f Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae1188963611119 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7e Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba91505 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153ca Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2203
ae1188963611119 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae1188963611119 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d2 Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153ca Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153ca Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5ed Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153ca Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2211
e43473b7f223ec8 Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e490956 Tejun Heo 2015-08-18 2213
b9147dd1bae2b15 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2215
c9589f03e490956 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153ca Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1d Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff2 Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e8 Shaohua Li 2017-03-27 2221
73f0d49a9637a7e Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7e Tejun Heo 2013-05-14 2223
c79892c5576163b Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5a Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df5 Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df5 Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e2 Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5a Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba91505 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5a Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5a Tejun Heo 2013-05-14 2233
9e660acffcd1b5a Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163b Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df5 Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b15 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163b Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163b Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5a Tejun Heo 2013-05-14 2241 break;
c79892c5576163b Shaohua Li 2017-03-27 2242 }
de701c74a34005e Vivek Goyal 2011-03-07 2243
9e660acffcd1b5a Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec8 Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11e Vivek Goyal 2011-03-22 2246
04521db04e9a11e Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11e Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11e Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11e Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11e Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11e Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11e Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11e Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11e Vivek Goyal 2011-03-22 2255 *
04521db04e9a11e Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11e Vivek Goyal 2011-03-22 2257 */
0f3457f60edc573 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5a Tejun Heo 2013-05-14 2259
9e660acffcd1b5a Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5a Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5a Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5a Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5a Tejun Heo 2013-05-14 2264 */
c5cc2070b45333f Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5a Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5a Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5a Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153ca Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2271
9e660acffcd1b5a Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7ac Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede246 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a60248 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a60248 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a60248 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7e Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2279
3f0abd806651df5 Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df5 Shaohua Li 2017-03-27 2281
b9147dd1bae2b15 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333f Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5ed Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2285
7f52f98c2a83339 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a83339 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a83339 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a83339 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a83339 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a83339 Tejun Heo 2013-05-14 2291 */
0e9f4164ba91505 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b048481781 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a83339 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec8 Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2296
bc16a4f933bc5ed Tejun Heo 2011-10-19 2297 out:
111be883981748a Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b15 Shaohua Li 2017-03-27 2299
b9147dd1bae2b15 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b15 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd72 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b15 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153ca Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153ca Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5ed Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec8 Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec8 Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212
@ 2025-12-21 14:31 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2025-12-21 14:31 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Yang Yingliang <yangyingliang@huawei.com>
Hi Laibin,
First bad commit (maybe != root cause):
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 4e9c55920995d70b3e88b60c69753df54b03fdf4
commit: e1c15e207d153cafb3f3aa1cbc8000134fae1d40 [1934/1934] blk-throttle: Set BIO_THROTTLED when bio has been throttled
:::::: branch date: 4 days ago
:::::: commit date: 3 years, 10 months ago
config: x86_64-randconfig-103-20251115 (https://download.01.org/0day-ci/archive/20251221/202512212209.cAF0uocP-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
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/202512212209.cAF0uocP-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> block/blk-throttle.c:2306:1-7: preceding lock on line 2212
vim +2306 block/blk-throttle.c
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2192
ae118896361111 Tejun Heo 2015-08-18 2193 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
ae118896361111 Tejun Heo 2015-08-18 2194 struct bio *bio)
e43473b7f223ec Vivek Goyal 2010-09-15 2195 {
c5cc2070b45333 Tejun Heo 2013-05-14 2196 struct throtl_qnode *qn = NULL;
ae118896361111 Tejun Heo 2015-08-18 2197 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg);
73f0d49a9637a7 Tejun Heo 2013-05-14 2198 struct throtl_service_queue *sq;
0e9f4164ba9150 Tejun Heo 2013-05-14 2199 bool rw = bio_data_dir(bio);
bc16a4f933bc5e Tejun Heo 2011-10-19 2200 bool throttled = false;
e1c15e207d153c Laibin Qiu 2022-03-08 2201 bool locked = true;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2202 struct throtl_data *td = tg->td;
e43473b7f223ec Vivek Goyal 2010-09-15 2203
ae118896361111 Tejun Heo 2015-08-18 2204 WARN_ON_ONCE(!rcu_read_lock_held());
ae118896361111 Tejun Heo 2015-08-18 2205
2a0f61e6ecd08d Tejun Heo 2013-05-14 2206 /* see throtl_charge_bio() */
e1c15e207d153c Laibin Qiu 2022-03-08 2207 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) {
e1c15e207d153c Laibin Qiu 2022-03-08 2208 locked = false;
bc16a4f933bc5e Tejun Heo 2011-10-19 2209 goto out;
e1c15e207d153c Laibin Qiu 2022-03-08 2210 }
e43473b7f223ec Vivek Goyal 2010-09-15 2211
e43473b7f223ec Vivek Goyal 2010-09-15 @2212 spin_lock_irq(q->queue_lock);
c9589f03e49095 Tejun Heo 2015-08-18 2213
b9147dd1bae2b1 Shaohua Li 2017-03-27 2214 throtl_update_latency_buckets(td);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2215
c9589f03e49095 Tejun Heo 2015-08-18 2216 if (unlikely(blk_queue_bypass(q)))
e1c15e207d153c Laibin Qiu 2022-03-08 2217 goto out;
f469a7b4d5b1d1 Vivek Goyal 2011-05-19 2218
2bc19cd5fdb5ff Jens Axboe 2017-04-20 2219 blk_throtl_assoc_bio(tg, bio);
9e234eeafbe17e Shaohua Li 2017-03-27 2220 blk_throtl_update_idletime(tg);
9e234eeafbe17e Shaohua Li 2017-03-27 2221
73f0d49a9637a7 Tejun Heo 2013-05-14 2222 sq = &tg->service_queue;
73f0d49a9637a7 Tejun Heo 2013-05-14 2223
c79892c5576163 Shaohua Li 2017-03-27 2224 again:
9e660acffcd1b5 Tejun Heo 2013-05-14 2225 while (true) {
3f0abd806651df Shaohua Li 2017-03-27 2226 if (tg->last_low_overflow_time[rw] == 0)
3f0abd806651df Shaohua Li 2017-03-27 2227 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2228 throtl_downgrade_check(tg);
fa6fb5aab85f3e Shaohua Li 2017-03-27 2229 throtl_upgrade_check(tg);
9e660acffcd1b5 Tejun Heo 2013-05-14 2230 /* throtl is FIFO - if bios are already queued, should queue */
0e9f4164ba9150 Tejun Heo 2013-05-14 2231 if (sq->nr_queued[rw])
9e660acffcd1b5 Tejun Heo 2013-05-14 2232 break;
9e660acffcd1b5 Tejun Heo 2013-05-14 2233
9e660acffcd1b5 Tejun Heo 2013-05-14 2234 /* if above limits, break to queue */
c79892c5576163 Shaohua Li 2017-03-27 2235 if (!tg_may_dispatch(tg, bio, NULL)) {
3f0abd806651df Shaohua Li 2017-03-27 2236 tg->last_low_overflow_time[rw] = jiffies;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2237 if (throtl_can_upgrade(td, tg)) {
b9147dd1bae2b1 Shaohua Li 2017-03-27 2238 throtl_upgrade_state(td);
c79892c5576163 Shaohua Li 2017-03-27 2239 goto again;
c79892c5576163 Shaohua Li 2017-03-27 2240 }
9e660acffcd1b5 Tejun Heo 2013-05-14 2241 break;
c79892c5576163 Shaohua Li 2017-03-27 2242 }
de701c74a34005 Vivek Goyal 2011-03-07 2243
9e660acffcd1b5 Tejun Heo 2013-05-14 2244 /* within limits, let's charge and dispatch directly */
e43473b7f223ec Vivek Goyal 2010-09-15 2245 throtl_charge_bio(tg, bio);
04521db04e9a11 Vivek Goyal 2011-03-22 2246
04521db04e9a11 Vivek Goyal 2011-03-22 2247 /*
04521db04e9a11 Vivek Goyal 2011-03-22 2248 * We need to trim slice even when bios are not being queued
04521db04e9a11 Vivek Goyal 2011-03-22 2249 * otherwise it might happen that a bio is not queued for
04521db04e9a11 Vivek Goyal 2011-03-22 2250 * a long time and slice keeps on extending and trim is not
04521db04e9a11 Vivek Goyal 2011-03-22 2251 * called for a long time. Now if limits are reduced suddenly
04521db04e9a11 Vivek Goyal 2011-03-22 2252 * we take into account all the IO dispatched so far at new
04521db04e9a11 Vivek Goyal 2011-03-22 2253 * low rate and * newly queued IO gets a really long dispatch
04521db04e9a11 Vivek Goyal 2011-03-22 2254 * time.
04521db04e9a11 Vivek Goyal 2011-03-22 2255 *
04521db04e9a11 Vivek Goyal 2011-03-22 2256 * So keep on trimming slice even if bio is not queued.
04521db04e9a11 Vivek Goyal 2011-03-22 2257 */
0f3457f60edc57 Tejun Heo 2013-05-14 2258 throtl_trim_slice(tg, rw);
9e660acffcd1b5 Tejun Heo 2013-05-14 2259
9e660acffcd1b5 Tejun Heo 2013-05-14 2260 /*
9e660acffcd1b5 Tejun Heo 2013-05-14 2261 * @bio passed through this layer without being throttled.
9e660acffcd1b5 Tejun Heo 2013-05-14 2262 * Climb up the ladder. If we''re already at the top, it
9e660acffcd1b5 Tejun Heo 2013-05-14 2263 * can be executed directly.
9e660acffcd1b5 Tejun Heo 2013-05-14 2264 */
c5cc2070b45333 Tejun Heo 2013-05-14 2265 qn = &tg->qnode_on_parent[rw];
9e660acffcd1b5 Tejun Heo 2013-05-14 2266 sq = sq->parent_sq;
9e660acffcd1b5 Tejun Heo 2013-05-14 2267 tg = sq_to_tg(sq);
9e660acffcd1b5 Tejun Heo 2013-05-14 2268 if (!tg)
e1c15e207d153c Laibin Qiu 2022-03-08 2269 goto out;
e43473b7f223ec Vivek Goyal 2010-09-15 2270 }
e43473b7f223ec Vivek Goyal 2010-09-15 2271
9e660acffcd1b5 Tejun Heo 2013-05-14 2272 /* out-of-limit, queue to @tg */
fda6f272c77a7a Tejun Heo 2013-05-14 2273 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
8e89d13f4ede24 Vivek Goyal 2010-09-15 2274 rw == READ ? 'R' : 'W',
9f626e372a6024 Shaohua Li 2017-03-27 2275 tg->bytes_disp[rw], bio->bi_iter.bi_size,
9f626e372a6024 Shaohua Li 2017-03-27 2276 tg_bps_limit(tg, rw),
9f626e372a6024 Shaohua Li 2017-03-27 2277 tg->io_disp[rw], tg_iops_limit(tg, rw),
73f0d49a9637a7 Tejun Heo 2013-05-14 2278 sq->nr_queued[READ], sq->nr_queued[WRITE]);
e43473b7f223ec Vivek Goyal 2010-09-15 2279
3f0abd806651df Shaohua Li 2017-03-27 2280 tg->last_low_overflow_time[rw] = jiffies;
3f0abd806651df Shaohua Li 2017-03-27 2281
b9147dd1bae2b1 Shaohua Li 2017-03-27 2282 td->nr_queued[rw]++;
c5cc2070b45333 Tejun Heo 2013-05-14 2283 throtl_add_bio_tg(bio, qn, tg);
bc16a4f933bc5e Tejun Heo 2011-10-19 2284 throttled = true;
e43473b7f223ec Vivek Goyal 2010-09-15 2285
7f52f98c2a8333 Tejun Heo 2013-05-14 2286 /*
7f52f98c2a8333 Tejun Heo 2013-05-14 2287 * Update @tg's dispatch time and force schedule dispatch if @tg
7f52f98c2a8333 Tejun Heo 2013-05-14 2288 * was empty before @bio. The forced scheduling isn't likely to
7f52f98c2a8333 Tejun Heo 2013-05-14 2289 * cause undue delay as @bio is likely to be dispatched directly if
7f52f98c2a8333 Tejun Heo 2013-05-14 2290 * its @tg's disptime is not in the future.
7f52f98c2a8333 Tejun Heo 2013-05-14 2291 */
0e9f4164ba9150 Tejun Heo 2013-05-14 2292 if (tg->flags & THROTL_TG_WAS_EMPTY) {
77216b04848178 Tejun Heo 2013-05-14 2293 tg_update_disptime(tg);
7f52f98c2a8333 Tejun Heo 2013-05-14 2294 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true);
e43473b7f223ec Vivek Goyal 2010-09-15 2295 }
e43473b7f223ec Vivek Goyal 2010-09-15 2296
bc16a4f933bc5e Tejun Heo 2011-10-19 2297 out:
111be883981748 Shaohua Li 2017-12-20 2298 bio_set_flag(bio, BIO_THROTTLED);
b9147dd1bae2b1 Shaohua Li 2017-03-27 2299
b9147dd1bae2b1 Shaohua Li 2017-03-27 2300 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
b9147dd1bae2b1 Shaohua Li 2017-03-27 2301 if (throttled || !td->track_bio_latency)
5238dcf4136fd7 Omar Sandoval 2018-05-09 2302 bio->bi_issue.value |= BIO_ISSUE_THROTL_SKIP_LATENCY;
b9147dd1bae2b1 Shaohua Li 2017-03-27 2303 #endif
e1c15e207d153c Laibin Qiu 2022-03-08 2304 if (locked)
e1c15e207d153c Laibin Qiu 2022-03-08 2305 spin_unlock_irq(q->queue_lock);
bc16a4f933bc5e Tejun Heo 2011-10-19 @2306 return throttled;
e43473b7f223ec Vivek Goyal 2010-09-15 2307 }
e43473b7f223ec Vivek Goyal 2010-09-15 2308
:::::: The code at line 2306 was first introduced by commit
:::::: bc16a4f933bc5ed50826b20561e4c3515061998b block: reorganize throtl_get_tg() and blk_throtl_bio()
:::::: TO: Tejun Heo <tj@kernel.org>
:::::: CC: Jens Axboe <axboe@kernel.dk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-12-21 14:32 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-06 11:26 [openeuler:openEuler-1.0-LTS 1934/1934] block/blk-throttle.c:2306:1-7: preceding lock on line 2212 kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2025-12-21 14:31 kernel test robot
2025-12-14 21:51 kernel test robot
2025-12-10 20:10 kernel test robot
2025-12-09 15:16 kernel test robot
2025-12-08 21:50 kernel test robot
2025-12-08 2:02 kernel test robot
2025-12-07 2:09 kernel test robot
2025-12-05 3:17 kernel test robot
2025-12-03 2:08 kernel test robot
2025-11-29 20:27 kernel test robot
2025-11-22 9:39 kernel test robot
2025-11-21 20:29 kernel test robot
2025-11-15 16:52 kernel test robot
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.