Return-Path: linux-nfs-owner@vger.kernel.org Received: from mx1.netapp.com ([216.240.18.38]:42605 "EHLO mx1.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754715Ab3ICQua (ORCPT ); Tue, 3 Sep 2013 12:50:30 -0400 From: "Myklebust, Trond" To: Chuck Lever CC: "linux-nfs@vger.kernel.org" Subject: Re: [PATCH v2 07/33] NFS: Enable slot table helpers for NFSv4.0 Date: Tue, 3 Sep 2013 16:50:29 +0000 Message-ID: <1378227026.6410.11.camel@leira.trondhjem.org> References: <20130809161957.5362.90865.stgit@seurat.1015granger.net> <20130809164844.5362.23032.stgit@seurat.1015granger.net> In-Reply-To: <20130809164844.5362.23032.stgit@seurat.1015granger.net> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org List-ID: T24gRnJpLCAyMDEzLTA4LTA5IGF0IDEyOjQ4IC0wNDAwLCBDaHVjayBMZXZlciB3cm90ZToNCj4g SSdkIGxpa2UgdG8gcmUtdXNlIE5GU3Y0LjEncyBzbG90IHRhYmxlIG1hY2hpbmVyeSBmb3IgTkZT djQuMA0KPiB0cmFuc3BvcnQgYmxvY2tpbmcuICBSZS1vcmdhbml6ZSBzb21lIG9mIG5mczRzZXNz aW9uLmMgc28gdGhlIHNsb3QNCj4gdGFibGUgY29kZSBpcyBidWlsdCBldmVuIHdoZW4gTkZTX1Y0 XzEgaXMgZGlzYWJsZWQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBDaHVjayBMZXZlciA8Y2h1Y2su bGV2ZXJAb3JhY2xlLmNvbT4NCj4gLS0tDQo+ICBmcy9uZnMvTWFrZWZpbGUgICAgICB8ICAgIDQg KystLQ0KPiAgZnMvbmZzL25mczRzZXNzaW9uLmMgfCAgIDI5ICsrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tDQo+ICBmcy9uZnMvbmZzNHNlc3Npb24uaCB8ICAgMjggKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLQ0KPiAgZnMvbmZzL25mczRzdGF0ZS5jICAgfCAgICA5IC0tLS0tLS0tLQ0K PiAgNCBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkNCj4g DQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvTWFrZWZpbGUgYi9mcy9uZnMvTWFrZWZpbGUNCj4gaW5k ZXggZTBiYjA0OC4uMjgzOWJmZSAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL01ha2VmaWxlDQo+ICsr KyBiL2ZzL25mcy9NYWtlZmlsZQ0KPiBAQCAtMjEsMTAgKzIxLDEwIEBAIG5mc3YzLSQoQ09ORklH X05GU19WM19BQ0wpICs9IG5mczNhY2wubw0KPiAgb2JqLSQoQ09ORklHX05GU19WNCkgKz0gbmZz djQubw0KPiAgbmZzdjQteSA6PSBuZnM0cHJvYy5vIG5mczR4ZHIubyBuZnM0c3RhdGUubyBuZnM0 cmVuZXdkLm8gbmZzNHN1cGVyLm8gbmZzNGZpbGUubyBcDQo+ICAJICBkZWxlZ2F0aW9uLm8gaWRt YXAubyBjYWxsYmFjay5vIGNhbGxiYWNrX3hkci5vIGNhbGxiYWNrX3Byb2MubyBcDQo+IC0JICBu ZnM0bmFtZXNwYWNlLm8gbmZzNGdldHJvb3QubyBuZnM0Y2xpZW50Lm8gZG5zX3Jlc29sdmUubw0K PiArCSAgbmZzNG5hbWVzcGFjZS5vIG5mczRnZXRyb290Lm8gbmZzNGNsaWVudC5vIGRuc19yZXNv bHZlLm8gbmZzNHNlc3Npb24ubw0KPiAgbmZzdjQtJChDT05GSUdfTkZTX1VTRV9MRUdBQ1lfRE5T KSArPSBjYWNoZV9saWIubw0KPiAgbmZzdjQtJChDT05GSUdfU1lTQ1RMKQkrPSBuZnM0c3lzY3Rs Lm8NCj4gLW5mc3Y0LSQoQ09ORklHX05GU19WNF8xKQkrPSBuZnM0c2Vzc2lvbi5vIHBuZnMubyBw bmZzX2Rldi5vDQo+ICtuZnN2NC0kKENPTkZJR19ORlNfVjRfMSkJKz0gcG5mcy5vIHBuZnNfZGV2 Lm8NCj4gIA0KPiAgb2JqLSQoQ09ORklHX1BORlNfRklMRV9MQVlPVVQpICs9IG5mc19sYXlvdXRf bmZzdjQxX2ZpbGVzLm8NCj4gIG5mc19sYXlvdXRfbmZzdjQxX2ZpbGVzLXkgOj0gbmZzNGZpbGVs YXlvdXQubyBuZnM0ZmlsZWxheW91dGRldi5vDQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHNl c3Npb24uYyBiL2ZzL25mcy9uZnM0c2Vzc2lvbi5jDQo+IGluZGV4IDAxNjFhZDIuLjc0NjY3NWIg MTAwNjQ0DQo+IC0tLSBhL2ZzL25mcy9uZnM0c2Vzc2lvbi5jDQo+ICsrKyBiL2ZzL25mcy9uZnM0 c2Vzc2lvbi5jDQo+IEBAIC00NCw2ICs0NCwxNyBAQCBzdGF0aWMgdm9pZCBuZnM0X3Nocmlua19z bG90X3RhYmxlKHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgICp0YmwsIHUzMiBuZXdzaXplKQ0KPiAg CX0NCj4gIH0NCj4gIA0KPiArLyoqDQo+ICsgKiBuZnM0X3Nsb3RfdGJsX2RyYWluX2NvbXBsZXRl IC0gd2FrZSB3YWl0ZXJzIHdoZW4gZHJhaW4gaXMgY29tcGxldGUNCj4gKyAqIEB0YmwgLSBjb250 cm9sbGluZyBzbG90IHRhYmxlDQo+ICsgKg0KPiArICovDQo+ICt2b2lkIG5mczRfc2xvdF90Ymxf ZHJhaW5fY29tcGxldGUoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsKQ0KPiArew0KPiArCWlm IChuZnM0X3Nsb3RfdGJsX2RyYWluaW5nKHRibCkpDQo+ICsJCWNvbXBsZXRlKCZ0YmwtPmNvbXBs ZXRlKTsNCj4gK30NCj4gKw0KPiAgLyoNCj4gICAqIG5mczRfZnJlZV9zbG90IC0gZnJlZSBhIHNs b3QgYW5kIGVmZmljaWVudGx5IHVwZGF0ZSBzbG90IHRhYmxlLg0KPiAgICoNCj4gQEAgLTIxMiwx MyArMjIzLDYgQEAgb3V0Og0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+ICANCj4gLS8qIERlc3Ry b3kgdGhlIHNsb3QgdGFibGUgKi8NCj4gLXN0YXRpYyB2b2lkIG5mczRfZGVzdHJveV9zbG90X3Rh YmxlcyhzdHJ1Y3QgbmZzNF9zZXNzaW9uICpzZXNzaW9uKQ0KPiAtew0KPiAtCW5mczRfc2hyaW5r X3Nsb3RfdGFibGUoJnNlc3Npb24tPmZjX3Nsb3RfdGFibGUsIDApOw0KPiAtCW5mczRfc2hyaW5r X3Nsb3RfdGFibGUoJnNlc3Npb24tPmJjX3Nsb3RfdGFibGUsIDApOw0KPiAtfQ0KPiAtDQo+ICBz dGF0aWMgYm9vbCBuZnM0MV9hc3NpZ25fc2xvdChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2ssIHZvaWQg KnBzbG90KQ0KPiAgew0KPiAgCXN0cnVjdCBuZnM0X3NlcXVlbmNlX2FyZ3MgKmFyZ3MgPSB0YXNr LT50a19tc2cucnBjX2FyZ3A7DQo+IEBAIC0zODMsNiArMzg3LDE1IEBAIHZvaWQgbmZzNDFfdXBk YXRlX3RhcmdldF9zbG90aWQoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsLA0KPiAgCXNwaW5f dW5sb2NrKCZ0YmwtPnNsb3RfdGJsX2xvY2spOw0KPiAgfQ0KPiAgDQo+ICsjaWYgZGVmaW5lZChD T05GSUdfTkZTX1Y0XzEpDQo+ICsNCj4gKy8qIERlc3Ryb3kgdGhlIHNsb3QgdGFibGUgKi8NCj4g K3N0YXRpYyB2b2lkIG5mczRfZGVzdHJveV9zbG90X3RhYmxlcyhzdHJ1Y3QgbmZzNF9zZXNzaW9u ICpzZXNzaW9uKQ0KPiArew0KPiArCW5mczRfc2hyaW5rX3Nsb3RfdGFibGUoJnNlc3Npb24tPmZj X3Nsb3RfdGFibGUsIDApOw0KPiArCW5mczRfc2hyaW5rX3Nsb3RfdGFibGUoJnNlc3Npb24tPmJj X3Nsb3RfdGFibGUsIDApOw0KPiArfQ0KPiArDQo+ICAvKg0KPiAgICogSW5pdGlhbGl6ZSBvciBy ZXNldCB0aGUgZm9yZWNoYW5uZWwgYW5kIGJhY2tjaGFubmVsIHRhYmxlcw0KPiAgICovDQo+IEBA IC01MTMsNCArNTI2LDQgQEAgaW50IG5mczRfaW5pdF9kc19zZXNzaW9uKHN0cnVjdCBuZnNfY2xp ZW50ICpjbHAsIHVuc2lnbmVkIGxvbmcgbGVhc2VfdGltZSkNCj4gIH0NCj4gIEVYUE9SVF9TWU1C T0xfR1BMKG5mczRfaW5pdF9kc19zZXNzaW9uKTsNCj4gIA0KPiAtDQo+ICsjZW5kaWYJLyogZGVm aW5lZChDT05GSUdfTkZTX1Y0XzEpICovDQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHNlc3Np b24uaCBiL2ZzL25mcy9uZnM0c2Vzc2lvbi5oDQo+IGluZGV4IDNhMTUzZDguLjIzZDI2YjQgMTAw NjQ0DQo+IC0tLSBhL2ZzL25mcy9uZnM0c2Vzc2lvbi5oDQo+ICsrKyBiL2ZzL25mcy9uZnM0c2Vz c2lvbi5oDQo+IEBAIC03MiwxNSArNzIsMjQgQEAgZW51bSBuZnM0X3Nlc3Npb25fc3RhdGUgew0K PiAgCU5GUzRfU0VTU0lPTl9JTklUSU5HLA0KPiAgfTsNCj4gIA0KPiAtI2lmIGRlZmluZWQoQ09O RklHX05GU19WNF8xKQ0KPiAgZXh0ZXJuIHN0cnVjdCBuZnM0X3Nsb3QgKm5mczRfYWxsb2Nfc2xv dChzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwpOw0KPiAgZXh0ZXJuIHZvaWQgbmZzNF9mcmVl X3Nsb3Qoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsLCBzdHJ1Y3QgbmZzNF9zbG90ICpzbG90 KTsNCj4gLQ0KPiAtZXh0ZXJuIHZvaWQgbmZzNDFfc2V0X3RhcmdldF9zbG90aWQoc3RydWN0IG5m czRfc2xvdF90YWJsZSAqdGJsLA0KPiAtCQl1MzIgdGFyZ2V0X2hpZ2hlc3Rfc2xvdGlkKTsNCj4g K2V4dGVybiB2b2lkIG5mczRfc2xvdF90YmxfZHJhaW5fY29tcGxldGUoc3RydWN0IG5mczRfc2xv dF90YWJsZSAqdGJsKTsNCj4gIGV4dGVybiB2b2lkIG5mczQxX3VwZGF0ZV90YXJnZXRfc2xvdGlk KHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgKnRibCwNCj4gIAkJc3RydWN0IG5mczRfc2xvdCAqc2xv dCwNCj4gIAkJc3RydWN0IG5mczRfc2VxdWVuY2VfcmVzICpyZXMpOw0KPiArYm9vbCBuZnM0MV93 YWtlX2FuZF9hc3NpZ25fc2xvdChzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwsDQo+ICsJCXN0 cnVjdCBuZnM0X3Nsb3QgKnNsb3QpOw0KPiArdm9pZCBuZnM0MV93YWtlX3Nsb3RfdGFibGUoc3Ry dWN0IG5mczRfc2xvdF90YWJsZSAqdGJsKTsNCj4gKw0KPiArc3RhdGljIGlubGluZSBib29sIG5m czRfc2xvdF90YmxfZHJhaW5pbmcoc3RydWN0IG5mczRfc2xvdF90YWJsZSAqdGJsKQ0KPiArew0K PiArCXJldHVybiAhIXRlc3RfYml0KE5GUzRfU0xPVF9UQkxfRFJBSU5JTkcsICZ0YmwtPnNsb3Rf dGJsX3N0YXRlKTsNCj4gK30NCj4gKw0KPiArI2lmIGRlZmluZWQoQ09ORklHX05GU19WNF8xKQ0K PiArZXh0ZXJuIHZvaWQgbmZzNDFfc2V0X3RhcmdldF9zbG90aWQoc3RydWN0IG5mczRfc2xvdF90 YWJsZSAqdGJsLA0KPiArCQl1MzIgdGFyZ2V0X2hpZ2hlc3Rfc2xvdGlkKTsNCj4gIA0KPiAgZXh0 ZXJuIGludCBuZnM0X3NldHVwX3Nlc3Npb25fc2xvdF90YWJsZXMoc3RydWN0IG5mczRfc2Vzc2lv biAqc2VzKTsNCj4gIA0KPiBAQCAtODksMTcgKzk4LDYgQEAgZXh0ZXJuIHZvaWQgbmZzNF9kZXN0 cm95X3Nlc3Npb24oc3RydWN0IG5mczRfc2Vzc2lvbiAqc2Vzc2lvbik7DQo+ICBleHRlcm4gaW50 IG5mczRfaW5pdF9zZXNzaW9uKHN0cnVjdCBuZnNfY2xpZW50ICpjbHApOw0KPiAgZXh0ZXJuIGlu dCBuZnM0X2luaXRfZHNfc2Vzc2lvbihzdHJ1Y3QgbmZzX2NsaWVudCAqLCB1bnNpZ25lZCBsb25n KTsNCj4gIA0KPiAtZXh0ZXJuIHZvaWQgbmZzNF9zbG90X3RibF9kcmFpbl9jb21wbGV0ZShzdHJ1 Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwpOw0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIGJvb2wgbmZz NF9zbG90X3RibF9kcmFpbmluZyhzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwpDQo+IC17DQo+ IC0JcmV0dXJuICEhdGVzdF9iaXQoTkZTNF9TTE9UX1RCTF9EUkFJTklORywgJnRibC0+c2xvdF90 Ymxfc3RhdGUpOw0KPiAtfQ0KPiAtDQo+IC1ib29sIG5mczQxX3dha2VfYW5kX2Fzc2lnbl9zbG90 KHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgKnRibCwNCj4gLQkJc3RydWN0IG5mczRfc2xvdCAqc2xv dCk7DQo+IC12b2lkIG5mczQxX3dha2Vfc2xvdF90YWJsZShzdHJ1Y3QgbmZzNF9zbG90X3RhYmxl ICp0YmwpOw0KPiAtDQo+ICAvKg0KPiAgICogRGV0ZXJtaW5lIGlmIHNlc3Npb25zIGFyZSBpbiB1 c2UuDQo+ICAgKi8NCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0c3RhdGUuYyBiL2ZzL25mcy9u ZnM0c3RhdGUuYw0KPiBpbmRleCA2ODE4OTY0Li44ODI2ZGYzIDEwMDY0NA0KPiAtLS0gYS9mcy9u ZnMvbmZzNHN0YXRlLmMNCj4gKysrIGIvZnMvbmZzL25mczRzdGF0ZS5jDQo+IEBAIC0yNjAsMTUg KzI2MCw2IEBAIHN0YXRpYyB2b2lkIG5mczRfZW5kX2RyYWluX3Nlc3Npb24oc3RydWN0IG5mc19j bGllbnQgKmNscCkNCj4gIAl9DQo+ICB9DQo+ICANCj4gLS8qDQo+IC0gKiBTaWduYWwgc3RhdGUg bWFuYWdlciB0aHJlYWQgaWYgc2Vzc2lvbiBmb3JlIGNoYW5uZWwgaXMgZHJhaW5lZA0KPiAtICov DQo+IC12b2lkIG5mczRfc2xvdF90YmxfZHJhaW5fY29tcGxldGUoc3RydWN0IG5mczRfc2xvdF90 YWJsZSAqdGJsKQ0KPiAtew0KPiAtCWlmIChuZnM0X3Nsb3RfdGJsX2RyYWluaW5nKHRibCkpDQo+ IC0JCWNvbXBsZXRlKCZ0YmwtPmNvbXBsZXRlKTsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGludCBu ZnM0X2RyYWluX3Nsb3RfdGJsKHN0cnVjdCBuZnM0X3Nsb3RfdGFibGUgKnRibCkNCj4gIHsNCj4g IAlzZXRfYml0KE5GUzRfU0xPVF9UQkxfRFJBSU5JTkcsICZ0YmwtPnNsb3RfdGJsX3N0YXRlKTsN Cj4gDQo+IC0tDQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5l ICJ1bnN1YnNjcmliZSBsaW51eC1uZnMiIGluDQo+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBt YWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6 Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KDQp3aGVuIGNvbXBpbGVkIHdp dGhvdXQgQ09ORklHX05GU19WNF8xLCBzcGFyc2UgY29tcGxhaW5zOg0KDQpbdHJvbmRteUBsZWly YSBsaW51eC1uZnNdJCBtYWtlIE89Li4vb2JqZWN0Lng4Nl82NCBXPTEgQz0yIGZzL25mcy9uZnM0 c2Vzc2lvbi5vDQptYWtlWzJdOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yIGBhbGwnLg0KbWFrZVsy XTogTm90aGluZyB0byBiZSBkb25lIGZvciBgcmVsb2NzJy4NCiAgVXNpbmcgL2hvbWUvdHJvbmRt eS9kZXZlbC9rZXJuZWwvbGludXgtbmZzIGFzIHNvdXJjZSBmb3Iga2VybmVsDQogIEdFTiAgICAg L2hvbWUvdHJvbmRteS9kZXZlbC9rZXJuZWwvb2JqZWN0Lng4Nl82NC9NYWtlZmlsZQ0KICBDSEsg ICAgIGluY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvbGludXgvdmVyc2lvbi5oDQogIENISyAgICAgaW5j bHVkZS9nZW5lcmF0ZWQvdXRzcmVsZWFzZS5oDQogIENBTEwgICAgL2hvbWUvdHJvbmRteS9kZXZl bC9rZXJuZWwvbGludXgtbmZzL3NjcmlwdHMvY2hlY2tzeXNjYWxscy5zaA0KICBDSEVDSyAgIC9o b21lL3Ryb25kbXkvZGV2ZWwva2VybmVsL2xpbnV4LW5mcy9zY3JpcHRzL21vZC9lbXB0eS5jDQog IENIRUNLICAgL2hvbWUvdHJvbmRteS9kZXZlbC9rZXJuZWwvbGludXgtbmZzL2ZzL25mcy9uZnM0 c2Vzc2lvbi5jDQovaG9tZS90cm9uZG15L2RldmVsL2tlcm5lbC9saW51eC1uZnMvZnMvbmZzL25m czRzZXNzaW9uLmM6MzA0OjY6IHdhcm5pbmc6IHN5bWJvbCAnbmZzNDFfc2V0X3RhcmdldF9zbG90 aWQnIHdhcyBub3QgZGVjbGFyZWQuIFNob3VsZCBpdCBiZSBzdGF0aWM/DQovaG9tZS90cm9uZG15 L2RldmVsL2tlcm5lbC9saW51eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2Fybmlu ZzogZGVyZWZlcmVuY2Ugb2Ygbm9kZXJlZiBleHByZXNzaW9uDQovaG9tZS90cm9uZG15L2RldmVs L2tlcm5lbC9saW51eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2FybmluZzogZGVy ZWZlcmVuY2Ugb2Ygbm9kZXJlZiBleHByZXNzaW9uDQovaG9tZS90cm9uZG15L2RldmVsL2tlcm5l bC9saW51eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2FybmluZzogZGVyZWZlcmVu Y2Ugb2Ygbm9kZXJlZiBleHByZXNzaW9uDQovaG9tZS90cm9uZG15L2RldmVsL2tlcm5lbC9saW51 eC1uZnMvaW5jbHVkZS9saW51eC9lcnIuaDozNDoxNjogd2FybmluZzogZGVyZWZlcmVuY2Ugb2Yg bm9kZXJlZiBleHByZXNzaW9uDQogIENDIFtNXSAgZnMvbmZzL25mczRzZXNzaW9uLm8NCi9ob21l L3Ryb25kbXkvZGV2ZWwva2VybmVsL2xpbnV4LW5mcy9mcy9uZnMvbmZzNHNlc3Npb24uYzozMDQ6 Njogd2FybmluZzogbm8gcHJldmlvdXMgcHJvdG90eXBlIGZvciDigJhuZnM0MV9zZXRfdGFyZ2V0 X3Nsb3RpZOKAmSBbLVdtaXNzaW5nLXByb3RvdHlwZXNdDQogdm9pZCBuZnM0MV9zZXRfdGFyZ2V0 X3Nsb3RpZChzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwsDQogICAgICBeDQovaG9tZS90cm9u ZG15L2RldmVsL2tlcm5lbC9saW51eC1uZnMvZnMvbmZzL25mczRzZXNzaW9uLmM6MjAwOjEyOiB3 YXJuaW5nOiDigJhuZnM0X3JlYWxsb2Nfc2xvdF90YWJsZeKAmSBkZWZpbmVkIGJ1dCBub3QgdXNl ZCBbLVd1bnVzZWQtZnVuY3Rpb25dDQogc3RhdGljIGludCBuZnM0X3JlYWxsb2Nfc2xvdF90YWJs ZShzdHJ1Y3QgbmZzNF9zbG90X3RhYmxlICp0YmwsDQoNCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QN CkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lcg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVzdEBu ZXRhcHAuY29tDQp3d3cubmV0YXBwLmNvbQ0K