aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@linux-iscsi.org>2014-01-19 22:36:44 -0500
committerNicholas Bellinger <nab@linux-iscsi.org>2014-01-25 01:58:52 -0500
commit676687c69697d2081d25afd14ee90937d1fb0c8e (patch)
tree208da09393318112eee6146aecbd883e86e0dd0d /drivers
parent555b270e25b0279b98083518a85f4b1da144a181 (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.c14
-rw-r--r--drivers/target/iscsi/iscsi_target.c14
-rw-r--r--drivers/target/iscsi/iscsi_target_util.c7
-rw-r--r--drivers/target/iscsi/iscsi_target_util.h2
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
1030static struct iscsi_cmd 1030static 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 */
155struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp_mask) 155struct 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 *);
9extern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsi_cmd *); 9extern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsi_cmd *);
10extern void iscsit_free_r2ts_from_list(struct iscsi_cmd *); 10extern void iscsit_free_r2ts_from_list(struct iscsi_cmd *);
11extern struct iscsi_cmd *iscsit_alloc_cmd(struct iscsi_conn *, gfp_t); 11extern struct iscsi_cmd *iscsit_alloc_cmd(struct iscsi_conn *, gfp_t);
12extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t); 12extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, int);
13extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32); 13extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32);
14extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *); 14extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *);
15extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32); 15extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32);