diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2014-01-19 22:36:44 -0500 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2014-01-25 01:58:52 -0500 |
commit | 676687c69697d2081d25afd14ee90937d1fb0c8e (patch) | |
tree | 208da09393318112eee6146aecbd883e86e0dd0d /drivers | |
parent | 555b270e25b0279b98083518a85f4b1da144a181 (diff) |
iscsi-target: Convert gfp_t parameter to task state bitmask
This patch propigates the use of task state bitmask now used by
percpu_ida_alloc() up the iscsi-target callchain, replacing the
use of GFP_ATOMIC for TASK_RUNNING, and GFP_KERNEL for
TASK_INTERRUPTIBLE.
Also, drop the unnecessary gfp_t parameter to isert_allocate_cmd(),
and just pass TASK_INTERRUPTIBLE into iscsit_allocate_cmd().
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers')
-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 |
4 files changed, 18 insertions, 19 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); |