[PATCHv4 10/10] blk-integrity: improved sg segment mapping
kernel test robot
lkp at intel.com
Thu Sep 12 20:45:06 PDT 2024
Hi Keith,
kernel test robot noticed the following build warnings:
[auto build test WARNING on axboe-block/for-next]
[also build test WARNING on next-20240912]
[cannot apply to mkp-scsi/for-next jejb-scsi/for-next linus/master v6.11-rc7]
[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/Keith-Busch/blk-mq-unconditional-nr_integrity_segments/20240912-041504
base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
patch link: https://lore.kernel.org/r/20240911201240.3982856-11-kbusch%40meta.com
patch subject: [PATCHv4 10/10] blk-integrity: improved sg segment mapping
config: openrisc-randconfig-r072-20240913 (https://download.01.org/0day-ci/archive/20240913/202409131138.fuzBKPCG-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240913/202409131138.fuzBKPCG-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 at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409131138.fuzBKPCG-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> block/blk-integrity.c:69: warning: Function parameter or struct member 'rq' not described in 'blk_rq_map_integrity_sg'
>> block/blk-integrity.c:69: warning: Excess function parameter 'q' description in 'blk_rq_map_integrity_sg'
>> block/blk-integrity.c:69: warning: Excess function parameter 'bio' description in 'blk_rq_map_integrity_sg'
vim +69 block/blk-integrity.c
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 56
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 57 /**
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 58 * blk_rq_map_integrity_sg - Map integrity metadata into a scatterlist
13f05c8d8e98bb Martin K. Petersen 2010-09-10 59 * @q: request queue
13f05c8d8e98bb Martin K. Petersen 2010-09-10 60 * @bio: bio with integrity metadata attached
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 61 * @sglist: target scatterlist
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 62 *
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 63 * Description: Map the integrity vectors in request into a
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 64 * scatterlist. The scatterlist must be big enough to hold all
19f67fc3c069b6 Keith Busch 2024-09-11 65 * elements. I.e. sized using blk_rq_count_integrity_sg() or
19f67fc3c069b6 Keith Busch 2024-09-11 66 * rq->nr_integrity_segments.
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 67 */
19f67fc3c069b6 Keith Busch 2024-09-11 68 int blk_rq_map_integrity_sg(struct request *rq, struct scatterlist *sglist)
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 @69 {
d57a5f7c6605f1 Kent Overstreet 2013-11-23 70 struct bio_vec iv, ivprv = { NULL };
19f67fc3c069b6 Keith Busch 2024-09-11 71 struct request_queue *q = rq->q;
13f05c8d8e98bb Martin K. Petersen 2010-09-10 72 struct scatterlist *sg = NULL;
19f67fc3c069b6 Keith Busch 2024-09-11 73 struct bio *bio = rq->bio;
13f05c8d8e98bb Martin K. Petersen 2010-09-10 74 unsigned int segments = 0;
d57a5f7c6605f1 Kent Overstreet 2013-11-23 75 struct bvec_iter iter;
d57a5f7c6605f1 Kent Overstreet 2013-11-23 76 int prev = 0;
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 77
d57a5f7c6605f1 Kent Overstreet 2013-11-23 78 bio_for_each_integrity_vec(iv, bio, iter) {
d57a5f7c6605f1 Kent Overstreet 2013-11-23 79 if (prev) {
3dccdae54fe836 Christoph Hellwig 2018-09-24 80 if (!biovec_phys_mergeable(q, &ivprv, &iv))
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 81 goto new_segment;
d57a5f7c6605f1 Kent Overstreet 2013-11-23 82 if (sg->length + iv.bv_len > queue_max_segment_size(q))
13f05c8d8e98bb Martin K. Petersen 2010-09-10 83 goto new_segment;
13f05c8d8e98bb Martin K. Petersen 2010-09-10 84
d57a5f7c6605f1 Kent Overstreet 2013-11-23 85 sg->length += iv.bv_len;
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 86 } else {
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 87 new_segment:
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 88 if (!sg)
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 89 sg = sglist;
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 90 else {
c8164d8931fdee Paolo Bonzini 2013-03-20 91 sg_unmark_end(sg);
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 92 sg = sg_next(sg);
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 93 }
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 94
d57a5f7c6605f1 Kent Overstreet 2013-11-23 95 sg_set_page(sg, iv.bv_page, iv.bv_len, iv.bv_offset);
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 96 segments++;
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 97 }
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 98
d57a5f7c6605f1 Kent Overstreet 2013-11-23 99 prev = 1;
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 100 ivprv = iv;
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 101 }
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 102
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 103 if (sg)
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 104 sg_mark_end(sg);
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 105
19f67fc3c069b6 Keith Busch 2024-09-11 106 /*
19f67fc3c069b6 Keith Busch 2024-09-11 107 * Something must have been wrong if the figured number of segment
19f67fc3c069b6 Keith Busch 2024-09-11 108 * is bigger than number of req's physical integrity segments
19f67fc3c069b6 Keith Busch 2024-09-11 109 */
19f67fc3c069b6 Keith Busch 2024-09-11 110 BUG_ON(segments > blk_rq_nr_phys_segments(rq));
19f67fc3c069b6 Keith Busch 2024-09-11 111 BUG_ON(segments > queue_max_integrity_segments(q));
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 112 return segments;
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 113 }
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 114 EXPORT_SYMBOL(blk_rq_map_integrity_sg);
7ba1ba12eeef0a Martin K. Petersen 2008-06-30 115
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the Linux-nvme
mailing list