All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <4FABF80D.3040803@cs.wisc.edu>

diff --git a/a/2.txt b/N1/2.txt
index 8b13789..dbd3e07 100644
--- a/a/2.txt
+++ b/N1/2.txt
@@ -1 +1,58 @@
+>From 917d53f16d1e26b12e90e5e15df76a7a8bee35e8 Mon Sep 17 00:00:00 2001
+From: Mike Christie <michaelc@cs.wisc.edu>
+Date: Thu, 3 May 2012 12:36:18 -0500
+Subject: [PATCH 1/1] iscsi: Set SOCK_MEMALLOC for access to PFMEMALLOC
+ reserves
 
+Set SOCK_MEMALLOC on the iscsi socket to allow access to PFMEMALLOC
+reserves to prevent deadlock.
+
+Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
+---
+ drivers/scsi/iscsi_tcp.c |   18 +++++++++++++-----
+ 1 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
+index 453a740..7360f4c 100644
+--- a/drivers/scsi/iscsi_tcp.c
++++ b/drivers/scsi/iscsi_tcp.c
+@@ -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 = 1;
+ 	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;
+-- 
+1.7.7.6
diff --git a/a/content_digest b/N1/content_digest
index 325c26b..c015e6d 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -29,5 +29,63 @@
  "\01:2\0"
  "fn\00001-iscsi-Set-SOCK_MEMALLOC-for-access-to-PFMEMALLOC-res.patch\0"
  "b\0"
+ ">From 917d53f16d1e26b12e90e5e15df76a7a8bee35e8 Mon Sep 17 00:00:00 2001\n"
+ "From: Mike Christie <michaelc@cs.wisc.edu>\n"
+ "Date: Thu, 3 May 2012 12:36:18 -0500\n"
+ "Subject: [PATCH 1/1] iscsi: Set SOCK_MEMALLOC for access to PFMEMALLOC\n"
+ " reserves\n"
+ "\n"
+ "Set SOCK_MEMALLOC on the iscsi socket to allow access to PFMEMALLOC\n"
+ "reserves to prevent deadlock.\n"
+ "\n"
+ "Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>\n"
+ "---\n"
+ " drivers/scsi/iscsi_tcp.c |   18 +++++++++++++-----\n"
+ " 1 files changed, 13 insertions(+), 5 deletions(-)\n"
+ "\n"
+ "diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c\n"
+ "index 453a740..7360f4c 100644\n"
+ "--- a/drivers/scsi/iscsi_tcp.c\n"
+ "+++ b/drivers/scsi/iscsi_tcp.c\n"
+ "@@ -370,17 +370,24 @@ static inline int iscsi_sw_tcp_xmit_qlen(struct iscsi_conn *conn)\n"
+ " static int iscsi_sw_tcp_pdu_xmit(struct iscsi_task *task)\n"
+ " {\n"
+ " \tstruct iscsi_conn *conn = task->conn;\n"
+ "-\tint rc;\n"
+ "+\tunsigned long pflags = current->flags;\n"
+ "+\tint rc = 0;\n"
+ "+\n"
+ "+\tcurrent->flags |= PF_MEMALLOC;\n"
+ " \n"
+ " \twhile (iscsi_sw_tcp_xmit_qlen(conn)) {\n"
+ " \t\trc = iscsi_sw_tcp_xmit(conn);\n"
+ "-\t\tif (rc == 0)\n"
+ "-\t\t\treturn -EAGAIN;\n"
+ "+\t\tif (rc == 0) {\n"
+ "+\t\t\trc = -EAGAIN;\n"
+ "+\t\t\tbreak;\n"
+ "+\t\t}\n"
+ " \t\tif (rc < 0)\n"
+ "-\t\t\treturn rc;\n"
+ "+\t\t\tbreak;\n"
+ "+\t\trc = 0;\n"
+ " \t}\n"
+ " \n"
+ "-\treturn 0;\n"
+ "+\ttsk_restore_flags(current, pflags, PF_MEMALLOC);\n"
+ "+\treturn rc;\n"
+ " }\n"
+ " \n"
+ " /*\n"
+ "@@ -665,6 +672,7 @@ iscsi_sw_tcp_conn_bind(struct iscsi_cls_session *cls_session,\n"
+ " \tsk->sk_reuse = 1;\n"
+ " \tsk->sk_sndtimeo = 15 * HZ; /* FIXME: make it configurable */\n"
+ " \tsk->sk_allocation = GFP_ATOMIC;\n"
+ "+\tsk_set_memalloc(sk);\n"
+ " \n"
+ " \tiscsi_sw_tcp_conn_set_callbacks(conn);\n"
+ " \ttcp_sw_conn->sendpage = tcp_sw_conn->sock->ops->sendpage;\n"
+ "-- \n"
+ 1.7.7.6
 
-bde3ac327159081bbe3dcd1441932159d1e60995a3a37500dbe63a6119b55c10
+82b8ed7d1af179bd245ff9778164d6bce1784c77ff24b96a0902bb81acbe4ad3

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.