* [mcgrof:blk-iobuf-pool-v2 8/13] block/blk-map.c:742:1: warning: unused label 'next'
@ 2026-07-01 1:05 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-07-01 1:05 UTC (permalink / raw)
To: Luis Chamberlain; +Cc: llvm, oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git blk-iobuf-pool-v2
head: da75cc2253180af718ba0b7b3684a091b16b14fb
commit: b88f2bfe111b8778c8bba9e0309c653966171bdd [8/13] block: bounce passthrough bios through iobuf pool folios
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260701/202607010216.vwudmdmL-lkp@intel.com/config)
compiler: clang version 22.1.8 (https://github.com/llvm/llvm-project ca7933e47d3a3451d81e72ac174dcb5aa28b59d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260701/202607010216.vwudmdmL-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/202607010216.vwudmdmL-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> block/blk-map.c:742:1: warning: unused label 'next' [-Wunused-label]
742 | next:
| ^~~~~
>> block/blk-map.c:823:25: warning: unused variable 'bmd' [-Wunused-variable]
823 | struct bio_map_data *bmd = bio->bi_private;
| ^~~
2 warnings generated.
--
Warning: block/blk-map.c:371 Excess function parameter 'op' description in 'bio_copy_kern'
>> Warning: block/blk-map.c:540 function parameter 'rq' not described in 'bio_copy_user_iov_iobuf'
>> Warning: block/blk-map.c:540 function parameter 'iter' not described in 'bio_copy_user_iov_iobuf'
>> Warning: block/blk-map.c:540 function parameter 'gfp_mask' not described in 'bio_copy_user_iov_iobuf'
Warning: block/blk-map.c:371 Excess function parameter 'op' description in 'bio_copy_kern'
>> Warning: block/blk-map.c:540 function parameter 'rq' not described in 'bio_copy_user_iov_iobuf'
>> Warning: block/blk-map.c:540 function parameter 'iter' not described in 'bio_copy_user_iov_iobuf'
>> Warning: block/blk-map.c:540 function parameter 'gfp_mask' not described in 'bio_copy_user_iov_iobuf'
vim +/next +742 block/blk-map.c
670
671 /**
672 * blk_rq_map_user_iov - map user data to a request, for passthrough requests
673 * @q: request queue where request should be inserted
674 * @rq: request to map data to
675 * @map_data: pointer to the rq_map_data holding pages (if necessary)
676 * @iter: iovec iterator
677 * @gfp_mask: memory allocation flags
678 *
679 * Description:
680 * Data will be mapped directly for zero copy I/O, if possible. Otherwise
681 * a kernel bounce buffer is used.
682 *
683 * A matching blk_rq_unmap_user() must be issued at the end of I/O, while
684 * still in process context.
685 */
686 int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
687 struct rq_map_data *map_data,
688 const struct iov_iter *iter, gfp_t gfp_mask)
689 {
690 bool copy = false, map_bvec = false;
691 unsigned long align = blk_lim_dma_alignment_and_pad(&q->limits);
692 struct bio *bio = NULL;
693 struct iov_iter i;
694 int ret = -EINVAL;
695
696 if (map_data)
697 copy = true;
698 else if (iov_iter_alignment(iter) & align)
699 copy = true;
700 else if (iov_iter_is_bvec(iter))
701 map_bvec = true;
702 else if (!user_backed_iter(iter))
703 copy = true;
704 else if (queue_virt_boundary(q))
705 copy = queue_virt_boundary(q) & iov_iter_gap_alignment(iter);
706
707 if (map_bvec) {
708 ret = blk_rq_map_user_bvec(rq, iter);
709 if (!ret)
710 return 0;
711 if (ret != -EREMOTEIO)
712 goto fail;
713 /* fall back to copying the data on limits mismatches */
714 copy = true;
715 }
716
717 i = *iter;
718 do {
719 /*
720 * Try iobuf pool bounce first when copy is needed and the pool
721 * can provide aligned folios for this request.
722 */
723 #ifdef CONFIG_BLK_IOBUF_POOL
724 if (copy && !map_data && blk_rq_iobuf_eligible(q, &i, gfp_mask)) {
725 ret = bio_copy_user_iov_iobuf(rq, &i, gfp_mask);
726 if (!ret)
727 goto next;
728 if (ret != -EREMOTEIO)
729 goto unmap_rq;
730 /* not eligible after all; fall through to standard copy */
731 }
732 #endif
733 if (copy)
734 ret = bio_copy_user_iov(rq, map_data, &i, gfp_mask);
735 else
736 ret = bio_map_user_iov(rq, &i, gfp_mask);
737 if (ret) {
738 if (ret == -EREMOTEIO)
739 ret = -EINVAL;
740 goto unmap_rq;
741 }
> 742 next:
743 if (!bio)
744 bio = rq->bio;
745 } while (iov_iter_count(&i));
746
747 return 0;
748
749 unmap_rq:
750 blk_rq_unmap_user(bio);
751 fail:
752 rq->bio = NULL;
753 return ret;
754 }
755 EXPORT_SYMBOL(blk_rq_map_user_iov);
756
757 int blk_rq_map_user(struct request_queue *q, struct request *rq,
758 struct rq_map_data *map_data, void __user *ubuf,
759 unsigned long len, gfp_t gfp_mask)
760 {
761 struct iov_iter i;
762 int ret = import_ubuf(rq_data_dir(rq), ubuf, len, &i);
763
764 if (unlikely(ret < 0))
765 return ret;
766
767 return blk_rq_map_user_iov(q, rq, map_data, &i, gfp_mask);
768 }
769 EXPORT_SYMBOL(blk_rq_map_user);
770
771 int blk_rq_map_user_io(struct request *req, struct rq_map_data *map_data,
772 void __user *ubuf, unsigned long buf_len, gfp_t gfp_mask,
773 bool vec, int iov_count, bool check_iter_count, int rw)
774 {
775 int ret = 0;
776
777 if (vec) {
778 struct iovec fast_iov[UIO_FASTIOV];
779 struct iovec *iov = fast_iov;
780 struct iov_iter iter;
781
782 ret = import_iovec(rw, ubuf, iov_count ? iov_count : buf_len,
783 UIO_FASTIOV, &iov, &iter);
784 if (ret < 0)
785 return ret;
786
787 if (iov_count) {
788 /* SG_IO howto says that the shorter of the two wins */
789 iov_iter_truncate(&iter, buf_len);
790 if (check_iter_count && !iov_iter_count(&iter)) {
791 kfree(iov);
792 return -EINVAL;
793 }
794 }
795
796 ret = blk_rq_map_user_iov(req->q, req, map_data, &iter,
797 gfp_mask);
798 kfree(iov);
799 } else if (buf_len) {
800 ret = blk_rq_map_user(req->q, req, map_data, ubuf, buf_len,
801 gfp_mask);
802 }
803 return ret;
804 }
805 EXPORT_SYMBOL(blk_rq_map_user_io);
806
807 /**
808 * blk_rq_unmap_user - unmap a request with user data
809 * @bio: start of bio list
810 *
811 * Description:
812 * Unmap a rq previously mapped by blk_rq_map_user(). The caller must
813 * supply the original rq->bio from the blk_rq_map_user() return, since
814 * the I/O completion may have changed rq->bio.
815 */
816 int blk_rq_unmap_user(struct bio *bio)
817 {
818 struct bio *next_bio;
819 int ret = 0, ret2;
820
821 while (bio) {
822 if (bio->bi_private) {
> 823 struct bio_map_data *bmd = bio->bi_private;
824
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
* [mcgrof:blk-iobuf-pool-v2 8/13] block/blk-map.c:742:1: warning: unused label 'next'
@ 2026-07-01 3:56 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-07-01 3:56 UTC (permalink / raw)
To: Luis Chamberlain; +Cc: llvm, oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git blk-iobuf-pool-v2
head: da75cc2253180af718ba0b7b3684a091b16b14fb
commit: b88f2bfe111b8778c8bba9e0309c653966171bdd [8/13] block: bounce passthrough bios through iobuf pool folios
config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20260701/202607011106.ZWLZT9or-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260701/202607011106.ZWLZT9or-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/202607011106.ZWLZT9or-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> block/blk-map.c:742:1: warning: unused label 'next' [-Wunused-label]
742 | next:
| ^~~~~
block/blk-map.c:823:25: warning: unused variable 'bmd' [-Wunused-variable]
823 | struct bio_map_data *bmd = bio->bi_private;
| ^~~
2 warnings generated.
vim +/next +742 block/blk-map.c
670
671 /**
672 * blk_rq_map_user_iov - map user data to a request, for passthrough requests
673 * @q: request queue where request should be inserted
674 * @rq: request to map data to
675 * @map_data: pointer to the rq_map_data holding pages (if necessary)
676 * @iter: iovec iterator
677 * @gfp_mask: memory allocation flags
678 *
679 * Description:
680 * Data will be mapped directly for zero copy I/O, if possible. Otherwise
681 * a kernel bounce buffer is used.
682 *
683 * A matching blk_rq_unmap_user() must be issued at the end of I/O, while
684 * still in process context.
685 */
686 int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
687 struct rq_map_data *map_data,
688 const struct iov_iter *iter, gfp_t gfp_mask)
689 {
690 bool copy = false, map_bvec = false;
691 unsigned long align = blk_lim_dma_alignment_and_pad(&q->limits);
692 struct bio *bio = NULL;
693 struct iov_iter i;
694 int ret = -EINVAL;
695
696 if (map_data)
697 copy = true;
698 else if (iov_iter_alignment(iter) & align)
699 copy = true;
700 else if (iov_iter_is_bvec(iter))
701 map_bvec = true;
702 else if (!user_backed_iter(iter))
703 copy = true;
704 else if (queue_virt_boundary(q))
705 copy = queue_virt_boundary(q) & iov_iter_gap_alignment(iter);
706
707 if (map_bvec) {
708 ret = blk_rq_map_user_bvec(rq, iter);
709 if (!ret)
710 return 0;
711 if (ret != -EREMOTEIO)
712 goto fail;
713 /* fall back to copying the data on limits mismatches */
714 copy = true;
715 }
716
717 i = *iter;
718 do {
719 /*
720 * Try iobuf pool bounce first when copy is needed and the pool
721 * can provide aligned folios for this request.
722 */
723 #ifdef CONFIG_BLK_IOBUF_POOL
724 if (copy && !map_data && blk_rq_iobuf_eligible(q, &i, gfp_mask)) {
725 ret = bio_copy_user_iov_iobuf(rq, &i, gfp_mask);
726 if (!ret)
727 goto next;
728 if (ret != -EREMOTEIO)
729 goto unmap_rq;
730 /* not eligible after all; fall through to standard copy */
731 }
732 #endif
733 if (copy)
734 ret = bio_copy_user_iov(rq, map_data, &i, gfp_mask);
735 else
736 ret = bio_map_user_iov(rq, &i, gfp_mask);
737 if (ret) {
738 if (ret == -EREMOTEIO)
739 ret = -EINVAL;
740 goto unmap_rq;
741 }
> 742 next:
743 if (!bio)
744 bio = rq->bio;
745 } while (iov_iter_count(&i));
746
747 return 0;
748
749 unmap_rq:
750 blk_rq_unmap_user(bio);
751 fail:
752 rq->bio = NULL;
753 return ret;
754 }
755 EXPORT_SYMBOL(blk_rq_map_user_iov);
756
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-07-01 3:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-01 1:05 [mcgrof:blk-iobuf-pool-v2 8/13] block/blk-map.c:742:1: warning: unused label 'next' kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2026-07-01 3:56 kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox