From nobody@FreeBSD.org  Wed Oct 12 04:09:03 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4211D106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Oct 2011 04:09:03 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 318D58FC14
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Oct 2011 04:09:03 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p9C493pA057114
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Oct 2011 04:09:03 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p9C4929H057113;
	Wed, 12 Oct 2011 04:09:02 GMT
	(envelope-from nobody)
Message-Id: <201110120409.p9C4929H057113@red.freebsd.org>
Date: Wed, 12 Oct 2011 04:09:02 GMT
From: Garrett Cooper <yaneurabeya@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Filesystem deadlocks when using multiple unionfs mounts on top of single filesystem
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         161511
>Category:       kern
>Synopsis:       [unionfs] Filesystem deadlocks when using multiple unionfs mounts on top of single filesystem
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-fs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Oct 12 04:10:09 UTC 2011
>Closed-Date:    Fri May 25 05:40:22 UTC 2012
>Last-Modified:  Sun Feb 03 22:29:40 UTC 2013
>Originator:     Garrett Cooper
>Release:        10-CURRENT
>Organization:
iXsystems, Inc.
>Environment:
FreeBSD streetfighter.ixsystems.com 10.0-CURRENT FreeBSD 10.0-CURRENT #4 r226140M: Tue Oct 11 17:03:51 PDT 2011     root@streetfighter.ixsystems.com:/usr/obj/usr/src/sys/STREETFIGHTER  amd64
>Description:
Mounting a filesystem twice with unionfs like so causes filesystem deadlocks when files are modified on top of unionfs:

#!/bin/sh

mkdir pristine
cat > supfile <<EOF
*default host=cvsup1.freebsd.org
*default base=/FreeBSD/sup
*default prefix=$PWD/FreeBSD
*default release=cvs
*default delete use-rel-suffix
*default compress
EOF
csup supfile
mkdir touched union
mount -t unionfs pristine union
mount -t unionfs touched union
cd union
make buildworld -j4

=====

Any value of -j above -j1 causes filesystem deadlocks; processes like make will block when trying to access directory information -- it's worse for UFS than ZFS because it seems like some structures -- in particular the UFS_DIRHASH -- might be locked indefinitely causing the entire filesystem to become unusable. In either case I've seen the filesystem will prevent rebooting from completing cleanly as there are processes waiting on filesystem resources to become available.

This can also be stimulated via freenas builds like so:

sh build/do_build.sh -U

LORs have also been identified within unionfs around when the deadlock occurs, which might suggest that incorrect locking is preventing unionfs from releasing resources when a [soft] failure occurs. I don't have the LORs right now, but I'm hunting them down in my logs..
>How-To-Repeat:
See decomposed example above.
>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-fs 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Fri Oct 14 21:20:54 UTC 2011 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=161511 

From: ONGS-OZAWA <ozawa@ongs.co.jp>
To: bug-followup@FreeBSD.org, gcooper@ixsystems.com
Cc:  
Subject: Re: kern/161511: [unionfs] Filesystem deadlocks when using multiple
 unionfs mounts on top of single filesystem
