Hi Jinyoung, kernel test robot noticed the following build warnings: [auto build test WARNING on axboe-block/for-next] [also build test WARNING on mkp-scsi/for-next jejb-scsi/for-next linus/master v6.3 next-20230428] [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/Jinyoung-CHOI/block-blk-integiry-add-helper-functions-for-bio_integrity_add_page/20230503-183015 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next patch link: https://lore.kernel.org/r/20230503102719epcms2p457434fefd535ee43d502eff854227919%40epcms2p4 patch subject: [PATCH 14/15] block: blk-integrity: change sg-table configuration method for integrity config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20230504/202305040333.EHY8r49K-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-12) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/7e4810d74ca92ed35bbc73cb09a4baa1dacfbc96 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Jinyoung-CHOI/block-blk-integiry-add-helper-functions-for-bio_integrity_add_page/20230503-183015 git checkout 7e4810d74ca92ed35bbc73cb09a4baa1dacfbc96 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Link: https://lore.kernel.org/oe-kbuild-all/202305040333.EHY8r49K-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): In file included from include/linux/blk-integrity.h:5, from block/blk-merge.c:9: include/linux/blk-mq.h: In function 'blk_rq_bio_prep': include/linux/blk-mq.h:972:19: error: 'struct request' has no member named 'nr_integrity_segments' 972 | rq->nr_integrity_segments = bio_integrity(bio)->bip_vcnt; | ^~ include/linux/blk-mq.h:972:63: warning: dereferencing 'void *' pointer 972 | rq->nr_integrity_segments = bio_integrity(bio)->bip_vcnt; | ^~ include/linux/blk-mq.h:972:63: error: request for member 'bip_vcnt' in something not a structure or union block/blk-merge.c: At top level: block/blk-merge.c:536:5: error: redefinition of 'blk_rq_map_integrity_sg' 536 | int blk_rq_map_integrity_sg(struct request_queue *q, struct bio *bio, | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from block/blk-merge.c:9: include/linux/blk-integrity.h:132:19: note: previous definition of 'blk_rq_map_integrity_sg' with type 'int(struct request_queue *, struct bio *, struct scatterlist *)' 132 | static inline int blk_rq_map_integrity_sg(struct request_queue *q, | ^~~~~~~~~~~~~~~~~~~~~~~ block/blk-merge.c: In function 'blk_rq_map_integrity_sg': block/blk-merge.c:546:56: error: 'struct bio' has no member named 'bi_integrity' 546 | struct bio_integrity_payload *bip = bio->bi_integrity; | ^~ block/blk-merge.c:548:17: error: implicit declaration of function 'bip_for_each_mp_bvec'; did you mean 'for_each_mp_bvec'? [-Werror=implicit-function-declaration] 548 | bip_for_each_mp_bvec(iv, bip, iter) { | ^~~~~~~~~~~~~~~~~~~~ | for_each_mp_bvec block/blk-merge.c:548:52: error: expected ';' before '{' token 548 | bip_for_each_mp_bvec(iv, bip, iter) { | ^~ | ; >> block/blk-merge.c:543:14: warning: unused variable 'new_bio' [-Wunused-variable] 543 | bool new_bio = false; | ^~~~~~~ >> block/blk-merge.c:539:28: warning: unused variable 'ivprv' [-Wunused-variable] 539 | struct bio_vec iv, ivprv = { NULL }; | ^~~~~ cc1: some warnings being treated as errors vim +/new_bio +543 block/blk-merge.c 526 527 /** 528 * blk_rq_map_integrity_sg - Map integrity metadata into a scatterlist 529 * @q: request queue 530 * @bio: bio with integrity metadata attached 531 * @sglist: target scatterlist 532 * 533 * Description: Map the integrity vectors in request into a scatterlist. 534 * The scatterlist must be big enough to hold all elements. 535 */ 536 int blk_rq_map_integrity_sg(struct request_queue *q, struct bio *bio, 537 struct scatterlist *sglist) 538 { > 539 struct bio_vec iv, ivprv = { NULL }; 540 struct scatterlist *sg = NULL; 541 unsigned int nsegs = 0; 542 struct bvec_iter iter; > 543 bool new_bio = false; 544 545 for_each_bio(bio) { 546 struct bio_integrity_payload *bip = bio->bi_integrity; 547 548 bip_for_each_mp_bvec(iv, bip, iter) { 549 /* 550 * Only try to merge bvecs from two bios given we 551 * have done bio internal merge when adding pages 552 * to bio 553 */ 554 if (new_bio && 555 __blk_segment_map_sg_merge(q, &iv, &ivprv, &sg)) 556 goto next_iv; 557 558 if (iv.bv_offset + iv.bv_len <= PAGE_SIZE) 559 nsegs += __blk_bvec_map_sg(iv, sglist, &sg); 560 else 561 nsegs += blk_bvec_map_sg(q, &iv, sglist, &sg); 562 next_iv: 563 new_bio = false; 564 } 565 566 if (likely(bip->bip_iter.bi_size)) { 567 ivprv = iv; 568 new_bio = true; 569 } 570 } 571 572 if (sg) 573 sg_mark_end(sg); 574 575 return nsegs; 576 } 577 EXPORT_SYMBOL(blk_rq_map_integrity_sg); 578 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests