Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Oct 2000 16:22:43 +0100
From:      dbhague@allstor-sw.co.uk
To:        freebsd-scsi@FreeBSD.org, freebsd-fs@FreeBSD.org
Cc:        gibbs@scsiguy.com, mjacob@feral.com, Andre Albsmeier <andre.albsmeier@mchp.siemens.de>, smcintyre@allstor-sw.co.uk
Subject:   Re: Stressed SCSI subsystem locks up the system
Message-ID:  <80256977.00547AA1.00@mail.plasmon.co.uk>

next in thread | raw e-mail | index | archive | help
--0__=mZjquYhAa8G9OyczsaJpisLOuvEaEGyp4GnaiBByZ8HIwBAbgYVvxKvI
Content-type: text/plain; charset=us-ascii
Content-Disposition: inline

This is increasingly looking like a filesystem issue.

We have done some more testing on the 4.1 build.  We believe the issues with 4.1
are different to the ones
with 3.0.  Due to the age of 3.0 we have decide to forget about it and
concentrate on the 4.1 issues.

We have two 4.1 test systems; one failed with the following on the console
> dev #da/3 block=0 fs=/RAID blocks
>panic ffs_blkfree freeing free frags
>syncing disk
The system was locked in this state and was ping-able but we could not telnet
in.

The other system is still running after two days.  This is the longest a test
has run.
The only difference we can see between the systems is the way the filesystem was
built.
This was built by
> dd if=/dev/zero of=/dev/rda0 count=2048
> disklabel -Brw da0 auto
> disklabel -e da0
> newfs /dev/rda0d

normally this is done in a script which effectively does
> disklabel -rw da0 auto
> dd if=/dev/zero of=/dev/rda0 count=2048
> disklabel -rw da0 auto
> "disklabel" | disklabel -rR da0
> newfs /dev/rda0d

The only real difference is the -B option in disklabel.  We do not attempt to
boot from this partition so this should not matter.

Let me know what you think ?

Regards Dave

For the sake of Freebsd-fs subscribers:

For your information we are a small software company, just south of Cambridge
UK, and have a thin server that is running FreeBSD.  We are developing a storage
system which controls a RAID system and automatically archives the data to
optical jukeboxes or tape libraries. Basically HSM in a box.

The system is as follows:
   Single board computer, AMD K6-II,
   128MB RAM,
   Adaptec AHA 3940AU
   Intel Ethernet Pro 100

This is attached to a RAID system although we have had the same failure with a
single SCSI drive.
I enclose the test script and the source for  the main test program. tmcp.c.
The test is started with "golongmulti 7"

If you require any further information please ask, or give me a call
+44-1763-264-474.

Thanks Dave
(See attached file: tmcp.c)(See attached file: golong)(See attached file:
golongmulti)(See attached file: go)

--0__=mZjquYhAa8G9OyczsaJpisLOuvEaEGyp4GnaiBByZ8HIwBAbgYVvxKvI
Content-type: application/octet-stream; 
	name="tmcp.c"
Content-Disposition: attachment; filename="tmcp.c"
Content-transfer-encoding: base64

