[SCSI] iscsi_tcp: support PF_MEMALLOC/__GFP_MEMALLOC
This patch has software iscsi use PF_MEMALLOC/__GFP_MEMALLOC to be able to better support swap over iscsi disks similar to what was added for nbd. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
1fc2b00fba
commit
9e45dd7323
|
@ -370,17 +370,24 @@ static inline int iscsi_sw_tcp_xmit_qlen(struct iscsi_conn *conn)
|
|||
static int iscsi_sw_tcp_pdu_xmit(struct iscsi_task *task)
|
||||
{
|
||||
struct iscsi_conn *conn = task->conn;
|
||||
int rc;
|
||||
unsigned long pflags = current->flags;
|
||||
int rc = 0;
|
||||
|
||||
current->flags |= PF_MEMALLOC;
|
||||
|
||||
while (iscsi_sw_tcp_xmit_qlen(conn)) {
|
||||
rc = iscsi_sw_tcp_xmit(conn);
|
||||
if (rc == 0)
|
||||
return -EAGAIN;
|
||||
if (rc == 0) {
|
||||
rc = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
break;
|
||||
rc = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
tsk_restore_flags(current, pflags, PF_MEMALLOC);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -665,6 +672,7 @@ iscsi_sw_tcp_conn_bind(struct iscsi_cls_session *cls_session,
|
|||
sk->sk_reuse = SK_CAN_REUSE;
|
||||
sk->sk_sndtimeo = 15 * HZ; /* FIXME: make it configurable */
|
||||
sk->sk_allocation = GFP_ATOMIC;
|
||||
sk_set_memalloc(sk);
|
||||
|
||||
iscsi_sw_tcp_conn_set_callbacks(conn);
|
||||
tcp_sw_conn->sendpage = tcp_sw_conn->sock->ops->sendpage;
|
||||
|
|
Loading…
Reference in New Issue