[PATCH v2 10/10] af_unix: use freezable blocking calls in read

Subsystems: networking [general], networking [unix sockets], the rest

STALE4853d

Revision v2 of 3 in this series.

6 messages, 3 authors, 2013-05-05 · open the first message on its own page

[PATCH v2 10/10] af_unix: use freezable blocking calls in read

From: Colin Cross <hidden>
Date: 2013-05-02 01:35:54

Avoid waking up every thread sleeping in read call on an AF_UNIX
socket during suspend and resume by calling a freezable blocking
call.  Previous patches modified the freezer to avoid sending
wakeups to threads that are blocked in freezable blocking calls.

This call was selected to be converted to a freezable call because
it doesn't hold any locks or release any resources when interrupted
that might be needed by another freezing task or a kernel driver
during suspend, and is a common site where idle userspace tasks are
blocked.

Signed-off-by: Colin Cross <redacted>
---
 net/unix/af_unix.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index 2db702d..2bcac57 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -114,6 +114,7 @@
 #include <linux/mount.h>
 #include <net/checksum.h>
 #include <linux/security.h>
+#include <linux/freezer.h>
 
 struct hlist_head unix_socket_table[2 * UNIX_HASH_SIZE];
 EXPORT_SYMBOL_GPL(unix_socket_table);
@@ -1880,7 +1881,7 @@ static long unix_stream_data_wait(struct sock *sk, long timeo)
 
 		set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
 		unix_state_unlock(sk);
-		timeo = schedule_timeout(timeo);
+		timeo = freezable_schedule_timeout(timeo);
 		unix_state_lock(sk);
 		clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
 	}
-- 
1.8.2.1

Re: [PATCH v2 10/10] af_unix: use freezable blocking calls in read

From: Tejun Heo <tj@kernel.org>
Date: 2013-05-03 00:08:21

On Wed, May 01, 2013 at 06:35:08PM -0700, Colin Cross wrote:
Avoid waking up every thread sleeping in read call on an AF_UNIX
socket during suspend and resume by calling a freezable blocking
call.  Previous patches modified the freezer to avoid sending
wakeups to threads that are blocked in freezable blocking calls.

This call was selected to be converted to a freezable call because
it doesn't hold any locks or release any resources when interrupted
that might be needed by another freezing task or a kernel driver
during suspend, and is a common site where idle userspace tasks are
blocked.
Heh, so you are aware of the deadlock possibilities.  Good selection
of spots.  For all the conversion patches.

 Acked-by: Tejun Heo [off-list ref]

Thanks.

-- 
tejun

Re: [PATCH v2 10/10] af_unix: use freezable blocking calls in read

From: Rafael J. Wysocki <hidden>
Date: 2013-05-04 19:11:32

On Thursday, May 02, 2013 05:08:12 PM Tejun Heo wrote:
On Wed, May 01, 2013 at 06:35:08PM -0700, Colin Cross wrote:
quoted
Avoid waking up every thread sleeping in read call on an AF_UNIX
socket during suspend and resume by calling a freezable blocking
call.  Previous patches modified the freezer to avoid sending
wakeups to threads that are blocked in freezable blocking calls.

This call was selected to be converted to a freezable call because
it doesn't hold any locks or release any resources when interrupted
that might be needed by another freezing task or a kernel driver
during suspend, and is a common site where idle userspace tasks are
blocked.
Heh, so you are aware of the deadlock possibilities.  Good selection
of spots.  For all the conversion patches.

 Acked-by: Tejun Heo [off-list ref]
I wonder if that includes [3/10] (just to get the record straight)?

Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

Re: [PATCH v2 10/10] af_unix: use freezable blocking calls in read

From: Tejun Heo <tj@kernel.org>
Date: 2013-05-04 20:39:22

Hello, Rafael.

On Sat, May 4, 2013 at 12:19 PM, Rafael J. Wysocki [off-list ref] wrote:
quoted
Heh, so you are aware of the deadlock possibilities.  Good selection
of spots.  For all the conversion patches.

 Acked-by: Tejun Heo [off-list ref]
I wonder if that includes [3/10] (just to get the record straight)?
I think we want the lockdep annotations before these go in. I'll
review Colin's new series later today.

Thanks!

--
tejun

Re: [PATCH v2 10/10] af_unix: use freezable blocking calls in read

From: Colin Cross <hidden>
Date: 2013-05-04 22:23:33

On Sat, May 4, 2013 at 1:39 PM, Tejun Heo [off-list ref] wrote:
Hello, Rafael.

On Sat, May 4, 2013 at 12:19 PM, Rafael J. Wysocki [off-list ref] wrote:
quoted
quoted
Heh, so you are aware of the deadlock possibilities.  Good selection
of spots.  For all the conversion patches.

 Acked-by: Tejun Heo [off-list ref]
I wonder if that includes [3/10] (just to get the record straight)?
I think we want the lockdep annotations before these go in. I'll
review Colin's new series later today.
Just to make sure the merge order is clear, the two patches I posted
yesterday to reintroduce the lockdep warning in try_to_freeze()
(https://lkml.org/lkml/2013/5/3/488) need to be merged first, then I
will repost this series on top of that one.

Re: [PATCH v2 10/10] af_unix: use freezable blocking calls in read

From: Rafael J. Wysocki <hidden>
Date: 2013-05-05 11:15:13

On Saturday, May 04, 2013 03:23:30 PM Colin Cross wrote:
On Sat, May 4, 2013 at 1:39 PM, Tejun Heo [off-list ref] wrote:
quoted
Hello, Rafael.

On Sat, May 4, 2013 at 12:19 PM, Rafael J. Wysocki [off-list ref] wrote:
quoted
quoted
Heh, so you are aware of the deadlock possibilities.  Good selection
of spots.  For all the conversion patches.

 Acked-by: Tejun Heo [off-list ref]
I wonder if that includes [3/10] (just to get the record straight)?
I think we want the lockdep annotations before these go in. I'll
review Colin's new series later today.
Just to make sure the merge order is clear, the two patches I posted
yesterday to reintroduce the lockdep warning in try_to_freeze()
(https://lkml.org/lkml/2013/5/3/488) need to be merged first, then I
will repost this series on top of that one.
OK, thanks for the clarification.

Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help