From: "Lever, Charles" Subject: [PATCH] 1/3 - RPC metrics support Date: Wed, 31 Mar 2004 08:34:20 -0800 Sender: nfs-admin@lists.sourceforge.net Message-ID: <482A3FA0050D21419C269D13989C61130435DE31@lavender-fe.eng.netapp.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C4173E.04651E1C" Cc: Return-path: Received: from sc8-sf-mx1-b.sourceforge.net ([10.3.1.11] helo=sc8-sf-mx1.sourceforge.net) by sc8-sf-list2.sourceforge.net with esmtp (Exim 4.30) id 1B8ifh-00082X-Dn for nfs@lists.sourceforge.net; Wed, 31 Mar 2004 08:34:33 -0800 Received: from mx01.netapp.com ([198.95.226.53]) by sc8-sf-mx1.sourceforge.net with esmtp (Exim 4.30) id 1B8ifh-0006Hw-5N for nfs@lists.sourceforge.net; Wed, 31 Mar 2004 08:34:33 -0800 To: "Trond Myklebust" , "Olaf Kirch" , "Steve Dickson" , "Jeremy McNicoll" , "Patrick Mochel" Errors-To: nfs-admin@lists.sourceforge.net List-Unsubscribe: , List-Id: Discussion of NFS under Linux development, interoperability, and testing. List-Post: List-Help: List-Subscribe: , List-Archive: This is a multi-part message in MIME format. ------_=_NextPart_001_01C4173E.04651E1C Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable This patch provides a generic interface to the RPC client for tallying per RPC request measurements. The interface can be used by any in-kernel application that calls the RPC client. The API is: rpc_alloc_tally rpc_clear_tally Provides a way for ULPs (upper level protocols) to allocate and free that data structure that will hold the measurement totals. This structure is passed in to any RPC request that the ULP wants to have a measurement for. rpc_print_tally Passing a seq_file and an RPC tally structure to this routine causes a formatted human-readable byte stream representation of the tally struct to appear on the seq_file. rpc_clear_tally Clear the counter fields in the RPC tally structure. - Chuck Lever -- corporate: personal: ------_=_NextPart_001_01C4173E.04651E1C Content-Type: application/octet-stream; name="06-rpc_metrics.patch" Content-Transfer-Encoding: base64 Content-Description: 06-rpc_metrics.patch Content-Disposition: attachment; filename="06-rpc_metrics.patch" ZGlmZiAtWCAuLi8uLi9kb250LWRpZmYgLU5hdXJwIDA1LWRpci1zY2hlZHVsZS9pbmNsdWRlL2xp bnV4L3N1bnJwYy9jbG50LmggMDYtcnBjX21ldHJpY3MvaW5jbHVkZS9saW51eC9zdW5ycGMvY2xu dC5oDQotLS0gMDUtZGlyLXNjaGVkdWxlL2luY2x1ZGUvbGludXgvc3VucnBjL2NsbnQuaAkyMDA0 LTAzLTEwIDIxOjU1OjMzLjAwMDAwMDAwMCAtMDUwMA0KKysrIDA2LXJwY19tZXRyaWNzL2luY2x1 ZGUvbGludXgvc3VucnBjL2NsbnQuaAkyMDA0LTAzLTI5IDE1OjE2OjQxLjU4MDI0MDAwMCAtMDUw MA0KQEAgLTEwMiw2ICsxMDIsNyBAQCBzdHJ1Y3QgcnBjX3Byb2NpbmZvIHsNCiAJdW5zaWduZWQg aW50CQlwX2J1ZnNpejsJLyogcmVxLiBidWZmZXIgc2l6ZSAqLw0KIAl1bnNpZ25lZCBpbnQJCXBf Y291bnQ7CS8qIGNhbGwgY291bnQgKi8NCiAJdW5zaWduZWQgaW50CQlwX3RpbWVyOwkvKiBXaGlj aCBSVFQgdGltZXIgdG8gdXNlICovDQorCWNoYXIgKgkJCXBfbmFtZTsJCS8qIG5hbWUgb2YgcHJv Y2VkdXJlICovDQogfTsNCiANCiAjZGVmaW5lIFJQQ19DT05HRVNURUQoY2xudCkJKFJQQ1hQUlRf Q09OR0VTVEVEKChjbG50KS0+Y2xfeHBydCkpDQpkaWZmIC1YIC4uLy4uL2RvbnQtZGlmZiAtTmF1 cnAgMDUtZGlyLXNjaGVkdWxlL2luY2x1ZGUvbGludXgvc3VucnBjL21ldHJpY3MuaCAwNi1ycGNf bWV0cmljcy9pbmNsdWRlL2xpbnV4L3N1bnJwYy9tZXRyaWNzLmgNCi0tLSAwNS1kaXItc2NoZWR1 bGUvaW5jbHVkZS9saW51eC9zdW5ycGMvbWV0cmljcy5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAw MDAwMDAwIC0wNTAwDQorKysgMDYtcnBjX21ldHJpY3MvaW5jbHVkZS9saW51eC9zdW5ycGMvbWV0 cmljcy5oCTIwMDQtMDMtMzAgMTM6MDU6MTEuMzg1MjQzMDAwIC0wNTAwDQpAQCAtMCwwICsxLDEy NSBAQA0KKy8qDQorICogIGxpbnV4L2luY2x1ZGUvbGludXgvc3VucnBjL21ldHJpY3MuaA0KKyAq DQorICogIERlY2xhcmF0aW9ucyBmb3IgUlBDIGNsaWVudCBwZXItb3BlcmF0aW9uIG1ldHJpY3MN CisgKg0KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQJQ2h1Y2sgTGV2ZXIgPGNlbEBuZXRhcHAuY29t Pg0KKyAqLw0KKw0KKyNpZm5kZWYgX0xJTlVYX1NVTlJQQ19NRVRSSUNTX0gNCisjZGVmaW5lIF9M SU5VWF9TVU5SUENfTUVUUklDU19IDQorDQorI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4NCisjaW5j bHVkZSA8bGludXgvc2VxX2ZpbGUuaD4NCisNCisjZGVmaW5lIFJQQ19VU0VDU19QRVJfU0VDCSgx MDAwMDAwVUxMKQ0KKyNkZWZpbmUgUlBDX1VTRUNTX1BFUl9IT1VSCSgzNjAwVUxMICogUlBDX1VT RUNTX1BFUl9TRUMpDQorDQorLyoNCisgKiBUaGlzIGNvbXB1dGVzIHRoZSBlbGFwc2VkIHRpbWUg ZnJvbSB0aGVuIHRpbCBub3csDQorICogaW4gbWljcm9zZWNvbmRzLiAgV2UgY2FwIHRoaXMgYXQg b25lIGhvdXIuDQorICovDQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nDQorcnBjX2NhbGNf bGF0ZW5jeShzdHJ1Y3QgdGltZXZhbCAqdGhlbikNCit7DQorCXN0cnVjdCB0aW1ldmFsIG5vdzsN CisJbG9uZyBzZWNzLCB1c2VjczsNCisJdW5zaWduZWQgbG9uZyBsb25nIHJlc3VsdDsNCisNCisJ ZG9fZ2V0dGltZW9mZGF5KCZub3cpOw0KKw0KKwlzZWNzID0gbm93LnR2X3NlYyAtIHRoZW4tPnR2 X3NlYzsNCisJdXNlY3MgPSBub3cudHZfdXNlYyAtIHRoZW4tPnR2X3VzZWM7DQorCXJlc3VsdCA9 ICgoc2VjcyAqIFJQQ19VU0VDU19QRVJfU0VDKSArIHVzZWNzKTsNCisJaWYgKHJlc3VsdCA+IFJQ Q19VU0VDU19QRVJfSE9VUikNCisJCXJlc3VsdCA9IDBVTEw7DQorDQorCXJldHVybiAodW5zaWdu ZWQgbG9uZykgcmVzdWx0Ow0KK30NCisNCisvKg0KKyAqIE1ldHJpY3MgY2FwdHVyZWQgZm9yIGVh Y2ggUlBDIHJlcXVlc3QgKG9uZSBvZiB0aGVzZSBwZXIgcnBjX3Rhc2spDQorICovDQorc3RydWN0 IHJwY19tZXRyaWNzIHsNCisJc3RydWN0IHRpbWV2YWwJCXJtX3Rhc2tfc3RhcnQ7CS8qIFJQQyBl eGVjdXRlIHRpbWUgKi8NCisJc3RydWN0IHRpbWV2YWwJCXJtX3htaXRfdGltZTsJLyogUlBDIHRy YW5zbWl0IHRpbWUgKi8NCisJdW5zaWduZWQgbG9uZwkJcm1fcnR0OwkJLyogUlBDIHJvdW5kLXRy aXAgdGltZSAqLw0KKwlzaXplX3QJCQlybV9ieXRlc19zZW50LAkvKiBkYXRhIGJ5dGVzIHRyYW5z bWl0dGVkICovDQorCQkJCXJtX2J5dGVzX3JlY3YsCS8qIGRhdGEgYnl0ZXMgcmVjZWl2ZWQgKi8N CisJCQkJcm1fc29ja19zbmRidWY7CS8qIHNvY2tldCBidWZmZXIgdXRpbGl6YXRpb24gKi8NCisJ dW5zaWduZWQgaW50CQlybV9udHJhbnMsCS8qIG51bWJlciBvZiB0cmFuc21pc3Npb25zICovDQor CQkJCXJtX2N3bmQsCS8qIGNvbmdlc3Rpb24gd2luZG93IHNpemUgKi8NCisJCQkJcm1fY29uZywJ LyogY29uZ2VzdGlvbiB3aW5kb3cgZmlsbCAqLw0KKwkJCQlybV9zbG90cywJLyogc2xvdCB0YWJs ZSB1dGlsaXphdGlvbiAqLw0KKwkJCQlybV9zbmRxLAkvKiBzZW5kIHF1ZXVlIHV0aWxpemF0aW9u ICovDQorCQkJCXJtX2JhY2tsb2c7CS8qIGJhY2tsb2cgdXRpbGl6YXRpb24gKi8NCit9Ow0KKw0K Ky8qDQorICogTWV0cmljcyBjYXB0dXJlZCBmb3IgYW4gUlBDIHRyYW5zcG9ydCAob25lIG9mIHRo ZXNlIHBlciBycGNfeHBydCkNCisgKi8NCitzdHJ1Y3QgeHBydF9tZXRyaWNzIHsNCisJc3RydWN0 IHRpbWV2YWwJCXhtX2Nvbm5fc3RhcnQ7CS8qIHdoZW4gd2Ugc3RhcnRlZCBjb25uZWN0aW5nICov DQorCXVuc2lnbmVkIGxvbmcgbG9uZwl4bV9jb25uX3dhaXQ7CS8qIHRvdGFsIHdhaXQgZm9yIGNv bm5lY3QgKi8NCisJdW5zaWduZWQgbG9uZwkJeG1fY29ubmVjdHM7CS8qIHRvdGFsIGNvdW50IG9m IGNvbm5lY3RzICovDQorDQorCXVuc2lnbmVkIGludAkJeG1fc2xvdHNfaW51c2U7CS8qIG91dHN0 YW5kaW5nIHJlcXVlc3RzICovDQorCXVuc2lnbmVkIGludAkJeG1fc25kcV9sZW47CS8qIGxlbmd0 aCBvZiBzZW5kIHF1ZXVlICovDQorDQorCXVuc2lnbmVkIGludAkJeG1fYmFja2xvZ19sZW47CS8q IGxlbmd0aCBvZiBiYWNrbG9nIHF1ZXVlICovDQorCXVuc2lnbmVkIGxvbmcJCXhtX21ham9yX3Rt b3M7CS8qIHRvdGFsIG1ham9yIHRpbWVvdXRzICovDQorCXVuc2lnbmVkIGxvbmcJCXhtX3BhcnRp YWx3cnM7CS8qIHRvdGFsIHBhcnRpYWwgd3JpdGVzICovDQorCXVuc2lnbmVkIGxvbmcJCXhtX3dy aXRlc3BhY2U7CS8qIHRvdGFsIHdyaXRlIHNwYWNlIGNicyAqLw0KK307DQorDQorLyoNCisgKiBP bmUgb2YgdGhlc2UgaXMgYWxsb2NhdGVkIGZvciBlYWNoIFJQQyBvcGVyYXRpb24gdHlwZSwgcGVy IENQVS4NCisgKiBUaGUgYXJyYXkgb2YgdGhlc2UgaXMgaW5kZXhlZCBieSBDUFUgdGhlbiBieSBv cCB0eXBlLg0KKyAqLw0KK3N0cnVjdCBycGNfbWV0cmljX3RvdGFscyB7DQorCXVuc2lnbmVkIGxv bmcJCW10X29wcywJCS8qIGNvdW50IG9mIG9wZXJhdGlvbnMgKi8NCisJCQkJbXRfbnRyYW5zLAkv KiBjb3VudCBvZiBSUEMgdHJhbnNtaXNzaW9ucyAqLw0KKwkJCQltdF9jd25kLAkvKiBjb25nZXN0 aW9uIHdpbmRvdyB1dGlsICovDQorCQkJCW10X2NvbmcsCS8qIGNvbmdlc3Rpb24gd2luZG93IHV0 aWwgKi8NCisJCQkJbXRfc2xvdF91LAkvKiBzbG90IHRhYmxlIHV0aWxpemF0aW9uICovDQorCQkJ CW10X3NuZHFfdSwJLyogc2VuZCBxdWV1ZSB1dGlsaXphdGlvbiAqLw0KKwkJCQltdF9ia2xvZ191 LAkvKiBiYWNrbG9nIHV0aWxpemF0aW9uICovDQorCQkJCW10X2Vycm9yczsJLyogY291bnQgb2Yg RUlPIGVycm9ycyAqLw0KKw0KKwl1bnNpZ25lZCBsb25nIGxvbmcgICAgICBtdF9ieXRlc19zZW50 LAkvKiBjb3VudCBvZiBieXRlcyBvdXQgKi8NCisJCQkJbXRfYnl0ZXNfcmVjdiwJLyogY291bnQg b2YgYnl0ZXMgaW4gKi8NCisJCQkJbXRfc2VuZGJ1ZjsJLyogdG90YWwgc2VuZGJ1ZiAqLw0KKw0K Kwl1bnNpZ25lZCBsb25nIGxvbmcJbXRfcnR0LAkJLyogdXNlY3MgZm9yIFJQQyBSVFQgKi8NCisJ CQkJbXRfcnR0X3MsCS8qIHN1bShydHQqKjIpICovDQorCQkJCW10X2V4ZWN1dGUsCS8qIHVzZWNz IGZvciBSUEMgZXhlY3V0aW9uICovDQorCQkJCW10X2V4ZWN1dGVfczsJLyogc3VtKGV4ZWN1dGUq KjIpICovDQorfTsNCisNCitzdHJ1Y3QgcnBjX3Byb2dyYW07DQorc3RydWN0IHJwY192ZXJzaW9u Ow0KK3N0cnVjdCBycGNfdGFzazsNCitzdHJ1Y3QgcnBjX3hwcnQ7DQorDQorLyoNCisgKiBQYXNz ZWQgaW4gdmlhIHJwY19tZXNzYWdlIGZvciBjb2xsZWN0aW5nIFJQQyBtZXRyaWNzIGRhdGENCisg Ki8NCitzdHJ1Y3QgcnBjX3RhbGx5IHsNCisJc3RydWN0IHJwY19wcm9ncmFtICoJCXRsX3Byb2dy YW07DQorCXN0cnVjdCBycGNfdmVyc2lvbiAqCQl0bF92ZXJzaW9uOw0KKwlzdHJ1Y3QgcnBjX3hw cnQgKgkJdGxfeHBydDsNCisJc3RydWN0IHJwY19tZXRyaWNfdG90YWxzICoJdGxfdG90YWxzW05S X0NQVVNdOw0KK307DQorDQorLyoNCisgKiBFWFBPUlRlZCBmdW5jdGlvbnMgZm9yIG1hbmFnaW5n IHRhbGx5IHN0cnVjdHVyZXMNCisgKi8NCitzdHJ1Y3QgcnBjX3RhbGx5ICoJcnBjX2FsbG9jX3Rh bGx5KHN0cnVjdCBycGNfcHJvZ3JhbSAqLCBzdHJ1Y3QgcnBjX3ZlcnNpb24gKiwNCisJCQkJCQkJ c3RydWN0IHJwY194cHJ0ICopOw0KK3ZvaWQJCQlycGNfc3RhcnRfdGFsbHkoc3RydWN0IHJwY190 YXNrICopOw0KK3ZvaWQJCQlycGNfZW5kX3RhbGx5KHN0cnVjdCBycGNfdGFzayAqKTsNCit2b2lk CQkJcnBjX3ByaW50X3RhbGx5KHN0cnVjdCBzZXFfZmlsZSAqLCBzdHJ1Y3QgcnBjX3RhbGx5ICop Ow0KK3ZvaWQJCQlycGNfY2xlYXJfdGFsbHkoc3RydWN0IHJwY190YWxseSAqKTsNCit2b2lkCQkJ cnBjX2ZyZWVfdGFsbHkoc3RydWN0IHJwY190YWxseSAqKTsNCisNCisjZW5kaWYgLyogX0xJTlVY X1NVTlJQQ19NRVRSSUNTX0ggKi8NCmRpZmYgLVggLi4vLi4vZG9udC1kaWZmIC1OYXVycCAwNS1k aXItc2NoZWR1bGUvaW5jbHVkZS9saW51eC9zdW5ycGMvc2NoZWQuaCAwNi1ycGNfbWV0cmljcy9p bmNsdWRlL2xpbnV4L3N1bnJwYy9zY2hlZC5oDQotLS0gMDUtZGlyLXNjaGVkdWxlL2luY2x1ZGUv bGludXgvc3VucnBjL3NjaGVkLmgJMjAwNC0wMy0yNiAxNDoyOTozOC40NTYyNDAwMDAgLTA1MDAN CisrKyAwNi1ycGNfbWV0cmljcy9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zY2hlZC5oCTIwMDQtMDMt MjkgMTc6NTk6MzMuNTY4MjQwMDAwIC0wNTAwDQpAQCAtMTAsNiArMTAsNyBAQA0KICNkZWZpbmUg X0xJTlVYX1NVTlJQQ19TQ0hFRF9IXw0KIA0KICNpbmNsdWRlIDxsaW51eC90aW1lci5oPg0KKyNp bmNsdWRlIDxsaW51eC9zdW5ycGMvbWV0cmljcy5oPg0KICNpbmNsdWRlIDxsaW51eC9zdW5ycGMv dHlwZXMuaD4NCiAjaW5jbHVkZSA8bGludXgvd2FpdC5oPg0KICNpbmNsdWRlIDxsaW51eC9zdW5y cGMveGRyLmg+DQpAQCAtMjMsNiArMjQsNyBAQCBzdHJ1Y3QgcnBjX21lc3NhZ2Ugew0KIAl2b2lk ICoJCQlycGNfYXJncDsJLyogQXJndW1lbnRzICovDQogCXZvaWQgKgkJCXJwY19yZXNwOwkvKiBS ZXN1bHQgKi8NCiAJc3RydWN0IHJwY19jcmVkICoJcnBjX2NyZWQ7CS8qIENyZWRlbnRpYWxzICov DQorCXN0cnVjdCBycGNfdGFsbHkgKglycGNfdGFscDsJLyogVGFsbHkgbWV0cmljcyAqLw0KIH07 DQogDQogLyoNCkBAIC04MCw2ICs4Miw3IEBAIHN0cnVjdCBycGNfdGFzayB7DQogI2lmZGVmIFJQ Q19ERUJVRw0KIAl1bnNpZ25lZCBzaG9ydAkJdGtfcGlkOwkJLyogZGVidWdnaW5nIGFpZCAqLw0K ICNlbmRpZg0KKwlzdHJ1Y3QgcnBjX21ldHJpY3MJdGtfbWV0cmljczsJLyogcGVyLW9wIHN0YXRp c3RpY3MgKi8NCiB9Ow0KICNkZWZpbmUgdGtfYXV0aAkJCXRrX2NsaWVudC0+Y2xfYXV0aA0KICNk ZWZpbmUgdGtfeHBydAkJCXRrX2NsaWVudC0+Y2xfeHBydA0KZGlmZiAtWCAuLi8uLi9kb250LWRp ZmYgLU5hdXJwIDA1LWRpci1zY2hlZHVsZS9pbmNsdWRlL2xpbnV4L3N1bnJwYy94cHJ0LmggMDYt cnBjX21ldHJpY3MvaW5jbHVkZS9saW51eC9zdW5ycGMveHBydC5oDQotLS0gMDUtZGlyLXNjaGVk dWxlL2luY2x1ZGUvbGludXgvc3VucnBjL3hwcnQuaAkyMDA0LTAzLTI2IDE0OjI5OjM4LjQ4NTI0 MDAwMCAtMDUwMA0KKysrIDA2LXJwY19tZXRyaWNzL2luY2x1ZGUvbGludXgvc3VucnBjL3hwcnQu aAkyMDA0LTAzLTI5IDE1OjE2OjQxLjU4OTI0NzAwMCAtMDUwMA0KQEAgLTE4OCw2ICsxODgsNyBA QCBzdHJ1Y3QgcnBjX3hwcnQgew0KIA0KIAlzdHJ1Y3QgbGlzdF9oZWFkCXJlY3Y7DQogDQorCXN0 cnVjdCB4cHJ0X21ldHJpY3MJbWV0cmljczsNCiANCiAJdm9pZAkJCSgqb2xkX2RhdGFfcmVhZHkp KHN0cnVjdCBzb2NrICosIGludCk7DQogCXZvaWQJCQkoKm9sZF9zdGF0ZV9jaGFuZ2UpKHN0cnVj dCBzb2NrICopOw0KZGlmZiAtWCAuLi8uLi9kb250LWRpZmYgLU5hdXJwIDA1LWRpci1zY2hlZHVs ZS9uZXQvc3VucnBjL2NsbnQuYyAwNi1ycGNfbWV0cmljcy9uZXQvc3VucnBjL2NsbnQuYw0KLS0t IDA1LWRpci1zY2hlZHVsZS9uZXQvc3VucnBjL2NsbnQuYwkyMDA0LTAzLTI2IDE0OjI5OjM4LjUx OTI0MjAwMCAtMDUwMA0KKysrIDA2LXJwY19tZXRyaWNzL25ldC9zdW5ycGMvY2xudC5jCTIwMDQt MDMtMjkgMTU6MTY6NDEuNTkzMjQwMDAwIC0wNTAwDQpAQCAtNzk3LDYgKzc5Nyw3IEBAIGNhbGxf dGltZW91dChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spDQogCXRvLT50b19yZXRyaWVzID0gY2xudC0+ Y2xfdGltZW91dC50b19yZXRyaWVzOw0KIA0KIAlkcHJpbnRrKCJSUEM6ICU0ZCBjYWxsX3RpbWVv dXQgKG1ham9yKVxuIiwgdGFzay0+dGtfcGlkKTsNCisJY2xudC0+Y2xfeHBydC0+bWV0cmljcy54 bV9tYWpvcl90bW9zKys7DQogCWlmIChSUENfSVNfU09GVCh0YXNrKSkgew0KIAkJaWYgKGNsbnQt PmNsX2NoYXR0eSkNCiAJCQlwcmludGsoS0VSTl9OT1RJQ0UgIiVzOiBzZXJ2ZXIgJXMgbm90IHJl c3BvbmRpbmcsIHRpbWVkIG91dFxuIiwNCmRpZmYgLVggLi4vLi4vZG9udC1kaWZmIC1OYXVycCAw NS1kaXItc2NoZWR1bGUvbmV0L3N1bnJwYy9zY2hlZC5jIDA2LXJwY19tZXRyaWNzL25ldC9zdW5y cGMvc2NoZWQuYw0KLS0tIDA1LWRpci1zY2hlZHVsZS9uZXQvc3VucnBjL3NjaGVkLmMJMjAwNC0w My0yNiAxNDoyOTozOC41MzcyNDAwMDAgLTA1MDANCisrKyAwNi1ycGNfbWV0cmljcy9uZXQvc3Vu cnBjL3NjaGVkLmMJMjAwNC0wMy0yOSAxNToxNjo0MS41OTgyNDAwMDAgLTA1MDANCkBAIC04OTAs NiArODkwLDkgQEAgdm9pZCBycGNfaW5pdF90YXNrKHN0cnVjdCBycGNfdGFzayAqdGFzaw0KIAl0 YXNrLT50a19tYWdpYyA9IDB4ZjAwYmFhOw0KIAl0YXNrLT50a19waWQgPSBycGNfdGFza19pZCsr Ow0KICNlbmRpZg0KKw0KKwlycGNfc3RhcnRfdGFsbHkodGFzayk7DQorDQogCWRwcmludGsoIlJQ QzogJTRkIG5ldyB0YXNrIHByb2NwaWQgJWRcbiIsIHRhc2stPnRrX3BpZCwNCiAJCQkJY3VycmVu dC0+cGlkKTsNCiB9DQpAQCAtOTU2LDYgKzk1OSw5IEBAIHJwY19yZWxlYXNlX3Rhc2soc3RydWN0 IHJwY190YXNrICp0YXNrKQ0KIAl9DQogI2VuZGlmDQogDQorCS8qIFRhbGx5IHBlci1vcCBzdGF0 aXN0aWNzICovDQorCXJwY19lbmRfdGFsbHkodGFzayk7DQorDQogCS8qIFJlbW92ZSBmcm9tIGds b2JhbCB0YXNrIGxpc3QgKi8NCiAJc3Bpbl9sb2NrKCZycGNfc2NoZWRfbG9jayk7DQogCWxpc3Rf ZGVsKCZ0YXNrLT50a190YXNrKTsNCmRpZmYgLVggLi4vLi4vZG9udC1kaWZmIC1OYXVycCAwNS1k aXItc2NoZWR1bGUvbmV0L3N1bnJwYy9zdGF0cy5jIDA2LXJwY19tZXRyaWNzL25ldC9zdW5ycGMv c3RhdHMuYw0KLS0tIDA1LWRpci1zY2hlZHVsZS9uZXQvc3VucnBjL3N0YXRzLmMJMjAwNC0wMy0x MCAyMTo1NTo1NC4wMDAwMDAwMDAgLTA1MDANCisrKyAwNi1ycGNfbWV0cmljcy9uZXQvc3VucnBj L3N0YXRzLmMJMjAwNC0wMy0zMSAxMDo1MToyNC4yOTYwMDAwMDAgLTA1MDANCkBAIC0yMCw2ICsy MCw3IEBADQogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCiAjaW5jbHVkZSA8bGludXgvc2Vx X2ZpbGUuaD4NCiAjaW5jbHVkZSA8bGludXgvc3VucnBjL2NsbnQuaD4NCisjaW5jbHVkZSA8bGlu dXgvc3VucnBjL3NjaGVkLmg+DQogI2luY2x1ZGUgPGxpbnV4L3N1bnJwYy9zdmNzb2NrLmg+DQog DQogI2RlZmluZSBSUENEQkdfRkFDSUxJVFkJUlBDREJHX01JU0MNCkBAIC0xMDcsNiArMTA4LDI1 NSBAQCB2b2lkIHN2Y19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgDQogfQ0KIA0KIC8q DQorICogRXhwb3J0IGEgZ2VuZXJpYyBtZWNoYW5pc20gZm9yIFJQQyBjbGllbnQgYXBwbGljYXRp b25zIHRvIGNvbGxlY3QgYW5kDQorICogcmVwb3J0IHBlci1SUEMgc3RhdGlzdGljcy4NCisgKi8N CitzdHJ1Y3QgcnBjX3RhbGx5ICoNCitycGNfYWxsb2NfdGFsbHkoc3RydWN0IHJwY19wcm9ncmFt ICpwcm9nLCBzdHJ1Y3QgcnBjX3ZlcnNpb24gKnZlcnNpb24sDQorCXN0cnVjdCBycGNfeHBydCAq eHBydCkNCit7DQorCXVuc2lnbmVkIGludCBpLCBzaXplLCBvcHM7DQorCXN0cnVjdCBycGNfdGFs bHkgKm5ldzsNCisJc3RydWN0IHJwY19tZXRyaWNfdG90YWxzICp0Ow0KKw0KKwkvKiBvbmUgcGll Y2Ugb2YgbWVtb3J5IGZvciB0YWxseSBzdHJ1Y3QgYW5kIG1ldHJpY3MgYXJyYXkgKi8NCisJb3Bz ID0gdmVyc2lvbi0+bnJwcm9jczsNCisJc2l6ZSA9IE5SX0NQVVMgKiBvcHMgKiBzaXplb2Yoc3Ry dWN0IHJwY19tZXRyaWNfdG90YWxzKTsNCisJc2l6ZSArPSBzaXplb2Yoc3RydWN0IHJwY190YWxs eSk7DQorDQorCW5ldyA9IChzdHJ1Y3QgcnBjX3RhbGx5ICopIGttYWxsb2Moc2l6ZSwgR0ZQX0tF Uk5FTCk7DQorCWlmIChuZXcpIHsNCisJCW1lbXNldChuZXcsIDAsIHNpemUpOw0KKwkJbmV3LT50 bF94cHJ0ID0geHBydDsNCisJCW5ldy0+dGxfcHJvZ3JhbSA9IHByb2c7DQorCQluZXctPnRsX3Zl cnNpb24gPSB2ZXJzaW9uOw0KKw0KKwkJLyogc2F2ZSBhIHBvaW50ZXIgZm9yIGVhY2ggQ1BVJ3Mg c2V0IG9mIG1ldHJpYyB0b3RhbHMgKi8NCisJCXQgPSAoc3RydWN0IHJwY19tZXRyaWNfdG90YWxz ICopICZuZXdbMV07DQorCQlmb3IgKGkgPSAwOyBpIDwgTlJfQ1BVUzsgaSsrKSB7DQorCQkJbmV3 LT50bF90b3RhbHNbaV0gPSB0Ow0KKwkJCXQgKz0gb3BzOw0KKwkJfQ0KKwl9DQorCXJldHVybiBu ZXc7DQorfQ0KKw0KK3ZvaWQNCitycGNfZnJlZV90YWxseShzdHJ1Y3QgcnBjX3RhbGx5ICp0YWxs eSkNCit7DQorCWtmcmVlKHRhbGx5KTsNCit9DQorDQordm9pZA0KK3JwY19zdGFydF90YWxseShz dHJ1Y3QgcnBjX3Rhc2sgKnRhc2spDQorew0KKwlkb19nZXR0aW1lb2ZkYXkoJnRhc2stPnRrX21l dHJpY3Mucm1fdGFza19zdGFydCk7DQorfQ0KKw0KK3ZvaWQNCitycGNfZW5kX3RhbGx5KHN0cnVj dCBycGNfdGFzayAqdGFzaykNCit7DQorCXVuc2lnbmVkIGxvbmcgbG9uZyB0bXA7DQorCXVuc2ln bmVkIGludCBvcCA9IHRhc2stPnRrX21zZy5ycGNfcHJvYy0+cF9wcm9jOw0KKwlzdHJ1Y3QgcnBj X3RhbGx5ICp0YWxseSA9IHRhc2stPnRrX21zZy5ycGNfdGFscDsNCisJc3RydWN0IHJwY19tZXRy aWNzICptOw0KKwlzdHJ1Y3QgcnBjX21ldHJpY190b3RhbHMgKnQ7DQorDQorCWlmICghdGFsbHkp DQorCQlyZXR1cm47DQorDQorCXQgPSB0YWxseS0+dGxfdG90YWxzW3NtcF9wcm9jZXNzb3JfaWQo KV07DQorCXQgPSAmdFtvcF07DQorCW0gPSAmdGFzay0+dGtfbWV0cmljczsNCisNCisJdC0+bXRf b3BzKys7DQorDQorCXQtPm10X250cmFucyArPSBtLT5ybV9udHJhbnM7DQorCXQtPm10X2N3bmQg Kz0gbS0+cm1fY3duZDsNCisJdC0+bXRfY29uZyArPSBtLT5ybV9jb25nOw0KKwl0LT5tdF9zbG90 X3UgKz0gbS0+cm1fc2xvdHM7DQorCXQtPm10X3NuZHFfdSArPSBtLT5ybV9zbmRxOw0KKwl0LT5t dF9ia2xvZ191ICs9IG0tPnJtX2JhY2tsb2c7DQorDQorCWlmICh0YXNrLT50a19zdGF0dXMgPT0g RUlPKQ0KKwkJdC0+bXRfZXJyb3JzKys7DQorDQorCXQtPm10X2J5dGVzX3NlbnQgKz0gKHVuc2ln bmVkIGxvbmcgbG9uZykgbS0+cm1fYnl0ZXNfc2VudDsNCisJdC0+bXRfYnl0ZXNfcmVjdiArPSAo dW5zaWduZWQgbG9uZyBsb25nKSBtLT5ybV9ieXRlc19yZWN2Ow0KKwl0LT5tdF9zZW5kYnVmICs9 ICh1bnNpZ25lZCBsb25nIGxvbmcpIG0tPnJtX3NvY2tfc25kYnVmOw0KKw0KKwl0bXAgPSAodW5z aWduZWQgbG9uZyBsb25nKSBtLT5ybV9ydHQ7DQorCXQtPm10X3J0dCArPSB0bXA7DQorCXQtPm10 X3J0dF9zICs9IHRtcCAqIHRtcDsNCisJdG1wID0gKHVuc2lnbmVkIGxvbmcgbG9uZykgcnBjX2Nh bGNfbGF0ZW5jeSgmbS0+cm1fdGFza19zdGFydCk7DQorCXQtPm10X2V4ZWN1dGUgKz0gdG1wOw0K Kwl0LT5tdF9leGVjdXRlX3MgKz0gdG1wICogdG1wOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK19f cHJpbnRfbmFtZShzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHJwY192ZXJzaW9uICp2ZXJz LCB1bnNpZ25lZCBpbnQgb3ApDQorew0KKwlpZiAodmVycy0+cHJvY3Nbb3BdLnBfbmFtZSkNCisJ CXNlcV9wcmludGYoc2VxLCAiJTEyczogIiwgdmVycy0+cHJvY3Nbb3BdLnBfbmFtZSk7DQorCWVs c2UgaWYgKG9wID09IDApDQorCQlzZXFfcHJpbnRmKHNlcSwgIiAgICAgICAgTlVMTDogIik7DQor CWVsc2UNCisJCXNlcV9wcmludGYoc2VxLCAiJTEydTogIiwgb3ApOw0KK30NCisNCisvKg0KKyAq IFRPRE86IGFkZCBzb21lIEdTUyBtZXRyaWNzDQorICovDQordm9pZA0KK3JwY19wcmludF90YWxs eShzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHJwY190YWxseSAqdGFsbHkpDQorew0KKwlz dHJ1Y3QgcnBjX3Byb2dyYW0gKnByb2cgPSB0YWxseS0+dGxfcHJvZ3JhbTsNCisJc3RydWN0IHJw Y192ZXJzaW9uICp2ZXJzID0gdGFsbHktPnRsX3ZlcnNpb247DQorCXN0cnVjdCBycGNfbWV0cmlj X3RvdGFscyB0b3RhbDsNCisJdW5zaWduZWQgaW50IGksIG9wOw0KKw0KKwlzZXFfcHJpbnRmKHNl cSwgIlJQQyBtZXRyaWNzIHZlcnNpb246IDEuMFxuIik7DQorCXNlcV9wcmludGYoc2VxLA0KKwkJ InByb3RvY29sOiAnJXMnICBwcm9ncmFtOiAldSAgdmVyc2lvbjogJXVcbiIsDQorCQkJcHJvZy0+ bmFtZSwNCisJCQlwcm9nLT5udW1iZXIsDQorCQkJdmVycy0+bnVtYmVyKTsNCisNCisJLyoNCisJ ICogVHJhbnNwb3J0IHN0YXRzDQorCSAqLw0KKwlpZiAodGFsbHktPnRsX3hwcnQpIHsNCisJCWNv bnN0IHN0cnVjdCBycGNfeHBydCAqeHBydCA9IHRhbGx5LT50bF94cHJ0Ow0KKwkJY29uc3Qgc3Ry dWN0IHhwcnRfbWV0cmljcyAqbSA9ICZ4cHJ0LT5tZXRyaWNzOw0KKw0KKwkJc2VxX3ByaW50Zihz ZXEsDQorCQkJIlxudHJhbnNwb3J0IGlkbGUgdGltZTogJWx1IHNlY29uZHNcbiIsDQorCQkJCShq aWZmaWVzIC0geHBydC0+bGFzdF91c2VkKSAvIEhaKTsNCisJCXNlcV9wcmludGYoc2VxLA0KKwkJ CSJtYWpvciB0aW1lb3V0czogJWx1XG4iLA0KKwkJCQltLT54bV9tYWpvcl90bW9zKTsNCisJCXNl cV9wcmludGYoc2VxLA0KKwkJCSJ0cmFuc3BvcnQgcGFydGlhbCB3cml0ZXM6ICVsdVxuIiwNCisJ CQkJbS0+eG1fcGFydGlhbHdycyk7DQorCQlzZXFfcHJpbnRmKHNlcSwNCisJCQkid3JpdGVfc3Bh Y2UgY2FsbGJhY2tzOiAlbHVcbiIsDQorCQkJCW0tPnhtX3dyaXRlc3BhY2UpOw0KKwkJaWYgKHRh bGx5LT50bF94cHJ0LT5zdHJlYW0pIHsNCisJCQlzZXFfcHJpbnRmKHNlcSwgInRyYW5zcG9ydCBz b2NrZXQgdHlwZTogdGNwXG4iKTsNCisJCQlzZXFfcHJpbnRmKHNlcSwNCisJCQkJImNvbm5lY3Qg YXR0ZW1wdHM6ICVsdVxuIiwNCisJCQkJCW0tPnhtX2Nvbm5lY3RzKTsNCisJCQlzZXFfcHJpbnRm KHNlcSwNCisJCQkJInRvdGFsIGNvbm5lY3Qgd2FpdCB0aW1lOiAlTHUgdXNlY3NcbiIsDQorCQkJ CQltLT54bV9jb25uX3dhaXQpOw0KKwkJfSBlbHNlDQorCQkJc2VxX3ByaW50ZihzZXEsICJ0cmFu c3BvcnQgc29ja2V0IHR5cGU6IHVkcFxuIik7DQorCX0NCisNCisJLyoNCisJICogb3AgcmF0ZSBh bmQgYnl0ZSByYXRlIHN0YXRzDQorCSAqLw0KKwlzZXFfcHJpbnRmKHNlcSwgIlxuIyAgICAgb3B0 eXBlICAgIG9wIGNvdW50ICAgICAgICAgICAgIGJ5dGVzIGluIik7DQorCXNlcV9wcmludGYoc2Vx LCAiICAgICAgICAgICAgYnl0ZXMgb3V0ICAgICBudHJhbnMgICAgIGVycm9yc1xuIik7DQorDQor CWZvciAob3AgPSAwOyBvcCA8IHZlcnMtPm5ycHJvY3M7IG9wKyspIHsNCisJCW1lbXNldCgmdG90 YWwsIDAsIHNpemVvZihzdHJ1Y3QgcnBjX21ldHJpY190b3RhbHMpKTsNCisJCWZvciAoaSA9IDA7 IGkgPCBOUl9DUFVTOyBpKyspIHsNCisJCQlzdHJ1Y3QgcnBjX21ldHJpY190b3RhbHMgKnIgPSB0 YWxseS0+dGxfdG90YWxzW2ldOw0KKwkJCXIgPSAmcltvcF07DQorCQkJdG90YWwubXRfb3BzICs9 IHItPm10X29wczsNCisJCQl0b3RhbC5tdF9udHJhbnMgKz0gci0+bXRfbnRyYW5zOw0KKwkJCXRv dGFsLm10X2Vycm9ycyArPSByLT5tdF9lcnJvcnM7DQorCQkJdG90YWwubXRfYnl0ZXNfc2VudCAr PSByLT5tdF9ieXRlc19zZW50Ow0KKwkJCXRvdGFsLm10X2J5dGVzX3JlY3YgKz0gci0+bXRfYnl0 ZXNfcmVjdjsNCisJCX0NCisJCV9fcHJpbnRfbmFtZShzZXEsIHZlcnMsIG9wKTsNCisJCXNlcV9w cmludGYoc2VxLA0KKwkJCSIlMTBsdSAlMjBMdSAlMjBMdSAlMTBsdSAlMTBsdVxuIiwNCisJCQkJ dG90YWwubXRfb3BzLA0KKwkJCQl0b3RhbC5tdF9ieXRlc19yZWN2LA0KKwkJCQl0b3RhbC5tdF9i eXRlc19zZW50LA0KKwkJCQl0b3RhbC5tdF9udHJhbnMsDQorCQkJCXRvdGFsLm10X2Vycm9ycyk7 DQorCX0NCisNCisJLyoNCisJICogbGF0ZW5jeSBzdGF0cw0KKwkgKi8NCisJc2VxX3ByaW50Zihz ZXEsICJcbnRpY2tzL3NlYzogJUx1XG4iLCBSUENfVVNFQ1NfUEVSX1NFQyk7DQorCXNlcV9wcmlu dGYoc2VxLCAiIyAgICAgb3B0eXBlICAgICAgIHJ0dCB0b3RhbCB0aWNrcyAgICAgICAgIHN1bSBy dHQgKiogMiIpOw0KKwlzZXFfcHJpbnRmKHNlcSwgIiAgZXhlY3V0ZSB0b3RhbCB0aWNrcyAgICAg c3VtIGV4ZWN1dGUgKiogMlxuIik7DQorDQorCWZvciAob3AgPSAwOyBvcCA8IHZlcnMtPm5ycHJv Y3M7IG9wKyspIHsNCisJCW1lbXNldCgmdG90YWwsIDAsIHNpemVvZihzdHJ1Y3QgcnBjX21ldHJp Y190b3RhbHMpKTsNCisJCWZvciAoaSA9IDA7IGkgPCBOUl9DUFVTOyBpKyspIHsNCisJCQlzdHJ1 Y3QgcnBjX21ldHJpY190b3RhbHMgKnIgPSB0YWxseS0+dGxfdG90YWxzW2ldOw0KKwkJCXIgPSAm cltvcF07DQorCQkJdG90YWwubXRfcnR0ICs9IHItPm10X3J0dDsNCisJCQl0b3RhbC5tdF9ydHRf cyArPSByLT5tdF9ydHRfczsNCisJCQl0b3RhbC5tdF9leGVjdXRlICs9IHItPm10X2V4ZWN1dGU7 DQorCQkJdG90YWwubXRfZXhlY3V0ZV9zICs9IHItPm10X2V4ZWN1dGVfczsNCisJCX0NCisJCV9f cHJpbnRfbmFtZShzZXEsIHZlcnMsIG9wKTsNCisJCXNlcV9wcmludGYoc2VxLA0KKwkJCSIlMjBM dSAlMjBMdSAlMjBMdSAlMjBMdVxuIiwNCisJCQkJdG90YWwubXRfcnR0LA0KKwkJCQl0b3RhbC5t dF9ydHRfcywNCisJCQkJdG90YWwubXRfZXhlY3V0ZSwNCisJCQkJdG90YWwubXRfZXhlY3V0ZV9z KTsNCisJfQ0KKw0KKwkvKg0KKwkgKiBxdWV1ZSBzdGF0cw0KKwkgKi8NCisJc2VxX3ByaW50Zihz ZXEsICJcbiMgICAgIG9wdHlwZSAgIHNsb3QgdXRpbCAgICBiYWNrbG9nICBzbmRxIHV0aWwiKTsN CisJc2VxX3ByaW50ZihzZXEsICIgICAgICAgY3duZCAgICAgICBjb25nICAgICAgICAgICAgICBz ZW5kYnVmXG4iKTsNCisNCisJZm9yIChvcCA9IDA7IG9wIDwgdmVycy0+bnJwcm9jczsgb3ArKykg ew0KKwkJbWVtc2V0KCZ0b3RhbCwgMCwgc2l6ZW9mKHN0cnVjdCBycGNfbWV0cmljX3RvdGFscykp Ow0KKwkJZm9yIChpID0gMDsgaSA8IE5SX0NQVVM7IGkrKykgew0KKwkJCXN0cnVjdCBycGNfbWV0 cmljX3RvdGFscyAqciA9IHRhbGx5LT50bF90b3RhbHNbaV07DQorCQkJciA9ICZyW29wXTsNCisJ CQl0b3RhbC5tdF9zbG90X3UgKz0gci0+bXRfc2xvdF91Ow0KKwkJCXRvdGFsLm10X3NuZHFfdSAr PSByLT5tdF9zbmRxX3U7DQorCQkJdG90YWwubXRfYmtsb2dfdSArPSByLT5tdF9ia2xvZ191Ow0K KwkJCXRvdGFsLm10X3NlbmRidWYgKz0gci0+bXRfc2VuZGJ1ZjsNCisJCQl0b3RhbC5tdF9jd25k ICs9IHItPm10X2N3bmQ7DQorCQkJdG90YWwubXRfY29uZyArPSByLT5tdF9jb25nOw0KKwkJfQ0K KwkJX19wcmludF9uYW1lKHNlcSwgdmVycywgb3ApOw0KKwkJc2VxX3ByaW50ZihzZXEsICIlMTBs dSAlMTBsdSAlMTBsdSAlMTBsdSAlMTBsdSAlMjBMdVxuIiwNCisJCQkJdG90YWwubXRfc2xvdF91 LA0KKwkJCQl0b3RhbC5tdF9zbmRxX3UsDQorCQkJCXRvdGFsLm10X2JrbG9nX3UsDQorCQkJCXRv dGFsLm10X2N3bmQsDQorCQkJCXRvdGFsLm10X2NvbmcsDQorCQkJCXRvdGFsLm10X3NlbmRidWYp Ow0KKwl9DQorfQ0KKw0KK3ZvaWQNCitycGNfY2xlYXJfdGFsbHkoc3RydWN0IHJwY190YWxseSAq dGFsbHkpDQorew0KKwl1bnNpZ25lZCBpbnQgaSwgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnBjX21l dHJpY190b3RhbHMpICoNCisJCQkJCQl0YWxseS0+dGxfdmVyc2lvbi0+bnJwcm9jczsNCisJc3Ry dWN0IHhwcnRfbWV0cmljcyAqbSA9ICZ0YWxseS0+dGxfeHBydC0+bWV0cmljczsNCisNCisJZm9y IChpID0gMDsgaSA8IE5SX0NQVVM7IGkrKykNCisJCW1lbXNldCh0YWxseS0+dGxfdG90YWxzW2ld LCAwLCBzaXplKTsNCisNCisJLyogd2UgZG9uJ3QgY2xlYXIgdGltZS1yZWxhdGVkIGZpZWxkcyAg Ki8NCisJbS0+eG1fY29ubmVjdHMgPSAwVUw7DQorCW0tPnhtX2Nvbm5fd2FpdCA9IDBVTEw7DQor CW0tPnhtX3Nsb3RzX2ludXNlID0gMFU7DQorCW0tPnhtX3NuZHFfbGVuID0gMFU7DQorCW0tPnht X2JhY2tsb2dfbGVuID0gMFU7DQorCW0tPnhtX21ham9yX3Rtb3MgPSAwVTsNCisJbS0+eG1fcGFy dGlhbHdycyA9IDBVOw0KKwltLT54bV93cml0ZXNwYWNlID0gMFU7DQorfQ0KKw0KKy8qDQogICog UmVnaXN0ZXIvdW5yZWdpc3RlciBSUEMgcHJvYyBmaWxlcw0KICAqLw0KIHN0YXRpYyBpbmxpbmUg c3RydWN0IHByb2NfZGlyX2VudHJ5ICoNCmRpZmYgLVggLi4vLi4vZG9udC1kaWZmIC1OYXVycCAw NS1kaXItc2NoZWR1bGUvbmV0L3N1bnJwYy9zdW5ycGNfc3ltcy5jIDA2LXJwY19tZXRyaWNzL25l dC9zdW5ycGMvc3VucnBjX3N5bXMuYw0KLS0tIDA1LWRpci1zY2hlZHVsZS9uZXQvc3VucnBjL3N1 bnJwY19zeW1zLmMJMjAwNC0wMy0yNiAxNDoyOTozOC41NTEyNDAwMDAgLTA1MDANCisrKyAwNi1y cGNfbWV0cmljcy9uZXQvc3VucnBjL3N1bnJwY19zeW1zLmMJMjAwNC0wMy0yOSAxNToxNjo0MS42 MDUyNDYwMDAgLTA1MDANCkBAIC05Miw2ICs5MiwxMCBAQCBFWFBPUlRfU1lNQk9MKGF1dGhfZG9t YWluX2xvb2t1cCk7DQogDQogLyogUlBDIHN0YXRpc3RpY3MgKi8NCiAjaWZkZWYgQ09ORklHX1BS T0NfRlMNCitFWFBPUlRfU1lNQk9MKHJwY19hbGxvY190YWxseSk7DQorRVhQT1JUX1NZTUJPTChy cGNfcHJpbnRfdGFsbHkpOw0KK0VYUE9SVF9TWU1CT0wocnBjX2NsZWFyX3RhbGx5KTsNCitFWFBP UlRfU1lNQk9MKHJwY19mcmVlX3RhbGx5KTsNCiBFWFBPUlRfU1lNQk9MKHJwY19wcm9jX3JlZ2lz dGVyKTsNCiBFWFBPUlRfU1lNQk9MKHJwY19wcm9jX3VucmVnaXN0ZXIpOw0KIEVYUE9SVF9TWU1C T0woc3ZjX3Byb2NfcmVnaXN0ZXIpOw0KZGlmZiAtWCAuLi8uLi9kb250LWRpZmYgLU5hdXJwIDA1 LWRpci1zY2hlZHVsZS9uZXQvc3VucnBjL3hwcnQuYyAwNi1ycGNfbWV0cmljcy9uZXQvc3VucnBj L3hwcnQuYw0KLS0tIDA1LWRpci1zY2hlZHVsZS9uZXQvc3VucnBjL3hwcnQuYwkyMDA0LTAzLTI2 IDE0OjI5OjM4LjU4NjI0MzAwMCAtMDUwMA0KKysrIDA2LXJwY19tZXRyaWNzL25ldC9zdW5ycGMv eHBydC5jCTIwMDQtMDMtMzAgMTc6MjQ6MDguMTMyMjQwMDAwIC0wNTAwDQpAQCAtMjk4LDYgKzI5 OCw3IEBAIHN0YXRpYyBpbnQNCiBfX3hwcnRfZ2V0X2Nvbmcoc3RydWN0IHJwY194cHJ0ICp4cHJ0 LCBzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spDQogew0KIAlzdHJ1Y3QgcnBjX3Jxc3QgKnJlcSA9IHRh c2stPnRrX3Jxc3RwOw0KKwlzdHJ1Y3QgcnBjX21ldHJpY3MgKm1ldHJpY3MgPSAmdGFzay0+dGtf bWV0cmljczsNCiANCiAJaWYgKHJlcS0+cnFfY29uZykNCiAJCXJldHVybiAxOw0KQEAgLTMwNyw2 ICszMDgsOCBAQCBfX3hwcnRfZ2V0X2Nvbmcoc3RydWN0IHJwY194cHJ0ICp4cHJ0LCBzDQogCQly ZXR1cm4gMDsNCiAJcmVxLT5ycV9jb25nID0gMTsNCiAJeHBydC0+Y29uZyArPSBSUENfQ1dORFND QUxFOw0KKwltZXRyaWNzLT5ybV9jd25kID0geHBydC0+Y3duZDsNCisJbWV0cmljcy0+cm1fY29u ZyA9IHhwcnQtPmNvbmc7DQogCXJldHVybiAxOw0KIH0NCiANCkBAIC00ODcsNiArNDkwLDggQEAg c3RhdGljIHZvaWQgeHBydF9zb2NrZXRfY29ubmVjdCh2b2lkICphcg0KIAkvKg0KIAkgKiBUZWxs IHRoZSBzb2NrZXQgbGF5ZXIgdG8gc3RhcnQgY29ubmVjdGluZy4uLg0KIAkgKi8NCisJeHBydC0+ bWV0cmljcy54bV9jb25uZWN0cysrOw0KKwlkb19nZXR0aW1lb2ZkYXkoJnhwcnQtPm1ldHJpY3Mu eG1fY29ubl9zdGFydCk7DQogCXN0YXR1cyA9IHNvY2stPm9wcy0+Y29ubmVjdChzb2NrLCAoc3Ry dWN0IHNvY2thZGRyICopICZ4cHJ0LT5hZGRyLA0KIAkJCXNpemVvZih4cHJ0LT5hZGRyKSwgT19O T05CTE9DSyk7DQogCWRwcmludGsoIlJQQzogJXAgIGNvbm5lY3Qgc3RhdHVzICVkIGNvbm5lY3Rl ZCAlZCBzb2NrIHN0YXRlICVkXG4iLA0KQEAgLTU1OSw2ICs1NjQsOCBAQCB4cHJ0X2Nvbm5lY3Rf c3RhdHVzKHN0cnVjdCBycGNfdGFzayAqdGFzDQogCXN0cnVjdCBycGNfeHBydAkqeHBydCA9IHRh c2stPnRrX3hwcnQ7DQogDQogCWlmICh0YXNrLT50a19zdGF0dXMgPj0gMCkgew0KKwkJeHBydC0+ bWV0cmljcy54bV9jb25uX3dhaXQgKz0gKHVuc2lnbmVkIGxvbmcgbG9uZykNCisJCQlycGNfY2Fs Y19sYXRlbmN5KCZ4cHJ0LT5tZXRyaWNzLnhtX2Nvbm5fc3RhcnQpOw0KIAkJZHByaW50aygiUlBD OiAlNGQgeHBydF9jb25uZWN0X3N0YXR1czogY29ubmVjdGlvbiBlc3RhYmxpc2hlZFxuIiwNCiAJ CQkJdGFzay0+dGtfcGlkKTsNCiAJCXJldHVybjsNCkBAIC02MTMsNiArNjIwLDcgQEAgeHBydF9j b21wbGV0ZV9ycXN0KHN0cnVjdCBycGNfeHBydCAqeHBydA0KIHsNCiAJc3RydWN0IHJwY190YXNr CSp0YXNrID0gcmVxLT5ycV90YXNrOw0KIAlzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQgPSB0YXNrLT50 a19jbGllbnQ7DQorCXN0cnVjdCBycGNfbWV0cmljcyAqbWV0cmljcyA9ICZ0YXNrLT50a19tZXRy aWNzOw0KIA0KIAkvKiBBZGp1c3QgY29uZ2VzdGlvbiB3aW5kb3cgKi8NCiAJaWYgKCF4cHJ0LT5u b2NvbmcpIHsNCkBAIC02MjcsNiArNjM1LDEzIEBAIHhwcnRfY29tcGxldGVfcnFzdChzdHJ1Y3Qg cnBjX3hwcnQgKnhwcnQNCiAJCX0NCiAJfQ0KIA0KKwltZXRyaWNzLT5ybV9udHJhbnMgPSByZXEt PnJxX250cmFuczsNCisJbWV0cmljcy0+cm1fYnl0ZXNfcmVjdiA9IGNvcGllZDsNCisJbWV0cmlj cy0+cm1fc2xvdHMgPSB4cHJ0LT5tZXRyaWNzLnhtX3Nsb3RzX2ludXNlOw0KKwltZXRyaWNzLT5y bV9zbmRxID0geHBydC0+bWV0cmljcy54bV9zbmRxX2xlbjsNCisJbWV0cmljcy0+cm1fYmFja2xv ZyA9IHhwcnQtPm1ldHJpY3MueG1fYmFja2xvZ19sZW47DQorCW1ldHJpY3MtPnJtX3J0dCA9IHJw Y19jYWxjX2xhdGVuY3koJm1ldHJpY3MtPnJtX3htaXRfdGltZSk7DQorDQogI2lmZGVmIFJQQ19Q Uk9GSUxFDQogCS8qIFByb2ZpbGUgb25seSByZWFkcyBmb3Igbm93ICovDQogCWlmIChjb3BpZWQg PiAxMDI0KSB7DQpAQCAtMTA2Miw2ICsxMDc3LDggQEAgeHBydF93cml0ZV9zcGFjZShzdHJ1Y3Qg c29jayAqc2spDQogCWlmICh4cHJ0LT5zaHV0ZG93bikNCiAJCWdvdG8gb3V0Ow0KIA0KKwl4cHJ0 LT5tZXRyaWNzLnhtX3dyaXRlc3BhY2UrKzsNCisNCiAJLyogV2FpdCB1bnRpbCB3ZSBoYXZlIGVu b3VnaCBzb2NrZXQgbWVtb3J5ICovDQogCWlmICh4cHJ0LT5zdHJlYW0pIHsNCiAJCS8qIGZyb20g bmV0L2lwdjQvdGNwLmM6dGNwX3dyaXRlX3NwYWNlICovDQpAQCAtMTE1MSw2ICsxMTY4LDcgQEAg eHBydF90cmFuc21pdChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spDQogCXN0cnVjdCBycGNfY2xudCAq Y2xudCA9IHRhc2stPnRrX2NsaWVudDsNCiAJc3RydWN0IHJwY19ycXN0CSpyZXEgPSB0YXNrLT50 a19ycXN0cDsNCiAJc3RydWN0IHJwY194cHJ0CSp4cHJ0ID0gcmVxLT5ycV94cHJ0Ow0KKwlzdHJ1 Y3QgcnBjX21ldHJpY3MgKm1ldHJpY3MgPSAmdGFzay0+dGtfbWV0cmljczsNCiAJaW50IHN0YXR1 cywgcmV0cnkgPSAwOw0KIA0KIA0KQEAgLTExOTUsMTYgKzEyMTMsMjQgQEAgeHBydF90cmFuc21p dChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spDQogCQkJLyogSWYgd2UndmUgc2VudCB0aGUgZW50aXJl IHBhY2tldCwgaW1tZWRpYXRlbHkNCiAJCQkgKiByZXNldCB0aGUgY291bnQgb2YgYnl0ZXMgc2Vu dC4gKi8NCiAJCQlpZiAocmVxLT5ycV9ieXRlc19zZW50ID49IHJlcS0+cnFfc2xlbikgew0KKwkJ CQltZXRyaWNzLT5ybV9ieXRlc19zZW50ID0gcmVxLT5ycV9ieXRlc19zZW50Ow0KKwkJCQltZXRy aWNzLT5ybV9zb2NrX3NuZGJ1ZiA9DQorCQkJCQl4cHJ0LT5pbmV0LT5za193bWVtX3F1ZXVlZDsN CiAJCQkJcmVxLT5ycV9ieXRlc19zZW50ID0gMDsNCiAJCQkJZ290byBvdXRfcmVjZWl2ZTsNCiAJ CQl9DQogCQl9IGVsc2Ugew0KLQkJCWlmIChzdGF0dXMgPj0gcmVxLT5ycV9zbGVuKQ0KKwkJCWlm IChzdGF0dXMgPj0gcmVxLT5ycV9zbGVuKSB7DQorCQkJCW1ldHJpY3MtPnJtX2J5dGVzX3NlbnQg PSBzdGF0dXM7DQorCQkJCW1ldHJpY3MtPnJtX3NvY2tfc25kYnVmID0NCisJCQkJCWF0b21pY19y ZWFkKCZ4cHJ0LT5pbmV0LT5za193bWVtX2FsbG9jKTsNCiAJCQkJZ290byBvdXRfcmVjZWl2ZTsN CisJCQl9DQogCQkJc3RhdHVzID0gLUVBR0FJTjsNCiAJCQlicmVhazsNCiAJCX0NCiANCisJCXhw cnQtPm1ldHJpY3MueG1fcGFydGlhbHdycysrOw0KIAkJZHByaW50aygiUlBDOiAlNGQgeG1pdCBp bmNvbXBsZXRlICglZCBsZWZ0IG9mICVkKVxuIiwNCiAJCQkJdGFzay0+dGtfcGlkLCByZXEtPnJx X3NsZW4gLSByZXEtPnJxX2J5dGVzX3NlbnQsDQogCQkJCXJlcS0+cnFfc2xlbik7DQpAQCAtMTI1 MSw2ICsxMjc3LDcgQEAgeHBydF90cmFuc21pdChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spDQogCXJl dHVybjsNCiAgb3V0X3JlY2VpdmU6DQogCWRwcmludGsoIlJQQzogJTRkIHhtaXQgY29tcGxldGVc biIsIHRhc2stPnRrX3BpZCk7DQorCWRvX2dldHRpbWVvZmRheSgmbWV0cmljcy0+cm1feG1pdF90 aW1lKTsNCiAJLyogU2V0IHRoZSB0YXNrJ3MgcmVjZWl2ZSB0aW1lb3V0IHZhbHVlICovDQogCXNw aW5fbG9ja19iaCgmeHBydC0+c29ja19sb2NrKTsNCiAJaWYgKCF4cHJ0LT5ub2NvbmcpIHsNCg== ------_=_NextPart_001_01C4173E.04651E1C-- ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ NFS maillist - NFS@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs