diff options
author | Mike Christie <mchristi@redhat.com> | 2017-11-28 13:40:34 -0500 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2018-01-12 18:07:15 -0500 |
commit | 1a1fc0b88e9019cb3b2f291bdcb2d03d38614690 (patch) | |
tree | 1475e1a96e04f77ceb9e5b1fcec1199bd0797fd9 /drivers/target | |
parent | 810b8153c4243d2012a6ec002ddd3bbc9a9ae8c2 (diff) |
tcmu: simplify scatter_data_area error handling
scatter_data_area always returns 0, so stop checking
for errors.
Signed-off-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r-- | drivers/target/target_core_user.c | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c index c7541f090453..965f462eaa22 100644 --- a/drivers/target/target_core_user.c +++ b/drivers/target/target_core_user.c | |||
@@ -520,7 +520,7 @@ static inline size_t iov_tail(struct iovec *iov) | |||
520 | return (size_t)iov->iov_base + iov->iov_len; | 520 | return (size_t)iov->iov_base + iov->iov_len; |
521 | } | 521 | } |
522 | 522 | ||
523 | static int scatter_data_area(struct tcmu_dev *udev, | 523 | static void scatter_data_area(struct tcmu_dev *udev, |
524 | struct tcmu_cmd *tcmu_cmd, struct scatterlist *data_sg, | 524 | struct tcmu_cmd *tcmu_cmd, struct scatterlist *data_sg, |
525 | unsigned int data_nents, struct iovec **iov, | 525 | unsigned int data_nents, struct iovec **iov, |
526 | int *iov_cnt, bool copy_data) | 526 | int *iov_cnt, bool copy_data) |
@@ -573,8 +573,6 @@ static int scatter_data_area(struct tcmu_dev *udev, | |||
573 | } | 573 | } |
574 | if (to) | 574 | if (to) |
575 | kunmap_atomic(to); | 575 | kunmap_atomic(to); |
576 | |||
577 | return 0; | ||
578 | } | 576 | } |
579 | 577 | ||
580 | static void gather_data_area(struct tcmu_dev *udev, struct tcmu_cmd *cmd, | 578 | static void gather_data_area(struct tcmu_dev *udev, struct tcmu_cmd *cmd, |
@@ -864,33 +862,18 @@ tcmu_queue_cmd_ring(struct tcmu_cmd *tcmu_cmd) | |||
864 | iov_cnt = 0; | 862 | iov_cnt = 0; |
865 | copy_to_data_area = (se_cmd->data_direction == DMA_TO_DEVICE | 863 | copy_to_data_area = (se_cmd->data_direction == DMA_TO_DEVICE |
866 | || se_cmd->se_cmd_flags & SCF_BIDI); | 864 | || se_cmd->se_cmd_flags & SCF_BIDI); |
867 | ret = scatter_data_area(udev, tcmu_cmd, se_cmd->t_data_sg, | 865 | scatter_data_area(udev, tcmu_cmd, se_cmd->t_data_sg, |
868 | se_cmd->t_data_nents, &iov, &iov_cnt, | 866 | se_cmd->t_data_nents, &iov, &iov_cnt, |
869 | copy_to_data_area); | 867 | copy_to_data_area); |
870 | if (ret) { | ||
871 | tcmu_cmd_free_data(tcmu_cmd, tcmu_cmd->dbi_cnt); | ||
872 | mutex_unlock(&udev->cmdr_lock); | ||
873 | |||
874 | pr_err("tcmu: alloc and scatter data failed\n"); | ||
875 | return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; | ||
876 | } | ||
877 | entry->req.iov_cnt = iov_cnt; | 868 | entry->req.iov_cnt = iov_cnt; |
878 | 869 | ||
879 | /* Handle BIDI commands */ | 870 | /* Handle BIDI commands */ |
880 | iov_cnt = 0; | 871 | iov_cnt = 0; |
881 | if (se_cmd->se_cmd_flags & SCF_BIDI) { | 872 | if (se_cmd->se_cmd_flags & SCF_BIDI) { |
882 | iov++; | 873 | iov++; |
883 | ret = scatter_data_area(udev, tcmu_cmd, | 874 | scatter_data_area(udev, tcmu_cmd, se_cmd->t_bidi_data_sg, |
884 | se_cmd->t_bidi_data_sg, | 875 | se_cmd->t_bidi_data_nents, &iov, &iov_cnt, |
885 | se_cmd->t_bidi_data_nents, | 876 | false); |
886 | &iov, &iov_cnt, false); | ||
887 | if (ret) { | ||
888 | tcmu_cmd_free_data(tcmu_cmd, tcmu_cmd->dbi_cnt); | ||
889 | mutex_unlock(&udev->cmdr_lock); | ||
890 | |||
891 | pr_err("tcmu: alloc and scatter bidi data failed\n"); | ||
892 | return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; | ||
893 | } | ||
894 | } | 877 | } |
895 | entry->req.iov_bidi_cnt = iov_cnt; | 878 | entry->req.iov_bidi_cnt = iov_cnt; |
896 | 879 | ||