mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
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 <[email protected]>
This commit is contained in:
parent
555b270e25
commit
676687c696
5 changed files with 19 additions and 20 deletions
|
|
@ -621,7 +621,7 @@ static int iscsit_add_reject(
|
|||
{
|
||||
struct iscsi_cmd *cmd;
|
||||
|
||||
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
||||
cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE);
|
||||
if (!cmd)
|
||||
return -1;
|
||||
|
||||
|
|
@ -2476,7 +2476,7 @@ static void iscsit_build_conn_drop_async_message(struct iscsi_conn *conn)
|
|||
if (!conn_p)
|
||||
return;
|
||||
|
||||
cmd = iscsit_allocate_cmd(conn_p, GFP_ATOMIC);
|
||||
cmd = iscsit_allocate_cmd(conn_p, TASK_RUNNING);
|
||||
if (!cmd) {
|
||||
iscsit_dec_conn_usage_count(conn_p);
|
||||
return;
|
||||
|
|
@ -3952,7 +3952,7 @@ static int iscsi_target_rx_opcode(struct iscsi_conn *conn, unsigned char *buf)
|
|||
|
||||
switch (hdr->opcode & ISCSI_OPCODE_MASK) {
|
||||
case ISCSI_OP_SCSI_CMD:
|
||||
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
||||
cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE);
|
||||
if (!cmd)
|
||||
goto reject;
|
||||
|
||||
|
|
@ -3964,28 +3964,28 @@ static int iscsi_target_rx_opcode(struct iscsi_conn *conn, unsigned char *buf)
|
|||
case ISCSI_OP_NOOP_OUT:
|
||||
cmd = NULL;
|
||||
if (hdr->ttt == cpu_to_be32(0xFFFFFFFF)) {
|
||||
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
||||
cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE);
|
||||
if (!cmd)
|
||||
goto reject;
|
||||
}
|
||||
ret = iscsit_handle_nop_out(conn, cmd, buf);
|
||||
break;
|
||||
case ISCSI_OP_SCSI_TMFUNC:
|
||||
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
||||
cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE);
|
||||
if (!cmd)
|
||||
goto reject;
|
||||
|
||||
ret = iscsit_handle_task_mgt_cmd(conn, cmd, buf);
|
||||
break;
|
||||
case ISCSI_OP_TEXT:
|
||||
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
||||
cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE);
|
||||
if (!cmd)
|
||||
goto reject;
|
||||
|
||||
ret = iscsit_handle_text_cmd(conn, cmd, buf);
|
||||
break;
|
||||
case ISCSI_OP_LOGOUT:
|
||||
cmd = iscsit_allocate_cmd(conn, GFP_KERNEL);
|
||||
cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE);
|
||||
if (!cmd)
|
||||
goto reject;
|
||||
|
||||
|
|
|
|||
|
|
@ -152,12 +152,11 @@ void iscsit_free_r2ts_from_list(struct iscsi_cmd *cmd)
|
|||
* May be called from software interrupt (timer) context for allocating
|
||||
* iSCSI NopINs.
|
||||
*/
|
||||
struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp_mask)
|
||||
struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, int state)
|
||||
{
|
||||
struct iscsi_cmd *cmd;
|
||||
struct se_session *se_sess = conn->sess->se_sess;
|
||||
int size, tag, state = (gfp_mask & __GFP_WAIT) ? TASK_INTERRUPTIBLE :
|
||||
TASK_RUNNING;
|
||||
int size, tag;
|
||||
|
||||
tag = percpu_ida_alloc(&se_sess->sess_tag_pool, state);
|
||||
if (tag < 0)
|
||||
|
|
@ -930,7 +929,7 @@ static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response)
|
|||
u8 state;
|
||||
struct iscsi_cmd *cmd;
|
||||
|
||||
cmd = iscsit_allocate_cmd(conn, GFP_ATOMIC);
|
||||
cmd = iscsit_allocate_cmd(conn, TASK_RUNNING);
|
||||
if (!cmd)
|
||||
return -1;
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ extern struct iscsi_r2t *iscsit_get_r2t_from_list(struct iscsi_cmd *);
|
|||
extern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsi_cmd *);
|
||||
extern void iscsit_free_r2ts_from_list(struct iscsi_cmd *);
|
||||
extern struct iscsi_cmd *iscsit_alloc_cmd(struct iscsi_conn *, gfp_t);
|
||||
extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t);
|
||||
extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, int);
|
||||
extern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsi_cmd *, u32);
|
||||
extern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsi_cmd *);
|
||||
extern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsi_cmd *, u32);
|
||||
|
|
|
|||
Loading…
Reference in a new issue