LyogJFJldmlzaW9uOiAxLjIxICQgKi8KCgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRl
IDxmY250bC5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNs
dWRlIDxlcnJuby5oPgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNs
dWRlIDxzdGRsaWIuaD4KCiNpZiBkZWZpbmVkKE9TMikgfHwgZGVmaW5lZChXSU5OVCkKI2luY2x1
ZGUgPGlvLmg+CiNpbmNsdWRlIDx3aW5kb3dzLmg+CiNpbmNsdWRlIDxkaXJlY3QuaD4KI2RlZmlu
ZSBzdHJjYXNlY21wIHN0cmljbXAKI2RlZmluZSBzdGF0ICAgICAgIF9zdGF0CiNkZWZpbmUgdW5s
aW5rICAgICBfdW5saW5rCiNkZWZpbmUgcmVhZCAgICAgICBfcmVhZAojZGVmaW5lIGxzZWVrICAg
ICAgX2xzZWVrCiNkZWZpbmUgVElNRSBfX2ludDY0CgojZWxzZQoKI2RlZmluZSBIQVNfR0VUVElN
RU9GREFZIC8qIFNvbWUgc3lzdGVtcyBtYXkgbm90ICovCiNpbmNsdWRlIDxzdHJpbmdzLmg+CiNp
bmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg+CiNkZWZpbmUgVElNRSBsb25n
IGxvbmcKCiNlbmRpZiAvKiBPUzIgfHwgV0lOTlQgKi8KCi8qIGRlZmluZSBhIHZhcmlhYmxlIHRo
YXQgd2lsbCBjYXVzZSBtYWluIGFuZCB1c2FnZSB0byBiZSBpbmNsdWRlZCBvciBvdGhlcndpc2Ug
CiovCiNkZWZpbmUgX1NUQU5EX0FMT05FICAgIDAKCiNpZm5kZWYgT19CSU5BUlkKI2RlZmluZSBP
X0JJTkFSWSAgCTAKI2VuZGlmCgojZGVmaW5lIFVMVFJBX0JMT0NLCSgxMDI0KjEwMjQpCiNkZWZp
bmUgTl9GSUxFUwkJMHg0MDAwCiNkZWZpbmUgTl9JTlRFUlZBTAkxMDAKI2RlZmluZSBCTEtfU1oJ
CTMyNzY4CiNkZWZpbmUgTUFYX0JMS19TWgkoNTEyKjEwMjQpCgovKiBURUogLSBjaGFuZ2VkIFRt
Y3BXcml0ZUZpbGUgdG8gdXNlIHRoZXNlIG1hY3JvcyAtIG5lZWQgc2V0ZmlsZXNpemUgb3BlcmF0
aW9uIGZvciAvdCAodGFwZSkKICAgb3B0aW9uLCAgYW5kIF9jaHNpemUgZGlkbid0IHNlZW0gdG8g
d29yaywgIHNvIE5UIHZlcnNpb24gbm93IHVzZXMgV2luMzIgZmlsZSBJL08gZnVuY3Rpb25zCiAg
IGFuZCBTZXRFbmRPZkZpbGUuICBOb24tTlQgc2hvdWxkIGJlIHVuY2hhbmdlZC4gCiAqLwojaWZu
ZGVmIFdJTk5UCiNkZWZpbmUgRl9IQU5ETEUgaW50CiNkZWZpbmUgRl9DUkVBVEUoX3AsIHEpIG9w
ZW4oKF9wKSwgT19DUkVBVCB8IE9fQklOQVJZIHwgT19XUk9OTFkgLCAocSkpCiNkZWZpbmUgRl9P
UEVOKF9wLCBxKSBvcGVuKChfcCksIE9fQklOQVJZIHwgT19SRFdSLCAocSkpOwojZGVmaW5lIEZf
Q1JFQVRFX0ZBSUxfVkFMVUUgLTEKI2RlZmluZSBGX0NMT1NFKCBfZikgY2xvc2UoX2YpCiNkZWZp
bmUgRl9XUklURSggX2YsIF9iLCBfcykgd3JpdGUoIChfZiksIChfYiksIChfcykpCiNkZWZpbmUg
Rl9SRUFEKCBfZiwgX2IsIF9zKSByZWFkKCAoX2YpLCAoX2IpLCAoX3MpKQojZGVmaW5lIEZfQ09N
TUlUKCBfZikgZnN5bmMoIF9mKQojZGVmaW5lIEZfRVJST1IoKSBlcnJubwojZGVmaW5lIEZfU0VU
U0laRSggX2YsIF9zKSBleGl0KDEpCiNkZWZpbmUgRl9GQUlMKCBfeCkgKCAtMSA9PSAoX3gpKQoj
ZGVmaW5lIEZfRVJST1JfU1RSKCBfeCkgc3RyZXJyb3IoX3gpCiNkZWZpbmUgRl9ERUxFVEUoIF9w
KSB1bmxpbmsoX3ApCiNkZWZpbmUgRl9TRUVLX0VORChfZikgbHNlZWsoKF9mKSwgMCwgU0VFS19F
TkQpCiNkZWZpbmUgRl9NS0RJUihfZikgbWtkaXIoIChfZiksIDA3NzcpCiNlbHNlCi8qIE5UICov
CiNpbmNsdWRlIDx3aW5kb3dzLmg+CiNpbmNsdWRlIDx3aW5iYXNlLmg+CnVuc2lnbmVkIGxvbmcg
Rl9EVU1NWTsKI2RlZmluZSBGX0hBTkRMRSBIQU5ETEUKI2RlZmluZSBGX0NSRUFURShfcCwgcSkg
Q3JlYXRlRmlsZSggKF9wKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgTlVMTCwg
Q1JFQVRFX0FMV0FZUywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCBOVUxMKQojZGVmaW5lIEZfT1BF
TihfcCwgcSkgQ3JlYXRlRmlsZSggKF9wKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQs
IE5VTEwsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgTlVMTCkKI2RlZmlu
ZSBGX0NSRUFURV9GQUlMX1ZBTFVFIElOVkFMSURfSEFORExFX1ZBTFVFCiNkZWZpbmUgRl9DTE9T
RShfZikgQ2xvc2VIYW5kbGUoX2YpCiNkZWZpbmUgRl9XUklURSggX2YsIF9iLCBfcykgV3JpdGVG
aWxlKCAoX2YpLCAoX2IpLCAoX3MpLCAmRl9EVU1NWSwgTlVMTCkKI2RlZmluZSBGX1JFQUQoIF9m
LCBfYiwgX3MpIFJlYWRGaWxlKCAoX2YpLCAoX2IpLCAoX3MpLCAmRl9EVU1NWSwgTlVMTCkKI2Rl
ZmluZSBGX0NPTU1JVCggX2YpIEZsdXNoRmlsZUJ1ZmZlcnMoX2YpCiNkZWZpbmUgRl9GQUlMKCBf
eCkgKDAgPT0gKF94KSkKI2RlZmluZSBGX0VSUk9SKCkgR2V0TGFzdEVycm9yKCkKI2RlZmluZSBG
X0RFTEVURSggX3ApIERlbGV0ZUZpbGUoX3ApCiNkZWZpbmUgRl9NS0RJUihfZikgX21rZGlyKChf
ZikpCmludCBGX1NFVFNJWkUoIEhBTkRMRSBfZiwgdW5zaWduZWQgbG9uZyBfcykKewogICAgdW5z
aWduZWQgbG9uZyBudWwgPSAwOwogICAgaWYgKDB4RkZGRkZGRkYgPT0gU2V0RmlsZVBvaW50ZXIo
IF9mLCBfcywgJm51bCwgRklMRV9CRUdJTikpCiAgICAgICAgcmV0dXJuIDA7CiAgICBpZiAoIVNl
dEVuZE9mRmlsZSggX2YpKQogICAgICAgIHJldHVybiAwOwogICAgcmV0dXJuIDE7Cn0KI2RlZmlu
ZSBGX0VSUk9SX1NUUiggX3gpICI8Tk9UIEFWQUlMQUJMRT4iCiNkZWZpbmUgRl9TRUVLX0VORChf
ZikgU2V0RmlsZVBvaW50ZXIoX2YsIDAsICZGX0RVTU1ZLCBGSUxFX0VORCkKI2VuZGlmCgoKY2hh
ciBKdW5rW01BWF9CTEtfU1pdOwpjaGFyIEp1bmtSZWFkW01BWF9CTEtfU1pdOwoKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIFVMT05HOwoKdm9pZCB1c2FnZShjaGFyICogcHJvZ25hbWUpCnsKICAgIHBy
aW50ZigJIlVzYWdlOlxuIgoJCSJcdCVzIFsvMV0gWy9BXSBbL0I6eF0gWy9DXSBbL0RdIFsvRTp4
XSBbL0Y6ZmlsZXNdIFsvTDp5XSBbL006el0gXG4iCgkJIlx0Wy9OXSBbL09dIFsvUF0gWy9RXSBb
L1JdIFsvUzp3XSBbL1RdIFsvVV0gWy9XXSBbL1ZdIFs8ZGlyPl1cblxuIgoKCQkiLzEgICAgRGlz
YWJsZXMgZmlsZSBzaXplIGN5Y2xpbmcgKHNlZSAvTSkgXG4iCgkJIi9BICAgIFVzZXMgbmFtZXMg
QWdhaW4gYW5kIEFnYWluIC0gZWcgbG90cyBvZiAwMDAwMDAwMS50c3QgZXRjXG4iCgkJIi9COncg
IERldGVybWluZXMgdGhlIGJsb2NrIHNpemUgb2Ygd3JpdGVzLiBUaGUgZGVmYXVsdCBpcyAzMjc2
OCBieXRlcy5cbiIKCQkiL0MgICAgQ2xvc2VzIGFmdGVyIGVhY2ggd3JpdGUuXG4iCgkJIi9EICAg
IERlbGV0ZXMgZmlsZXMgYWZ0ZXIgcmVhZC93cml0ZS5cbiIKCQkiL0U6eCAgU3BlY2lmaWVzIHRo
ZSBwZXJtaXNzaW9ucyB0byB1c2Ugb24gY3JlYXRlZCBmaWxlcy5cbiIKCQkiL0Y6IyAgU3BlY2lm
aWVzIHRoZSBudW1iZXIgb2YgZmlsZXMgdG8gd29yayB3aXRoLlxuIgoJCSIvTDp5ICBEZXRlcm1p
bmVzIHRoZSBudW1iZXIgb2YgZmlsZXMgaW4gYSBkaXJlY3RvcnkuXG4iCgkJIiAgICAgIDAgPSAx
NiwgMSA9IDI1NiwgMiA9IDQwOTYsIDMgPSA2NTUzNi4gVGhlIGRlZmF1bHQgaXMgTGV2ZWwgMFxu
IgoJCSIvTTp6ICBEZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgYmxvY2tzIHBlciBmaWxlLiBGaWxl
IHNpemUgY3ljbGVzXG4iCgkJIiAgICAgIGJldHdlZW4geiwgMip6LCBhbmQgMyp6IGJsb2Nrcy4g
VGhlIGRlZmF1bHQgdmFsdWUgZm9yIHogaXMgMS5cbiIKCQkiL04gICAgTWFrZXMgc3RyYW5nZSBm
aWxlbmFtZXNcbiIKCQkiL08gICAgTGVhdmVzIGZpbGVzIG9wZW5cbiIKCQkiL1AgICAgRGVsZXRl
cyBwYXJ0aWFsbHkgd3JpdHRlbiBmaWxlc1xuIgoJCSIvUSAgICBUdXJucyBvbiBRdWlldCBtb2Rl
IC0gZG9uJ3QgcHJpbnQgZmlsZSBuYW1lcywgb25seSBzdW1tYXJpZXNcbiIKCQkiL1IgICAgUmVh
ZC1hZnRlci13cml0ZSBBTkQgQ09NUEFSRSAoT0sgaW4gdGhpcyB2ZXJzaW9uKVxuIgoJCSIvUiAv
UiBSZWFkLXdpdGhvdXQtd3JpdGluZyBBTkQgQ09NUEFSRSAoT0sgaW4gdGhpcyB2ZXJzaW9uKVxu
IgoJCSIvUyAgICBXcml0ZXMgZmlsZXMgdG8gbXVsdGlwbGUgc2lkZXMgb2YgbWVkaWE/XG4iCgkJ
Ii9UICAgIERvZXMgU2V0RmlsZVNpemUgYmVmb3JlIHdyaXRpbmcgKHRhcGUpIE5UIE9OTFlcbiIK
CQkiL1UgICAgVHVybnMgb24gdWx0cmEtdmVyYm9zZSBtb2RlIC0gcHJpbnQgcGVyZm9ybWFuY2Ug
ZXZlcnkgMU1CIG9mIGRhdGEuXG4iCgkJIi9WICAgIFR1cm5zIG9uIHZlcmJvc2UgbW9kZSAtIHBy
aW50IHBlcmZvcm1hbmNlIGV2ZXJ5IGZpbGUsIG5vdCBldmVyeSAlZC5cblxuIgoJCSJPcHRpb25h
bCA8ZGlyPiBwYXJhbWV0ZXIgaXMgdGhlIHBhdGggdG8gZ2VuZXJhdGUgZGF0YSB0b1xuXG4iCgkJ
IlRoaXMgcHJvZ3JhbSB3aWxsIGNyZWF0ZSBhIHRyZWUgb2YgZGF0YSBhdCB0aGUgZ2l2ZW4gcG9p
bnRcbiIKCQkiVGhpcyB3aWxsIGNvbnNpc3Qgb2YgJWxkIGZpbGVzIGluIHRvdGFsLlxuIiwgcHJv
Z25hbWUsIChpbnQpIE5fSU5URVJWQUwsIChVTE9ORykgTl9GSUxFUyk7CiAgICBleGl0KDEpOwp9
CgppbnQgQ2hlY2tEaXIoY2hhciAqZGlycGF0aCwgaW50IGNyZWF0ZSkKewogICAgc3RydWN0CXN0
YXQJc2J1ZjsKICAgIGludAkJZXJyb3IgPSAwOwogICAgY2hhciAJKm9wID0gTlVMTDsKICAgIAog
ICAgaWYgKHN0YXQoZGlycGF0aCwgJnNidWYpKQogICAgewogICAgICAgIGlmIChFTk9FTlQgPT0g
ZXJybm8pCiAgICAgICAgewoJICBpZiAoIWNyZWF0ZSkKCSAgICAgIHJldHVybiBlcnJubzsKCSAg
ZWxzZQoJICAgICAgaWYgKEZfTUtESVIoZGlycGF0aCkpCgkgICAgICB7CQoJCW9wID0gIm1rZGly
IjsKCQllcnJvciA9IGVycm5vOwoJICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAg
ICAgeyAgIAoJICBvcCA9ICJzdGF0IjsKCSAgZXJyb3IgPSBlcnJubzsKICAgICAgICB9CiAgICB9
CiAgICBlbHNlCiAgICB7CQogICAgICAgIGlmICghKHNidWYuc3RfbW9kZSAmIFNfSUZESVIpKQog
ICAgICAgIHsgICAKCSAgcHJpbnRmKCI8PEVycm9yOiAnbWtkaXIgJXMnIGZhaWxzIGJlY2F1c2Ug
dGhpcyBmaWxlIGV4aXN0cz4+XG4iLCBkaXJwYXRoKTsKCSAgZXJyb3IgPSBFRVhJU1Q7CiAgICAg
ICAgfQogICAgfQogICAgCiAgICBpZiAoZXJyb3IgJiYgb3ApCiAgICAgICAgcHJpbnRmKCI8PENo
ZWNrRGlyKCVzKS4uLkVycm9yICVkIGR1cmluZyAnJXMnOiAlcz4+XG4iLCAKCSAgICAgZGlycGF0
aCwgZXJyb3IsICBvcCwgc3RyZXJyb3IoZXJyb3IpKTsKICAgICAgICAKICAgIHJldHVybiBlcnJv
cjsKfQoKI2lmZGVmIFdJTk5UCnN0YXRpYyB2b2lkIGdldF90aW1lKFRJTUUgKm5ld3RpbWUpCnsK
ICAgIFNZU1RFTVRJTUUgc3lzX3RpbWU7CiAgICBGSUxFVElNRSBmaWxlX3RpbWU7CiAgICBHZXRT
eXN0ZW1UaW1lKCZzeXNfdGltZSk7CiAgICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgmc3lzX3RpbWUs
ICZmaWxlX3RpbWUpOwogICAgCiAgICAqbmV3dGltZSA9ICgoVElNRSkoZmlsZV90aW1lLmR3SGln
aERhdGVUaW1lIDw8IDMyKSArIGZpbGVfdGltZS5kd0xvd0RhdGVUaW1lKTsKICAgICpuZXd0aW1l
IC89IChUSU1FKSgxMCk7Cn0KICAgIAojZWxzZQojICAgaWZkZWYgSEFTX0dFVFRJTUVPRkRBWQpz
dGF0aWMgdm9pZCBnZXRfdGltZShUSU1FICpuZXd0aW1lKQp7CiAgICBzdHJ1Y3QgdGltZXZhbCB0
djsKICAgIHN0cnVjdCB0aW1lem9uZSB0ejsKCiAgICB0ei50el9taW51dGVzd2VzdCA9IDA7CiAg
ICB0ei50el9kc3R0aW1lID0gMDsgICAgCgogICAgZ2V0dGltZW9mZGF5KCZ0diwgJnR6KTsKICAg
ICpuZXd0aW1lID0gKChUSU1FKXR2LnR2X3NlYyAqIDEwMDAwMDApICsgdHYudHZfdXNlYzsKfQoK
IyAgIGVsc2UKc3RhdGljIHZvaWQgZ2V0X3RpbWUoVElNRSAqbmV3dGltZSkKewogICAgdGltZV90
IGZvbzsKICAgIHRpbWUoJmZvbyk7CiAgICAqbmV3dGltZT0oVElNRSlmb28gKiAxMDAwMDAwOwp9
CiMgICBlbmRpZiAvKiBIQVNfR0VUVElNRU9GREFZICovCiNlbmRpZiAvKiBXSU5OVCAqLwoKCmlu
dCBHZW5lcmF0ZVBhdGgoaW50IHNpZGUsIGludCBsZXZlbCwgY2hhciAqcGF0aF9vdXQsIGNoYXIg
KnJvb3RfcGF0aF9pbiwgVUxPTkcgaWR4LCBpbnQgY3JlYXRlLCBpbnQgc3RyYW5nZV9uYW1lcywg
aW50IGNvbW1vbl9uYW1lcykKewogICAgaW50CQlpID0gMCwgZXJyb3IgPSAwOwogICAgY2hhciAJ
KkZ1bGxQYXRoID0gcGF0aF9vdXQ7CiAgICAKICAgIGlmIChsZXZlbCA+IDcpCiAgICAgICAgbGV2
ZWwgPSA3OwogICAgaWYgKGxldmVsIDwgMCkKICAgICAgICBsZXZlbCA9IDA7CgogICAgc3ByaW50
ZihwYXRoX291dCwgIiVzIiwgcm9vdF9wYXRoX2luKTsKICAgIHBhdGhfb3V0ICs9IHN0cmxlbihw
YXRoX291dCk7CiAgICBlcnJvciA9IENoZWNrRGlyKEZ1bGxQYXRoLCBjcmVhdGUpOwogICAgCiAg
ICBpZiAoIWVycm9yICYmIHNpZGUpCiAgICB7ICAgIAogICAgICAgIHNwcmludGYocGF0aF9vdXQs
ICIvc2lkZSVkIiwgc2lkZSk7CiAgICAgICAgZXJyb3IgPSBDaGVja0RpcihGdWxsUGF0aCwgY3Jl
YXRlKTsKICAgICAgICBwYXRoX291dCArPSBzdHJsZW4ocGF0aF9vdXQpOwkKICAgIH0KICAgIAkg
CSAKICAgICpwYXRoX291dCsrID0gJy8nOwoKICAgIGZvciAoaSA9IDc7ICFlcnJvciAmJiBpID4g
bGV2ZWw7IGktLSkKICAgIHsJCiAgICAgICAgKnBhdGhfb3V0KysgPSAiMDEyMzQ1Njc4OUFCQ0RF
RiJbKGludCkgKChpZHggPj4gKDQqaSkpKSAmIDE1XTsKICAgICAgICAqcGF0aF9vdXQgPSAwOwog
ICAgICAgIGVycm9yID0gQ2hlY2tEaXIoRnVsbFBhdGgsIGNyZWF0ZSk7CiAgICAgICAgKnBhdGhf
b3V0KysgPSAnLyc7CiAgICB9CiAgICBpZiAoc3RyYW5nZV9uYW1lcykKICAgIHsKICAgICAgICBp
bnQgbGVuZ3RoOwogICAgICAgIGNoYXIgKnAgPSBwYXRoX291dDsKCiAgICAgICAgc3JhbmQoKGxl
dmVsKzEpICogaWR4KTsKICAgICAgICBsZW5ndGggPSByYW5kKCkgJSAzMDsKICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCgkgICoocCsrKSA9ICIwMTIzNDU2Nzg5MGFiY2RmZWdo
aWprbG1ub3BxcnN0dXZ3eHl6Xy4iW3JhbmQoKSAlIDM3XTsKICAgICAgICBwICs9IHNwcmludGYo
cCwgIl8lMDhseF8iLCBpZHgpOwogICAgICAgIGxlbmd0aCA9IHJhbmQoKSAlIDQwOwogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKCSAgKihwKyspID0gIjAxMjM0NTY3ODkwYWJj
ZGZlZ2hpamtsbW5vcHFyc3R1dnd4eXpfLiJbcmFuZCgpICUgMzddOwogICAgICAgICoocCsrKSA9
IDA7CiAgICB9CiAgICBlbHNlIGlmIChjb21tb25fbmFtZXMpCiAgICB7CiAgICAgICAgc3ByaW50
ZihwYXRoX291dCwgIiUwOGx4LnRzdCIsIGlkeCAlICgxNiBeICgxK2xldmVsKSkpOwogICAgfQog
ICAgZWxzZQogICAgICAgIHNwcmludGYocGF0aF9vdXQsICIlMDhseC50c3QiLCBpZHgpOwoKICAg
IGlmIChlcnJvcikKICAgICAgICBwcmludGYoIkdlbmVyYXRlUGF0aCglcywgJWxkKSByZXR1cm5z
IGVycm9yICVkIiwgcm9vdF9wYXRoX2luLCBpZHgsIGVycm9yKTsKCiAgICByZXR1cm4gZXJyb3I7
Cn0JCgoKaW50IFRtY3BDcmVhdGVGaWxlKGNoYXIgKnBhdGgsIGludCBtb2RlLCBjaGFyICpidWYs
IGxvbmcgYmxrbGVuLCBpbnQgbl9ibGtzLCBpbnQgbGVhdmVfb3BlbiwgCgkgICAgICAgICBpbnQg
dWx0cmFfdmVyYm9zZSwgaW50IGNsb3NlX2FmdGVyX2VhY2hfd3JpdGUsIGludCBjb21taXRfd3Jp
dGVzLCAKCSAgICAgICAgIGludCBkZWxldGVfcGFydGlhbGx5X3dyaXR0ZW4sIGludCBzZXRfZmls
ZV9zaXplX2JlZm9yZV93cml0ZSkKewogICAgRl9IQU5ETEUgZm51bTsKICAgIGludAkJZXJyb3Ig
PSAwLCBsaW5lcyA9IDA7CiAgICBUSU1FCWJhc2V0aW1lLCBkdD0wLCBkdDIsIGxhc3RiYXNlOwog
ICAgbG9uZwl3cml0dGVuID0gMDsKICAgIAogICAgZm51bSA9IEZfQ1JFQVRFKCBwYXRoLCBtb2Rl
KTsKICAgIAogICAgZ2V0X3RpbWUoJmJhc2V0aW1lKTsKICAgIGxhc3RiYXNlID0gKFRJTUUpYmFz
ZXRpbWU7CiAgICAKICAgIGlmIChGX0NSRUFURV9GQUlMX1ZBTFVFID09IGZudW0pCiAgICB7CQog
ICAgICAgIHByaW50ZigiXHJDb3VsZCBub3QgY3JlYXRlICclcycuIEVycm9yKCVkKVxuIiwgcGF0
aCwgRl9FUlJPUigpKTsKICAgICAgICBlcnJvciA9IEZfRVJST1IoKTsKICAgIH0KICAgIGVsc2UK
ICAgIHsJCiAgICAgICAgaWYgKHNldF9maWxlX3NpemVfYmVmb3JlX3dyaXRlKQogICAgICAgIHsK
I2lmZGVmIFdJTk5UCgkgIGlmIChGX0ZBSUwoIEZfU0VUU0laRSggZm51bSwgbl9ibGtzKmJsa2xl
bikpKQoJICB7CgkgICAgICBwcmludGYoIlNldFNpemUoICVkKSBmYWlsZWQgZm9yICVzIChlICVk
KVxuIiwgYmxrbGVuKm5fYmxrcywgcGF0aCwgRl9FUlJPUigpKTsKCSAgICAgIGVycm9yID0gRl9F
UlJPUigpOwoJICAgICAgaWYgKEZfRkFJTChGX0NMT1NFKGZudW0pKSkKCSAgICAgIHsgICAKCQlw
cmludGYoIlxyQ291bGQgbm90IGNsb3NlIGZpbGUgJyVzJy4gRXJyb3IoJWQpXG4iLCBwYXRoLCBG
X0VSUk9SKCkpOwoJCWVycm9yID0gRl9FUlJPUigpOwoJICAgICAgfQoJICB9CiNlbHNlCgkgIHBy
aW50ZigiV0FSTklORzogL1Qgbm90IHN1cHBvcnRlZCBub24tTlRcbiIpOwojZW5kaWYKICAgICAg
ICB9CgkJCiAgICAgICAgd2hpbGUgKG5fYmxrcy0tICYmICFlcnJvcikKICAgICAgICB7ICAgCgkg
IGlmIChGX0ZBSUwoRl9XUklURShmbnVtLCBidWYsIGJsa2xlbikpKQoJICB7CQoJICAgICAgcHJp
bnRmKCJcckNvdWxkIG5vdCB3cml0ZSAnJXMnLiBFcnJvciglZCk6ICAlc1xuIiwgcGF0aCwgZXJy
bm8sIHN0cmVycm9yKGVycm5vKSk7CgkgICAgICBlcnJvciA9IEZfRVJST1IoKTsKCSAgICAgIGlm
IChkZWxldGVfcGFydGlhbGx5X3dyaXR0ZW4pCgkgICAgICB7CgkJaWYgKEZfRkFJTChGX0NPTU1J
VChmbnVtKSkpCgkJewoJCSAgICBwcmludGYoIlxyQ291bGQgbm90IGNvbW1pdCBjbG9zZSBwYXJ0
aWFsbHkgd3JpdHRlbiBmaWxlICclcycuIEVycm9yKCVkKTogICVzXG4iLCAKCQkJIHBhdGgsIEZf
RVJST1IoKSwgRl9FUlJPUl9TVFIoZXJybm8pKTsKCQkgICAgZXJyb3IgPSBGX0VSUk9SKCk7CQkJ
CQkKCQl9CgkJaWYgKEZfRkFJTChGX0NMT1NFKGZudW0pKSkKCQl7ICAgCgkJICAgIHByaW50Zigi
XHJDb3VsZCBub3QgY2xvc2UgcGFydGlhbGx5IHdyaXR0ZW4gZmlsZSAnJXMnLiBFcnJvciglZCk6
ICAlc1xuIiwgCgkJCSBwYXRoLCBGX0VSUk9SKCksIEZfRVJST1JfU1RSKGVycm5vKSk7CgkJICAg
IGVycm9yID0gRl9FUlJPUigpOwoJCX0KCQlmbnVtID0gRl9DUkVBVEVfRkFJTF9WQUxVRTsgLyog
c2V0IHRvIC0xIHRvIHByZXZlbnQgdHJ5aW5nIHRvIGNvbW1pdCBhbmQgY2xvc2UgYWdhaW4sIGV0
Yy4uLiAqLwoJCWlmIChGX0ZBSUwoRl9ERUxFVEUocGF0aCkpKQoJCXsKCQkgICAgZXJyb3IgPSBG
X0VSUk9SKCk7CgkJICAgIHByaW50ZigiXHJDb3VsZCBub3QgZGVsZXRlIHBhcnRpYWxseSB3cml0
dGVuIGZpbGUgJyVzJy4gZXJyb3IoJWQpOiAgJXNcbiIsIAoJCQkgcGF0aCwgRl9FUlJPUigpLCBG
X0VSUk9SX1NUUihlcnJubykpOwoJCX0KCQllbHNlCgkJICAgIHByaW50ZigiRGVsZXRlZCBwYXJ0
aWFsbHkgd3JpdHRlbiBmaWxlICclcycuXG4iLHBhdGgpOwoJICAgICAgfQoJICB9CgkgIGVsc2UK
CSAgewoJICAgICAgaWYgKGNvbW1pdF93cml0ZXM+MSkKCSAgICAgIHsKCQlpZiAoRl9GQUlMKCBG
X0NPTU1JVChmbnVtKSkpCgkJewoJCSAgICBwcmludGYoIlxyQ291bGQgbm90IGNvbW1pdCB3cml0
ZSAnJXMnLiBFcnJvciglZCk6ICAlc1xuIiwgcGF0aCwgRl9FUlJPUigpLCBGX0VSUk9SX1NUUihG
X0VSUk9SKCkpKTsKCQkgICAgZXJyb3IgPSBGX0VSUk9SKCk7CQkJCQkKCQl9CgkJZWxzZQoJCXsK
CQkgICAgaWYgKHVsdHJhX3ZlcmJvc2UpCgkJICAgICAgICBwcmludGYoIiBDb21taXRPSzoiKTsg
CgkJfQoJICAgICAgfQoJICAgICAgd3JpdHRlbiArPSBibGtsZW47CgkgICAgICBpZiAodWx0cmFf
dmVyYm9zZSkKCSAgICAgIHsKCQlpZiAod3JpdHRlbiA+PSBVTFRSQV9CTE9DSyp1bHRyYV92ZXJi
b3NlKQoJCXsgIAoJCSAgICBnZXRfdGltZSgmZHQpOwoJCSAgICBkdDIgPSAoVElNRSlkdDsKCQkg
ICAgZHQtPShUSU1FKWJhc2V0aW1lOwoJCSAgICBkdDItPShUSU1FKWxhc3RiYXNlOwoJCSAgICBp
ZiAoZHQyKQoJCSAgICB7CgkJICAgICAgICBpZiAoIWxpbmVzKQoJCQkgIHByaW50ZigiXG4iKTsK
CgkJICAgICAgICBwcmludGYoIlslMDRsbGQgS2Ivc10gICAiLCAod3JpdHRlbiAqIDEwMDAwMDAg
LyAxMDI0KSAvIChUSU1FKWR0Mik7CgkJICAgICAgICBnZXRfdGltZSgmbGFzdGJhc2UpOwoJCSAg
ICAgICAgd3JpdHRlbiA9IDA7CgkJICAgICAgICBsaW5lcyA9IChsaW5lcysxKSAlNDsKCQkgICAg
fQoJCX0KCSAgICAgIH0KCSAgICAgIGlmIChjbG9zZV9hZnRlcl9lYWNoX3dyaXRlKQoJICAgICAg
ewoJCWlmIChGX0ZBSUwoRl9DTE9TRSggZm51bSkpKQoJCXsJCgkJICAgIHByaW50ZigiXHJDb3Vs
ZCBub3QgY2xvc2UgJyVzJy4gRXJyb3IoJWQpOiAgJXNcbiIsIAoJCQkgcGF0aCwgRl9FUlJPUigp
LCBGX0VSUk9SX1NUUihGX0VSUk9SKCkpKTsKCQkgICAgZXJyb3IgPSBGX0VSUk9SKCk7CgkJfQoJ
CWVsc2UKCQl7CgkJICAgIGZudW0gPSBGX09QRU4ocGF0aCwgbW9kZSk7CgkJICAgIGlmIChGX0NS
RUFURV9GQUlMX1ZBTFVFID09IGZudW0pCgkJICAgIHsJCgkJICAgICAgICBwcmludGYoIlxyQ291
bGQgbm90IGNyZWF0ZSAnJXMnLiBFcnJvciglZCk6ICAlc1xuIiwgCgkJCSAgICAgcGF0aCwgRl9F
UlJPUigpLCBGX0VSUk9SX1NUUihGX0VSUk9SKCkpKTsKCQkgICAgICAgIGVycm9yID0gRl9FUlJP
UigpOwoJCSAgICB9CgkJICAgIGVsc2UKCQkgICAgewoJCSAgICAgICAgaWYgKEZfRkFJTChGX1NF
RUtfRU5EKGZudW0pKSkKCQkgICAgICAgIHsKCQkJICBwcmludGYoIlxyQ291bGQgbm90IHNlZWsg
dG8gZW5kIG9uICVzLiBFcnJvciglZCk6ICAlc1xuIiwgCgkJCSAgICAgICAgIHBhdGgsIEZfRVJS
T1IoKSwgRl9FUlJPUl9TVFIoRl9FUlJPUigpKSk7CgkJCSAgZXJyb3IgPSBGX0VSUk9SKCk7CgkJ
ICAgICAgICB9CgkJICAgIH0KCQl9CgkgICAgICB9CgkgIH0gICAgCSAgICAKICAgICAgICB9CiAg
ICB9CgkKICAgIGlmICgoZm51bSAhPSBGX0NSRUFURV9GQUlMX1ZBTFVFKSAmJiBjb21taXRfd3Jp
dGVzICYmIChGX0ZBSUwoRl9DT01NSVQoZm51bSkpKSkKICAgIHsKICAgICAgICBwcmludGYoIlxy
Q291bGQgbm90IGNvbW1pdCBjbG9zZSAnJXMnLiBFcnJvciglZCk6ICAlc1xuIiwgcGF0aCwgRl9F
UlJPUigpLCBGX0VSUk9SX1NUUihGX0VSUk9SKCkpKTsKICAgICAgICBlcnJvciA9IEZfRVJST1Io
KTsJCQkJCQogICAgfQoJCiAgICBpZiAoKGZudW0gIT0gRl9DUkVBVEVfRkFJTF9WQUxVRSkgJiYg
IWxlYXZlX29wZW4pCiAgICB7ICAgCiAgICAgICAgaWYgKEZfRkFJTChGX0NMT1NFKGZudW0pKSkK
ICAgICAgICB7ICAgCgkgIGVycm9yID0gRl9FUlJPUigpOwoJICBwcmludGYoIlxyQ291bGQgbm90
IGNsb3NlICclcycuIEVycm9yKCVkKTogICVzXG4iLCBwYXRoLCBlcnJvciwgRl9FUlJPUl9TVFIo
ZXJyb3IpKTsKICAgICAgICB9CiAgICB9CgkKICAgIGlmICh1bHRyYV92ZXJib3NlICYmIGR0KQog
ICAgICAgIHByaW50ZigiXG4iKTsKCQogICAgcmV0dXJuIGVycm9yOwp9CgppbnQgVG1jcFJlYWRG
aWxlKGNoYXIgKnBhdGgsIGNoYXIgKmJ1ZiwgbG9uZyBibGtsZW4sIGludCBuX2Jsa3MsIGludCBs
ZWF2ZV9vcGVuLCBpbnQgdWx0cmFfdmVyYm9zZSwgaW50IGNsb3NlX2FmdGVyX2VhY2hfcmVhZCkK
ewogICAgRl9IQU5ETEUgZm51bSA9IDA7CiAgICBpbnQJCWVycm9yID0gMDsKICAgIFRJTUUJYmFz
ZXRpbWUsIGR0PTAsIGR0MiwgbGFzdGJhc2U7CiAgICBsb25nCXJlYWQxID0gMCwgbGluZXMgPSAw
OwoJCiAgICBnZXRfdGltZSgmYmFzZXRpbWUpOwogICAgbGFzdGJhc2UgPSAoVElNRSliYXNldGlt
ZTsKCQogICAgCiAgICBmbnVtID0gRl9PUEVOKHBhdGgsIFNfSVJFQUQgfCBTX0lXUklURSk7CiAg
ICBpZiAoKEZfSEFORExFKS0xID09IGZudW0pCiAgICB7CQogICAgICAgIHByaW50ZigiXHJDb3Vs
ZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nLiBFcnJvciglZCk6ICAlc1xuIiwgcGF0aCwgZXJy
bm8sIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgZXJyb3IgPSBlcnJubzsKICAgIH0KICAgIGVs
c2UKICAgIHsJCiAgICAgICAgd2hpbGUgKG5fYmxrcy0tICYmICFlcnJvcikKICAgICAgICB7ICAg
CgkgIGlmICgtMSA9PSBGX1JFQUQoZm51bSwgYnVmLCBibGtsZW4pKQoJICB7CQoJICAgICAgcHJp
bnRmKCJcckNvdWxkIG5vdCByZWFkICclcycuIEVycm9yKCVkKTogICVzXG4iLCBwYXRoLCBlcnJu
bywgc3RyZXJyb3IoZXJybm8pKTsKCSAgICAgIGVycm9yID0gZXJybm87CgkgIH0KCSAgZWxzZQoJ
ICB7CgkgICAgICByZWFkMSArPSBibGtsZW47CgkgICAgICBpZiAodWx0cmFfdmVyYm9zZSkKCSAg
ICAgIHsKCQlpZiAocmVhZDEgPj0gVUxUUkFfQkxPQ0sqdWx0cmFfdmVyYm9zZSkKCQl7ICAKCQkg
ICAgZ2V0X3RpbWUoJmR0KTsKCQkgICAgZHQyID0gKFRJTUUpZHQ7CgkJICAgIGR0LT0oVElNRSli
YXNldGltZTsKCQkgICAgZHQyLT0oVElNRSlsYXN0YmFzZTsKCQkgICAgaWYgKGR0MikKCQkgICAg
ewoJCSAgICAgICAgaWYgKCFsaW5lcykKCQkJICBwcmludGYoIlxuIik7CgkJCQkJCQkKCQkgICAg
ICAgIHByaW50ZigiWyUwNGxsZCBLYi9zXSAgICIsIChyZWFkMSAqIDEwMDAwMDAgLyAxMDI0KSAv
IChUSU1FKWR0Mik7CgkJICAgICAgICBnZXRfdGltZSgmbGFzdGJhc2UpOwoJCSAgICAgICAgcmVh
ZDEgPSAwOwoJCSAgICAgICAgbGluZXMgPSAobGluZXMrMSkgJTQ7CgkJICAgIH0KCQl9CgkgICAg
ICB9CgkgIH0JCQogICAgICAgIH0KICAgIH0KICAgIGlmIChmbnVtICE9IChGX0hBTkRMRSktMSAm
JiAgIWxlYXZlX29wZW4pCiAgICB7ICAgCiAgICAgICAgaWYgKEZfQ0xPU0UoZm51bSkpCiAgICAg
ICAgeyAgIAoJICBwcmludGYoIlxyQ291bGQgbm90IGNsb3NlICclcycgYWZ0ZXIgcmVhZGluZy4g
RXJyb3IoJWQpOiAgJXNcbiIsIHBhdGgsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwoJICBlcnJv
ciA9IGVycm5vOwogICAgICAgIH0KICAgIH0KICAgIGlmICh1bHRyYV92ZXJib3NlICYmIGR0KQog
ICAgICAgIHByaW50ZigiXG4iKTsKICAgIHJldHVybiBlcnJvcjsKfQoKaW50IFRtY3BEZWxldGVG
aWxlKGNoYXIgKnBhdGgpCnsKICAgIGludCBlcnJvciA9IDA7CgkKICAgIGlmICgtMSA9PSB1bmxp
bmsocGF0aCkpCiAgICB7CQogICAgICAgIGVycm9yID0gZXJybm87CiAgICAgICAgcHJpbnRmKCJc
ckNvdWxkIG5vdCBkZWxldGUgZmlsZSAnJXMnLiBFcnJvciglZCk6ICAlc1xuIiwgcGF0aCwgZXJy
bm8sIHN0cmVycm9yKGVycm5vKSk7CiAgICB9CgkKICAgIHJldHVybiBlcnJvcjsKfQoKaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgY2hhcgkqUm9vdFBhdGg7CiAgICBjaGFy
IAlzekZQYXRoWzUxMl07CiAgICBVTE9ORwljb3VudCwgZmlsZXMgPSBOX0ZJTEVTLCAgS0IsIHRo
aXNLQjsKICAgIFRJTUUJYmFzZXRpbWUgPSAwLCAgbGFzdGJhc2UsICBkdCwgZHQyOwogICAgaW50
CQlpLCBlcnJvciA9IDA7CiAgICBsb25nCWJsa3N6ID0gQkxLX1NaOwogICAgaW50CQlsZXZlbCA9
IDAsIG11bHQgPSAxOwogICAgbG9uZwl0aGlzZmlsZTsKI2lmbmRlZiBXSU5OVAogICAgaW50ICAg
ICBtb2RlID0gKFNfSVJFQUQgfCBTX0lXUklURSk7CiNlbHNlCiAgICBpbnQgICAgIG1vZGUgPSAw
OwojZW5kaWYKICAgIGludCAgICAgcXVpZXQgPSAwOwogICAgaW50CQlzaWRlcyA9IDAsIHJlYWQx
ID0gMCwgZGVsZXRlID0gMCwgbm9fY3ljbGluZ19zaXplcyA9IDAsIGNvbW1pdF93cml0ZXMgPSAw
LCBjb21tb25fbmFtZXMgPSAwOwogICAgaW50CQl2ZXJib3NlID0gMCwgbGVhdmVfb3BlbiA9IDAs
IHVsdHJhX3ZlcmJvc2UgPSAwLCBjbG9zZV9hZnRlcl9lYWNoX3dyaXRlID0gMDsKICAgIGludAkJ
ZGVsZXRlX3BhcnRpYWxseV93cml0dGVuID0gMCwgc3RyYW5nZV9uYW1lcyA9IDA7CiAgICBpbnQJ
CXNldF9maWxlX3NpemVfYmVmb3JlX3dyaXRlICA9IDA7CiAgICAgICAgCiAgICBtZW1zZXQoSnVu
aywgMHg1NSwgc2l6ZW9mKEp1bmspKTsKICAgIHNldHZidWYoc3Rkb3V0LCBOVUxMLCBfSU9OQkYs
IDApOwoKI2lmbmRlZiBXSU5OVAogICAgdW1hc2soMCk7CiNlbmRpZgogICAgCiAgICBpZiAoYXJn
YyA+IDEgJiYgKCFzdHJjYXNlY21wKGFyZ3ZbMV0sICIvaCIpIHx8ICFzdHJjYXNlY21wKGFyZ3Zb
MV0sICIvaGVscCIpKSkKICAgICAgICB1c2FnZSgidG1jcCIpOwoKICAgIHdoaWxlIChhcmdjID4g
MSAmJiAoYXJndlsxXVswXSA9PSAnLycgfHwgYXJndlsxXVswXSA9PSAnLScpKQogICAgewkKICAg
ICAgICBzd2l0Y2ggKGFyZ3ZbMV1bMV0pCiAgICAgICAgeyAgIAogICAgICAgIGNhc2UgJzEnOgoJ
ICBub19jeWNsaW5nX3NpemVzKys7CgkgIGJyZWFrOwogICAgICAgIGNhc2UgJ2EnOgogICAgICAg
IGNhc2UgJ0EnOgoJICBjb21tb25fbmFtZXMrKzsKCSAgc3RyYW5nZV9uYW1lcyA9IDA7CgkgIGJy
ZWFrOwogICAgICAgIGNhc2UgJ2InOgogICAgICAgIGNhc2UgJ0InOgoJICBibGtzeiA9IGF0b2wo
YXJndlsxXSszKTsKCSAgYnJlYWs7CiAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgY2FzZSAnQyc6
CgkgIGNsb3NlX2FmdGVyX2VhY2hfd3JpdGUgPSAxOwoJICBicmVhazsKICAgICAgICBjYXNlICdk
JzoKICAgICAgICBjYXNlICdEJzoKCSAgZGVsZXRlKys7CgkgIGJyZWFrOwogICAgICAgIGNhc2Ug
J2UnOgogICAgICAgIGNhc2UgJ0UnOgoJICBtb2RlID0gc3RydG9sKGFyZ3ZbMV0rMywgKGNoYXIg
KiopTlVMTCwgOCk7CgkgIGJyZWFrOwogICAgICAgIGNhc2UgJ2YnOgogICAgICAgIGNhc2UgJ0Yn
OgoJICBmaWxlcyA9IChVTE9ORylhdG9sKGFyZ3ZbMV0rMyk7CgkgIGJyZWFrOwogICAgICAgIGNh
c2UgJ2wnOgogICAgICAgIGNhc2UgJ0wnOgoJICBsZXZlbCA9IGF0b2koYXJndlsxXSszKTsKCSAg
cHJpbnRmKCJMZXZlbCA9ICVkXG4iLCBsZXZlbCk7CgkgIGJyZWFrOwogICAgICAgIGNhc2UgJ20n
OgogICAgICAgIGNhc2UgJ00nOgoJICBtdWx0ID0gYXRvaShhcmd2WzFdKzMpOwoJICBicmVhazsK
ICAgICAgICBjYXNlICduJzoKICAgICAgICBjYXNlICdOJzoKCSAgc3RyYW5nZV9uYW1lcysrOwoJ
ICBjb21tb25fbmFtZXMgPSAwOwoJICBicmVhazsKICAgICAgICBjYXNlICdvJzoKICAgICAgICBj
YXNlICdPJzoKCSAgbGVhdmVfb3BlbisrOwoJICBicmVhazsKICAgICAgICBjYXNlICdQJzoKICAg
ICAgICBjYXNlICdwJzoKCSAgZGVsZXRlX3BhcnRpYWxseV93cml0dGVuKys7CgkgIGJyZWFrOwog
ICAgICAgIGNhc2UgJ3EnOgogICAgICAgIGNhc2UgJ1EnOgoJICBxdWlldCsrOwoJICBicmVhazsK
ICAgICAgICBjYXNlICdyJzoKICAgICAgICBjYXNlICdSJzoKCSAgcmVhZDErKzsJCS8qIDAgPSBu
byByZWFkLCAxID0gcmVhZCAmIHdyaXRlLCAyID0gcmVhZCBvbmx5ICovCgkgIGJyZWFrOwogICAg
ICAgIGNhc2UgJ3MnOgogICAgICAgIGNhc2UgJ1MnOgoJICBzaWRlcyA9IGF0b2koYXJndlsxXSsz
KTsKCSAgYnJlYWs7CiAgICAgICAgY2FzZSAnVCc6CiAgICAgICAgY2FzZSAndCc6CgkgIHNldF9m
aWxlX3NpemVfYmVmb3JlX3dyaXRlID0gMTsKCSAgYnJlYWs7CiAgICAgICAgY2FzZSAndSc6CiAg
ICAgICAgY2FzZSAnVSc6CgkgIHVsdHJhX3ZlcmJvc2UrKzsKCSAgYnJlYWs7CiAgICAgICAgY2Fz
ZSAndic6CiAgICAgICAgY2FzZSAnVic6CgkgIHZlcmJvc2UrKzsKCSAgYnJlYWs7CiAgICAgICAg
Y2FzZSAnVyc6CiAgICAgICAgY2FzZSAndyc6CgkgIGNvbW1pdF93cml0ZXMrKzsKCSAgYnJlYWs7
CiAgICAgICAgZGVmYXVsdDoKCSAgdXNhZ2UoInRtY3AiKTsKICAgICAgICB9CiAgICAgICAgYXJn
Yy0tOyBhcmd2Kys7CiAgICB9CiAgICBpZiAoYXJnYyA+IDIpCiAgICAgICAgdXNhZ2UoInRtY3Ai
KTsKICAgIGlmIChibGtzeiA+IE1BWF9CTEtfU1opCiAgICAgICAgYmxrc3ogPSBNQVhfQkxLX1Na
OwoKICAgIGZvciAoaSA9IDA7IGkgPCBibGtzejsgaSsrKQogICAgICAgIEp1bmtbaV0gPSBpICYg
MHhGRjsKICAgIAkKICAgIFJvb3RQYXRoID0gKGFyZ2MgPT0gMSkgPyAiLiIgOiAgYXJndlsxXTsK
ICAgIHByaW50ZigiVE1DUCAlcyB0byAlcy4uIGxldmVsID0gJWQsIGJsb2Nrc2l6ZSA9ICVsZCAg
I0Jsb2Nrcy9maWxlID0gJWQgLi4gJWRcbiIsIAoJIHJlYWQxID8gKHJlYWQxID09IDEgPyAiV3Jp
dGUmUmVhZCIgOiAiUmVhZE9ubHkiKSA6ICJXcml0ZU9ubHkiLCBSb290UGF0aCwgbGV2ZWwsIGJs
a3N6LCBtdWx0LCAKCSBub19jeWNsaW5nX3NpemVzID8gbXVsdCA6IDMqbXVsdCk7CiAgICAKICAg
IGdldF90aW1lKCZiYXNldGltZSk7CiAgICBsYXN0YmFzZSA9IChUSU1FKWJhc2V0aW1lOwogICAg
S0IgPSB0aGlzS0IgPSAwOwogICAgZm9yIChjb3VudCA9IDA7ICFlcnJvciAmJiBjb3VudCA8IGZp
bGVzOyBjb3VudCsrKQogICAgewogICAgICAgIGVycm9yID0gR2VuZXJhdGVQYXRoKAlzaWRlcyA/
IDErKGNvdW50ICUgc2lkZXMpIDogMCwgCgkJCWxldmVsLCBzekZQYXRoLCBSb290UGF0aCwgY291
bnQsIHJlYWQxIDwgMiwgc3RyYW5nZV9uYW1lcywgY29tbW9uX25hbWVzKTsKCiAgICAgICAgaWYo
IXF1aWV0KQoJICBwcmludGYoIkZpbGUgIyUwOGxkIC0+ICVzICAgXHIiLCBjb3VudCwgc3pGUGF0
aCk7ICAgCQogICAgICAgIGlmIChub19jeWNsaW5nX3NpemVzKQoJICB0aGlzZmlsZSA9IG11bHQ7
CiAgICAgICAgZWxzZQoJICB0aGlzZmlsZSA9ICBtdWx0ICogKChjb3VudCAlMykgKzEpOwogICAg
ICAgIGlmIChyZWFkMSA8IDIpCiAgICAgICAgewoJICBpZiAoIWVycm9yKQoJICAgICAgZXJyb3Ig
PSBUbWNwQ3JlYXRlRmlsZShzekZQYXRoLCBtb2RlLCBKdW5rLCBibGtzeiwgdGhpc2ZpbGUsIGxl
YXZlX29wZW4sIAoJCQkgICAgICAgICB1bHRyYV92ZXJib3NlLCBjbG9zZV9hZnRlcl9lYWNoX3dy
aXRlLCBjb21taXRfd3JpdGVzLCAKCQkJICAgICAgICAgZGVsZXRlX3BhcnRpYWxseV93cml0dGVu
LCBzZXRfZmlsZV9zaXplX2JlZm9yZV93cml0ZSk7CiAgICAgICAgfQogICAgICAgIGlmIChyZWFk
MSA+IDApCiAgICAgICAgewoJICBpZiAoIWVycm9yKQoJICB7CgkgICAgICBpZiAodWx0cmFfdmVy
Ym9zZSkKCQlwcmludGYoIlJlYWQuLi5cbiIpOwoJICAgICAgZXJyb3IgPSBUbWNwUmVhZEZpbGUo
c3pGUGF0aCwgSnVua1JlYWQsIGJsa3N6LCB0aGlzZmlsZSwgbGVhdmVfb3BlbiwgdWx0cmFfdmVy
Ym9zZSwgCgkJCSAgICAgICBjbG9zZV9hZnRlcl9lYWNoX3dyaXRlKTsKCSAgfQoJICBpZiAoIWVy
cm9yICYmIG1lbWNtcChKdW5rLCBKdW5rUmVhZCwgYmxrc3opKQoJICAgICAgcHJpbnRmKCJcbiAt
IE1JU0NPTVBBUkUgaW4gJXNcbiIsIHN6RlBhdGgpOwoJCQkKICAgICAgICB9CiAgICAgICAgaWYg
KGRlbGV0ZSA+IDApCiAgICAgICAgewoJICBpZiAoIWVycm9yKQoJICAgICAgZXJyb3IgPSBUbWNw
RGVsZXRlRmlsZShzekZQYXRoKTsKICAgICAgICB9CgkJCgkJCiAgICAgICAgaWYgKCFlcnJvcikK
ICAgICAgICB7ICAgCgkgIHRoaXNLQiArPSAoYmxrc3ogKiB0aGlzZmlsZSkgLyAxMDI0IDsKCSAg
S0IgKz0gKGJsa3N6ICogdGhpc2ZpbGUpIC8gMTAyNCA7CiAgICAgICAgfQogICAgICAgIGlmICgh
ZXJyb3IgJiYgKGNvdW50ID09IChmaWxlcy0xKSB8fCB2ZXJib3NlIHx8IDAgPT0gKGNvdW50ICUg
Tl9JTlRFUlZBTCkpKQogICAgICAgIHsgICAKCSAgaW50IG1pbixzZWM7CgoJICBnZXRfdGltZSgm
ZHQpOwoJICBkdDIgPSBkdDsKCSAgZHQtPShUSU1FKWJhc2V0aW1lOwoJICBkdDItPShUSU1FKWxh
c3RiYXNlOwoJICBtaW4gPSAoaW50KShkdCAvIDYwMDAwMDAwbCk7CgkgIHNlYyA9IChpbnQpKChk
dCAvIDEwMDAwMDApICU2MCkgOwoJICBwcmludGYoIlxyJTA0ZG0lMi4yZHM6IiwgbWluLCBzZWMp
OwoJICBwcmludGYoIkZpbGVzOiAlLTdsZCAgICIsIGNvdW50KTsKICAgICAgICAgICAgcHJpbnRm
KCJLYnl0ZXM6ICUtN2xkICAiLCBLQik7CgkgIGlmKGR0KQoJICAgICAgcHJpbnRmKCJLQi9zOiAl
LTZsbGQgICAiLCAoVElNRSlLQioxMDAwMDAwL2R0KTsKCSAgZWxzZQoJICAgICAgcHJpbnRmKCJL
Qi9zOiBYWFhYWFggICAiKTsKCSAgaWYoZHQyKQoJICAgICAgcHJpbnRmKCJUaGlzIEtCL3M6ICU3
bGxkXG4iLCAoVElNRSl0aGlzS0IqMTAwMDAwMC9kdDIpOwoJICBlbHNlCgkgICAgICBwcmludGYo
IlRoaXMgS0IvczogWFhYWFhYWFxuIik7CgkgIHRoaXNLQiA9IDA7CgkgIGdldF90aW1lKCZsYXN0
YmFzZSk7CiAgICAgICAgfQogICAgfQogICAgCiAgIAogICAgaWYgKGVycm9yKQogICAgICAgIHBy
aW50ZigiVGVzdCBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVkXG4iLCBlcnJvcik7CiAgICAgICAg
CiAgICByZXR1cm4gZXJyb3I7Cn0K

