Re: [PATCH v4 07/10] dm: Add support for copy offload.

kernel test robot
2022-05-06T15:02:53Z

Hi Nitesh,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20220422]
[cannot apply to axboe-block/for-next device-mapper-dm/for-next linus/master v5.18-rc4 v5.18-rc3 v5.18-rc2 v5.18-rc4]
[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]

url: https://github.com/intel-lab-lkp/linux/commits/Nitesh-Shetty/block-Introduce-queue-limits-for-copy-offload-support/20220426-201825
base: e7d6987e09a328d4a949701db40ef63fbb970670
config: s390-randconfig-s032-20220427 (https://download.01.org/0day-ci/archive/20220428/202204282336.7AY0GVKz-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 11.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/intel-lab-lkp/linux/commit/913c8c5197fea28ee3c8424e16eadd8b159a91f0
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Nitesh-Shetty/block-Introduce-queue-limits-for-copy-offload-support/20220426-201825
git checkout 913c8c5197fea28ee3c8424e16eadd8b159a91f0
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=s390 SHELL=/bin/bash drivers/md/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

sparse warnings: (new ones prefixed by >>)
>> drivers/md/dm.c:1602:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected restricted blk_status_t @@ got int @@
drivers/md/dm.c:1602:24: sparse: expected restricted blk_status_t
drivers/md/dm.c:1602:24: sparse: got int

vim +1602 drivers/md/dm.c

1582
1583 /*
1584 * Select the correct strategy for processing a non-flush bio.
1585 */
1586 static blk_status_t __split_and_process_bio(struct clone_info *ci)
1587 {
1588 struct bio *clone;
1589 struct dm_target *ti;
1590 unsigned len;
1591
1592 ti = dm_table_find_target(ci->map, ci->sector);
1593 if (unlikely(!ti))
1594 return BLK_STS_IOERR;
1595 else if (unlikely(ci->is_abnormal_io))
1596 return __process_abnormal_io(ci, ti);
1597
1598 if ((unlikely(op_is_copy(ci->bio->bi_opf)) &&
1599 max_io_len(ti, ci->sector) < ci->sector_count)) {
1600 DMERR("%s: Error IO size(%u) is greater than maximum target size(%llu)\n",
1601 __func__, ci->sector_count, max_io_len(ti, ci->sector));
> 1602 return -EIO;
1603 }
1604 /*
1605 * Only support bio polling for normal IO, and the target io is
1606 * exactly inside the dm_io instance (verified in dm_poll_dm_io)
1607 */
1608 ci->submit_as_polled = ci->bio->bi_opf & REQ_POLLED;
1609
1610 len = min_t(sector_t, max_io_len(ti, ci->sector), ci->sector_count);
1611 setup_split_accounting(ci, len);
1612 clone = alloc_tio(ci, ti, 0, &len, GFP_NOIO);
1613 __map_bio(clone);
1614
1615 ci->sector += len;
1616 ci->sector_count -= len;
1617
1618 return BLK_STS_OK;
1619 }
1620

--
0-DAY CI Kernel Test Service