mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 08:26:59 +00:00
[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
1 changed files with 13 additions and 5 deletions
|
@ -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)
|
static int iscsi_sw_tcp_pdu_xmit(struct iscsi_task *task)
|
||||||
{
|
{
|
||||||
struct iscsi_conn *conn = task->conn;
|
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)) {
|
while (iscsi_sw_tcp_xmit_qlen(conn)) {
|
||||||
rc = iscsi_sw_tcp_xmit(conn);
|
rc = iscsi_sw_tcp_xmit(conn);
|
||||||
if (rc == 0)
|
if (rc == 0) {
|
||||||
return -EAGAIN;
|
rc = -EAGAIN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (rc < 0)
|
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_reuse = SK_CAN_REUSE;
|
||||||
sk->sk_sndtimeo = 15 * HZ; /* FIXME: make it configurable */
|
sk->sk_sndtimeo = 15 * HZ; /* FIXME: make it configurable */
|
||||||
sk->sk_allocation = GFP_ATOMIC;
|
sk->sk_allocation = GFP_ATOMIC;
|
||||||
|
sk_set_memalloc(sk);
|
||||||
|
|
||||||
iscsi_sw_tcp_conn_set_callbacks(conn);
|
iscsi_sw_tcp_conn_set_callbacks(conn);
|
||||||
tcp_sw_conn->sendpage = tcp_sw_conn->sock->ops->sendpage;
|
tcp_sw_conn->sendpage = tcp_sw_conn->sock->ops->sendpage;
|
||||||
|
|
Loading…
Reference in a new issue