Revision 00c10bc13cdb58447d6bb2a003afad7bd60f5a5f authored by Eric W. Biederman on 31 May 2012, 23:26:40 UTC, committed by Linus Torvalds on 01 June 2012, 00:49:32 UTC
Force SIGCHLD handling to SIG_IGN so that signals are not generated and so
that the children autoreap.  This increases the parallelize and in general
the speed of network namespace shutdown.

Note self reaping childrean can exist past zap_pid_ns_processess but they
will all be reaped before we allow the pid namespace init task with pid ==
1 to be reaped.

[akpm@linux-foundation.org: checkpatch fixes]
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Louis Rilling <louis.rilling@kerlabs.com>
Cc: Mike Galbraith <efault@gmx.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 3208450
Raw File
t4-l2-pi-deboost.tst
#
# rt-mutex test
#
# Op: C(ommand)/T(est)/W(ait)
# |  opcode
# |  |     threadid: 0-7
# |  |     |  opcode argument
# |  |     |  |
# C: lock: 0: 0
#
# Commands
#
# opcode	opcode argument
# schedother	nice value
# schedfifo	priority
# lock		lock nr (0-7)
# locknowait	lock nr (0-7)
# lockint	lock nr (0-7)
# lockintnowait	lock nr (0-7)
# lockcont	lock nr (0-7)
# unlock	lock nr (0-7)
# signal	thread to signal (0-7)
# reset		0
# resetevent	0
#
# Tests / Wait
#
# opcode	opcode argument
#
# prioeq	priority
# priolt	priority
# priogt	priority
# nprioeq	normal priority
# npriolt	normal priority
# npriogt	normal priority
# locked	lock nr (0-7)
# blocked	lock nr (0-7)
# blockedwake	lock nr (0-7)
# unlocked	lock nr (0-7)
# opcodeeq	command opcode or number
# opcodelt	number
# opcodegt	number
# eventeq	number
# eventgt	number
# eventlt	number

#
# 4 threads 2 lock PI
#
C: resetevent:		0: 	0
W: opcodeeq:		0: 	0

# Set schedulers
C: schedother:		0: 	0
C: schedother:		1: 	0
C: schedfifo:		2: 	82
C: schedfifo:		3: 	83

# T0 lock L0
C: locknowait:		0: 	0
W: locked:		0: 	0

# T1 lock L1
C: locknowait:		1: 	1
W: locked:		1: 	1

# T3 lock L0
C: lockintnowait:	3: 	0
W: blocked:		3: 	0
T: prioeq:		0: 	83

# T0 lock L1
C: lock:		0: 	1
W: blocked:		0: 	1
T: prioeq:		1: 	83

# T1 unlock L1
C: unlock:		1:	1

# Wait until T0 is in the wakeup code
W: blockedwake:		0:	1

# Verify that T1 is unboosted
W: unlocked:		1: 	1
T: priolt:		1: 	1

# T2 lock L1 (T0 is boosted and pending owner !)
C: locknowait:		2:	1
W: blocked:		2: 	1
T: prioeq:		0: 	83

# Interrupt T3 and wait until T3 returned
C: signal:		3:	0
W: unlocked:		3:	0

# Verify prio of T0 (still pending owner,
# but T2 is enqueued due to the previous boost by T3
T: prioeq:		0:	82

# Let T0 continue
C: lockcont:		0:	1
W: locked:		0:	1

# Unlock L1 and let T2 get L1
C: unlock:		0:	1
W: locked:		2:	1

# Verify that T0 is unboosted
W: unlocked:		0:	1
T: priolt:		0:	1

# Unlock everything and exit
C: unlock:		2:	1
W: unlocked:		2:	1

C: unlock:		0:	0
W: unlocked:		0:	0

back to top