Date: Mon, 09 Apr 2012 21:17:14 +0900

 This is a multi-part message in MIME format.
 --------------080703070504010006020003
 Content-Type: text/plain; charset=ISO-2022-JP
 Content-Transfer-Encoding: 7bit
 
 Please try this new patch that solves a dead lock issue of unionfs.
 
 # cd /usr/src/
 # patch -p3 < attached_file
 
 --
  ONGS Inc.
  Ozawa <ozawa@ongs.co.jp>
  WWW: http://www.ongs.co.jp/
 
 --------------080703070504010006020003
 Content-Type: text/plain;
  name="unionfs_20120409.diff"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment;
  filename="unionfs_20120409.diff"
 
 ZGlmZiAtdXJCTiAvdXNyL3NyYy5vcmlnL3N5cy9mcy91bmlvbmZzL3VuaW9uX3N1YnIuYyAv
 dXNyL3NyYy9zeXMvZnMvdW5pb25mcy91bmlvbl9zdWJyLmMKLS0tIC91c3Ivc3JjLm9yaWcv
 c3lzL2ZzL3VuaW9uZnMvdW5pb25fc3Vici5jCTIwMTItMDQtMDggMTQ6MDE6MjMuMDAwMDAw
 MDAwICswOTAwCisrKyAvdXNyL3NyYy9zeXMvZnMvdW5pb25mcy91bmlvbl9zdWJyLmMJMjAx
 Mi0wNC0wOSAxMTozMjoyOS4wMDAwMDAwMDAgKzA5MDAKQEAgLTM1MCwxOSArMzUwLDIyIEBA
 CiAJdXZwID0gdW5wLT51bl91cHBlcnZwOwogCWR2cCA9IHVucC0+dW5fZHZwOwogCXVucC0+
 dW5fbG93ZXJ2cCA9IHVucC0+dW5fdXBwZXJ2cCA9IE5VTExWUDsKLQogCXZwLT52X3ZubG9j
 ayA9ICYodnAtPnZfbG9jayk7CiAJdnAtPnZfZGF0YSA9IE5VTEw7Ci0JbG9ja21ncih2cC0+
 dl92bmxvY2ssIExLX0VYQ0xVU0lWRSB8IExLX0lOVEVSTE9DSywgVklfTVRYKHZwKSk7CisJ
 dnAtPnZfb2JqZWN0ID0gTlVMTDsKKwlWSV9VTkxPQ0sodnApOworCiAJaWYgKGx2cCAhPSBO
 VUxMVlApCi0JCVZPUF9VTkxPQ0sobHZwLCAwKTsKKwkJVk9QX1VOTE9DSyhsdnAsIExLX1JF
 TEVBU0UpOwogCWlmICh1dnAgIT0gTlVMTFZQKQotCQlWT1BfVU5MT0NLKHV2cCwgMCk7Ci0J
 dnAtPnZfb2JqZWN0ID0gTlVMTDsKKwkJVk9QX1VOTE9DSyh1dnAsIExLX1JFTEVBU0UpOwog
 CiAJaWYgKGR2cCAhPSBOVUxMVlAgJiYgdW5wLT51bl9oYXNoLmxlX3ByZXYgIT0gTlVMTCkK
 IAkJdW5pb25mc19yZW1fY2FjaGVkX3Zub2RlKHVucCwgZHZwKTsKIAorCWlmIChsb2NrbWdy
 KHZwLT52X3ZubG9jaywgTEtfRVhDTFVTSVZFLCBWSV9NVFgodnApKSAhPSAwKQorCQlwYW5p
 YygidGhlIGxvY2sgZm9yIGRlbGV0aW9uIGlzIHVuYWNxdWlyYWJsZS4iKTsKKwogCWlmIChs
 dnAgIT0gTlVMTFZQKSB7CiAJCXZmc2xvY2tlZCA9IFZGU19MT0NLX0dJQU5UKGx2cC0+dl9t
 b3VudCk7CiAJCXZyZWxlKGx2cCk7CkBAIC01NTAsNyArNTUzLDcgQEAKIAkJY24tPmNuX2Zs
 YWdzIHw9IChjbnAtPmNuX2ZsYWdzICYgU0FWRVNUQVJUKTsKIAogCXZyZWYoZHZwKTsKLQlW
 T1BfVU5MT0NLKGR2cCwgMCk7CisJVk9QX1VOTE9DSyhkdnAsIExLX1JFTEVBU0UpOwogCiAJ
 aWYgKChlcnJvciA9IHJlbG9va3VwKGR2cCwgdnBwLCBjbikpKSB7CiAJCXVtYV96ZnJlZShu
 YW1laV96b25lLCBjbi0+Y25fcG5idWYpOwpAQCAtOTU3LDcgKzk2MCw3IEBACiAJKnZwcCA9
 IHZwOwogCiB1bmlvbmZzX3ZuX2NyZWF0ZV9vbl91cHBlcl9mcmVlX291dDE6Ci0JVk9QX1VO
 TE9DSyh1ZHZwLCAwKTsKKwlWT1BfVU5MT0NLKHVkdnAsIExLX1JFTEVBU0UpOwogCiB1bmlv
 bmZzX3ZuX2NyZWF0ZV9vbl91cHBlcl9mcmVlX291dDI6CiAJaWYgKGNuLmNuX2ZsYWdzICYg
 SEFTQlVGKSB7CmRpZmYgLXVyQk4gL3Vzci9zcmMub3JpZy9zeXMvZnMvdW5pb25mcy91bmlv
 bl92ZnNvcHMuYyAvdXNyL3NyYy9zeXMvZnMvdW5pb25mcy91bmlvbl92ZnNvcHMuYwotLS0g
 L3Vzci9zcmMub3JpZy9zeXMvZnMvdW5pb25mcy91bmlvbl92ZnNvcHMuYwkyMDEyLTA0LTA4
 IDE0OjAxOjIzLjAwMDAwMDAwMCArMDkwMAorKysgL3Vzci9zcmMvc3lzL2ZzL3VuaW9uZnMv
 dW5pb25fdmZzb3BzLmMJMjAxMi0wNC0wOSAxMTozMjoyOS4wMDAwMDAwMDAgKzA5MDAKQEAg
 LTE2NSw3ICsxNjUsNyBAQAogCQl1aWQgPSB2YS52YV91aWQ7CiAJCWdpZCA9IHZhLnZhX2dp
 ZDsKIAl9Ci0JVk9QX1VOTE9DSyhtcC0+bW50X3Zub2RlY292ZXJlZCwgMCk7CisJVk9QX1VO
 TE9DSyhtcC0+bW50X3Zub2RlY292ZXJlZCwgTEtfUkVMRUFTRSk7CiAJaWYgKGVycm9yKQog
 CQlyZXR1cm4gKGVycm9yKTsKIApAQCAtMjUwLDcgKzI1MCw3IEBACiAJICogU2F2ZSByZWZl
 cmVuY2UKIAkgKi8KIAlpZiAoYmVsb3cpIHsKLQkJVk9QX1VOTE9DSyh1cHBlcnJvb3R2cCwg
 MCk7CisJCVZPUF9VTkxPQ0sodXBwZXJyb290dnAsIExLX1JFTEVBU0UpOwogCQl2bl9sb2Nr
 KGxvd2Vycm9vdHZwLCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSk7CiAJCXVtcC0+dW1fbG93
 ZXJ2cCA9IHVwcGVycm9vdHZwOwogCQl1bXAtPnVtX3VwcGVydnAgPSBsb3dlcnJvb3R2cDsK
 QEAgLTI4MSw3ICsyODEsNyBAQAogCS8qCiAJICogVW5sb2NrIHRoZSBub2RlCiAJICovCi0J
 Vk9QX1VOTE9DSyh1bXAtPnVtX3VwcGVydnAsIDApOworCVZPUF9VTkxPQ0sodW1wLT51bV91
 cHBlcnZwLCBMS19SRUxFQVNFKTsKIAogCS8qCiAJICogR2V0IHRoZSB1bmlvbmZzIHJvb3Qg
 dm5vZGUuCmRpZmYgLXVyQk4gL3Vzci9zcmMub3JpZy9zeXMvZnMvdW5pb25mcy91bmlvbl92
 bm9wcy5jIC91c3Ivc3JjL3N5cy9mcy91bmlvbmZzL3VuaW9uX3Zub3BzLmMKLS0tIC91c3Iv
 c3JjLm9yaWcvc3lzL2ZzL3VuaW9uZnMvdW5pb25fdm5vcHMuYwkyMDEyLTA0LTA4IDE0OjAx
 OjIzLjAwMDAwMDAwMCArMDkwMAorKysgL3Vzci9zcmMvc3lzL2ZzL3VuaW9uZnMvdW5pb25f
 dm5vcHMuYwkyMDEyLTA0LTA5IDExOjMyOjI5LjAwMDAwMDAwMCArMDkwMApAQCAtNzUsMjEg
 Kzc1LDYgQEAKIAlLQVNTRVJUKCgodnApLT52X29wID09ICZ1bmlvbmZzX3Zub2Rlb3BzKSwg
 XAogCSAgICAoInVuaW9uZnM6IGl0IGlzIG5vdCB1bmlvbmZzLXZub2RlIikpCiAKLS8qIGxv
 Y2ttZ3IgbG9jayA8LT4gcmV2ZXJzZSB0YWJsZSAqLwotc3RydWN0IGxrX2xyX3RhYmxlIHsK
 LQlpbnQJbG9jazsKLQlpbnQJcmV2bG9jazsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbGtfbHJf
 dGFibGUgdW5fbGx0W10gPSB7Ci0Je0xLX1NIQVJFRCwgTEtfUkVMRUFTRX0sCi0Je0xLX0VY
 Q0xVU0lWRSwgTEtfUkVMRUFTRX0sCi0Je0xLX1VQR1JBREUsIExLX0RPV05HUkFERX0sCi0J
 e0xLX0RPV05HUkFERSwgTEtfVVBHUkFERX0sCi0JezAsIDB9Ci19OwotCi0KIHN0YXRpYyBp
 bnQKIHVuaW9uZnNfbG9va3VwKHN0cnVjdCB2b3BfY2FjaGVkbG9va3VwX2FyZ3MgKmFwKQog
 ewpAQCAtMTQxLDcgKzEyNiw3IEBACiAJCWlmICh1ZHZwICE9IE5VTExWUCkgewogCQkJZHRt
 cHZwID0gdWR2cDsKIAkJCWlmIChsZHZwICE9IE5VTExWUCkKLQkJCQlWT1BfVU5MT0NLKGxk
 dnAsIDApOworCQkJCVZPUF9VTkxPQ0sobGR2cCwgTEtfUkVMRUFTRSk7CiAJCX0KIAkJZWxz
 ZQogCQkJZHRtcHZwID0gbGR2cDsKQEAgLTE0OSw3ICsxMzQsNyBAQAogCQllcnJvciA9IFZP
 UF9MT09LVVAoZHRtcHZwLCAmdnAsIGNucCk7CiAKIAkJaWYgKGR0bXB2cCA9PSB1ZHZwICYm
 IGxkdnAgIT0gTlVMTFZQKSB7Ci0JCQlWT1BfVU5MT0NLKHVkdnAsIDApOworCQkJVk9QX1VO
 TE9DSyh1ZHZwLCBMS19SRUxFQVNFKTsKIAkJCXZuX2xvY2soZHZwLCBMS19FWENMVVNJVkUg
 fCBMS19SRVRSWSk7CiAJCX0KIApAQCAtMTYxLDEwICsxNDYsMTAgQEAKIAkJCSAqLwogCQkJ
 aWYgKG5hbWVpb3AgPT0gREVMRVRFICB8fCBuYW1laW9wID09IFJFTkFNRSB8fAogCQkJICAg
 IChjbnAtPmNuX2xrZmxhZ3MgJiBMS19UWVBFX01BU0spKQotCQkJCVZPUF9VTkxPQ0sodnAs
 IDApOworCQkJCVZPUF9VTkxPQ0sodnAsIExLX1JFTEVBU0UpOwogCQkJdnJlbGUodnApOwog
 Ci0JCQlWT1BfVU5MT0NLKGR2cCwgMCk7CisJCQlWT1BfVU5MT0NLKGR2cCwgTEtfUkVMRUFT
 RSk7CiAJCQkqKGFwLT5hX3ZwcCkgPSBkdW5wLT51bl9kdnA7CiAJCQl2cmVmKGR1bnAtPnVu
 X2R2cCk7CiAKQEAgLTIwMiw3ICsxODcsNyBAQAogCQkJfQogCQkJaWYgKG5hbWVpb3AgPT0g
 REVMRVRFIHx8IG5hbWVpb3AgPT0gUkVOQU1FIHx8CiAJCQkgICAgKGNucC0+Y25fbGtmbGFn
 cyAmIExLX1RZUEVfTUFTSykpCi0JCQkJVk9QX1VOTE9DSyh1dnAsIDApOworCQkJCVZPUF9V
 TkxPQ0sodXZwLCBMS19SRUxFQVNFKTsKIAkJfQogCiAJCS8qIGNoZWNrIHdoaXRlb3V0ICov
 CkBAIC0yNDYsNyArMjMxLDcgQEAKIAkJCQlyZXR1cm4gKGxlcnJvcik7CiAJCQl9CiAJCQlp
 ZiAoY25wLT5jbl9sa2ZsYWdzICYgTEtfVFlQRV9NQVNLKQotCQkJCVZPUF9VTkxPQ0sobHZw
 LCAwKTsKKwkJCQlWT1BfVU5MT0NLKGx2cCwgTEtfUkVMRUFTRSk7CiAJCX0KIAl9CiAKQEAg
 LTI4MSw3ICsyNjYsNyBAQAogCQkJZ290byB1bmlvbmZzX2xvb2t1cF9vdXQ7CiAKIAkJaWYg
 KExLX1NIQVJFRCA9PSAoY25wLT5jbl9sa2ZsYWdzICYgTEtfVFlQRV9NQVNLKSkKLQkJCVZP
 UF9VTkxPQ0sodnAsIDApOworCQkJVk9QX1VOTE9DSyh2cCwgTEtfUkVMRUFTRSk7CiAJCWlm
 IChMS19FWENMVVNJVkUgIT0gVk9QX0lTTE9DS0VEKHZwKSkgewogCQkJdm5fbG9jayh2cCwg
 TEtfRVhDTFVTSVZFIHwgTEtfUkVUUlkpOwogCQkJbG9ja2ZsYWcgPSAxOwpAQCAtMjg5LDcg
 KzI3NCw3IEBACiAJCWVycm9yID0gdW5pb25mc19ta3NoYWRvd2RpcihNT1VOVFRPVU5JT05G
 U01PVU5UKGR2cC0+dl9tb3VudCksCiAJCSAgICB1ZHZwLCBWVE9VTklPTkZTKHZwKSwgY25w
 LCB0ZCk7CiAJCWlmIChsb2NrZmxhZyAhPSAwKQotCQkJVk9QX1VOTE9DSyh2cCwgMCk7CisJ
 CQlWT1BfVU5MT0NLKHZwLCBMS19SRUxFQVNFKTsKIAkJaWYgKGVycm9yICE9IDApIHsKIAkJ
 CVVOSU9ORlNERUJVRygidW5pb25mc19sb29rdXA6IFVuYWJsZSB0byBjcmVhdGUgc2hhZG93
 IGRpci4iKTsKIAkJCWlmICgoY25wLT5jbl9sa2ZsYWdzICYgTEtfVFlQRV9NQVNLKSA9PSBM
 S19FWENMVVNJVkUpCkBAIC0zODYsNyArMzcxLDcgQEAKIAkJaWYgKHZwLT52X3R5cGUgPT0g
 VlNPQ0spCiAJCQkqKGFwLT5hX3ZwcCkgPSB2cDsKIAkJZWxzZSB7Ci0JCQlWT1BfVU5MT0NL
 KHZwLCAwKTsKKwkJCVZPUF9VTkxPQ0sodnAsIExLX1JFTEVBU0UpOwogCQkJZXJyb3IgPSB1
 bmlvbmZzX25vZGVnZXQoYXAtPmFfZHZwLT52X21vdW50LCB2cCwgTlVMTFZQLAogCQkJICAg
 IGFwLT5hX2R2cCwgYXAtPmFfdnBwLCBjbnAsIGN1cnRocmVhZCk7CiAJCQl2cmVsZSh2cCk7
 CkBAIC00NjAsNyArNDQ1LDcgQEAKIAkJaWYgKHZwLT52X3R5cGUgPT0gVlNPQ0spCiAJCQkq
 KGFwLT5hX3ZwcCkgPSB2cDsKIAkJZWxzZSB7Ci0JCQlWT1BfVU5MT0NLKHZwLCAwKTsKKwkJ
 CVZPUF9VTkxPQ0sodnAsIExLX1JFTEVBU0UpOwogCQkJZXJyb3IgPSB1bmlvbmZzX25vZGVn
 ZXQoYXAtPmFfZHZwLT52X21vdW50LCB2cCwgTlVMTFZQLAogCQkJICAgIGFwLT5hX2R2cCwg
 YXAtPmFfdnBwLCBjbnAsIGN1cnRocmVhZCk7CiAJCQl2cmVsZSh2cCk7CkBAIC02MTksNyAr
 NjA0LDcgQEAKIAl1bmlvbmZzX3RyeXJlbV9ub2RlX3N0YXR1cyh1bnAsIHVuc3ApOwogCiAJ
 aWYgKGxvY2tlZCAhPSAwKQotCQlWT1BfVU5MT0NLKGFwLT5hX3ZwLCAwKTsKKwkJVk9QX1VO
 TE9DSyhhcC0+YV92cCwgTEtfUkVMRUFTRSk7CiAKIAlVTklPTkZTX0lOVEVSTkFMX0RFQlVH
 KCJ1bmlvbmZzX2Nsb3NlOiBsZWF2ZSAoJWQpXG4iLCBlcnJvcik7CiAKQEAgLTkxNCw3ICs4
 OTksNyBAQAogCXVuaW9uZnNfZ2V0X25vZGVfc3RhdHVzKHVucCwgYXAtPmFfdGQsICZ1bnNw
 KTsKIAlvdnAgPSAodW5zcC0+dW5zX3VwcGVyX29wZW5jbnQgPyB1bnAtPnVuX3VwcGVydnAg
 OiB1bnAtPnVuX2xvd2VydnApOwogCXVuaW9uZnNfdHJ5cmVtX25vZGVfc3RhdHVzKHVucCwg
 dW5zcCk7Ci0JVk9QX1VOTE9DSyhhcC0+YV92cCwgMCk7CisJVk9QX1VOTE9DSyhhcC0+YV92
 cCwgTEtfUkVMRUFTRSk7CiAKIAlpZiAob3ZwID09IE5VTExWUCkKIAkJcmV0dXJuIChFQkFE
 Rik7CkBAIC05NDEsNyArOTI2LDcgQEAKIAl1bmlvbmZzX2dldF9ub2RlX3N0YXR1cyh1bnAs
 IGFwLT5hX3RkLCAmdW5zcCk7CiAJb3ZwID0gKHVuc3AtPnVuc191cHBlcl9vcGVuY250ID8g
 dW5wLT51bl91cHBlcnZwIDogdW5wLT51bl9sb3dlcnZwKTsKIAl1bmlvbmZzX3RyeXJlbV9u
 b2RlX3N0YXR1cyh1bnAsIHVuc3ApOwotCVZPUF9VTkxPQ0soYXAtPmFfdnAsIDApOworCVZP
 UF9VTkxPQ0soYXAtPmFfdnAsIExLX1JFTEVBU0UpOwogCiAJaWYgKG92cCA9PSBOVUxMVlAp
 CiAJCXJldHVybiAoRUJBREYpOwpAQCAtMTAwMSw3ICs5ODYsNyBAQAogCQl1bXAgPSBOVUxM
 OwogCQl2cCA9IHV2cCA9IGx2cCA9IE5VTExWUDsKIAkJLyogc2VhcmNoIHZub2RlICovCi0J
 CVZPUF9VTkxPQ0soYXAtPmFfdnAsIDApOworCQlWT1BfVU5MT0NLKGFwLT5hX3ZwLCBMS19S
 RUxFQVNFKTsKIAkJZXJyb3IgPSB1bmlvbmZzX3JlbG9va3VwKHVkdnAsICZ2cCwgY25wLCAm
 Y24sIHRkLAogCQkgICAgY25wLT5jbl9uYW1lcHRyLCBzdHJsZW4oY25wLT5jbl9uYW1lcHRy
 KSwgREVMRVRFKTsKIAkJaWYgKGVycm9yICE9IDAgJiYgZXJyb3IgIT0gRU5PRU5UKSB7CkBA
 IC0xMjA0LDcgKzExODksNyBAQAogCQkJaWYgKChlcnJvciA9IHZuX2xvY2soZnZwLCBMS19F
 WENMVVNJVkUpKSAhPSAwKQogCQkJCWdvdG8gdW5pb25mc19yZW5hbWVfYWJvcnQ7CiAJCQll
 cnJvciA9IHVuaW9uZnNfY29weWZpbGUodW5wLCAxLCBmY25wLT5jbl9jcmVkLCB0ZCk7Ci0J
 CQlWT1BfVU5MT0NLKGZ2cCwgMCk7CisJCQlWT1BfVU5MT0NLKGZ2cCwgTEtfUkVMRUFTRSk7
 CiAJCQlpZiAoZXJyb3IgIT0gMCkKIAkJCQlnb3RvIHVuaW9uZnNfcmVuYW1lX2Fib3J0Owog
 CQkJYnJlYWs7CkBAIC0xMjEyLDcgKzExOTcsNyBAQAogCQkJaWYgKChlcnJvciA9IHZuX2xv
 Y2soZnZwLCBMS19FWENMVVNJVkUpKSAhPSAwKQogCQkJCWdvdG8gdW5pb25mc19yZW5hbWVf
 YWJvcnQ7CiAJCQllcnJvciA9IHVuaW9uZnNfbWtzaGFkb3dkaXIodW1wLCByZmR2cCwgdW5w
 LCBmY25wLCB0ZCk7Ci0JCQlWT1BfVU5MT0NLKGZ2cCwgMCk7CisJCQlWT1BfVU5MT0NLKGZ2
 cCwgTEtfUkVMRUFTRSk7CiAJCQlpZiAoZXJyb3IgIT0gMCkKIAkJCQlnb3RvIHVuaW9uZnNf
 cmVuYW1lX2Fib3J0OwogCQkJYnJlYWs7CkBAIC0xMjY5LDEzICsxMjU0LDEzIEBACiAJCWlm
 ICgoZXJyb3IgPSB2bl9sb2NrKGZkdnAsIExLX0VYQ0xVU0lWRSkpICE9IDApCiAJCQlnb3Rv
 IHVuaW9uZnNfcmVuYW1lX2Fib3J0OwogCQllcnJvciA9IHVuaW9uZnNfcmVsb29rdXBfZm9y
 X2RlbGV0ZShmZHZwLCBmY25wLCB0ZCk7Ci0JCVZPUF9VTkxPQ0soZmR2cCwgMCk7CisJCVZP
 UF9VTkxPQ0soZmR2cCwgTEtfUkVMRUFTRSk7CiAJCWlmIChlcnJvciAhPSAwKQogCQkJZ290
 byB1bmlvbmZzX3JlbmFtZV9hYm9ydDsKIAogCQkvKiBMb2NrZSBvZiB0dnAgaXMgY2FuY2Vs
 ZWQgaW4gb3JkZXIgdG8gYXZvaWQgcmVjdXJzaXZlIGxvY2suICovCiAJCWlmICh0dnAgIT0g
 TlVMTFZQICYmIHR2cCAhPSB0ZHZwKQotCQkJVk9QX1VOTE9DSyh0dnAsIDApOworCQkJVk9Q
 X1VOTE9DSyh0dnAsIExLX1JFTEVBU0UpOwogCQllcnJvciA9IHVuaW9uZnNfcmVsb29rdXBf
 Zm9yX3JlbmFtZSh0ZHZwLCB0Y25wLCB0ZCk7CiAJCWlmICh0dnAgIT0gTlVMTFZQICYmIHR2
 cCAhPSB0ZHZwKQogCQkJdm5fbG9jayh0dnAsIExLX0VYQ0xVU0lWRSB8IExLX1JFVFJZKTsK
 QEAgLTEyOTMsMTEgKzEyNzgsMTEgQEAKIAl9CiAKIAlpZiAobHRkdnAgIT0gTlVMTFZQKQot
 CQlWT1BfVU5MT0NLKGx0ZHZwLCAwKTsKKwkJVk9QX1VOTE9DSyhsdGR2cCwgTEtfUkVMRUFT
 RSk7CiAJaWYgKHRkdnAgIT0gcnRkdnApCiAJCXZyZWxlKHRkdnApOwogCWlmIChsdHZwICE9
 IE5VTExWUCkKLQkJVk9QX1VOTE9DSyhsdHZwLCAwKTsKKwkJVk9QX1VOTE9DSyhsdHZwLCBM
 S19SRUxFQVNFKTsKIAlpZiAodHZwICE9IHJ0dnAgJiYgdHZwICE9IE5VTExWUCkgewogCQlp
 ZiAocnR2cCA9PSBOVUxMVlApCiAJCQl2cHV0KHR2cCk7CkBAIC0xMzcxLDcgKzEzNTYsNyBA
 QAogCQl9CiAKIAkJaWYgKChlcnJvciA9IFZPUF9NS0RJUih1ZHZwLCAmdXZwLCBjbnAsIGFw
 LT5hX3ZhcCkpID09IDApIHsKLQkJCVZPUF9VTkxPQ0sodXZwLCAwKTsKKwkJCVZPUF9VTkxP
 Q0sodXZwLCBMS19SRUxFQVNFKTsKIAkJCWNucC0+Y25fbGtmbGFncyA9IExLX0VYQ0xVU0lW
 RTsKIAkJCWVycm9yID0gdW5pb25mc19ub2RlZ2V0KGFwLT5hX2R2cC0+dl9tb3VudCwgdXZw
 LCBOVUxMVlAsCiAJCQkgICAgYXAtPmFfZHZwLCBhcC0+YV92cHAsIGNucCwgdGQpOwpAQCAt
 MTQ2Nyw3ICsxNDUyLDcgQEAKIAlpZiAodWR2cCAhPSBOVUxMVlApIHsKIAkJZXJyb3IgPSBW
 T1BfU1lNTElOSyh1ZHZwLCAmdXZwLCBjbnAsIGFwLT5hX3ZhcCwgYXAtPmFfdGFyZ2V0KTsK
 IAkJaWYgKGVycm9yID09IDApIHsKLQkJCVZPUF9VTkxPQ0sodXZwLCAwKTsKKwkJCVZPUF9V
 TkxPQ0sodXZwLCBMS19SRUxFQVNFKTsKIAkJCWNucC0+Y25fbGtmbGFncyA9IExLX0VYQ0xV
 U0lWRTsKIAkJCWVycm9yID0gdW5pb25mc19ub2RlZ2V0KGFwLT5hX2R2cC0+dl9tb3VudCwg
 dXZwLCBOVUxMVlAsCiAJCQkgICAgYXAtPmFfZHZwLCBhcC0+YV92cHAsIGNucCwgdGQpOwpA
 QCAtMTQ5MCw2ICsxNDc1LDcgQEAKIAlzdHJ1Y3QgdW5pb25mc19ub2RlICp1bnA7CiAJc3Ry
 dWN0IHVuaW9uZnNfbm9kZV9zdGF0dXMgKnVuc3A7CiAJc3RydWN0IHVpbyAgICAgKnVpbzsK
 KwlzdHJ1Y3Qgdm5vZGUgICAqdnA7CiAJc3RydWN0IHZub2RlICAgKnV2cDsKIAlzdHJ1Y3Qg
 dm5vZGUgICAqbHZwOwogCXN0cnVjdCB0aHJlYWQgICp0ZDsKQEAgLTE1MDUsNDEgKzE0OTEs
 NDkgQEAKIAllcnJvciA9IDA7CiAJZW9mZmxhZyA9IDA7CiAJbG9ja2VkID0gMDsKLQl1bnAg
 PSBWVE9VTklPTkZTKGFwLT5hX3ZwKTsKIAl1aW8gPSBhcC0+YV91aW87Ci0JdXZwID0gdW5w
 LT51bl91cHBlcnZwOwotCWx2cCA9IHVucC0+dW5fbG93ZXJ2cDsKKwl1dnAgPSBOVUxMVlA7
 CisJbHZwID0gTlVMTFZQOwogCXRkID0gdWlvLT51aW9fdGQ7CiAJbmNvb2tpZXNfYmsgPSAw
 OwogCWNvb2tpZXNfYmsgPSBOVUxMOwogCi0JaWYgKGFwLT5hX3ZwLT52X3R5cGUgIT0gVkRJ
 UikKKwl2cCA9IGFwLT5hX3ZwOworCWlmICh2cC0+dl90eXBlICE9IFZESVIpCiAJCXJldHVy
 biAoRU5PVERJUik7CiAKLQkvKiBjaGVjayBvcGFxdWUgKi8KLQlpZiAodXZwICE9IE5VTExW
 UCAmJiBsdnAgIT0gTlVMTFZQKSB7Ci0JCWlmICgoZXJyb3IgPSBWT1BfR0VUQVRUUih1dnAs
 ICZ2YSwgYXAtPmFfY3JlZCkpICE9IDApCi0JCQlnb3RvIHVuaW9uZnNfcmVhZGRpcl9leGl0
 OwotCQlpZiAodmEudmFfZmxhZ3MgJiBPUEFRVUUpCi0JCQlsdnAgPSBOVUxMVlA7Ci0JfQot
 CiAJLyogY2hlY2sgdGhlIG9wZW4gY291bnQuIHVuaW9uZnMgbmVlZHMgdG8gb3BlbiBiZWZv
 cmUgcmVhZGRpci4gKi8KLQlpZiAoVk9QX0lTTE9DS0VEKGFwLT5hX3ZwKSAhPSBMS19FWENM
 VVNJVkUpIHsKLQkJdm5fbG9jayhhcC0+YV92cCwgTEtfVVBHUkFERSB8IExLX1JFVFJZKTsK
 KwlpZiAoVk9QX0lTTE9DS0VEKHZwKSAhPSBMS19FWENMVVNJVkUpIHsKKwkJaWYgKHZuX2xv
 Y2sodnAsIExLX1VQR1JBREUpICE9IDApCisJCQl2bl9sb2NrKHZwLCBMS19FWENMVVNJVkUg
 fCBMS19SRVRSWSk7CiAJCWxvY2tlZCA9IDE7CiAJfQotCXVuaW9uZnNfZ2V0X25vZGVfc3Rh
 dHVzKHVucCwgdGQsICZ1bnNwKTsKLQlpZiAoKHV2cCAhPSBOVUxMVlAgJiYgdW5zcC0+dW5z
 X3VwcGVyX29wZW5jbnQgPD0gMCkgfHwKLQkgICAgKGx2cCAhPSBOVUxMVlAgJiYgdW5zcC0+
 dW5zX2xvd2VyX29wZW5jbnQgPD0gMCkpIHsKLQkJdW5pb25mc190cnlyZW1fbm9kZV9zdGF0
 dXModW5wLCB1bnNwKTsKKwl1bnAgPSBWVE9VTklPTkZTKHZwKTsKKwlpZiAodW5wID09IE5V
 TEwpCiAJCWVycm9yID0gRUJBREY7CisJZWxzZSB7CisJCXV2cCA9IHVucC0+dW5fdXBwZXJ2
 cDsKKwkJbHZwID0gdW5wLT51bl9sb3dlcnZwOworCQl1bmlvbmZzX2dldF9ub2RlX3N0YXR1
 cyh1bnAsIHRkLCAmdW5zcCk7CisJCWlmICgodXZwICE9IE5VTExWUCAmJiB1bnNwLT51bnNf
 dXBwZXJfb3BlbmNudCA8PSAwKSB8fAorCQkJKGx2cCAhPSBOVUxMVlAgJiYgdW5zcC0+dW5z
 X2xvd2VyX29wZW5jbnQgPD0gMCkpIHsKKwkJCXVuaW9uZnNfdHJ5cmVtX25vZGVfc3RhdHVz
 KHVucCwgdW5zcCk7CisJCQllcnJvciA9IEVCQURGOworCQl9CiAJfQotCWlmIChsb2NrZWQg
 PT0gMSkKLQkJdm5fbG9jayhhcC0+YV92cCwgTEtfRE9XTkdSQURFIHwgTEtfUkVUUlkpOwor
 CWlmIChsb2NrZWQpCisJCXZuX2xvY2sodnAsIExLX0RPV05HUkFERSB8IExLX1JFVFJZKTsK
 IAlpZiAoZXJyb3IgIT0gMCkKIAkJZ290byB1bmlvbmZzX3JlYWRkaXJfZXhpdDsKIAorCS8q
 IGNoZWNrIG9wYXF1ZSAqLworCWlmICh1dnAgIT0gTlVMTFZQICYmIGx2cCAhPSBOVUxMVlAp
 IHsKKwkJaWYgKChlcnJvciA9IFZPUF9HRVRBVFRSKHV2cCwgJnZhLCBhcC0+YV9jcmVkKSkg
 IT0gMCkKKwkJCWdvdG8gdW5pb25mc19yZWFkZGlyX2V4aXQ7CisJCWlmICh2YS52YV9mbGFn
 cyAmIE9QQVFVRSkKKwkJCWx2cCA9IE5VTExWUDsKKwl9CisKIAkvKiB1cHBlciBvbmx5ICov
 CiAJaWYgKHV2cCAhPSBOVUxMVlAgJiYgbHZwID09IE5VTExWUCkgewogCQllcnJvciA9IFZP
 UF9SRUFERElSKHV2cCwgdWlvLCBhcC0+YV9jcmVkLCBhcC0+YV9lb2ZmbGFnLApAQCAtMTc0
 MywxOCArMTczNyw2NiBAQAogfQogCiBzdGF0aWMgaW50Ci11bmlvbmZzX2dldF9sbHRfcmV2
 bG9jayhpbnQgZmxhZ3MpCit1bmlvbmZzX2lzbG9ja2VkKHN0cnVjdCB2b3BfaXNsb2NrZWRf
 YXJncyAqYXApCiB7Ci0JaW50IGNvdW50OworCXN0cnVjdCB1bmlvbmZzX25vZGUgKnVucDsK
 IAotCWZsYWdzICY9IExLX1RZUEVfTUFTSzsKLQlmb3IgKGNvdW50ID0gMDsgdW5fbGx0W2Nv
 dW50XS5sb2NrICE9IDA7IGNvdW50KyspIHsKLQkJaWYgKGZsYWdzID09IHVuX2xsdFtjb3Vu
 dF0ubG9jaykgewotCQkJcmV0dXJuIHVuX2xsdFtjb3VudF0ucmV2bG9jazsKLQkJfQorCUtB
 U1NFUlRfVU5JT05GU19WTk9ERShhcC0+YV92cCk7CisKKwl1bnAgPSBWVE9VTklPTkZTKGFw
 LT5hX3ZwKTsKKwlpZiAodW5wID09IE5VTEwpCisJCXJldHVybiAodm9wX3N0ZGlzbG9ja2Vk
 KGFwKSk7CisKKwlpZiAodW5wLT51bl91cHBlcnZwICE9IE5VTExWUCkKKwkJcmV0dXJuIChW
 T1BfSVNMT0NLRUQodW5wLT51bl91cHBlcnZwKSk7CisJaWYgKHVucC0+dW5fbG93ZXJ2cCAh
 PSBOVUxMVlApCisJCXJldHVybiAoVk9QX0lTTE9DS0VEKHVucC0+dW5fbG93ZXJ2cCkpOwor
 CXJldHVybiAodm9wX3N0ZGlzbG9ja2VkKGFwKSk7Cit9CisKK3N0YXRpYyBpbnQKK3VuaW9u
 ZnNfZ2V0X2xsdF9yZXZsb2NrKHN0cnVjdCB2bm9kZSAqdnAsIGludCBmbGFncykKK3sKKwlp
 bnQgcmV2bG9jazsKKworCXJldmxvY2sgPSAwOworCisJc3dpdGNoIChmbGFncyAmIExLX1RZ
 UEVfTUFTSykgeworCWNhc2UgTEtfU0hBUkVEOgorCQlpZiAoVk9QX0lTTE9DS0VEKHZwKSA9
 PSBMS19FWENMVVNJVkUpCisJCQlyZXZsb2NrID0gTEtfVVBHUkFERTsKKwkJZWxzZQorCQkJ
 cmV2bG9jayA9IExLX1JFTEVBU0U7CisJCWJyZWFrOworCWNhc2UgTEtfRVhDTFVTSVZFOgor
 CWNhc2UgTEtfVVBHUkFERToKKwkJcmV2bG9jayA9IExLX1JFTEVBU0U7CisJCWJyZWFrOwor
 CWNhc2UgTEtfRE9XTkdSQURFOgorCQlyZXZsb2NrID0gTEtfVVBHUkFERTsKKwkJYnJlYWs7
 CisJZGVmYXVsdDoKKwkJYnJlYWs7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJuIChyZXZs
 b2NrKTsKK30KKworLyoKKyAqIFRoZSBzdGF0ZSBvZiBhbiBhY3F1aXJlZCBsb2NrIGlzIGFk
 anVzdGVkIHNpbWlsYXJseSB0bworICogdGhlIHRpbWUgb2YgZXJyb3IgZ2VuZXJhdGluZy4g
 CisgKiBmbGFnczogTEtfUkVMRUFTRSBvciBMS19VUEdSQURFCisgKi8KK3N0YXRpYyB2b2lk
 Cit1bmlvbmZzX3JldmxvY2soc3RydWN0IHZub2RlICp2cCwgaW50IGZsYWdzKQoreworCWlm
 IChmbGFncyAmIExLX1JFTEVBU0UpCisJCVZPUF9VTkxPQ0sodnAsIGZsYWdzKTsKKwllbHNl
 IHsKKwkJLyogVVBHUkFERSAqLworCQlpZiAodm5fbG9jayh2cCwgZmxhZ3MpICE9IDApCisJ
 CQl2bl9sb2NrKHZwLCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSk7CisJfQogfQogCiBzdGF0
 aWMgaW50CkBAIC0xNzYzLDYgKzE4MDUsNyBAQAogCWludAkJZXJyb3I7CiAJaW50CQlmbGFn
 czsKIAlpbnQJCXJldmxvY2s7CisJaW50CQlpbnRlcmxvY2s7CiAJaW50CQl1aG9sZDsKIAlz
 dHJ1Y3QgbW91bnQgICAqbXA7CiAJc3RydWN0IHVuaW9uZnNfbW91bnQgKnVtcDsKQEAgLTE3
 NzQsMTUgKzE4MTcsMTMgQEAKIAlLQVNTRVJUX1VOSU9ORlNfVk5PREUoYXAtPmFfdnApOwog
 CiAJZXJyb3IgPSAwOworCWludGVybG9jayA9IDE7CiAJdWhvbGQgPSAwOwogCWZsYWdzID0g
 YXAtPmFfZmxhZ3M7CiAJdnAgPSBhcC0+YV92cDsKIAogCWlmIChMS19SRUxFQVNFID09IChm
 bGFncyAmIExLX1RZUEVfTUFTSykgfHwgIShmbGFncyAmIExLX1RZUEVfTUFTSykpCi0JCXJl
 dHVybiAoVk9QX1VOTE9DSyh2cCwgZmxhZ3MpKTsKLQotCWlmICgocmV2bG9jayA9IHVuaW9u
 ZnNfZ2V0X2xsdF9yZXZsb2NrKGZsYWdzKSkgPT0gMCkKLQkJcGFuaWMoInVua25vd24gbG9j
 ayB0eXBlOiAweCV4IiwgZmxhZ3MgJiBMS19UWVBFX01BU0spOworCQlyZXR1cm4gKFZPUF9V
 TkxPQ0sodnAsIGZsYWdzIHwgTEtfUkVMRUFTRSkpOwogCiAJaWYgKChmbGFncyAmIExLX0lO
 VEVSTE9DSykgPT0gMCkKIAkJVklfTE9DSyh2cCk7CkBAIC0xNzk4LDYgKzE4MzksOSBAQAog
 CWx2cCA9IHVucC0+dW5fbG93ZXJ2cDsKIAl1dnAgPSB1bnAtPnVuX3VwcGVydnA7CiAKKwlp
 ZiAoKHJldmxvY2sgPSB1bmlvbmZzX2dldF9sbHRfcmV2bG9jayh2cCwgZmxhZ3MpKSA9PSAw
 KQorCQlwYW5pYygidW5rbm93biBsb2NrIHR5cGU6IDB4JXgiLCBmbGFncyAmIExLX1RZUEVf
 TUFTSyk7CisKIAlpZiAoKG1wLT5tbnRfa2Vybl9mbGFnICYgTU5US19NUFNBRkUpICE9IDAg
 JiYKIAkgICAgKHZwLT52X2lmbGFnICYgVklfT1dFSU5BQ1QpICE9IDApCiAJCWZsYWdzIHw9
 IExLX05PV0FJVDsKQEAgLTE4MTEsNiArMTg1NSwyMyBAQAogCQlmbGFncyB8PSBMS19DQU5S
 RUNVUlNFOwogCiAJaWYgKGx2cCAhPSBOVUxMVlApIHsKKwkJaWYgKHV2cCAhPSBOVUxMVlAg
 JiYgZmxhZ3MgJiBMS19VUEdSQURFKSB7CisJCQkvKiBTaGFyZSBMb2NrIGlzIG9uY2UgcmVs
 ZWFzZWQgYW5kIGEgZGVhZGxvY2sgaXMgYXZvaWRlZC4gICovCisJCQlWSV9MT0NLX0ZMQUdT
 KHV2cCwgTVRYX0RVUE9LKTsKKwkJCXZob2xkbCh1dnApOworCQkJdWhvbGQgPSAxOworCQkJ
 VklfVU5MT0NLKHZwKTsKKwkJCVZPUF9VTkxPQ0sodXZwLCBMS19SRUxFQVNFIHwgTEtfSU5U
 RVJMT0NLKTsKKwkJCVZJX0xPQ0sodnApOworCQkJdW5wID0gVlRPVU5JT05GUyh2cCk7CisJ
 CQlpZiAodW5wID09IE5VTEwpIHsKKwkJCQkvKiB2bm9kZSBpcyByZWxlYXNlZC4gKi8KKwkJ
 CQlWSV9VTkxPQ0sodnApOworCQkJCVZPUF9VTkxPQ0sobHZwLCBMS19SRUxFQVNFKTsKKwkJ
 CQl2ZHJvcCh1dnApOworCQkJCXJldHVybiAoRUJVU1kpOworCQkJfQorCQl9CiAJCVZJX0xP
 Q0tfRkxBR1MobHZwLCBNVFhfRFVQT0spOwogCQlmbGFncyB8PSBMS19JTlRFUkxPQ0s7CiAJ
 CXZob2xkbChsdnApOwpAQCAtMTgyMywxOSArMTg4NCwyOCBAQAogCQlWSV9MT0NLKHZwKTsK
 IAkJdW5wID0gVlRPVU5JT05GUyh2cCk7CiAJCWlmICh1bnAgPT0gTlVMTCkgeworCQkJLyog
 dm5vZGUgaXMgcmVsZWFzZWQuICovCiAJCQlWSV9VTkxPQ0sodnApOwogCQkJaWYgKGVycm9y
 ID09IDApCi0JCQkJVk9QX1VOTE9DSyhsdnAsIDApOworCQkJCVZPUF9VTkxPQ0sobHZwLCBM
 S19SRUxFQVNFKTsKIAkJCXZkcm9wKGx2cCk7CisJCQlpZiAodWhvbGQgIT0gMCkKKwkJCQl2
 ZHJvcCh1dnApOwogCQkJcmV0dXJuICh2b3Bfc3RkbG9jayhhcCkpOwogCQl9CiAJfQogCiAJ
 aWYgKGVycm9yID09IDAgJiYgdXZwICE9IE5VTExWUCkgeworCQlpZiAodWhvbGQgJiYgZmxh
 Z3MgJiBMS19VUEdSQURFKSB7CisJCQlmbGFncyAmPSB+TEtfVFlQRV9NQVNLOworCQkJZmxh
 Z3MgfD0gTEtfRVhDTFVTSVZFOworCQl9CiAJCVZJX0xPQ0tfRkxBR1ModXZwLCBNVFhfRFVQ
 T0spOwogCQlmbGFncyB8PSBMS19JTlRFUkxPQ0s7Ci0JCXZob2xkbCh1dnApOwotCQl1aG9s
 ZCA9IDE7CisJCWlmICh1aG9sZCA9PSAwKSB7CisJCQl2aG9sZGwodXZwKTsKKwkJCXVob2xk
 ID0gMTsKKwkJfQogCiAJCVZJX1VOTE9DSyh2cCk7CiAJCWFwLT5hX2ZsYWdzICY9IH5MS19J
 TlRFUkxPQ0s7CkBAIC0xODQ1LDMwICsxOTE1LDI3IEBACiAJCVZJX0xPQ0sodnApOwogCQl1
 bnAgPSBWVE9VTklPTkZTKHZwKTsKIAkJaWYgKHVucCA9PSBOVUxMKSB7CisJCQkvKiB2bm9k
 ZSBpcyByZWxlYXNlZC4gKi8KIAkJCVZJX1VOTE9DSyh2cCk7Ci0JCQlpZiAoZXJyb3IgPT0g
 MCkgewotCQkJCVZPUF9VTkxPQ0sodXZwLCAwKTsKLQkJCQlpZiAobHZwICE9IE5VTExWUCkK
 LQkJCQkJVk9QX1VOTE9DSyhsdnAsIDApOwotCQkJfQotCQkJaWYgKGx2cCAhPSBOVUxMVlAp
 Ci0JCQkJdmRyb3AobHZwKTsKKwkJCWlmIChlcnJvciA9PSAwKQorCQkJCVZPUF9VTkxPQ0so
 dXZwLCBMS19SRUxFQVNFKTsKIAkJCXZkcm9wKHV2cCk7CisJCQlpZiAobHZwICE9IE5VTExW
 UCkgeworCQkJCVZPUF9VTkxPQ0sobHZwLCBMS19SRUxFQVNFKTsKKwkJCQl2ZHJvcChsdnAp
 OworCQkJfQogCQkJcmV0dXJuICh2b3Bfc3RkbG9jayhhcCkpOwogCQl9Ci0KIAkJaWYgKGVy
 cm9yICE9IDAgJiYgbHZwICE9IE5VTExWUCkgeworCQkJLyogcm9sbGJhY2sgKi8KIAkJCVZJ
 X1VOTE9DSyh2cCk7Ci0JCQlpZiAoKHJldmxvY2sgJiBMS19UWVBFX01BU0spID09IExLX1JF
 TEVBU0UpCi0JCQkJVk9QX1VOTE9DSyhsdnAsIHJldmxvY2spOwotCQkJZWxzZQotCQkJCXZu
 X2xvY2sobHZwLCByZXZsb2NrIHwgTEtfUkVUUlkpOwotCQkJZ290byB1bmlvbmZzX2xvY2tf
 YWJvcnQ7CisJCQl1bmlvbmZzX3JldmxvY2sobHZwLCByZXZsb2NrKTsKKwkJCWludGVybG9j
 ayA9IDA7CiAJCX0KIAl9CiAKLQlWSV9VTkxPQ0sodnApOwotdW5pb25mc19sb2NrX2Fib3J0
 OgorCWlmIChpbnRlcmxvY2spCisJCVZJX1VOTE9DSyh2cCk7CiAJaWYgKGx2cCAhPSBOVUxM
 VlApCiAJCXZkcm9wKGx2cCk7CiAJaWYgKHVob2xkICE9IDApCkBAIC0yMDEzLDcgKzIwODAs
 NyBAQAogCQkJdW5pb25mc190cnlyZW1fbm9kZV9zdGF0dXModW5wLCB1bnNwKTsKIAl9CiAK
 LQlWT1BfVU5MT0NLKHZwLCAwKTsKKwlWT1BfVU5MT0NLKHZwLCBMS19SRUxFQVNFKTsKIAog
 CWVycm9yID0gVk9QX0FEVkxPQ0sodXZwLCBhcC0+YV9pZCwgYXAtPmFfb3AsIGFwLT5hX2Zs
 LCBhcC0+YV9mbGFncyk7CiAKQEAgLTIwMjIsNyArMjA4OSw3IEBACiAJcmV0dXJuIGVycm9y
 OwogCiB1bmlvbmZzX2FkdmxvY2tfYWJvcnQ6Ci0JVk9QX1VOTE9DSyh2cCwgMCk7CisJVk9Q
 X1VOTE9DSyh2cCwgTEtfUkVMRUFTRSk7CiAKIAlVTklPTkZTX0lOVEVSTkFMX0RFQlVHKCJ1
 bmlvbmZzX2FkdmxvY2s6IGxlYXZlICglZClcbiIsIGVycm9yKTsKIApAQCAtMjE1MCw3ICsy
 MjE3LDggQEAKIAllcnJvciA9IFZPUF9PUEVORVhUQVRUUih0dnAsIGFwLT5hX2NyZWQsIGFw
 LT5hX3RkKTsKIAogCWlmIChlcnJvciA9PSAwKSB7Ci0JCXZuX2xvY2sodnAsIExLX1VQR1JB
 REUgfCBMS19SRVRSWSk7CisJCWlmICh2bl9sb2NrKHZwLCBMS19VUEdSQURFKSAhPSAwKQor
 CQkJdm5fbG9jayh2cCwgTEtfRVhDTFVTSVZFIHwgTEtfUkVUUlkpOwogCQlpZiAodHZwID09
 IHVucC0+dW5fdXBwZXJ2cCkKIAkJCXVucC0+dW5fZmxhZyB8PSBVTklPTkZTX09QRU5FWFRV
 OwogCQllbHNlCkBAIC0yMTg2LDcgKzIyNTQsOCBAQAogCWVycm9yID0gVk9QX0NMT1NFRVhU
 QVRUUih0dnAsIGFwLT5hX2NvbW1pdCwgYXAtPmFfY3JlZCwgYXAtPmFfdGQpOwogCiAJaWYg
 KGVycm9yID09IDApIHsKLQkJdm5fbG9jayh2cCwgTEtfVVBHUkFERSB8IExLX1JFVFJZKTsK
 KwkJaWYgKHZuX2xvY2sodnAsIExLX1VQR1JBREUpICE9IDApCisJCQl2bl9sb2NrKHZwLCBM
 S19FWENMVVNJVkUgfCBMS19SRVRSWSk7CiAJCWlmICh0dnAgPT0gdW5wLT51bl91cHBlcnZw
 KQogCQkJdW5wLT51bl9mbGFnICY9IH5VTklPTkZTX09QRU5FWFRVOwogCQllbHNlCkBAIC0y
 NDM1LDYgKzI1MDQsNyBAQAogCS52b3BfZ2V0ZXh0YXR0ciA9CXVuaW9uZnNfZ2V0ZXh0YXR0
 ciwKIAkudm9wX2dldHdyaXRlbW91bnQgPQl1bmlvbmZzX2dldHdyaXRlbW91bnQsCiAJLnZv
 cF9pbmFjdGl2ZSA9CQl1bmlvbmZzX2luYWN0aXZlLAorCS52b3BfaXNsb2NrZWQgPQkJdW5p
 b25mc19pc2xvY2tlZCwKIAkudm9wX2lvY3RsID0JCXVuaW9uZnNfaW9jdGwsCiAJLnZvcF9s
 aW5rID0JCXVuaW9uZnNfbGluaywKIAkudm9wX2xpc3RleHRhdHRyID0JdW5pb25mc19saXN0
 ZXh0YXR0ciwK
 --------------080703070504010006020003--

From: =?utf-8?Q?"Germ=C3=A1n_M._Bravo"?= <german.mb@gmail.com>
To: "bug-followup@FreeBSD.org" <bug-followup@FreeBSD.org>,
 "gcooper@ixsystems.com" <gcooper@ixsystems.com>
Cc:  
Subject: Re: kern/161511: [unionfs] Filesystem deadlocks when using multiple unionfs mounts on top of single filesystem
Date: Thu, 24 May 2012 08:34:25 -0500

 I can verify this patch absolutely fixes all the issues I was experiencing. M=
 y problem was random deadlocking behavior, forcing me to reboot the system m=
 anually, when I started/stopped jails using unionfs and/or starting services=
  inside said jails, under FreeBSD 9 RELEASE.=
State-Changed-From-To: open->closed 
State-Changed-By: daichi 
State-Changed-When: Fri May 25 05:39:59 UTC 2012 
State-Changed-Why:  
Committed. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=161511 
>Unformatted:
