Return-Path: linux-nfs-owner@vger.kernel.org Received: from mx2.netapp.com ([216.240.18.37]:37985 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757566Ab2BISRV (ORCPT ); Thu, 9 Feb 2012 13:17:21 -0500 From: "Myklebust, Trond" To: "Adamson, Dros" CC: "chuck.lever@oracle.com" , "linux-nfs@vger.kernel.org" Subject: Re: [PATCH] NFS: include filelayout DS rpc stats in mountstats Date: Thu, 9 Feb 2012 18:16:58 +0000 Message-ID: <1328811417.13180.51.camel@lade.trondhjem.org> References: <1328805686-19559-1-git-send-email-dros@netapp.com> In-Reply-To: <1328805686-19559-1-git-send-email-dros@netapp.com> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org List-ID: T24gVGh1LCAyMDEyLTAyLTA5IGF0IDExOjQxIC0wNTAwLCBXZXN0b24gQW5kcm9zIEFkYW1zb24g d3JvdGU6DQo+IEluY2x1ZGUgUlBDIHN0YXRpc3RpY3MgZnJvbSBhbGwgZGF0YSBzZXJ2ZXJzIGlu IC9wcm9jL3NlbGYvbW91bnRzdGF0cyBmb3IgcE5GUw0KPiBmaWxlbGF5b3V0IG1vdW50cy4NCj4g DQo+IFRoZSBhZGRpdGlvbmFsIGluZm8gcHJpbnRlZCBvbiB0aGUgInBlci1vcCBzdGF0aXN0aWNz IiBsaW5lIGRvZXMgbm90IGJyZWFrDQo+IGN1cnJlbnQgbW91bnRzdGF0cyg4KSBmcm9tIG5mcy11 dGlscy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFdlc3RvbiBBbmRyb3MgQWRhbXNvbiA8ZHJvc0Bu ZXRhcHAuY29tPg0KPiAtLS0NCj4gDQo+IFRoaXMgaXMgY2xlYXJseSBhIGJldHRlciBhcHByb2Fj aCB0aGFuIEkgd2FzIHRha2luZyB0cnlpbmcgdG8ga2VlcCBEUyBycGMgc3RhdHMNCj4gc2VwYXJh dGUgaW4gL3Byb2Mvc2VsZi9tb3VudHN0YXRzLg0KPiANCj4gRllJLCB0aGVyZSBhcmUgbm8gb3Ro ZXIgY2FsbGVycyBvZiBycGNfcHJpbnRfaW9zdGF0cygpLg0KPiANCj4gVGhlIG5ldyBvdXRwdXQg b2YgL3Byb2Mvc2VsZi9tb3VudHN0YXRzIHdvcmtzIGZpbmUgd2l0aCBjdXJyZW50IG1vdW50c3Rh dHMgDQo+IHVzZXJsYW5kIHRvb2wuICBUaGUgYWRkaXRpb25hbCBkYXRhIG9uIHRoZSBwZXItb3Ag c3RhdGlzdGljcyBsaW5lIGRvZXNuJ3QgbWFrZQ0KPiBpdCBpbnRvIHRoZSBvdXRwdXQsIGJ1dCBJ IGxlZnQgaXQgaW4gL3Byb2Mvc2VsZi9tb3VudHN0YXRzIGJlY2F1c2UgaXQgZG9lc24ndA0KPiBi cmVhayBhbnl0aGluZyBhbmQgY2FuIGJlIGluY2x1ZGVkIGluIG5ld2VyIHZlcnNpb25zIG9mIG1v dW50c3RhdHMuDQo+IA0KPiBJIHBsYW4gb24gYWRkaW5nIHRoZSBwZXItRFMgc3RhdHMgKHJwYyBh bmQgb3RoZXJzKSBzb21ld2hlcmUgaW4gL3Byb2MvZnMvbmZzZnMvDQo+IHNvb24uDQo+IA0KPiAg ZnMvbmZzL25mczRmaWxlbGF5b3V0LmMgICAgICAgIHwgICAzMCArKysrKysrKysrKysrKysrKysr KysrKysrKw0KPiAgZnMvbmZzL3BuZnMuaCAgICAgICAgICAgICAgICAgIHwgICAyMyArKysrKysr KysrKysrKysrKysrKw0KPiAgZnMvbmZzL3BuZnNfZGV2LmMgICAgICAgICAgICAgIHwgICA0NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBmcy9uZnMvc3VwZXIu YyAgICAgICAgICAgICAgICAgfCAgICAzICstDQo+ICBpbmNsdWRlL2xpbnV4L3N1bnJwYy9tZXRy aWNzLmggfCAgIDEzICsrKysrKysrKy0NCj4gIG5ldC9zdW5ycGMvc3RhdHMuYyAgICAgICAgICAg ICB8ICAgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+ICA2IGZpbGVzIGNo YW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdp dCBhL2ZzL25mcy9uZnM0ZmlsZWxheW91dC5jIGIvZnMvbmZzL25mczRmaWxlbGF5b3V0LmMNCj4g aW5kZXggNzliZTdhYy4uNTFjNzFlNSAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL25mczRmaWxlbGF5 b3V0LmMNCj4gKysrIGIvZnMvbmZzL25mczRmaWxlbGF5b3V0LmMNCj4gQEAgLTMzLDYgKzMzLDgg QEANCj4gICNpbmNsdWRlIDxsaW51eC9uZnNfcGFnZS5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPg0KPiAgDQo+ICsjaW5jbHVkZSA8bGludXgvc3VucnBjL21ldHJpY3MuaD4NCj4gKw0K PiAgI2luY2x1ZGUgImludGVybmFsLmgiDQo+ICAjaW5jbHVkZSAibmZzNGZpbGVsYXlvdXQuaCIN Cj4gIA0KPiBAQCAtOTE4LDYgKzkyMCwzMyBAQCBmaWxlbGF5b3V0X2ZyZWVfZGV2ZWljZWlkX25v ZGUoc3RydWN0IG5mczRfZGV2aWNlaWRfbm9kZSAqZCkNCj4gIAluZnM0X2ZsX2ZyZWVfZGV2aWNl aWQoY29udGFpbmVyX29mKGQsIHN0cnVjdCBuZnM0X2ZpbGVfbGF5b3V0X2RzYWRkciwgaWRfbm9k ZSkpOw0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgdW5zaWduZWQgaW50DQo+ICtmaWxlbGF5b3V0X3Jw Y19hZGRfaW9zdGF0cyhzdHJ1Y3QgcnBjX2lvc3RhdHMgKnRvdGFsLA0KPiArCQkJICAgdW5zaWdu ZWQgaW50IG1heHByb2MsDQo+ICsJCQkgICBzdHJ1Y3QgbmZzNF9kZXZpY2VpZF9ub2RlICpkKQ0K PiArew0KPiArCXN0cnVjdCBuZnM0X2ZpbGVfbGF5b3V0X2RzYWRkciAqZHNhZGRyOw0KPiArCXN0 cnVjdCBuZnM0X3BuZnNfZHMgKmRzOw0KPiArCXVuc2lnbmVkIGludCBudW1fZHMgPSAwOw0KPiAr CXUzMiBpOw0KPiArDQo+ICsJZHNhZGRyID0gY29udGFpbmVyX29mKGQsIHN0cnVjdCBuZnM0X2Zp bGVfbGF5b3V0X2RzYWRkciwgaWRfbm9kZSk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZHNh ZGRyLT5kc19udW07IGkrKykgew0KPiArCQlkcyA9IGRzYWRkci0+ZHNfbGlzdFtpXTsNCj4gKw0K PiArCQkvKiBvbmx5IGFkZCBpb3N0YXRzIGlmIG5mc19jbGllbnQgaXMgZGlmZmVyZW50IGZyb20g TURTICovDQo+ICsJCWlmIChkcyAmJiBkcy0+ZHNfY2xwICYmIGQtPm5mc19jbGllbnQgIT0gZHMt PmRzX2NscCkgew0KPiArCQkJc3RydWN0IHJwY19jbG50ICpjbG50ID0gZHMtPmRzX2NscC0+Y2xf cnBjY2xpZW50Ow0KDQpIbW1tLi4uLiBTaG91bGRuJ3QgdGhpcyByYXRoZXIgYmUgdGhlIE5GU19D TElFTlQoaW5vZGUpPyBBbHNvLCB3aHkgbm90DQpkbyB0aGlzIGluIHRoZSByZWFkL3dyaXRlIGNv bXBsZXRpb24gY29kZT8gV2h5IHdhbGsgdGhlIGRldmljZWlkIGxpc3QgYXQNCmFsbD8NCg0KPiAr CQkJcnBjX2FkZF9pb3N0YXRzKHRvdGFsLCBjbG50LT5jbF9tZXRyaWNzLA0KPiArCQkJCQltaW4o bWF4cHJvYywgY2xudC0+Y2xfbWF4cHJvYykpOw0KPiArCQkJbnVtX2RzKys7DQo+ICsJCX0NCj4g Kwl9DQo+ICsNCj4gKwlyZXR1cm4gbnVtX2RzOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgc3RydWN0 IHBuZnNfbGF5b3V0ZHJpdmVyX3R5cGUgZmlsZWxheW91dF90eXBlID0gew0KPiAgCS5pZAkJCT0g TEFZT1VUX05GU1Y0XzFfRklMRVMsDQo+ICAJLm5hbWUJCQk9ICJMQVlPVVRfTkZTVjRfMV9GSUxF UyIsDQo+IEBAIC05MzIsNiArOTYxLDcgQEAgc3RhdGljIHN0cnVjdCBwbmZzX2xheW91dGRyaXZl cl90eXBlIGZpbGVsYXlvdXRfdHlwZSA9IHsNCj4gIAkucmVhZF9wYWdlbGlzdAkJPSBmaWxlbGF5 b3V0X3JlYWRfcGFnZWxpc3QsDQo+ICAJLndyaXRlX3BhZ2VsaXN0CQk9IGZpbGVsYXlvdXRfd3Jp dGVfcGFnZWxpc3QsDQo+ICAJLmZyZWVfZGV2aWNlaWRfbm9kZQk9IGZpbGVsYXlvdXRfZnJlZV9k ZXZlaWNlaWRfbm9kZSwNCj4gKwkuZHNfcnBjX2FkZF9pb3N0YXRzCT0gZmlsZWxheW91dF9ycGNf YWRkX2lvc3RhdHMsDQo+ICB9Ow0KPiAgDQo+ICBzdGF0aWMgaW50IF9faW5pdCBuZnM0ZmlsZWxh eW91dF9pbml0KHZvaWQpDQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvcG5mcy5oIGIvZnMvbmZzL3Bu ZnMuaA0KPiBpbmRleCA1M2Q1OTNhLi5kMWI4MmViIDEwMDY0NA0KPiAtLS0gYS9mcy9uZnMvcG5m cy5oDQo+ICsrKyBiL2ZzL25mcy9wbmZzLmgNCj4gQEAgLTcyLDYgKzcyLDcgQEAgZW51bSBsYXlv dXRkcml2ZXJfcG9saWN5X2ZsYWdzIHsNCj4gIH07DQo+ICANCj4gIHN0cnVjdCBuZnM0X2Rldmlj ZWlkX25vZGU7DQo+ICtzdHJ1Y3QgcnBjX2lvc3RhdHM7DQo+ICANCj4gIC8qIFBlci1sYXlvdXQg ZHJpdmVyIHNwZWNpZmljIHJlZ2lzdHJhdGlvbiBzdHJ1Y3R1cmUgKi8NCj4gIHN0cnVjdCBwbmZz X2xheW91dGRyaXZlcl90eXBlIHsNCj4gQEAgLTExOSw2ICsxMjAsOSBAQCBzdHJ1Y3QgcG5mc19s YXlvdXRkcml2ZXJfdHlwZSB7DQo+ICAJdm9pZCAoKmVuY29kZV9sYXlvdXRjb21taXQpIChzdHJ1 Y3QgcG5mc19sYXlvdXRfaGRyICpsYXlvdXRpZCwNCj4gIAkJCQkgICAgIHN0cnVjdCB4ZHJfc3Ry ZWFtICp4ZHIsDQo+ICAJCQkJICAgICBjb25zdCBzdHJ1Y3QgbmZzNF9sYXlvdXRjb21taXRfYXJn cyAqYXJncyk7DQo+ICsNCj4gKwl1bnNpZ25lZCBpbnQgKCpkc19ycGNfYWRkX2lvc3RhdHMpIChz dHJ1Y3QgcnBjX2lvc3RhdHMgKiwgdW5zaWduZWQgaW50LA0KPiArCQkJCQkgICAgc3RydWN0IG5m czRfZGV2aWNlaWRfbm9kZSAqKTsNCj4gIH07DQo+ICANCj4gIHN0cnVjdCBwbmZzX2xheW91dF9o ZHIgew0KPiBAQCAtMjM5LDYgKzI0MywxMCBAQCB2b2lkIG5mczRfaW5pdF9kZXZpY2VpZF9ub2Rl KHN0cnVjdCBuZnM0X2RldmljZWlkX25vZGUgKiwNCj4gIHN0cnVjdCBuZnM0X2RldmljZWlkX25v ZGUgKm5mczRfaW5zZXJ0X2RldmljZWlkX25vZGUoc3RydWN0IG5mczRfZGV2aWNlaWRfbm9kZSAq KTsNCj4gIGJvb2wgbmZzNF9wdXRfZGV2aWNlaWRfbm9kZShzdHJ1Y3QgbmZzNF9kZXZpY2VpZF9u b2RlICopOw0KPiAgdm9pZCBuZnM0X2RldmljZWlkX3B1cmdlX2NsaWVudChjb25zdCBzdHJ1Y3Qg bmZzX2NsaWVudCAqKTsNCj4gK3ZvaWQgbmZzNF9kZXZpY2VpZF9ycGNfcHJpbnRfaW9zdGF0cyhz dHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwNCj4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBuZnNfY2xpZW50 ICpjbHAsDQo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgcG5mc19sYXlvdXRkcml2ZXJfdHlwZSAq bGQpOw0KPiArDQo+ICANCj4gIHN0YXRpYyBpbmxpbmUgaW50IGxvX2ZhaWxfYml0KHUzMiBpb21v ZGUpDQo+ICB7DQo+IEBAIC0zMjgsNiArMzM2LDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBuZnNf cmV0dXJuX2xheW91dChzdHJ1Y3QgaW5vZGUgKmlubykNCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4g IA0KPiArc3RhdGljIGlubGluZSBpbnQNCj4gK3BuZnNfcnBjX3ByaW50X2lvc3RhdHMoc3RydWN0 IHNlcV9maWxlICptLCBzdHJ1Y3QgbmZzX3NlcnZlciAqbmZzcykNCj4gK3sNCj4gKwlpZiAoIXBu ZnNfZW5hYmxlZF9zYihuZnNzKSkNCj4gKwkJcmV0dXJuIDA7DQo+ICsJbmZzNF9kZXZpY2VpZF9y cGNfcHJpbnRfaW9zdGF0cyhtLCBuZnNzLT5uZnNfY2xpZW50LA0KPiArCQkJCQluZnNzLT5wbmZz X2N1cnJfbGQpOw0KPiArCXJldHVybiAxOw0KPiArfQ0KPiAgI2Vsc2UgIC8qIENPTkZJR19ORlNf VjRfMSAqLw0KPiAgDQo+ICBzdGF0aWMgaW5saW5lIHZvaWQgcG5mc19kZXN0cm95X2FsbF9sYXlv dXRzKHN0cnVjdCBuZnNfY2xpZW50ICpjbHApDQo+IEBAIC00MjksNiArNDQ2LDEyIEBAIHN0YXRp YyBpbmxpbmUgaW50IHBuZnNfbGF5b3V0Y29tbWl0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGJvb2wgc3luYykNCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBuZnM0X2RldmljZWlkX3B1cmdlX2Ns aWVudChzdHJ1Y3QgbmZzX2NsaWVudCAqbmNsKQ0KPiAgew0KPiAgfQ0KPiArDQo+ICtzdGF0aWMg aW5saW5lIHZvaWQNCj4gK3BuZnNfcnBjX3ByaW50X2lvc3RhdHMoc3RydWN0IHNlcV9maWxlICpt LCBzdHJ1Y3QgbmZzX3NlcnZlciAqbmZzcykNCj4gK3sNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4g ICNlbmRpZiAvKiBDT05GSUdfTkZTX1Y0XzEgKi8NCj4gIA0KPiAgI2VuZGlmIC8qIEZTX05GU19Q TkZTX0ggKi8NCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9wbmZzX2Rldi5jIGIvZnMvbmZzL3BuZnNf ZGV2LmMNCj4gaW5kZXggNGYzNTlkMi4uYWE1ZDEwMiAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL3Bu ZnNfZGV2LmMNCj4gKysrIGIvZnMvbmZzL3BuZnNfZGV2LmMNCj4gQEAgLTI5LDYgKzI5LDkgQEAN Cj4gICAqLw0KPiAgDQo+ICAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+DQo+ICsNCj4gKyNpbmNs dWRlIDxsaW51eC9zdW5ycGMvbWV0cmljcy5oPg0KPiArDQo+ICAjaW5jbHVkZSAicG5mcy5oIg0K PiAgDQo+ICAjZGVmaW5lIE5GU0RCR19GQUNJTElUWQkJTkZTREJHX1BORlMNCj4gQEAgLTExNSw2 ICsxMTgsNDggQEAgbmZzNF9maW5kX2dldF9kZXZpY2VpZChjb25zdCBzdHJ1Y3QgcG5mc19sYXlv dXRkcml2ZXJfdHlwZSAqbGQsDQo+ICB9DQo+ICBFWFBPUlRfU1lNQk9MX0dQTChuZnM0X2ZpbmRf Z2V0X2RldmljZWlkKTsNCj4gIA0KPiArDQo+ICt2b2lkDQo+ICtuZnM0X2RldmljZWlkX3JwY19w cmludF9pb3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqc2VxLA0KPiArCQkJCWNvbnN0IHN0cnVjdCBu ZnNfY2xpZW50ICpjbHAsDQo+ICsJCQkJY29uc3Qgc3RydWN0IHBuZnNfbGF5b3V0ZHJpdmVyX3R5 cGUgKmxkKQ0KPiArew0KPiArCXN0cnVjdCBuZnM0X2RldmljZWlkX25vZGUgKmQ7DQo+ICsJc3Ry dWN0IGhsaXN0X25vZGUgKm47DQo+ICsJc3RydWN0IHJwY19pb3N0YXRzICp0b3RhbHM7DQo+ICsJ Y2hhciBtc2didWZbNjRdOw0KPiArCXVuc2lnbmVkIGludCBudW1fZHMgPSAwOw0KPiArCXVuc2ln bmVkIGludCBtYXhwcm9jOw0KPiArCWxvbmcgaDsNCj4gKw0KPiArCWlmICghbGQtPmRzX3JwY19h ZGRfaW9zdGF0cykNCj4gKwkJcmV0dXJuOw0KPiArCXRvdGFscyA9IHJwY19hbGxvY19pb3N0YXRz KGNscC0+Y2xfcnBjY2xpZW50KTsNCj4gKwlpZiAoIXRvdGFscykNCj4gKwkJcmV0dXJuOw0KPiAr CW1heHByb2MgPSBjbHAtPmNsX3JwY2NsaWVudC0+Y2xfbWF4cHJvYzsNCj4gKwlycGNfYWRkX2lv c3RhdHModG90YWxzLCBjbHAtPmNsX3JwY2NsaWVudC0+Y2xfbWV0cmljcywgbWF4cHJvYyk7DQo+ ICsNCj4gKwlyY3VfcmVhZF9sb2NrKCk7DQo+ICsJZm9yIChoID0gMDsgaCA8IE5GUzRfREVWSUNF X0lEX0hBU0hfU0laRTsgaCsrKSB7DQo+ICsJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkLCBu LCAmbmZzNF9kZXZpY2VpZF9jYWNoZVtoXSwgbm9kZSkgew0KPiArCQkJaWYgKGQtPmxkID09IGxk ICYmIGQtPm5mc19jbGllbnQgPT0gY2xwKSB7DQo+ICsJCQkJaWYgKGF0b21pY19yZWFkKCZkLT5y ZWYpKQ0KPiArCQkJCQludW1fZHMgKz0gbGQtPmRzX3JwY19hZGRfaW9zdGF0cyh0b3RhbHMsDQo+ ICsJCQkJCQkJbWF4cHJvYywgZCk7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKwl9DQo+ICsJcmN1X3Jl YWRfdW5sb2NrKCk7DQo+ICsNCj4gKwlzbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLA0K PiArCQkgIiBmb3IgdGhlIG1ldGFkYXRhIHNlcnZlciBhbmQgJXUgZGF0YSBzZXJ2ZXIlcyIsIG51 bV9kcywNCj4gKwkJIChudW1fZHMgIT0gMSkgPyAicyIgOiAiIik7DQo+ICsJcnBjX3ByaW50X2lv c3RhdHMoc2VxLCBjbHAtPmNsX3JwY2NsaWVudCwgdG90YWxzLCBtc2didWYpOw0KPiArCXJwY19m cmVlX2lvc3RhdHModG90YWxzKTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKG5mczRfZGV2 aWNlaWRfcnBjX3ByaW50X2lvc3RhdHMpOw0KDQpJcyB0aGlzIG5lZWRlZD8gQUZBSUNTIGl0IGlz IHVzZWQgaW4gZnMvbmZzL3N1cGVyLmMsIHdoaWNoIGlzIGluIHRoZQ0Kc2FtZSBtb2R1bGUgKGku ZS4gbmZzLmtvKS4NCg0KPiAgLyoNCj4gICAqIFJlbW92ZSBhIGRldmljZWlkIGZyb20gY2FjaGUN Cj4gICAqDQo+IGRpZmYgLS1naXQgYS9mcy9uZnMvc3VwZXIuYyBiL2ZzL25mcy9zdXBlci5jDQo+ IGluZGV4IGQxOGE5MGIuLjc2ZDA4NTAgMTAwNjQ0DQo+IC0tLSBhL2ZzL25mcy9zdXBlci5jDQo+ ICsrKyBiL2ZzL25mcy9zdXBlci5jDQo+IEBAIC04NzAsNyArODcwLDggQEAgc3RhdGljIGludCBu ZnNfc2hvd19zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkZW50cnkgKnJvb3QpDQo+ ICAjZW5kaWYNCj4gIAlzZXFfcHJpbnRmKG0sICJcbiIpOw0KPiAgDQo+IC0JcnBjX3ByaW50X2lv c3RhdHMobSwgbmZzcy0+Y2xpZW50KTsNCj4gKwlpZiAoIXBuZnNfcnBjX3ByaW50X2lvc3RhdHMo bSwgbmZzcykpDQo+ICsJCXJwY19wcmludF9pb3N0YXRzKG0sIG5mc3MtPmNsaWVudCwgTlVMTCwg TlVMTCk7DQo+ICANCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvc3VucnBjL21ldHJpY3MuaCBiL2luY2x1ZGUvbGludXgvc3VucnBjL21ldHJpY3MuaA0K PiBpbmRleCBiNmVkYmMwLi5lNmUwNGU0IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3N1 bnJwYy9tZXRyaWNzLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvbWV0cmljcy5oDQo+ IEBAIC03NSwxNCArNzUsMjMgQEAgc3RydWN0IHJwY19jbG50Ow0KPiAgDQo+ICBzdHJ1Y3QgcnBj X2lvc3RhdHMgKglycGNfYWxsb2NfaW9zdGF0cyhzdHJ1Y3QgcnBjX2NsbnQgKik7DQo+ICB2b2lk CQkJcnBjX2NvdW50X2lvc3RhdHMoc3RydWN0IHJwY190YXNrICopOw0KPiAtdm9pZAkJCXJwY19w cmludF9pb3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqLCBzdHJ1Y3QgcnBjX2NsbnQgKik7DQo+ICt2 b2lkCQkJcnBjX3ByaW50X2lvc3RhdHMoc3RydWN0IHNlcV9maWxlICosDQo+ICsJCQkJCSAgc3Ry dWN0IHJwY19jbG50ICosDQo+ICsJCQkJCSAgc3RydWN0IHJwY19pb3N0YXRzICosDQo+ICsJCQkJ CSAgY29uc3QgY2hhciAqKTsNCj4gK3ZvaWQJCQlycGNfYWRkX2lvc3RhdHMoc3RydWN0IHJwY19p b3N0YXRzICosDQo+ICsJCQkJCXN0cnVjdCBycGNfaW9zdGF0cyAqLCB1bnNpZ25lZCBpbnQpOw0K PiAgdm9pZAkJCXJwY19mcmVlX2lvc3RhdHMoc3RydWN0IHJwY19pb3N0YXRzICopOw0KPiAgDQo+ ICAjZWxzZSAgLyogIENPTkZJR19QUk9DX0ZTICAqLw0KPiAgDQo+ICBzdGF0aWMgaW5saW5lIHN0 cnVjdCBycGNfaW9zdGF0cyAqcnBjX2FsbG9jX2lvc3RhdHMoc3RydWN0IHJwY19jbG50ICpjbG50 KSB7IHJldHVybiBOVUxMOyB9DQo+ICBzdGF0aWMgaW5saW5lIHZvaWQgcnBjX2NvdW50X2lvc3Rh dHMoc3RydWN0IHJwY190YXNrICp0YXNrKSB7fQ0KPiAtc3RhdGljIGlubGluZSB2b2lkIHJwY19w cmludF9pb3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQp IHt9DQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnBjX3ByaW50X2lvc3RhdHMoc3RydWN0IHNlcV9m aWxlICpzZXEsDQo+ICsJCQkJICAgICBzdHJ1Y3QgcnBjX2lvc3RhdHMgKnN0YXQpIHt9DQo+ICtz dGF0aWMgaW5saW5lIHZvaWQgcnBjX2FkZF9pb3N0YXRzKHN0cnVjdCBycGNfaW9zdGF0cyAqdG90 YWwsDQo+ICsJCQkJICAgc3RydWN0IHJwY19pb3N0YXRzICpuZXcsDQo+ICsJCQkJICAgdW5zaWdu ZWQgaW50IG1heHByb2MpIHt9DQo+ICBzdGF0aWMgaW5saW5lIHZvaWQgcnBjX2ZyZWVfaW9zdGF0 cyhzdHJ1Y3QgcnBjX2lvc3RhdHMgKnN0YXRzKSB7fQ0KPiAgDQo+ICAjZW5kaWYgIC8qICBDT05G SUdfUFJPQ19GUyAgKi8NCj4gZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMvc3RhdHMuYyBiL25ldC9z dW5ycGMvc3RhdHMuYw0KPiBpbmRleCAzYzRmNjg4Li4zNDJkZjU3IDEwMDY0NA0KPiAtLS0gYS9u ZXQvc3VucnBjL3N0YXRzLmMNCj4gKysrIGIvbmV0L3N1bnJwYy9zdGF0cy5jDQo+IEBAIC0xNzYs MTIgKzE3NiwxNiBAQCBzdGF0aWMgdm9pZCBfcHJpbnRfbmFtZShzdHJ1Y3Qgc2VxX2ZpbGUgKnNl cSwgdW5zaWduZWQgaW50IG9wLA0KPiAgCQlzZXFfcHJpbnRmKHNlcSwgIlx0JTEydTogIiwgb3Ap Ow0KPiAgfQ0KPiAgDQo+IC12b2lkIHJwY19wcmludF9pb3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAq c2VxLCBzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQpDQo+ICt2b2lkIHJwY19wcmludF9pb3N0YXRzKHN0 cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQsDQo+ICsJCSAgICAgICBz dHJ1Y3QgcnBjX2lvc3RhdHMgKmFsdHN0YXRzLA0KPiArCQkgICAgICAgY29uc3QgY2hhciAqYWx0 c3RhdHNfbXNnKQ0KPiAgew0KPiAgCXN0cnVjdCBycGNfaW9zdGF0cyAqc3RhdHMgPSBjbG50LT5j bF9tZXRyaWNzOw0KPiAgCXN0cnVjdCBycGNfeHBydCAqeHBydCA9IGNsbnQtPmNsX3hwcnQ7DQo+ ICAJdW5zaWduZWQgaW50IG9wLCBtYXhwcm9jID0gY2xudC0+Y2xfbWF4cHJvYzsNCj4gIA0KPiAr CWlmIChhbHRzdGF0cykNCj4gKwkJc3RhdHMgPSBhbHRzdGF0czsNCj4gIAlpZiAoIXN0YXRzKQ0K PiAgCQlyZXR1cm47DQo+ICANCj4gQEAgLTE5Miw3ICsxOTYsOCBAQCB2b2lkIHJwY19wcmludF9p b3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQpDQo+ICAJ aWYgKHhwcnQpDQo+ICAJCXhwcnQtPm9wcy0+cHJpbnRfc3RhdHMoeHBydCwgc2VxKTsNCj4gIA0K PiAtCXNlcV9wcmludGYoc2VxLCAiXHRwZXItb3Agc3RhdGlzdGljc1xuIik7DQo+ICsJc2VxX3By aW50ZihzZXEsICJcdHBlci1vcCBzdGF0aXN0aWNzJXNcbiIsDQo+ICsJCSAgIChhbHRzdGF0cyAm JiBhbHRzdGF0c19tc2cpID8gYWx0c3RhdHNfbXNnIDogIiIpOw0KPiAgCWZvciAob3AgPSAwOyBv cCA8IG1heHByb2M7IG9wKyspIHsNCj4gIAkJc3RydWN0IHJwY19pb3N0YXRzICptZXRyaWNzID0g JnN0YXRzW29wXTsNCj4gIAkJX3ByaW50X25hbWUoc2VxLCBvcCwgY2xudC0+Y2xfcHJvY2luZm8p Ow0KPiBAQCAtMjA5LDYgKzIxNCwzNSBAQCB2b2lkIHJwY19wcmludF9pb3N0YXRzKHN0cnVjdCBz ZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQpDQo+ICB9DQo+ICBFWFBPUlRfU1lN Qk9MX0dQTChycGNfcHJpbnRfaW9zdGF0cyk7DQo+ICANCj4gK3ZvaWQNCj4gK3JwY19hZGRfaW9z dGF0cyhzdHJ1Y3QgcnBjX2lvc3RhdHMgKnRvdGFscywgc3RydWN0IHJwY19pb3N0YXRzICpuZXcs DQo+ICsJCXVuc2lnbmVkIGludCBtYXhwcm9jKQ0KPiArew0KPiArCXVuc2lnbmVkIGludCBvcDsN Cj4gKw0KPiArCWZvciAob3AgPSAwOyBvcCA8IG1heHByb2M7IG9wKyspIHsNCj4gKwkJc3RydWN0 IHJwY19pb3N0YXRzICpvcF90b3RhbHMgPSAmdG90YWxzW29wXSwNCj4gKwkJCQkgICAqb3BfbmV3 ID0gJm5ld1tvcF07DQo+ICsNCj4gKwkJb3BfdG90YWxzLT5vbV9vcHMgKz0gb3BfbmV3LT5vbV9v cHM7DQo+ICsJCW9wX3RvdGFscy0+b21fbnRyYW5zICs9IG9wX25ldy0+b21fbnRyYW5zOw0KPiAr CQlvcF90b3RhbHMtPm9tX3RpbWVvdXRzICs9IG9wX25ldy0+b21fdGltZW91dHM7DQo+ICsNCj4g KwkJb3BfdG90YWxzLT5vbV9ieXRlc19zZW50ICs9IG9wX25ldy0+b21fYnl0ZXNfc2VudDsNCj4g KwkJb3BfdG90YWxzLT5vbV9ieXRlc19yZWN2ICs9IG9wX25ldy0+b21fYnl0ZXNfcmVjdjsNCj4g Kw0KPiArCQlvcF90b3RhbHMtPm9tX3F1ZXVlID0ga3RpbWVfYWRkKG9wX3RvdGFscy0+b21fcXVl dWUsDQo+ICsJCQkJCSAgICAgICBvcF9uZXctPm9tX3F1ZXVlKTsNCj4gKw0KPiArCQlvcF90b3Rh bHMtPm9tX3J0dCA9IGt0aW1lX2FkZChvcF90b3RhbHMtPm9tX3J0dCwNCj4gKwkJCQkJICAgICAg b3BfbmV3LT5vbV9ydHQpOw0KPiArDQo+ICsJCW9wX3RvdGFscy0+b21fZXhlY3V0ZSA9IGt0aW1l X2FkZChvcF90b3RhbHMtPm9tX2V4ZWN1dGUsDQo+ICsJCQkJCQkgb3BfbmV3LT5vbV9leGVjdXRl KTsNCj4gKwl9DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChycGNfYWRkX2lvc3RhdHMpOw0K PiArDQo+ICAvKg0KPiAgICogUmVnaXN0ZXIvdW5yZWdpc3RlciBSUEMgcHJvYyBmaWxlcw0KPiAg ICovDQoNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBORlMgY2xpZW50IG1haW50YWluZXIN Cg0KTmV0QXBwDQpUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbQ0Kd3d3Lm5ldGFwcC5jb20NCg0K