From: kernel test robot <lkp@intel.com>
To: Mike Christie <michael.christie@oracle.com>,
bvanassche@acm.org, hch@lst.de, martin.petersen@oracle.com,
linux-scsi@vger.kernel.org,
james.bottomley@hansenpartnership.com,
linux-block@vger.kernel.org, dm-devel@redhat.com,
snitzer@kernel.org, axboe@kernel.dk,
linux-nvme@lists.infradead.org, chaitanyak@nvidia.com,
kbusch@kernel.org, target-devel@vger.kernel.org
Cc: Mike Christie <michael.christie@oracle.com>,
oe-kbuild-all@lists.linux.dev
Subject: Re: [dm-devel] [PATCH v5 18/18] scsi: target: Add block PR support to iblock
Date: Tue, 4 Apr 2023 13:29:42 +0800 [thread overview]
Message-ID: <202304041322.SEFV29Co-lkp@intel.com> (raw)
In-Reply-To: <20230324181741.13908-19-michael.christie@oracle.com>
Hi Mike,
kernel test robot noticed the following build warnings:
[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on jejb-scsi/for-next axboe-block/for-next linus/master v6.3-rc5 next-20230403]
[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/Mike-Christie/block-Add-PR-callouts-for-read-keys-and-reservation/20230325-022314
base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
patch link: https://lore.kernel.org/r/20230324181741.13908-19-michael.christie%40oracle.com
patch subject: [PATCH v5 18/18] scsi: target: Add block PR support to iblock
config: ia64-randconfig-s043-20230403 (https://download.01.org/0day-ci/archive/20230404/202304041322.SEFV29Co-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 12.1.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-39-gce1a6720-dirty
# https://github.com/intel-lab-lkp/linux/commit/f3fe3a0cab8498044d99362b81e01f5c48da5f63
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Mike-Christie/block-Add-PR-callouts-for-read-keys-and-reservation/20230325-022314
git checkout f3fe3a0cab8498044d99362b81e01f5c48da5f63
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=ia64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=ia64 SHELL=/bin/bash drivers/target/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202304041322.SEFV29Co-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/target/target_core_iblock.c:968:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:968:24: sparse: expected int
drivers/target/target_core_iblock.c:968:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:973:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:973:24: sparse: expected int
drivers/target/target_core_iblock.c:973:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:985:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:985:24: sparse: expected int
drivers/target/target_core_iblock.c:985:24: sparse: got restricted sense_reason_t
>> drivers/target/target_core_iblock.c:996:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [assigned] ret @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:996:21: sparse: expected int [assigned] ret
drivers/target/target_core_iblock.c:996:21: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1000:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [assigned] ret @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1000:13: sparse: expected int [assigned] ret
drivers/target/target_core_iblock.c:1000:13: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1035:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1035:24: sparse: expected int
drivers/target/target_core_iblock.c:1035:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1040:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1040:24: sparse: expected int
drivers/target/target_core_iblock.c:1040:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1044:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1044:24: sparse: expected int
drivers/target/target_core_iblock.c:1044:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1049:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1049:24: sparse: expected int
drivers/target/target_core_iblock.c:1049:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1055:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1055:24: sparse: expected int
drivers/target/target_core_iblock.c:1055:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1059:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1059:24: sparse: expected int
drivers/target/target_core_iblock.c:1059:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1062:16: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1062:16: sparse: expected int
drivers/target/target_core_iblock.c:1062:16: sparse: got restricted sense_reason_t
>> drivers/target/target_core_iblock.c:1075:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted sense_reason_t [usertype] ret @@ got int @@
drivers/target/target_core_iblock.c:1075:21: sparse: expected restricted sense_reason_t [usertype] ret
drivers/target/target_core_iblock.c:1075:21: sparse: got int
drivers/target/target_core_iblock.c:1078:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted sense_reason_t [usertype] ret @@ got int @@
drivers/target/target_core_iblock.c:1078:21: sparse: expected restricted sense_reason_t [usertype] ret
drivers/target/target_core_iblock.c:1078:21: sparse: got int
vim +968 drivers/target/target_core_iblock.c
956
957 static int iblock_pr_read_keys(struct se_cmd *cmd, unsigned char *param_data)
958 {
959 struct se_device *dev = cmd->se_dev;
960 struct iblock_dev *ib_dev = IBLOCK_DEV(dev);
961 struct block_device *bdev = ib_dev->ibd_bd;
962 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
963 int i, ret, len, paths, data_offset;
964 struct pr_keys *keys;
965
966 if (!ops) {
967 pr_err("Block device does not support pr_ops but iblock device has been configured for PR passthrough.\n");
> 968 return TCM_UNSUPPORTED_SCSI_OPCODE;
969 }
970
971 if (!ops->pr_read_keys) {
972 pr_err("Block device does not support read_keys.\n");
973 return TCM_UNSUPPORTED_SCSI_OPCODE;
974 }
975
976 /*
977 * We don't know what's under us, but dm-multipath will register every
978 * path with the same key, so start off with enough space for 16 paths.
979 */
980 paths = 16;
981 retry:
982 len = 8 * paths;
983 keys = kzalloc(sizeof(*keys) + len, GFP_KERNEL);
984 if (!keys)
985 return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
986
987 keys->num_keys = paths;
988 ret = ops->pr_read_keys(bdev, keys);
989 if (!ret) {
990 if (keys->num_keys > paths) {
991 kfree(keys);
992 paths *= 2;
993 goto retry;
994 }
995 } else if (ret) {
> 996 ret = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
997 goto free_keys;
998 }
999
1000 ret = TCM_NO_SENSE;
1001
1002 put_unaligned_be32(keys->generation, ¶m_data[0]);
1003 if (!keys->num_keys) {
1004 put_unaligned_be32(0, ¶m_data[4]);
1005 goto free_keys;
1006 }
1007
1008 put_unaligned_be32(8 * keys->num_keys, ¶m_data[4]);
1009
1010 data_offset = 8;
1011 for (i = 0; i < keys->num_keys; i++) {
1012 if (data_offset + 8 > cmd->data_length)
1013 break;
1014
1015 put_unaligned_be64(keys->keys[i], ¶m_data[data_offset]);
1016 data_offset += 8;
1017 }
1018
1019 free_keys:
1020 kfree(keys);
1021 return ret;
1022 }
1023
1024 static int iblock_pr_read_reservation(struct se_cmd *cmd,
1025 unsigned char *param_data)
1026 {
1027 struct se_device *dev = cmd->se_dev;
1028 struct iblock_dev *ib_dev = IBLOCK_DEV(dev);
1029 struct block_device *bdev = ib_dev->ibd_bd;
1030 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
1031 struct pr_held_reservation rsv = { };
1032
1033 if (!ops) {
1034 pr_err("Block device does not support pr_ops but iblock device has been configured for PR passthrough.\n");
1035 return TCM_UNSUPPORTED_SCSI_OPCODE;
1036 }
1037
1038 if (!ops->pr_read_reservation) {
1039 pr_err("Block device does not support read_keys.\n");
1040 return TCM_UNSUPPORTED_SCSI_OPCODE;
1041 }
1042
1043 if (ops->pr_read_reservation(bdev, &rsv))
1044 return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
1045
1046 put_unaligned_be32(rsv.generation, ¶m_data[0]);
1047 if (!block_pr_type_to_scsi(rsv.type)) {
1048 put_unaligned_be32(0, ¶m_data[4]);
1049 return TCM_NO_SENSE;
1050 }
1051
1052 put_unaligned_be32(16, ¶m_data[4]);
1053
1054 if (cmd->data_length < 16)
> 1055 return TCM_NO_SENSE;
1056 put_unaligned_be64(rsv.key, ¶m_data[8]);
1057
1058 if (cmd->data_length < 22)
1059 return TCM_NO_SENSE;
1060 param_data[21] = block_pr_type_to_scsi(rsv.type);
1061
1062 return TCM_NO_SENSE;
1063 }
1064
1065 static sense_reason_t iblock_execute_pr_in(struct se_cmd *cmd, u8 sa,
1066 unsigned char *param_data)
1067 {
1068 sense_reason_t ret = TCM_NO_SENSE;
1069
1070 switch (sa) {
1071 case PRI_REPORT_CAPABILITIES:
1072 iblock_pr_report_caps(param_data);
1073 break;
1074 case PRI_READ_KEYS:
> 1075 ret = iblock_pr_read_keys(cmd, param_data);
1076 break;
1077 case PRI_READ_RESERVATION:
1078 ret = iblock_pr_read_reservation(cmd, param_data);
1079 break;
1080 default:
1081 pr_err("Unknown PERSISTENT_RESERVE_IN SA: 0x%02x\n", sa);
1082 return TCM_UNSUPPORTED_SCSI_OPCODE;
1083 }
1084
1085 return ret;
1086 }
1087
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Mike Christie <michael.christie@oracle.com>,
bvanassche@acm.org, hch@lst.de, martin.petersen@oracle.com,
linux-scsi@vger.kernel.org,
james.bottomley@hansenpartnership.com,
linux-block@vger.kernel.org, dm-devel@redhat.com,
snitzer@kernel.org, axboe@kernel.dk,
linux-nvme@lists.infradead.org, chaitanyak@nvidia.com,
kbusch@kernel.org, target-devel@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev,
Mike Christie <michael.christie@oracle.com>
Subject: Re: [PATCH v5 18/18] scsi: target: Add block PR support to iblock
Date: Tue, 4 Apr 2023 13:29:42 +0800 [thread overview]
Message-ID: <202304041322.SEFV29Co-lkp@intel.com> (raw)
In-Reply-To: <20230324181741.13908-19-michael.christie@oracle.com>
Hi Mike,
kernel test robot noticed the following build warnings:
[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on jejb-scsi/for-next axboe-block/for-next linus/master v6.3-rc5 next-20230403]
[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/Mike-Christie/block-Add-PR-callouts-for-read-keys-and-reservation/20230325-022314
base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
patch link: https://lore.kernel.org/r/20230324181741.13908-19-michael.christie%40oracle.com
patch subject: [PATCH v5 18/18] scsi: target: Add block PR support to iblock
config: ia64-randconfig-s043-20230403 (https://download.01.org/0day-ci/archive/20230404/202304041322.SEFV29Co-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 12.1.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-39-gce1a6720-dirty
# https://github.com/intel-lab-lkp/linux/commit/f3fe3a0cab8498044d99362b81e01f5c48da5f63
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Mike-Christie/block-Add-PR-callouts-for-read-keys-and-reservation/20230325-022314
git checkout f3fe3a0cab8498044d99362b81e01f5c48da5f63
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=ia64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=ia64 SHELL=/bin/bash drivers/target/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202304041322.SEFV29Co-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/target/target_core_iblock.c:968:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:968:24: sparse: expected int
drivers/target/target_core_iblock.c:968:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:973:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:973:24: sparse: expected int
drivers/target/target_core_iblock.c:973:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:985:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:985:24: sparse: expected int
drivers/target/target_core_iblock.c:985:24: sparse: got restricted sense_reason_t
>> drivers/target/target_core_iblock.c:996:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [assigned] ret @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:996:21: sparse: expected int [assigned] ret
drivers/target/target_core_iblock.c:996:21: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1000:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [assigned] ret @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1000:13: sparse: expected int [assigned] ret
drivers/target/target_core_iblock.c:1000:13: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1035:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1035:24: sparse: expected int
drivers/target/target_core_iblock.c:1035:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1040:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1040:24: sparse: expected int
drivers/target/target_core_iblock.c:1040:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1044:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1044:24: sparse: expected int
drivers/target/target_core_iblock.c:1044:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1049:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1049:24: sparse: expected int
drivers/target/target_core_iblock.c:1049:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1055:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1055:24: sparse: expected int
drivers/target/target_core_iblock.c:1055:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1059:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1059:24: sparse: expected int
drivers/target/target_core_iblock.c:1059:24: sparse: got restricted sense_reason_t
drivers/target/target_core_iblock.c:1062:16: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted sense_reason_t @@
drivers/target/target_core_iblock.c:1062:16: sparse: expected int
drivers/target/target_core_iblock.c:1062:16: sparse: got restricted sense_reason_t
>> drivers/target/target_core_iblock.c:1075:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted sense_reason_t [usertype] ret @@ got int @@
drivers/target/target_core_iblock.c:1075:21: sparse: expected restricted sense_reason_t [usertype] ret
drivers/target/target_core_iblock.c:1075:21: sparse: got int
drivers/target/target_core_iblock.c:1078:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted sense_reason_t [usertype] ret @@ got int @@
drivers/target/target_core_iblock.c:1078:21: sparse: expected restricted sense_reason_t [usertype] ret
drivers/target/target_core_iblock.c:1078:21: sparse: got int
vim +968 drivers/target/target_core_iblock.c
956
957 static int iblock_pr_read_keys(struct se_cmd *cmd, unsigned char *param_data)
958 {
959 struct se_device *dev = cmd->se_dev;
960 struct iblock_dev *ib_dev = IBLOCK_DEV(dev);
961 struct block_device *bdev = ib_dev->ibd_bd;
962 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
963 int i, ret, len, paths, data_offset;
964 struct pr_keys *keys;
965
966 if (!ops) {
967 pr_err("Block device does not support pr_ops but iblock device has been configured for PR passthrough.\n");
> 968 return TCM_UNSUPPORTED_SCSI_OPCODE;
969 }
970
971 if (!ops->pr_read_keys) {
972 pr_err("Block device does not support read_keys.\n");
973 return TCM_UNSUPPORTED_SCSI_OPCODE;
974 }
975
976 /*
977 * We don't know what's under us, but dm-multipath will register every
978 * path with the same key, so start off with enough space for 16 paths.
979 */
980 paths = 16;
981 retry:
982 len = 8 * paths;
983 keys = kzalloc(sizeof(*keys) + len, GFP_KERNEL);
984 if (!keys)
985 return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
986
987 keys->num_keys = paths;
988 ret = ops->pr_read_keys(bdev, keys);
989 if (!ret) {
990 if (keys->num_keys > paths) {
991 kfree(keys);
992 paths *= 2;
993 goto retry;
994 }
995 } else if (ret) {
> 996 ret = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
997 goto free_keys;
998 }
999
1000 ret = TCM_NO_SENSE;
1001
1002 put_unaligned_be32(keys->generation, ¶m_data[0]);
1003 if (!keys->num_keys) {
1004 put_unaligned_be32(0, ¶m_data[4]);
1005 goto free_keys;
1006 }
1007
1008 put_unaligned_be32(8 * keys->num_keys, ¶m_data[4]);
1009
1010 data_offset = 8;
1011 for (i = 0; i < keys->num_keys; i++) {
1012 if (data_offset + 8 > cmd->data_length)
1013 break;
1014
1015 put_unaligned_be64(keys->keys[i], ¶m_data[data_offset]);
1016 data_offset += 8;
1017 }
1018
1019 free_keys:
1020 kfree(keys);
1021 return ret;
1022 }
1023
1024 static int iblock_pr_read_reservation(struct se_cmd *cmd,
1025 unsigned char *param_data)
1026 {
1027 struct se_device *dev = cmd->se_dev;
1028 struct iblock_dev *ib_dev = IBLOCK_DEV(dev);
1029 struct block_device *bdev = ib_dev->ibd_bd;
1030 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
1031 struct pr_held_reservation rsv = { };
1032
1033 if (!ops) {
1034 pr_err("Block device does not support pr_ops but iblock device has been configured for PR passthrough.\n");
1035 return TCM_UNSUPPORTED_SCSI_OPCODE;
1036 }
1037
1038 if (!ops->pr_read_reservation) {
1039 pr_err("Block device does not support read_keys.\n");
1040 return TCM_UNSUPPORTED_SCSI_OPCODE;
1041 }
1042
1043 if (ops->pr_read_reservation(bdev, &rsv))
1044 return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
1045
1046 put_unaligned_be32(rsv.generation, ¶m_data[0]);
1047 if (!block_pr_type_to_scsi(rsv.type)) {
1048 put_unaligned_be32(0, ¶m_data[4]);
1049 return TCM_NO_SENSE;
1050 }
1051
1052 put_unaligned_be32(16, ¶m_data[4]);
1053
1054 if (cmd->data_length < 16)
> 1055 return TCM_NO_SENSE;
1056 put_unaligned_be64(rsv.key, ¶m_data[8]);
1057
1058 if (cmd->data_length < 22)
1059 return TCM_NO_SENSE;
1060 param_data[21] = block_pr_type_to_scsi(rsv.type);
1061
1062 return TCM_NO_SENSE;
1063 }
1064
1065 static sense_reason_t iblock_execute_pr_in(struct se_cmd *cmd, u8 sa,
1066 unsigned char *param_data)
1067 {
1068 sense_reason_t ret = TCM_NO_SENSE;
1069
1070 switch (sa) {
1071 case PRI_REPORT_CAPABILITIES:
1072 iblock_pr_report_caps(param_data);
1073 break;
1074 case PRI_READ_KEYS:
> 1075 ret = iblock_pr_read_keys(cmd, param_data);
1076 break;
1077 case PRI_READ_RESERVATION:
1078 ret = iblock_pr_read_reservation(cmd, param_data);
1079 break;
1080 default:
1081 pr_err("Unknown PERSISTENT_RESERVE_IN SA: 0x%02x\n", sa);
1082 return TCM_UNSUPPORTED_SCSI_OPCODE;
1083 }
1084
1085 return ret;
1086 }
1087
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
next prev parent reply other threads:[~2023-04-04 5:30 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-24 18:17 [dm-devel] [PATCH v5 00/18] Use block pr_ops in LIO Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 01/18] block: Add PR callouts for read keys and reservation Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 19:45 ` [dm-devel] " Bart Van Assche
2023-03-24 19:45 ` Bart Van Assche
2023-03-28 16:36 ` [dm-devel] " Mike Snitzer
2023-03-28 16:36 ` Mike Snitzer
2023-03-28 17:11 ` [dm-devel] " Mike Christie
2023-03-28 17:11 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 02/18] block: Rename BLK_STS_NEXUS to BLK_STS_RESV_CONFLICT Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 19:46 ` [dm-devel] " Bart Van Assche
2023-03-24 19:46 ` Bart Van Assche
2023-03-24 18:17 ` [dm-devel] [PATCH v5 03/18] scsi: Rename sd_pr_command Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 19:46 ` [dm-devel] " Bart Van Assche
2023-03-24 19:46 ` Bart Van Assche
2023-03-24 18:17 ` [dm-devel] [PATCH v5 04/18] scsi: Move sd_pr_type to header to share Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:25 ` [dm-devel] " Bart Van Assche
2023-03-24 18:25 ` Bart Van Assche
2023-03-24 18:41 ` [dm-devel] " michael.christie
2023-03-24 18:41 ` michael.christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 05/18] scsi: Add support for block PR read keys/reservation Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 06/18] dm: " Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 07/18] nvme: Fix reservation status related structs Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 08/18] nvme: Don't hardcode the data len for pr commands Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 09/18] nvme: Move pr code to it's own file Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 10/18] nvme: Add helper to send pr command Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 11/18] nvme: Add pr_ops read_keys support Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-28 7:11 ` [dm-devel] " kernel test robot
2023-03-28 7:11 ` kernel test robot
2023-03-28 15:50 ` [dm-devel] " Mike Christie
2023-03-28 15:50 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 12/18] nvme: Add a nvme_pr_type enum Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 13/18] nvme: Add pr_ops read_reservation support Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 14/18] scsi: target: Rename sbc_ops to exec_cmd_ops Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 15/18] scsi: target: Allow backends to hook into PR handling Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 16/18] scsi: target: Pass struct target_opcode_descriptor to enabled Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 17/18] scsi: target: Report and detect unsupported PR commands Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-03-24 18:17 ` [dm-devel] [PATCH v5 18/18] scsi: target: Add block PR support to iblock Mike Christie
2023-03-24 18:17 ` Mike Christie
2023-04-04 5:29 ` kernel test robot [this message]
2023-04-04 5:29 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202304041322.SEFV29Co-lkp@intel.com \
--to=lkp@intel.com \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=chaitanyak@nvidia.com \
--cc=dm-devel@redhat.com \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=kbusch@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=michael.christie@oracle.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=snitzer@kernel.org \
--cc=target-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.