From: "Lever, Charles" Subject: RE: possible client stale filehandle bug? Date: Wed, 16 Feb 2005 13:42:37 -0800 Message-ID: <482A3FA0050D21419C269D13989C61130853976F@lavender-fe.eng.netapp.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C51470.6E8582BB" Cc: "Garrick Staples" , Received: from sc8-sf-mx2-b.sourceforge.net ([10.3.1.12] helo=sc8-sf-mx2.sourceforge.net) by sc8-sf-list2.sourceforge.net with esmtp (Exim 4.30) id 1D1WwW-0004pI-BO for nfs@lists.sourceforge.net; Wed, 16 Feb 2005 13:42:44 -0800 Received: from mx2.netapp.com ([216.240.18.37]) by sc8-sf-mx2.sourceforge.net with esmtp (Exim 4.41) id 1D1WwV-0007Fs-LK for nfs@lists.sourceforge.net; Wed, 16 Feb 2005 13:42:44 -0800 To: "Neil Horman" Sender: nfs-admin@lists.sourceforge.net 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_01C51470.6E8582BB Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > I agree, it probably doesn't re-drive on any operation that=20 > doesn't walk=20 > a path, which is in line with what RHEL is doing currently. I didn't=20 > mean to imply that solaris retired ESTALE in all occurances of the=20 > event. Anywho, Can you point me to your patches? I'd be=20 > interested to=20 > know how you managed to implement retry on ESTALE without=20 > leaking into=20 > the VFS, which I think you will recall was the big sticking=20 > point that=20 > we were debating here. the patches do touch fs/namei.c (it was al viro's suggestion) with a pretty simple change. and i think they are KABI friendly enough to be included in RHEL 3, once we are satisfied that the solution is effective. the cto-lookup-revalidate patch adds just enough of the 2.6 lookup-intent logic to the 2.4 VFS layer to allow us to support NFS close-to-open in nfs_lookup_revalidate instead of in nfs_open. this resolves one of the most common ESTALE failure modes, where just the object at the end of the pathname has been replaced. the second patch applies on top of this. it adds logic to redrive pathname resolution if an ESTALE is encountered anywhere during a pathname lookup. it redrives it once from the top, asserting a flag that causes the VFS layer to abandon the dcache and use only real lookups for this resolution request. if the redriven resolution fails, we give up. this resolves the other typical ESTALE failure mode, where some or all of the path has been replaced, while avoiding retrying an unbounded number of times. ------_=_NextPart_001_01C51470.6E8582BB Content-Type: application/octet-stream; name="linux-2.4.21-nfs-cto-lookup-revalidate.patch" Content-Transfer-Encoding: base64 Content-Description: linux-2.4.21-nfs-cto-lookup-revalidate.patch Content-Disposition: attachment; filename="linux-2.4.21-nfs-cto-lookup-revalidate.patch" ZGlmZiAtWCAvaG9tZS9jZWwvc3JjL2xpbnV4L2RvbnQtZGlmZiAtTmF1cnAgbGludXgtMi40LjIx L2ZzL2V4ZWMuYyBuZXcvZnMvZXhlYy5jDQotLS0gbGludXgtMi40LjIxL2ZzL2V4ZWMuYwkyMDA0 LTEyLTIzIDEyOjI4OjQ5LjU4MjE0ODAwMCAtMDUwMA0KKysrIG5ldy9mcy9leGVjLmMJMjAwNC0x Mi0yMyAxMjoyOTo1My44NTIzMzQwMDAgLTA1MDANCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0 IGZpbGUgKm9wZW5fZXhlYyhjb25zdCBjaGFyICpuYW1lKQ0KIAlzdHJ1Y3QgZmlsZSAqZmlsZTsN CiAJaW50IGVyciA9IDA7DQogDQotCWVyciA9IHBhdGhfbG9va3VwKG5hbWUsIExPT0tVUF9GT0xM T1d8TE9PS1VQX1BPU0lUSVZFLCAmbmQpOw0KKwllcnIgPSBwYXRoX2xvb2t1cChuYW1lLCBMT09L VVBfRk9MTE9XfExPT0tVUF9QT1NJVElWRXxMT09LVVBfT1BFTiwgJm5kKTsNCiAJZmlsZSA9IEVS Ul9QVFIoZXJyKTsNCiAJaWYgKCFlcnIpIHsNCiAJCWlub2RlID0gbmQuZGVudHJ5LT5kX2lub2Rl Ow0KZGlmZiAtWCAvaG9tZS9jZWwvc3JjL2xpbnV4L2RvbnQtZGlmZiAtTmF1cnAgbGludXgtMi40 LjIxL2ZzL25hbWVpLmMgbmV3L2ZzL25hbWVpLmMNCi0tLSBsaW51eC0yLjQuMjEvZnMvbmFtZWku YwkyMDA0LTEyLTIzIDEyOjI4OjM4Ljg4NDE1OTAwMCAtMDUwMA0KKysrIG5ldy9mcy9uYW1laS5j CTIwMDQtMTItMjMgMTI6Mjk6NTMuODU3MzM0MDAwIC0wNTAwDQpAQCAtNjQ1LDcgKzY0NSw3IEBA IHJldHVybl9yZXZhbDoNCiAJCWRlbnRyeSA9IG5kLT5kZW50cnk7DQogCQlpZiAoZGVudHJ5ICYm IGRlbnRyeS0+ZF9vcCAmJiBkZW50cnktPmRfb3AtPmRfcmV2YWxpZGF0ZSkgew0KIAkJCWVyciA9 IC1FU1RBTEU7DQotCQkJaWYgKCFkZW50cnktPmRfb3AtPmRfcmV2YWxpZGF0ZShkZW50cnksIDAp KSB7DQorCQkJaWYgKCFkZW50cnktPmRfb3AtPmRfcmV2YWxpZGF0ZShkZW50cnksIG5kLT5mbGFn cyAmIExPT0tVUF9PUEVOKSkgew0KIAkJCQlkX2ludmFsaWRhdGUoZGVudHJ5KTsNCiAJCQkJYnJl YWs7DQogCQkJfQ0KQEAgLTk1MSw3ICs5NTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtYXlfY3Jl YXRlKHN0cnVjdCBpbm9kDQogICovDQogc3RhdGljIGlubGluZSBpbnQgbG9va3VwX2ZsYWdzKHVu c2lnbmVkIGludCBmKQ0KIHsNCi0JdW5zaWduZWQgbG9uZyByZXR2YWwgPSBMT09LVVBfRk9MTE9X Ow0KKwl1bnNpZ25lZCBsb25nIHJldHZhbCA9IExPT0tVUF9GT0xMT1cgfCBMT09LVVBfT1BFTjsN CiANCiAJaWYgKGYgJiBPX05PRk9MTE9XKQ0KIAkJcmV0dmFsICY9IH5MT09LVVBfRk9MTE9XOw0K QEAgLTEwMzIsNyArMTAzMiw3IEBAIGludCBvcGVuX25hbWVpKGNvbnN0IGNoYXIgKiBwYXRobmFt ZSwgaW4NCiAJLyoNCiAJICogQ3JlYXRlIC0gd2UgbmVlZCB0byBrbm93IHRoZSBwYXJlbnQuDQog CSAqLw0KLQllcnJvciA9IHBhdGhfbG9va3VwKHBhdGhuYW1lLCBMT09LVVBfUEFSRU5ULCBuZCk7 DQorCWVycm9yID0gcGF0aF9sb29rdXAocGF0aG5hbWUsIExPT0tVUF9QQVJFTlQgfCBMT09LVVBf T1BFTiwgbmQpOw0KIAlpZiAoZXJyb3IpDQogCQlyZXR1cm4gZXJyb3I7DQogDQpkaWZmIC1YIC9o b21lL2NlbC9zcmMvbGludXgvZG9udC1kaWZmIC1OYXVycCBsaW51eC0yLjQuMjEvZnMvbmZzL2Rp ci5jIG5ldy9mcy9uZnMvZGlyLmMNCi0tLSBsaW51eC0yLjQuMjEvZnMvbmZzL2Rpci5jCTIwMDQt MTItMjMgMTI6Mjg6MzkuODUwODY4MDAwIC0wNTAwDQorKysgbmV3L2ZzL25mcy9kaXIuYwkyMDA0 LTEyLTIzIDEyOjI5OjUzLjg2MTMzNTAwMCAtMDUwMA0KQEAgLTUwNSwxMCArNTA1LDIwIEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBuZnNfcmVuZXdfdGltZXMoc3RydWMNCiAJZGVudHJ5LT5kX3RpbWUg PSBqaWZmaWVzOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lDQotaW50IG5mc19sb29rdXBfdmVyaWZ5 X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQorLyoNCisgKiBSZWZyZXNoIHRoZSBpbm9kZSBp ZiB0aGUgYXR0cmlidXRlIGNhY2hlIGhhcyBleHBpcmVkLg0KKyAqDQorICogRHVyaW5nIGFuIG9w ZW4oMiksIGZvcmNlIGFuIGlub2RlIHVwZGF0ZSBpbiBvcmRlciB0byBtYWludGFpbiBjbG9zZS0N CisgKiB0by1vcGVuIGNhY2hlIGNvaGVyZW5jeSwgdW5sZXNzIHRoZSAibm9jdG8iIG1vdW50IG9w dGlvbiBpcyBzZXQuDQorICovDQorc3RhdGljIGlubGluZSBpbnQgbmZzX2xvb2t1cF92ZXJpZnlf aW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGZsYWdzKQ0KIHsNCi0JcmV0dXJuIG5mc19y ZXZhbGlkYXRlX2lub2RlKE5GU19TRVJWRVIoaW5vZGUpLCBpbm9kZSk7DQorCWlmICghKGZsYWdz ICYgTE9PS1VQX09QRU4pIHx8DQorCSAgICAoTkZTX1NFUlZFUihpbm9kZSktPmZsYWdzICYgTkZT X01PVU5UX05PQ1RPKSkNCisJCXJldHVybiBuZnNfcmV2YWxpZGF0ZV9pbm9kZShORlNfU0VSVkVS KGlub2RlKSwgaW5vZGUpOw0KKwlkZnByaW50ayhWRlMsICJORlM6ICVzOiBpbm9kZSAoJXgvJUxk KSByZXZhbGlkYXRlIG9uIG9wZW5cbiIsDQorCQlfX0ZVTkNUSU9OX18sIGlub2RlLT5pX2Rldiwg KGxvbmcgbG9uZylORlNfRklMRUlEKGlub2RlKSk7DQorCXJldHVybiBfX25mc19yZXZhbGlkYXRl X2lub2RlKE5GU19TRVJWRVIoaW5vZGUpLGlub2RlKTsNCiB9DQogDQogLyoNCkBAIC01NjIsNyAr NTcyLDcgQEAgc3RhdGljIGludCBuZnNfbG9va3VwX3JldmFsaWRhdGUoc3RydWN0IA0KIA0KIAkv KiBGb3JjZSBhIGZ1bGwgbG9vayB1cCBpZmYgdGhlIHBhcmVudCBkaXJlY3RvcnkgaGFzIGNoYW5n ZWQgKi8NCiAJaWYgKG5mc19jaGVja192ZXJpZmllcihkaXIsIGRlbnRyeSkpIHsNCi0JCWlmIChu ZnNfbG9va3VwX3ZlcmlmeV9pbm9kZShpbm9kZSkpDQorCQlpZiAobmZzX2xvb2t1cF92ZXJpZnlf aW5vZGUoaW5vZGUsIGZsYWdzKSkNCiAJCQlnb3RvIG91dF9iYWQ7DQogCQlnb3RvIG91dF92YWxp ZDsNCiAJfQ0KQEAgLTU3MSw3ICs1ODEsNyBAQCBzdGF0aWMgaW50IG5mc19sb29rdXBfcmV2YWxp ZGF0ZShzdHJ1Y3QgDQogCWlmICghZXJyb3IpIHsNCiAJCWlmIChtZW1jbXAoTkZTX0ZIKGlub2Rl KSwgJmZoYW5kbGUsIHNpemVvZihzdHJ1Y3QgbmZzX2ZoKSkhPSAwKQ0KIAkJCWdvdG8gb3V0X2Jh ZDsNCi0JCWlmIChuZnNfbG9va3VwX3ZlcmlmeV9pbm9kZShpbm9kZSkpDQorCQlpZiAobmZzX2xv b2t1cF92ZXJpZnlfaW5vZGUoaW5vZGUsIGZsYWdzKSkNCiAJCQlnb3RvIG91dF9iYWQ7DQogCQln b3RvIG91dF92YWxpZF9yZW5ldzsNCiAJfQ0KZGlmZiAtWCAvaG9tZS9jZWwvc3JjL2xpbnV4L2Rv bnQtZGlmZiAtTmF1cnAgbGludXgtMi40LjIxL2ZzL25mcy9pbm9kZS5jIG5ldy9mcy9uZnMvaW5v ZGUuYw0KLS0tIGxpbnV4LTIuNC4yMS9mcy9uZnMvaW5vZGUuYwkyMDA0LTEyLTIzIDEyOjI4OjUw LjQxOTk1ODAwMCAtMDUwMA0KKysrIG5ldy9mcy9uZnMvaW5vZGUuYwkyMDA0LTEyLTIzIDEyOjMx OjE1LjYxMDczMjAwMCAtMDUwMA0KQEAgLTEwMDUsMjMgKzEwMDUsMTggQEAgaW50IG5mc19vcGVu KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdA0KIHsNCiAJc3RydWN0IHJwY19hdXRoICphdXRo Ow0KIAlzdHJ1Y3QgcnBjX2NyZWQgKmNyZWQ7DQotCWludCBlcnIgPSAwOw0KKw0KKwlkZnByaW50 ayhWRlMsICJORlM6IG5mc19vcGVuICgleC8lTGQpXG4iLA0KKwkJaW5vZGUtPmlfZGV2LCAobG9u ZyBsb25nKU5GU19GSUxFSUQoaW5vZGUpKTsNCiANCiAJbG9ja19rZXJuZWwoKTsNCi0JLyogRW5z dXJlIHRoYXQgd2UgcmV2YWxpZGF0ZSB0aGUgZGF0YSBjYWNoZSAqLw0KLQlpZiAoISAoTkZTX1NF UlZFUihpbm9kZSktPmZsYWdzICYgTkZTX01PVU5UX05PQ1RPKSkgew0KLQkJZXJyID0gX19uZnNf cmV2YWxpZGF0ZV9pbm9kZShORlNfU0VSVkVSKGlub2RlKSxpbm9kZSk7DQotCQlpZiAoZXJyKQ0K LQkJCWdvdG8gb3V0Ow0KLQl9DQogCWF1dGggPSBORlNfQ0xJRU5UKGlub2RlKS0+Y2xfYXV0aDsN CiAJY3JlZCA9IHJwY2F1dGhfbG9va3VwY3JlZChhdXRoLCAwKTsNCiAJZmlscC0+cHJpdmF0ZV9k YXRhID0gY3JlZDsNCiAJaWYgKGZpbHAtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKQ0KIAkJbmZzX3Nl dF9tbWNyZWQoaW5vZGUsIGNyZWQpOw0KLW91dDoNCiAJdW5sb2NrX2tlcm5lbCgpOw0KLQlyZXR1 cm4gZXJyOw0KKwlyZXR1cm4gMDsNCiB9DQogDQogaW50IG5mc19yZWxlYXNlKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQ0KZGlmZiAtWCAvaG9tZS9jZWwvc3JjL2xpbnV4 L2RvbnQtZGlmZiAtTmF1cnAgbGludXgtMi40LjIxL2luY2x1ZGUvbGludXgvZnMuaCBuZXcvaW5j bHVkZS9saW51eC9mcy5oDQotLS0gbGludXgtMi40LjIxL2luY2x1ZGUvbGludXgvZnMuaAkyMDA0 LTEyLTIzIDEyOjI4OjUwLjM4Mjk1ODAwMCAtMDUwMA0KKysrIG5ldy9pbmNsdWRlL2xpbnV4L2Zz LmgJMjAwNC0xMi0yMyAxMjoyOTo1My44NzEzMzQwMDAgLTA1MDANCkBAIC0xNDA3LDYgKzE0MDcs NyBAQCBzdGF0aWMgaW5saW5lIGxvbmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0DQogI2RlZmluZSBM T09LVVBfUEFSRU5UCQkoMTYpDQogI2RlZmluZSBMT09LVVBfTk9BTFQJCSgzMikNCiAjZGVmaW5l IExPT0tVUF9BVE9NSUMJCSg2NCkNCisjZGVmaW5lIExPT0tVUF9PUEVOCQkoMTI4KQ0KIC8qDQog ICogVHlwZSBvZiB0aGUgbGFzdCBjb21wb25lbnQgb24gTE9PS1VQX1BBUkVOVA0KICAqLw0K ------_=_NextPart_001_01C51470.6E8582BB Content-Type: application/octet-stream; name="linux-2.4.21-pathname-retry.patch" Content-Transfer-Encoding: base64 Content-Description: linux-2.4.21-pathname-retry.patch Content-Disposition: attachment; filename="linux-2.4.21-pathname-retry.patch" ZGlmZiAtWCAvaG9tZS9jZWwvc3JjL2xpbnV4L2RvbnQtZGlmZiAtTmF1cnAgbGludXgtMi40LjIx L2ZzL25hbWVpLmMgbmV3L2ZzL25hbWVpLmMNCi0tLSBsaW51eC0yLjQuMjEvZnMvbmFtZWkuYwky MDA1LTAyLTA5IDA5OjEzOjMwLjAwMDAwMDAwMCAtMDUwMA0KKysrIG5ldy9mcy9uYW1laS5jCTIw MDUtMDItMTQgMTU6Mjc6MjcuMDAwMDAwMDAwIC0wNTAwDQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBmb2xsb3dfZG90ZG90KHN0cnVjdCANCiAgKg0KICAqIFdlIGV4cGVj dCAnYmFzZScgdG8gYmUgcG9zaXRpdmUgYW5kIGEgZGlyZWN0b3J5Lg0KICAqLw0KLWludCBsaW5r X3BhdGhfd2Fsayhjb25zdCBjaGFyICogbmFtZSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQorc3Rh dGljIGludCBfX2xpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBuYW1laWRh dGEgKm5kKQ0KIHsNCiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5Ow0KIAlzdHJ1Y3QgaW5vZGUgKmlu b2RlOw0KQEAgLTY0NSw3ICs2NDUsNyBAQCByZXR1cm5fcmV2YWw6DQogCQlkZW50cnkgPSBuZC0+ ZGVudHJ5Ow0KIAkJaWYgKGRlbnRyeSAmJiBkZW50cnktPmRfb3AgJiYgZGVudHJ5LT5kX29wLT5k X3JldmFsaWRhdGUpIHsNCiAJCQllcnIgPSAtRVNUQUxFOw0KLQkJCWlmICghZGVudHJ5LT5kX29w LT5kX3JldmFsaWRhdGUoZGVudHJ5LCBuZC0+ZmxhZ3MgJiBMT09LVVBfT1BFTikpIHsNCisJCQlp ZiAoIWRlbnRyeS0+ZF9vcC0+ZF9yZXZhbGlkYXRlKGRlbnRyeSwgbmQtPmZsYWdzKSkgew0KIAkJ CQlkX2ludmFsaWRhdGUoZGVudHJ5KTsNCiAJCQkJYnJlYWs7DQogCQkJfQ0KQEAgLTY2MSw2ICs2 NjEsMzcgQEAgcmV0dXJuX2VycjoNCiAJcmV0dXJuIGVycjsNCiB9DQogDQorLyoNCisgKiBXcmFw cGVyIHRvIHJldHJ5IHBhdGhuYW1lIHJlc29sdXRpb24gd2hlbmV2ZXIgdGhlIHVuZGVybHlpbmcN CisgKiBmaWxlIHN5c3RlbSByZXR1cm5zIGFuIEVTVEFMRS4NCisgKg0KKyAqIFJldHJ5IHRoZSB3 aG9sZSBwYXRoIG9uY2UsIGZvcmNpbmcgcmVhbCBsb29rdXAgcmVxdWVzdHMNCisgKiBpbnN0ZWFk IG9mIHJlbHlpbmcgb24gdGhlIGRjYWNoZS4NCisgKi8NCitpbnQgbGlua19wYXRoX3dhbGsoY29u c3QgY2hhciAqbmFtZSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQorew0KKwlzdHJ1Y3QgbmFtZWlk YXRhIHNhdmUgPSAqbmQ7DQorCWludCByZXN1bHQ7DQorDQorCS8qIG1ha2Ugc3VyZSB0aGUgc3R1 ZmYgd2Ugc2F2ZWQgZG9lc24ndCBnbyBhd2F5ICovDQorCWRnZXQoc2F2ZS5kZW50cnkpOw0KKwlt bnRnZXQoc2F2ZS5tbnQpOw0KKw0KKwlyZXN1bHQgPSBfX2xpbmtfcGF0aF93YWxrKG5hbWUsIG5k KTsNCisJaWYgKHJlc3VsdCA9PSAtRVNUQUxFKSB7DQorCQkqbmQgPSBzYXZlOw0KKwkJZGdldChu ZC0+ZGVudHJ5KTsNCisJCW1udGdldChuZC0+bW50KTsNCisJCW5kLT5mbGFncyB8PSBMT09LVVBf UkVWQUw7DQorCQlyZXN1bHQgPSBfX2xpbmtfcGF0aF93YWxrKG5hbWUsIG5kKTsNCisJfQ0KKw0K KwlkcHV0KHNhdmUuZGVudHJ5KTsNCisJbW50cHV0KHNhdmUubW50KTsNCisNCisJcmV0dXJuIHJl c3VsdDsNCit9DQorDQogaW50IHBhdGhfd2Fsayhjb25zdCBjaGFyICogbmFtZSwgc3RydWN0IG5h bWVpZGF0YSAqbmQpDQogew0KIAljdXJyZW50LT50b3RhbF9saW5rX2NvdW50ID0gMDsNCmRpZmYg LVggL2hvbWUvY2VsL3NyYy9saW51eC9kb250LWRpZmYgLU5hdXJwIGxpbnV4LTIuNC4yMS9mcy9u ZnMvZGlyLmMgbmV3L2ZzL25mcy9kaXIuYw0KLS0tIGxpbnV4LTIuNC4yMS9mcy9uZnMvZGlyLmMJ MjAwNS0wMi0wOSAwOToxMzozMC4wMDAwMDAwMDAgLTA1MDANCisrKyBuZXcvZnMvbmZzL2Rpci5j CTIwMDUtMDItMTQgMTU6MzY6MzcuMDAwMDAwMDAwIC0wNTAwDQpAQCAtNTEzLDExICs1MTMsMjIg QEAgc3RhdGljIGlubGluZSB2b2lkIG5mc19yZW5ld190aW1lcyhzdHJ1Yw0KICAqLw0KIHN0YXRp YyBpbmxpbmUgaW50IG5mc19sb29rdXBfdmVyaWZ5X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGludCBmbGFncykNCiB7DQotCWlmICghKGZsYWdzICYgTE9PS1VQX09QRU4pIHx8DQotCSAgICAo TkZTX1NFUlZFUihpbm9kZSktPmZsYWdzICYgTkZTX01PVU5UX05PQ1RPKSkNCi0JCXJldHVybiBu ZnNfcmV2YWxpZGF0ZV9pbm9kZShORlNfU0VSVkVSKGlub2RlKSwgaW5vZGUpOw0KLQlkZnByaW50 ayhWRlMsICJORlM6ICVzOiBpbm9kZSAoJXgvJUxkKSByZXZhbGlkYXRlIG9uIG9wZW5cbiIsDQot CQlfX0ZVTkNUSU9OX18sIGlub2RlLT5pX2RldiwgKGxvbmcgbG9uZylORlNfRklMRUlEKGlub2Rl KSk7DQorCWlmIChmbGFncyAmIExPT0tVUF9SRVZBTCkgew0KKwkJZGZwcmludGsoVkZTLCAiTkZT OiAlczogaW5vZGUgKCV4LyVMZCkgcmV2YWxpZGF0ZSBvbiBlc3RhbGVcbiIsDQorCQkJX19GVU5D VElPTl9fLCBpbm9kZS0+aV9kZXYsIChsb25nIGxvbmcpTkZTX0ZJTEVJRChpbm9kZSkpOw0KKwkJ Z290byBmb3JjZV9yZXZhbGlkYXRlOw0KKwl9DQorDQorCWlmICgoZmxhZ3MgJiBMT09LVVBfT1BF TikgJiYNCisJICAgICEoTkZTX1NFUlZFUihpbm9kZSktPmZsYWdzICYgTkZTX01PVU5UX05PQ1RP KSkgew0KKwkJZGZwcmludGsoVkZTLCAiTkZTOiAlczogaW5vZGUgKCV4LyVMZCkgcmV2YWxpZGF0 ZSBvbiBvcGVuXG4iLA0KKwkJCV9fRlVOQ1RJT05fXywgaW5vZGUtPmlfZGV2LCAobG9uZyBsb25n KU5GU19GSUxFSUQoaW5vZGUpKTsNCisJCWdvdG8gZm9yY2VfcmV2YWxpZGF0ZTsNCisJfQ0KKw0K KwlyZXR1cm4gbmZzX3JldmFsaWRhdGVfaW5vZGUoTkZTX1NFUlZFUihpbm9kZSksIGlub2RlKTsN CisNCitmb3JjZV9yZXZhbGlkYXRlOg0KIAlyZXR1cm4gX19uZnNfcmV2YWxpZGF0ZV9pbm9kZShO RlNfU0VSVkVSKGlub2RlKSxpbm9kZSk7DQogfQ0KIA0KZGlmZiAtWCAvaG9tZS9jZWwvc3JjL2xp bnV4L2RvbnQtZGlmZiAtTmF1cnAgbGludXgtMi40LjIxL2ZzL25mcy9uZnMzcHJvYy5jIG5ldy9m cy9uZnMvbmZzM3Byb2MuYw0KLS0tIGxpbnV4LTIuNC4yMS9mcy9uZnMvbmZzM3Byb2MuYwkyMDA1 LTAyLTA5IDA5OjEzOjE2LjAwMDAwMDAwMCAtMDUwMA0KKysrIG5ldy9mcy9uZnMvbmZzM3Byb2Mu YwkyMDA1LTAyLTA5IDA5OjIzOjA5LjAwMDAwMDAwMCAtMDUwMA0KQEAgLTYxLDcgKzYxLDcgQEAg bmZzM19wcm9jX2dldF9yb290KHN0cnVjdCBuZnNfc2VydmVyICpzZQ0KIAlkcHJpbnRrKCJORlMg Y2FsbCAgZ2V0cm9vdFxuIik7DQogCWZhdHRyLT52YWxpZCA9IDA7DQogCXN0YXR1cyA9IHJwY19j YWxsKHNlcnZlci0+Y2xpZW50LCBORlMzUFJPQ19HRVRBVFRSLCBmaGFuZGxlLCBmYXR0ciwgMCk7 DQotCWRwcmludGsoIk5GUyByZXBseSBnZXRyb290XG4iKTsNCisJZHByaW50aygiTkZTIHJlcGx5 IGdldHJvb3Q6ICVkXG4iLCBzdGF0dXMpOw0KIAlyZXR1cm4gc3RhdHVzOw0KIH0NCiANCkBAIC03 Nyw3ICs3Nyw3IEBAIG5mczNfcHJvY19nZXRhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHMNCiAJ ZmF0dHItPnZhbGlkID0gMDsNCiAJc3RhdHVzID0gcnBjX2NhbGwoTkZTX0NMSUVOVChpbm9kZSks IE5GUzNQUk9DX0dFVEFUVFIsDQogCQkJICBORlNfRkgoaW5vZGUpLCBmYXR0ciwgMCk7DQotCWRw cmludGsoIk5GUyByZXBseSBnZXRhdHRyXG4iKTsNCisJZHByaW50aygiTkZTIHJlcGx5IGdldGF0 dHI6ICVkXG4iLCBzdGF0dXMpOw0KIAlyZXR1cm4gc3RhdHVzOw0KIH0NCiANCkBAIC05MSw3ICs5 MSw3IEBAIG5mczNfcHJvY19zZXRhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHMNCiAJZHByaW50 aygiTkZTIGNhbGwgIHNldGF0dHJcbiIpOw0KIAlmYXR0ci0+dmFsaWQgPSAwOw0KIAlzdGF0dXMg PSBycGNfY2FsbChORlNfQ0xJRU5UKGlub2RlKSwgTkZTM1BST0NfU0VUQVRUUiwgJmFyZywgZmF0 dHIsIDApOw0KLQlkcHJpbnRrKCJORlMgcmVwbHkgc2V0YXR0clxuIik7DQorCWRwcmludGsoIk5G UyByZXBseSBzZXRhdHRyOiAlZFxuIiwgc3RhdHVzKTsNCiAJcmV0dXJuIHN0YXR1czsNCiB9DQog DQpAQCAtMTYyLDcgKzE2Miw3IEBAIG5mczNfcHJvY19hY2Nlc3Moc3RydWN0IGlub2RlICppbm9k ZSwgc3QNCiANCiAJc3RhdHVzID0gcnBjX2NhbGxfc3luYyhORlNfQ0xJRU5UKGlub2RlKSwgJm1z ZywgMCk7DQogCW5mc19yZWZyZXNoX2lub2RlKGlub2RlLCAmZmF0dHIpOw0KLQlkcHJpbnRrKCJO RlMgcmVwbHkgYWNjZXNzXG4iKTsNCisJZHByaW50aygiTkZTIHJlcGx5IGFjY2VzczogJWRcbiIs IHN0YXR1cyk7DQogDQogCWlmIChzdGF0dXMgPT0gMCAmJiAoYWNjZXNzICYgcmVzLmFjY2Vzcykg IT0gYWNjZXNzKQ0KIAkJc3RhdHVzID0gLUVBQ0NFUzsNCmRpZmYgLVggL2hvbWUvY2VsL3NyYy9s aW51eC9kb250LWRpZmYgLU5hdXJwIGxpbnV4LTIuNC4yMS9mcy9uZnMvcHJvYy5jIG5ldy9mcy9u ZnMvcHJvYy5jDQotLS0gbGludXgtMi40LjIxL2ZzL25mcy9wcm9jLmMJMjAwNS0wMi0wOSAwOTox Mjo0Ny4wMDAwMDAwMDAgLTA1MDANCisrKyBuZXcvZnMvbmZzL3Byb2MuYwkyMDA1LTAyLTA5IDA5 OjIzOjA5LjAwMDAwMDAwMCAtMDUwMA0KQEAgLTU2LDcgKzU2LDcgQEAgbmZzX3Byb2NfZ2V0X3Jv b3Qoc3RydWN0IG5mc19zZXJ2ZXIgKnNlcg0KIAlkcHJpbnRrKCJORlMgY2FsbCAgZ2V0cm9vdFxu Iik7DQogCWZhdHRyLT52YWxpZCA9IDA7DQogCXN0YXR1cyA9IHJwY19jYWxsKHNlcnZlci0+Y2xp ZW50LCBORlNQUk9DX0dFVEFUVFIsIGZoYW5kbGUsIGZhdHRyLCAwKTsNCi0JZHByaW50aygiTkZT IHJlcGx5IGdldHJvb3RcbiIpOw0KKwlkcHJpbnRrKCJORlMgcmVwbHkgZ2V0cm9vdDogJWRcbiIs IHN0YXR1cyk7DQogCXJldHVybiBzdGF0dXM7DQogfQ0KIA0KQEAgLTcyLDcgKzcyLDcgQEAgbmZz X3Byb2NfZ2V0YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdA0KIAlmYXR0ci0+dmFsaWQgPSAw Ow0KIAlzdGF0dXMgPSBycGNfY2FsbChORlNfQ0xJRU5UKGlub2RlKSwgTkZTUFJPQ19HRVRBVFRS LA0KIAkJCQlORlNfRkgoaW5vZGUpLCBmYXR0ciwgMCk7DQotCWRwcmludGsoIk5GUyByZXBseSBn ZXRhdHRyXG4iKTsNCisJZHByaW50aygiTkZTIHJlcGx5IGdldGF0dHI6ICVkXG4iLCBzdGF0dXMp Ow0KIAlyZXR1cm4gc3RhdHVzOw0KIH0NCiANCkBAIC04Niw3ICs4Niw3IEBAIG5mc19wcm9jX3Nl dGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgc3QNCiAJZHByaW50aygiTkZTIGNhbGwgIHNldGF0 dHJcbiIpOw0KIAlmYXR0ci0+dmFsaWQgPSAwOw0KIAlzdGF0dXMgPSBycGNfY2FsbChORlNfQ0xJ RU5UKGlub2RlKSwgTkZTUFJPQ19TRVRBVFRSLCAmYXJnLCBmYXR0ciwgMCk7DQotCWRwcmludGso Ik5GUyByZXBseSBzZXRhdHRyXG4iKTsNCisJZHByaW50aygiTkZTIHJlcGx5IHNldGF0dHI6ICVk XG4iLCBzdGF0dXMpOw0KIAlyZXR1cm4gc3RhdHVzOw0KIH0NCiANCmRpZmYgLVggL2hvbWUvY2Vs L3NyYy9saW51eC9kb250LWRpZmYgLU5hdXJwIGxpbnV4LTIuNC4yMS9pbmNsdWRlL2xpbnV4L2Zz LmggbmV3L2luY2x1ZGUvbGludXgvZnMuaA0KLS0tIGxpbnV4LTIuNC4yMS9pbmNsdWRlL2xpbnV4 L2ZzLmgJMjAwNS0wMi0wOSAwOToxMzozMC4wMDAwMDAwMDAgLTA1MDANCisrKyBuZXcvaW5jbHVk ZS9saW51eC9mcy5oCTIwMDUtMDItMTQgMTU6Mjk6MjYuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMTQw OCw2ICsxNDA4LDcgQEAgc3RhdGljIGlubGluZSBsb25nIElTX0VSUihjb25zdCB2b2lkICpwdA0K ICNkZWZpbmUgTE9PS1VQX05PQUxUCQkoMzIpDQogI2RlZmluZSBMT09LVVBfQVRPTUlDCQkoNjQp DQogI2RlZmluZSBMT09LVVBfT1BFTgkJKDEyOCkNCisjZGVmaW5lIExPT0tVUF9SRVZBTAkJKDI1 NikNCiAvKg0KICAqIFR5cGUgb2YgdGhlIGxhc3QgY29tcG9uZW50IG9uIExPT0tVUF9QQVJFTlQN CiAgKi8NCg== ------_=_NextPart_001_01C51470.6E8582BB-- ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ NFS maillist - NFS@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs