Message ID | 20240902064409.25637-1-zhanghui31@xiaomi.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: move non sync requests complete flow to softirq | expand |
Hi ZhangHui, kernel test robot noticed the following build warnings: [auto build test WARNING on axboe-block/for-next] [also build test WARNING on linus/master v6.11-rc6 next-20240902] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/ZhangHui/block-move-non-sync-requests-complete-flow-to-softirq/20240902-144744 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next patch link: https://lore.kernel.org/r/20240902064409.25637-1-zhanghui31%40xiaomi.com patch subject: [PATCH] block: move non sync requests complete flow to softirq config: x86_64-randconfig-122-20240903 (https://download.01.org/0day-ci/archive/20240903/202409031507.wUCw4k8n-lkp@intel.com/config) compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240903/202409031507.wUCw4k8n-lkp@intel.com/reproduce) 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> | Closes: https://lore.kernel.org/oe-kbuild-all/202409031507.wUCw4k8n-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) >> block/blk-mq.c:1196:45: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted blk_opf_t const [usertype] is_sync @@ got bool @@ block/blk-mq.c:1196:45: sparse: expected restricted blk_opf_t const [usertype] is_sync block/blk-mq.c:1196:45: sparse: got bool block/blk-mq.c: note: in included file (through include/linux/module.h): include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true vim +1196 block/blk-mq.c 1193 1194 bool blk_mq_complete_request_remote(struct request *rq) 1195 { > 1196 const blk_opf_t is_sync = op_is_sync(rq->cmd_flags); 1197 1198 WRITE_ONCE(rq->state, MQ_RQ_COMPLETE); 1199 1200 /* 1201 * For request which hctx has only one ctx mapping, 1202 * or a polled request, always complete locally, 1203 * it's pointless to redirect the completion. 1204 */ 1205 if ((rq->mq_hctx->nr_ctx == 1 && 1206 rq->mq_ctx->cpu == raw_smp_processor_id()) || 1207 rq->cmd_flags & REQ_POLLED) 1208 return false; 1209 1210 if (blk_mq_complete_need_ipi(rq)) { 1211 blk_mq_complete_send_ipi(rq); 1212 return true; 1213 } 1214 1215 if ((rq->q->nr_hw_queues == 1) || !is_sync) { 1216 blk_mq_raise_softirq(rq); 1217 return true; 1218 } 1219 return false; 1220 } 1221 EXPORT_SYMBOL_GPL(blk_mq_complete_request_remote); 1222
diff --git a/block/blk-mq.c b/block/blk-mq.c index e3c3c0c21b55..06b232edff11 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -1193,6 +1193,8 @@ static void blk_mq_raise_softirq(struct request *rq) bool blk_mq_complete_request_remote(struct request *rq) { + const blk_opf_t is_sync = op_is_sync(rq->cmd_flags); + WRITE_ONCE(rq->state, MQ_RQ_COMPLETE); /* @@ -1210,7 +1212,7 @@ bool blk_mq_complete_request_remote(struct request *rq) return true; } - if (rq->q->nr_hw_queues == 1) { + if ((rq->q->nr_hw_queues == 1) || !is_sync) { blk_mq_raise_softirq(rq); return true; }