--0__=mZjquYhAa8G9OyczsaJpisLOuvEaEGyp4GnaiBByZ8HIwBAbgYVvxKvI
Content-type: application/octet-stream; 
	name="golong"
Content-Disposition: attachment; filename="golong"
Content-transfer-encoding: base64

IyEvYmluL3NoCiMKIyBnb2xvbmcgLSBjYWxsIHRoZSBnbyBzY3JpcHQKIwoKTlVNPSQxCkxPRz0v
Z28kMS5sb2cKCmRhdGUgPj4gJExPRwplY2hvIEFib3V0IHRvIHN0YXJ0IGdvbG9uZyA+PiAkTE9H
Cgp3aGlsZQp0cnVlCmRvCgkvZ28gJE5VTQpkb25lCg==

--0__=mZjquYhAa8G9OyczsaJpisLOuvEaEGyp4GnaiBByZ8HIwBAbgYVvxKvI
Content-type: application/octet-stream; 
	name="golongmulti"
Content-Disposition: attachment; filename="golongmulti"
Content-transfer-encoding: base64

IyEvYmluL3NoCiMKIyBnb2xvbmdtdWx0aSAtIGNhbGwgdGhlIGdvbG9uZyBzY3JpcHRzIGluIHBh
cmFsbGVsCiMKCk5VTT0kMQpMT0c9L2dvJDEubG9nCgp3aGlsZSBbICROVU0gLWd0IDAgXQpkbwoJ
ZWNobyBTdGFydGluZyBnb2xvbmcgJE5VTQoJL2dvbG9uZyAkTlVNICYKCU5VTT0kKCggJE5VTSAt
IDEpKQpkb25lCg==

