diff options
| -rw-r--r-- | drivers/infiniband/ulp/isert/ib_isert.c | 14 | ||||
| -rw-r--r-- | drivers/target/iscsi/iscsi_target.c | 14 | ||||
| -rw-r--r-- | drivers/target/iscsi/iscsi_target_util.c | 7 | ||||
| -rw-r--r-- | drivers/target/iscsi/iscsi_target_util.h | 2 | ||||
| -rw-r--r-- | include/target/iscsi/iscsi_transport.h | 2 |
5 files changed, 19 insertions, 20 deletions
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c index 421182be6e3f..63bcf69e9fe2 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.c +++ b/drivers/infiniband/ulp/isert/ib_isert.c | |||
| @@ -1028,13 +1028,13 @@ isert_rx_login_req(struct iser_rx_desc *rx_desc, int rx_buflen, | |||
| 1028 | } | 1028 | } |
| 1029 | 1029 | ||
| 1030 | static struct iscsi_cmd | 1030 | static struct iscsi_cmd |
| 1031 | *isert_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp) | 1031 | *isert_allocate_cmd(struct iscsi_conn *conn) |
| 1032 | { | 1032 | { |
| 1033 | struct isert_conn *isert_conn = (struct isert_conn *)conn->context; | 1033 | struct isert_conn *isert_conn = (struct isert_conn *)conn->context; |
| 1034 | struct isert_cmd *isert_cmd; | 1034 | struct isert_cmd *isert_cmd; |
| 1035 | struct iscsi_cmd *cmd; | 1035 | struct iscsi_cmd *cmd; |
| 1036 | 1036 | ||
| 1037 | cmd = iscsit_allocate_cmd(conn, gfp); | 1037 | cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); |
| 1038 | if (!cmd) { | 1038 | if (!cmd) { |
| 1039 | pr_err("Unable to allocate iscsi_cmd + isert_cmd\n"); | 1039 | pr_err("Unable to allocate iscsi_cmd + isert_cmd\n"); |
| 1040 | return NULL; | 1040 | return NULL; |
| @@ -1223,7 +1223,7 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc, | |||
| 1223 | 1223 | ||
| 1224 | switch (opcode) { | 1224 | switch (opcode) { |
| 1225 | case ISCSI_OP_SCSI_CMD: | 1225 | case ISCSI_OP_SCSI_CMD: |
| 1226 | cmd = isert_allocate_cmd(conn, GFP_KERNEL); | 1226 | cmd = isert_allocate_cmd(conn); |
| 1227 | if (!cmd) | 1227 | if (!cmd) |
| 1228 | break; | 1228 | break; |
| 1229 | 1229 | ||
| @@ -1237,7 +1237,7 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc, | |||
| 1237 | rx_desc, (unsigned char *)hdr); | 1237 | rx_desc, (unsigned char *)hdr); |
| 1238 | break; | 1238 | break; |
| 1239 | case ISCSI_OP_NOOP_OUT: | 1239 | case ISCSI_OP_NOOP_OUT: |
| 1240 | cmd = isert_allocate_cmd(conn, GFP_KERNEL); | 1240 | cmd = isert_allocate_cmd(conn); |
| 1241 | if (!cmd) | 1241 | if (!cmd) |
| 1242 | break; | 1242 | break; |
| 1243 | 1243 | ||
| @@ -1250,7 +1250,7 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc, | |||
| 1250 | (unsigned char *)hdr); | 1250 | (unsigned char *)hdr); |
| 1251 | break; | 1251 | break; |
| 1252 | case ISCSI_OP_SCSI_TMFUNC: | 1252 | case ISCSI_OP_SCSI_TMFUNC: |
| 1253 | cmd = isert_allocate_cmd(conn, GFP_KERNEL); | 1253 | cmd = isert_allocate_cmd(conn); |
| 1254 | if (!cmd) | 1254 | if (!cmd) |
| 1255 | break; | 1255 | break; |
| 1256 | 1256 | ||
| @@ -1258,7 +1258,7 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc, | |||
| 1258 | (unsigned char *)hdr); | 1258 | (unsigned char *)hdr); |
| 1259 | break; | 1259 | break; |
| 1260 | case ISCSI_OP_LOGOUT: | 1260 | case ISCSI_OP_LOGOUT: |
| 1261 | cmd = isert_allocate_cmd(conn, GFP_KERNEL); | 1261 | cmd = isert_allocate_cmd(conn); |
| 1262 | if (!cmd) | 1262 | if (!cmd) |
| 1263 | break; | 1263 | break; |
| 1264 | 1264 | ||
| @@ -1269,7 +1269,7 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc, | |||
| 1269 | HZ); | 1269 | HZ); |
| 1270 | break; | 1270 | break; |
| 1271 | case ISCSI_OP_TEXT: | 1271 | case ISCSI_OP_TEXT: |
| 1272 | cmd = isert_allocate_cmd(conn, GFP_KERNEL); | 1272 | cmd = isert_allocate_cmd(conn); |
| 1273 | if (!cmd) | 1273 | if (!cmd) |
| 1274 | break; | 1274 | break; |
| 1275 | 1275 | ||
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index d70e9119e906..2a52752a9937 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c | |||
| @@ -621,7 +621,7 @@ static int iscsit_add_reject( | |||
| 621 | { | 621 | { |
| 622 | struct iscsi_cmd *cmd; | 622 | struct iscsi_cmd *cmd; |
| 623 | 623 | ||
| 624 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 624 | cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); |
| 625 | if (!cmd) | 625 | if (!cmd) |
| 626 | return -1; | 626 | return -1; |
| 627 | 627 | ||
| @@ -2476,7 +2476,7 @@ static void iscsit_build_conn_drop_async_message(struct iscsi_conn *conn) | |||
| 2476 | if (!conn_p) | 2476 | if (!conn_p) |
| 2477 | return; | 2477 | return; |
| 2478 | 2478 | ||
| 2479 | cmd = iscsit_allocate_cmd(conn_p, GFP_ATOMIC); | 2479 | cmd = iscsit_allocate_cmd(conn_p, TASK_RUNNING); |
| 2480 | if (!cmd) { | 2480 | if (!cmd) { |
| 2481 | iscsit_dec_conn_usage_count(conn_p); | 2481 | iscsit_dec_conn_usage_count(conn_p); |
| 2482 | return; | 2482 | return; |
| @@ -3952,7 +3952,7 @@ static int iscsi_target_rx_opcode(struct iscsi_conn *conn, unsigned char *buf) | |||
| 3952 | 3952 | ||
| 3953 | switch (hdr->opcode & ISCSI_OPCODE_MASK) { | 3953 | switch (hdr->opcode & ISCSI_OPCODE_MASK) { |
| 3954 | case ISCSI_OP_SCSI_CMD: | 3954 | case ISCSI_OP_SCSI_CMD: |
| 3955 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 3955 | cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); |
| 3956 | if (!cmd) | 3956 | if (!cmd) |
| 3957 | goto reject; | 3957 | goto reject; |
| 3958 | 3958 | ||
| @@ -3964,28 +3964,28 @@ static int iscsi_target_rx_opcode(struct iscsi_conn *conn, unsigned char *buf) | |||
| 3964 | case ISCSI_OP_NOOP_OUT: | 3964 | case ISCSI_OP_NOOP_OUT: |
| 3965 | cmd = NULL; | 3965 | cmd = NULL; |
| 3966 | if (hdr->ttt == cpu_to_be32(0xFFFFFFFF)) { | 3966 | if (hdr->ttt == cpu_to_be32(0xFFFFFFFF)) { |
| 3967 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 3967 | cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); |
| 3968 | if (!cmd) | 3968 | if (!cmd) |
| 3969 | goto reject; | 3969 | goto reject; |
| 3970 | } | 3970 | } |
| 3971 | ret = iscsit_handle_nop_out(conn, cmd, buf); | 3971 | ret = iscsit_handle_nop_out(conn, cmd, buf); |
| 3972 | break; | 3972 | break; |
| 3973 | case ISCSI_OP_SCSI_TMFUNC: | 3973 | case ISCSI_OP_SCSI_TMFUNC: |
| 3974 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 3974 | cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); |
| 3975 | if (!cmd) | 3975 | if (!cmd) |
| 3976 | goto reject; | 3976 | goto reject; |
| 3977 | 3977 | ||
| 3978 | ret = iscsit_handle_task_mgt_cmd(conn, cmd, buf); | 3978 | ret = iscsit_handle_task_mgt_cmd(conn, cmd, buf); |
| 3979 | break; | 3979 | break; |
| 3980 | case ISCSI_OP_TEXT: | 3980 | case ISCSI_OP_TEXT: |
| 3981 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 3981 | cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); |
| 3982 | if (!cmd) | 3982 | if (!cmd) |
| 3983 | goto reject; | 3983 | goto reject; |
| 3984 | 3984 | ||
| 3985 | ret = iscsit_handle_text_cmd(conn, cmd, buf); | 3985 | ret = iscsit_handle_text_cmd(conn, cmd, buf); |
| 3986 | break; | 3986 | break; |
| 3987 | case ISCSI_OP_LOGOUT: | 3987 | case ISCSI_OP_LOGOUT: |
| 3988 | cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); | 3988 | cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); |
| 3989 | if (!cmd) | 3989 | if (!cmd) |
| 3990 | goto reject; | 3990 | goto reject; |
| 3991 | 3991 | ||
diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c index 5477ecabc00e..e655b042ed18 100644 --- a/drivers/target/iscsi/iscsi_target_util.c +++ b/drivers/target/iscsi/iscsi_target_util.c | |||
| @@ -152,12 +152,11 @@ void iscsit_free_r2ts_from_list(struct iscsi_cmd *cmd) | |||
| 152 | * May be called from software interrupt (timer) context for allocating | 152 | * May be called from software interrupt (timer) context for allocating |
| 153 | * iSCSI NopINs. | 153 | * iSCSI NopINs. |
| 154 | */ | 154 | */ |
| 155 | struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp_mask) | 155 | struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, int state) |
| 156 | { | 156 | { |
| 157 | struct iscsi_cmd *cmd; | 157 | struct iscsi_cmd *cmd; |
| 158 | struct se_session *se_sess = conn->sess->se_sess; | 158 | struct se_session *se_sess = conn->sess->se_sess; |
| 159 | int size, tag, state = (gfp_mask & __GFP_WAIT) ? TASK_INTERRUPTIBLE : | 159 | int size, tag; |
| 160 | TASK_RUNNING; | ||
| 161 | 160 | ||
| 162 | tag = percpu_ida_alloc(&se_sess->sess_tag_pool, state); | 161 | tag = percpu_ida_alloc(&se_sess->sess_tag_pool, state); |
| 163 | if (tag < 0) | 162 | if (tag < 0) |
| @@ -930,7 +929,7 @@ static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response) | |||
| 930 | u8 state; | 929 | u8 state; |
| 931 | struct iscsi_cmd *cmd; | 930 | struct iscsi_cmd *cmd; |
| 932 | 931 | ||
| 933 | cmd = iscsit_allocate_cmd(conn, GFP_ATOMIC); | 932 | cmd = iscsit_allocate_cmd(conn, TASK_RUNNING); |
| 934 | if (!cmd) | 933 | if (!cmd) |
| 935 | return -1; | 934 | return -1; |
| 936 | 935 | ||
diff --git a/drivers/target/iscsi/iscsi_target_util.h b/drivers/target/iscsi/iscsi_target_util.h index e4fc34a02f57..561a424d1980 100644 --- a/drivers/target/iscsi/iscsi_target_util.h +++ b/drivers/target/iscsi/iscsi_target_util.h | |||
| @@ -9,7 +9,7 @@ extern struct iscsi_r2t *iscsit_get_r2t_from_list(struct iscsi_cmd *); | |||
| 9 | extern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsi_cmd *); | 9 | extern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsi_cmd *); |
| 10 | extern void iscsit_free_r2ts_from_list(struct iscsi_cmd *); | 10 | extern void iscsit_free_r2ts_from_list(struct iscsi_cmd *); |
| 11 | extern struct iscsi_cmd *iscsit_alloc_cmd(struct iscsi_conn *, gfp_t); | 11 | extern struct iscsi_cmd *iscsit_alloc_cmd(struct iscsi_conn *, gfp_t); |
| 12 | extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t); | 12 | extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, int); |
| 13 | extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32); | 13 | extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32); |
| 14 | extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *); | 14 | extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *); |
| 15 | extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32); | 15 | extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32); |
diff --git a/include/target/iscsi/iscsi_transport.h b/include/target/iscsi/iscsi_transport.h index a12589c4ee92..ae5a17111968 100644 --- a/include/target/iscsi/iscsi_transport.h +++ b/include/target/iscsi/iscsi_transport.h | |||
| @@ -94,7 +94,7 @@ extern int iscsit_tmr_post_handler(struct iscsi_cmd *, struct iscsi_conn *); | |||
| 94 | /* | 94 | /* |
| 95 | * From iscsi_target_util.c | 95 | * From iscsi_target_util.c |
| 96 | */ | 96 | */ |
| 97 | extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t); | 97 | extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, int); |
| 98 | extern int iscsit_sequence_cmd(struct iscsi_conn *, struct iscsi_cmd *, | 98 | extern int iscsit_sequence_cmd(struct iscsi_conn *, struct iscsi_cmd *, |
| 99 | unsigned char *, __be32); | 99 | unsigned char *, __be32); |
| 100 | extern void iscsit_release_cmd(struct iscsi_cmd *); | 100 | extern void iscsit_release_cmd(struct iscsi_cmd *); |
