aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRoland Dreier <roland@purestorage.com>2012-07-16 14:04:38 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2012-07-16 20:35:26 -0400
commit7c78b8de267cc4bc63c4f95bda694be606c3644d (patch)
tree03b7c8a8ee230eb0a7764a903e3f694f8122b40c /drivers
parent669ab62c9d045bd2ff647f39e9e7a088e7e8706a (diff)
sbp-target: Consolidate duplicated error path code in sbp_handle_command()
Cc: Chris Boot <bootc@bootc.net> Cc: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/target/sbp/sbp_target.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c
index 0848c4ca2a32..e10e6223e96c 100644
--- a/drivers/target/sbp/sbp_target.c
+++ b/drivers/target/sbp/sbp_target.c
@@ -1219,28 +1219,14 @@ static void sbp_handle_command(struct sbp_target_request *req)
1219 ret = sbp_fetch_command(req); 1219 ret = sbp_fetch_command(req);
1220 if (ret) { 1220 if (ret) {
1221 pr_debug("sbp_handle_command: fetch command failed: %d\n", ret); 1221 pr_debug("sbp_handle_command: fetch command failed: %d\n", ret);
1222 req->status.status |= cpu_to_be32( 1222 goto err;
1223 STATUS_BLOCK_RESP(STATUS_RESP_TRANSPORT_FAILURE) |
1224 STATUS_BLOCK_DEAD(0) |
1225 STATUS_BLOCK_LEN(1) |
1226 STATUS_BLOCK_SBP_STATUS(SBP_STATUS_UNSPECIFIED_ERROR));
1227 sbp_send_status(req);
1228 sbp_free_request(req);
1229 return;
1230 } 1223 }
1231 1224
1232 ret = sbp_fetch_page_table(req); 1225 ret = sbp_fetch_page_table(req);
1233 if (ret) { 1226 if (ret) {
1234 pr_debug("sbp_handle_command: fetch page table failed: %d\n", 1227 pr_debug("sbp_handle_command: fetch page table failed: %d\n",
1235 ret); 1228 ret);
1236 req->status.status |= cpu_to_be32( 1229 goto err;
1237 STATUS_BLOCK_RESP(STATUS_RESP_TRANSPORT_FAILURE) |
1238 STATUS_BLOCK_DEAD(0) |
1239 STATUS_BLOCK_LEN(1) |
1240 STATUS_BLOCK_SBP_STATUS(SBP_STATUS_UNSPECIFIED_ERROR));
1241 sbp_send_status(req);
1242 sbp_free_request(req);
1243 return;
1244 } 1230 }
1245 1231
1246 unpacked_lun = req->login->lun->unpacked_lun; 1232 unpacked_lun = req->login->lun->unpacked_lun;
@@ -1252,6 +1238,16 @@ static void sbp_handle_command(struct sbp_target_request *req)
1252 target_submit_cmd(&req->se_cmd, sess->se_sess, req->cmd_buf, 1238 target_submit_cmd(&req->se_cmd, sess->se_sess, req->cmd_buf,
1253 req->sense_buf, unpacked_lun, data_length, 1239 req->sense_buf, unpacked_lun, data_length,
1254 MSG_SIMPLE_TAG, data_dir, 0); 1240 MSG_SIMPLE_TAG, data_dir, 0);
1241 return;
1242
1243err:
1244 req->status.status |= cpu_to_be32(
1245 STATUS_BLOCK_RESP(STATUS_RESP_TRANSPORT_FAILURE) |
1246 STATUS_BLOCK_DEAD(0) |
1247 STATUS_BLOCK_LEN(1) |
1248 STATUS_BLOCK_SBP_STATUS(SBP_STATUS_UNSPECIFIED_ERROR));
1249 sbp_send_status(req);
1250 sbp_free_request(req);
1255} 1251}
1256 1252
1257/* 1253/*