--0__=mZjquYhAa8G9OyczsaJpisLOuvEaEGyp4GnaiBByZ8HIwBAbgYVvxKvI
Content-type: application/octet-stream; 
	name="go"
Content-Disposition: attachment; filename="go"
Content-transfer-encoding: base64

IyEvYmluL3NoCiMKIyBnbwojCgpOVU09JDEKTE9HPS9nbyQxLmxvZwoKaWYgWyAhIC1kIC9SQUlE
IF0gOyB0aGVuCgllY2hvIE5vIC9SQUlECmZpCgpta2RpciAvUkFJRC8kTlVNCmNkIC9SQUlELyRO
VU0KZGF0ZSA+PiAkTE9HCmVjaG8gQWJvdXQgdG8gdG1jcCA+PiAkTE9HCnRtY3AgL2Y6OTAwMDAg
L206MSAvYjoxMDI0IC8xID4vZGV2L251bGwKZGF0ZSA+PiAkTE9HCmVjaG8gQWJvdXQgdG8gZGVs
ZXRlID4+ICRMT0cKY2QgLwpybSAtcmYgL1JBSUQvJE5VTQo=

--0__=mZjquYhAa8G9OyczsaJpisLOuvEaEGyp4GnaiBByZ8HIwBAbgYVvxKvI--



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?80256977.00547AA1.00>