From owner-freebsd-scsi Fri Oct 13 8:21:54 2000 Delivered-To: freebsd-scsi@freebsd.org Received: from relay2.mail.uk.psi.net (relay2.mail.uk.psi.net [154.32.107.6]) by hub.freebsd.org (Postfix) with ESMTP id AE48037B502; Fri, 13 Oct 2000 08:21:27 -0700 (PDT) Received: from mail.plasmon.co.uk ([193.115.5.217]) by relay2.mail.uk.psi.net with smtp (Exim 2.12 #2) id 13k6e1-0006ho-00; Fri, 13 Oct 2000 16:21:13 +0100 Received: by mail.plasmon.co.uk(Lotus SMTP MTA v4.6.4 (830.2 3-23-1999)) id 80256977.00547C7D ; Fri, 13 Oct 2000 16:22:48 +0100 X-Lotus-FromDomain: PLASNOTES From: dbhague@allstor-sw.co.uk To: freebsd-scsi@FreeBSD.org, freebsd-fs@FreeBSD.org Cc: gibbs@scsiguy.com, mjacob@feral.com, Andre Albsmeier , smcintyre@allstor-sw.co.uk Message-ID: <80256977.00547AA1.00@mail.plasmon.co.uk> Date: Fri, 13 Oct 2000 16:22:43 +0100 Subject: Re: Stressed SCSI subsystem locks up the system Mime-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=mZjquYhAa8G9OyczsaJpisLOuvEaEGyp4GnaiBByZ8HIwBAbgYVvxKvI" Content-Disposition: inline Sender: owner-freebsd-scsi@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org --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