Message ID | 20210628095210.26249-3-mwilck@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | scsi/dm: dm_blk_ioctl(): implement failover for SG_IO on dm-multipath | expand |
Hi, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on mkp-scsi/for-next] [also build test WARNING on scsi/for-next next-20210628] [cannot apply to dm/for-next block/for-next song-md/md-next v5.13] [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/0day-ci/linux/commits/mwilck-suse-com/scsi-dm-dm_blk_ioctl-implement-failover-for-SG_IO-on-dm-multipath/20210628-175410 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: x86_64-randconfig-r032-20210628 (attached as .config) compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 4c92e31dd0f1bd152eda883af20ff7fbcaa14945) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/259453ca972ae531cfdca07cbf4d6bb09b8f8c9f git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review mwilck-suse-com/scsi-dm-dm_blk_ioctl-implement-failover-for-SG_IO-on-dm-multipath/20210628-175410 git checkout 259453ca972ae531cfdca07cbf4d6bb09b8f8c9f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> block/scsi_ioctl.c:937:6: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses] if (!hdr->info & SG_INFO_CHECK) ^ ~ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ block/scsi_ioctl.c:937:6: note: add parentheses after the '!' to evaluate the bitwise operator first block/scsi_ioctl.c:937:6: note: add parentheses around left hand side expression to silence this warning >> block/scsi_ioctl.c:937:6: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses] if (!hdr->info & SG_INFO_CHECK) ^ ~ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:61: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ block/scsi_ioctl.c:937:6: note: add parentheses after the '!' to evaluate the bitwise operator first block/scsi_ioctl.c:937:6: note: add parentheses around left hand side expression to silence this warning >> block/scsi_ioctl.c:937:6: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses] if (!hdr->info & SG_INFO_CHECK) ^ ~ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value' (cond) ? \ ^~~~ block/scsi_ioctl.c:937:6: note: add parentheses after the '!' to evaluate the bitwise operator first block/scsi_ioctl.c:937:6: note: add parentheses around left hand side expression to silence this warning 3 warnings generated. vim +937 block/scsi_ioctl.c 931 932 blk_status_t sg_io_to_blk_status(struct sg_io_hdr *hdr) 933 { 934 int result; 935 blk_status_t sts; 936 > 937 if (!hdr->info & SG_INFO_CHECK) 938 return BLK_STS_OK; 939 940 result = hdr->status | 941 (hdr->msg_status << 8) | 942 (hdr->host_status << 16) | 943 (hdr->driver_status << 24); 944 945 sts = __scsi_result_to_blk_status(&result, result); 946 hdr->host_status = host_byte(result); 947 948 return sts; 949 } 950 EXPORT_SYMBOL(sg_io_to_blk_status); 951 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi,
url: https://github.com/0day-ci/linux/commits/mwilck-suse-com/scsi-dm-dm_blk_ioctl-implement-failover-for-SG_IO-on-dm-multipath/20210628-175410
base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: xtensa-randconfig-s032-20210628 (attached as .config)
compiler: xtensa-linux-gcc (GCC) 9.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.3-341-g8af24329-dirty
# https://github.com/0day-ci/linux/commit/259453ca972ae531cfdca07cbf4d6bb09b8f8c9f
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review mwilck-suse-com/scsi-dm-dm_blk_ioctl-implement-failover-for-SG_IO-on-dm-multipath/20210628-175410
git checkout 259453ca972ae531cfdca07cbf4d6bb09b8f8c9f
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=xtensa SHELL=/bin/bash
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 >>)
>> block/scsi_ioctl.c:937:24: sparse: sparse: dubious: !x & y
vim +937 block/scsi_ioctl.c
259453ca972ae5 Martin Wilck 2021-06-28 932 blk_status_t sg_io_to_blk_status(struct sg_io_hdr *hdr)
259453ca972ae5 Martin Wilck 2021-06-28 933 {
259453ca972ae5 Martin Wilck 2021-06-28 934 int result;
259453ca972ae5 Martin Wilck 2021-06-28 935 blk_status_t sts;
259453ca972ae5 Martin Wilck 2021-06-28 936
259453ca972ae5 Martin Wilck 2021-06-28 @937 if (!hdr->info & SG_INFO_CHECK)
^
Should be if (!(hdr->info & SG_INFO_CHECK))
259453ca972ae5 Martin Wilck 2021-06-28 938 return BLK_STS_OK;
259453ca972ae5 Martin Wilck 2021-06-28 939
259453ca972ae5 Martin Wilck 2021-06-28 940 result = hdr->status |
259453ca972ae5 Martin Wilck 2021-06-28 941 (hdr->msg_status << 8) |
259453ca972ae5 Martin Wilck 2021-06-28 942 (hdr->host_status << 16) |
259453ca972ae5 Martin Wilck 2021-06-28 943 (hdr->driver_status << 24);
259453ca972ae5 Martin Wilck 2021-06-28 944
259453ca972ae5 Martin Wilck 2021-06-28 945 sts = __scsi_result_to_blk_status(&result, result);
259453ca972ae5 Martin Wilck 2021-06-28 946 hdr->host_status = host_byte(result);
259453ca972ae5 Martin Wilck 2021-06-28 947
259453ca972ae5 Martin Wilck 2021-06-28 948 return sts;
259453ca972ae5 Martin Wilck 2021-06-28 949 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c index 19b63b64ecbc..f226cac02e88 100644 --- a/block/scsi_ioctl.c +++ b/block/scsi_ioctl.c @@ -929,6 +929,26 @@ blk_status_t __scsi_result_to_blk_status(int *cmd_result, int result) } EXPORT_SYMBOL(__scsi_result_to_blk_status); +blk_status_t sg_io_to_blk_status(struct sg_io_hdr *hdr) +{ + int result; + blk_status_t sts; + + if (!hdr->info & SG_INFO_CHECK) + return BLK_STS_OK; + + result = hdr->status | + (hdr->msg_status << 8) | + (hdr->host_status << 16) | + (hdr->driver_status << 24); + + sts = __scsi_result_to_blk_status(&result, result); + hdr->host_status = host_byte(result); + + return sts; +} +EXPORT_SYMBOL(sg_io_to_blk_status); + static int __init blk_scsi_ioctl_init(void) { blk_set_cmd_filter_defaults(&blk_default_cmd_filter); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 48497a77428d..5da03edf125c 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -2022,4 +2022,5 @@ int freeze_bdev(struct block_device *bdev); int thaw_bdev(struct block_device *bdev); blk_status_t __scsi_result_to_blk_status(int *cmd_result, int result); +blk_status_t sg_io_to_blk_status(struct sg_io_hdr *hdr); #endif /* _LINUX_BLKDEV_H */