From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: Re: Re: [PATCH 4/4] raid1: Rewrite the implementation of iobarrier. Date: Thu, 31 Oct 2013 11:20:55 +0800 Message-ID: <201310311114307462606@gmail.com> References: <201308281940511854138@gmail.com> <20131024125059.1a440152@notabene.brown> <201310290930116677124@gmail.com>, <20131031133314.522f30ad@notabene.brown> Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: NeilBrown Cc: linux-raid List-Id: linux-raid.ids Pk9uIFR1ZSwgMjkgT2N0IDIwMTMgMDk6MzA6MTQgKzA4MDAgbWFqaWFucGVuZyA8bWFqaWFucGVu Z0BnbWFpbC5jb20+IHdyb3RlOg0KPg0KPg0KPk5lYXJseSB0aGVyZSEhICBKdXN0IGEgZmV3IG1v cmUgZGV0YWlscy4gIFNlZSBiZWxvdy4NCj4NCj4NCj4+IFNpZ25lZC1vZmYtYnk6IEppYW5wZW5n IE1hIDxtYWppYW5wZW5nQGdtYWlsLmNvbT4NCj4+IC0tLQ0KPj4gIGRyaXZlcnMvbWQvcmFpZDEu YyB8IDEyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQ0KPj4gIGRyaXZlcnMvbWQvcmFpZDEuaCB8ICAxNCArKysrKysNCj4+ICAyIGZpbGVzIGNo YW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkNCj4+IA0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEuYw0KPj4gaW5kZXgg YjRhNmRjZC4uNWIzMTFjMCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbWQvcmFpZDEuYw0KPj4g KysrIGIvZHJpdmVycy9tZC9yYWlkMS5jDQo+PiBAQCAtNjYsNyArNjYsOCBAQA0KPj4gICAqLw0K Pj4gIHN0YXRpYyBpbnQgbWF4X3F1ZXVlZF9yZXF1ZXN0cyA9IDEwMjQ7DQo+PiAgDQo+PiAtc3Rh dGljIHZvaWQgYWxsb3dfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKTsNCj4+ICtzdGF0aWMg dm9pZCBhbGxvd19iYXJyaWVyKHN0cnVjdCByMWNvbmYgKmNvbmYsIHNlY3Rvcl90IHN0YXJ0X25l eHRfd2luZG93LA0KPj4gKwkJCQlzZWN0b3JfdCBiaV9zZWN0b3IpOw0KPj4gIHN0YXRpYyB2b2lk IGxvd2VyX2JhcnJpZXIoc3RydWN0IHIxY29uZiAqY29uZik7DQo+PiAgDQo+PiAgc3RhdGljIHZv aWQgKiByMWJpb19wb29sX2FsbG9jKGdmcF90IGdmcF9mbGFncywgdm9pZCAqZGF0YSkNCj4+IEBA IC0yMjcsNiArMjI4LDggQEAgc3RhdGljIHZvaWQgY2FsbF9iaW9fZW5kaW8oc3RydWN0IHIxYmlv ICpyMV9iaW8pDQo+PiAgCXN0cnVjdCBiaW8gKmJpbyA9IHIxX2Jpby0+bWFzdGVyX2JpbzsNCj4+ ICAJaW50IGRvbmU7DQo+PiAgCXN0cnVjdCByMWNvbmYgKmNvbmYgPSByMV9iaW8tPm1kZGV2LT5w cml2YXRlOw0KPj4gKwlzZWN0b3JfdCBzdGFydF9uZXh0X3dpbmRvdyA9IHIxX2Jpby0+c3RhcnRf bmV4dF93aW5kb3c7DQo+PiArCXNlY3Rvcl90IGJpX3NlY3RvciA9IGJpby0+Ymlfc2VjdG9yOw0K Pg0KPlRoaXMgc2hvdWxkICBiZSByMV9iaW8tPnNlY3Rvciwgbm90IGJpby0+Ymlfc2VjdG9yLg0K PlRoZXkgYXJlIG9mdGVuIHRoZSBzYW1lIGJ1dCBpZiBtdWx0aXBsZSByMV9iaW9zIGFyZSBuZWVk ZWQgZm9yIHNvbWUgcmVhc29uDQo+KGUuZy4gYmFkIGJsb2NrcykgdGhleSBtYXkgbm90IGJlLg0K Pg0KTm8sIGFsbG93X2JhcnJpZXIoKSBvbmx5IGZvciBiaW8gbm90IGZvciByMWJpby5JdCBvbmx5 IGRvIHdoZW4gYmlvLT5iaV9waHlzX3NlZ21lbnRzID09IDAuDQpJZiB0aGlzIHZhbHVlIGlzIHIx X2Jpby0+c2VjdG9yLCB0aGUgdmFsdWUgbWF5IGhhcyBkaWZmZXJlbnQgdmFsdWUgYXMgeW91IHNh aWQuDQpTbyBpbiBhbGxvd19iYXJyaWVyKCk6DQogICAgICAgaWYgKHN0YXJ0X25leHRfd2luZG93 KSB7DQogICAgICAgICAgICAgICAgaWYgKHN0YXJ0X25leHRfd2luZG93ID09IGNvbmYtPnN0YXJ0 X25leHRfd2luZG93KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZi0+c3RhcnRf bmV4dF93aW5kb3cgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDw9IGJpX3NlY3RvcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uZi0+bmV4dF93aW5kb3dfcmVxdWVzdHMtLTsNCiAgICAgICAgICAgICAgICAgICAgICAg IGVsc2UgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmYtPmN1cnJlbnRfd2lu ZG93X3JlcXVlc3RzLS07DQogICAgICAgICAgICAgICAgfSBlbHNlIA0KSXQgd2lsbCBoYXMgZGlm ZmVybnQgcmVzdWx0Lg0KDQo+PiAgDQo+PiAgCWlmIChiaW8tPmJpX3BoeXNfc2VnbWVudHMpIHsN Cj4+ICAJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+PiBAQCAtMjM0LDYgKzIzNywxMSBAQCBzdGF0 aWMgdm9pZCBjYWxsX2Jpb19lbmRpbyhzdHJ1Y3QgcjFiaW8gKnIxX2JpbykNCj4+ICAJCWJpby0+ YmlfcGh5c19zZWdtZW50cy0tOw0KPj4gIAkJZG9uZSA9IChiaW8tPmJpX3BoeXNfc2VnbWVudHMg PT0gMCk7DQo+PiAgCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjb25mLT5kZXZpY2VfbG9jaywg ZmxhZ3MpOw0KPj4gKwkJLyoNCj4+ICsJCSAqIG1ha2VfcmVxdWVzdCgpIG1pZ2h0IGJlIHdhaXRp bmcgZm9yDQo+PiArCQkgKiBiaV9waHlzX3NlZ21lbnRzIHRvIGRlY3JlYXNlDQo+PiArCQkgKi8N Cj4+ICsJCXdha2VfdXAoJmNvbmYtPndhaXRfYmFycmllcik7DQo+PiAgCX0gZWxzZQ0KPj4gIAkJ ZG9uZSA9IDE7DQo+PiAgDQo+PiBAQCAtMjQ1LDcgKzI1Myw3IEBAIHN0YXRpYyB2b2lkIGNhbGxf YmlvX2VuZGlvKHN0cnVjdCByMWJpbyAqcjFfYmlvKQ0KPj4gIAkJICogV2FrZSB1cCBhbnkgcG9z c2libGUgcmVzeW5jIHRocmVhZCB0aGF0IHdhaXRzIGZvciB0aGUgZGV2aWNlDQo+PiAgCQkgKiB0 byBnbyBpZGxlLg0KPj4gIAkJICovDQo+PiAtCQlhbGxvd19iYXJyaWVyKGNvbmYpOw0KPj4gKwkJ YWxsb3dfYmFycmllcihjb25mLCBzdGFydF9uZXh0X3dpbmRvdywgYmlfc2VjdG9yKTsNCj4+ICAJ fQ0KPj4gIH0NCj4+ICANCj4+IEBAIC04MjcsMTAgKzgzNSwxOCBAQCBzdGF0aWMgdm9pZCByYWlz ZV9iYXJyaWVyKHN0cnVjdCByMWNvbmYgKmNvbmYpDQo+PiAgCS8qIGJsb2NrIGFueSBuZXcgSU8g ZnJvbSBzdGFydGluZyAqLw0KPj4gIAljb25mLT5iYXJyaWVyKys7DQo+PiAgDQo+PiAtCS8qIE5v dyB3YWl0IGZvciBhbGwgcGVuZGluZyBJTyB0byBjb21wbGV0ZSAqLw0KPj4gKwkvKiBGb3IgdGhv c2UgY29uZGl0aW9ucyB3ZSBtdXN0IHdhaXQ6DQo+PiArCSAqIEE6d2hpbGUgdGhlIGFycmF5IGlz IGluIGZyb3plbiBzdGF0ZQ0KPj4gKwkgKiBCOndoaWxlIGJhcnJpZXIgPj0gUkVTWU5DX0RFUFRI LCBtZWFuaW5nIHJlc3luYyByZWFjaA0KPj4gKwkgKiAgIHRoZSBtYXggY291bnQgd2hpY2ggYWxs b3dlZC4NCj4+ICsJICogQzpuZXh0X3Jlc3luYyArIFJFU1lOQ19TRUNUT1JTID4gc3RhcnRfbmV4 dF93aW5kb3csIG1lYW5pbmcNCj4+ICsJICogICBuZXh0IHJlc3luYyB3aWxsIHJlYWNoIHRvIHdp bmRvdyB3aGljaCBub3JtYWwgYmlvcyBhcmUgaGFuZGxpbmcuDQo+PiArCSAqLw0KPj4gIAl3YWl0 X2V2ZW50X2xvY2tfaXJxKGNvbmYtPndhaXRfYmFycmllciwNCj4+ICAJCQkgICAgIWNvbmYtPmFy cmF5X2Zyb3plbiAmJg0KPj4gLQkJCSAgICAhY29uZi0+bnJfcGVuZGluZyAmJiBjb25mLT5iYXJy aWVyIDwgUkVTWU5DX0RFUFRILA0KPj4gKwkJCSAgICBjb25mLT5iYXJyaWVyIDwgUkVTWU5DX0RF UFRIICYmDQo+PiArCQkJICAgIChjb25mLT5zdGFydF9uZXh0X3dpbmRvdyA+PQ0KPj4gKwkJCSAg ICAgY29uZi0+bmV4dF9yZXN5bmMgKyBSRVNZTkNfU0VDVE9SUyksDQo+PiAgCQkJICAgIGNvbmYt PnJlc3luY19sb2NrKTsNCj4NCj5Zb3UndmUgcmVtb3ZlZCB0aGUgdGVzdCBvbiBjb25mLT5ucl9w ZW5kaW5nIGhlcmUsIHdoaWNoIEkgdGhpbmsgaXMgY29ycmVjdC4NCj5JdCBjb3VudHMgJ3JlYWQn IHJlcXVlc3RzIGFzIHdlbGwuICBUZXN0aW5nIHN0YXJ0X25leHRfd2luZG93IHNlcnZlcyB0aGUg c2FtZQ0KPnB1cnBvc2UgYXMgaXQgaXMgaW5jcmVhc2VkIHdoZW5ldmVyIGN1cnJlbnRfd2luZG93 X3JlcXVlc3RzIHJlYWNoZXMgemVyby4NCj4NCkluIGZ1bmMgd2FpdF9iYXJyaWVyKCk6DQogICAg ICAgIGlmIChuZWVkX3RvX3dhaXRfZm9yX3N5bmMoY29uZiwgYmlvKSkgew0KICAgICAgICAgICAg ICBbc25pcF0NCiAgICAgICAgfSBlbHNlIGlmIChiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkg ew0KICAgICAgICAgICAgICAgIGlmIChjb25mLT5uZXh0X3Jlc3luYyArIE5FWFRfTk9STUFMSU9f RElTVEFOQ0UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0gYmlvLT5iaV9zZWN0 b3IpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25mLT5zdGFydF9uZXh0X3dpbmRv dyA9PSBNYXhTZWN0b3IpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmYtPnN0 YXJ0X25leHRfd2luZG93ID0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25mLT5uZXh0X3Jlc3luYyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBORVhUX05PUk1BTElPX0RJU1RBTkNFOw0KDQogICAgICAgICAgICAgICAg ICAgICAgICBpZiAoKGNvbmYtPnN0YXJ0X25leHRfd2luZG93ICsgTkVYVF9OT1JNQUxJT19ESVNU QU5DRSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0gYmlvLT5iaV9zZWN0b3Ip DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmYtPm5leHRfd2luZG93X3JlcXVl c3RzKys7DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbmYtPmN1cnJlbnRfd2luZG93X3JlcXVlc3RzKys7DQogICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChiaW8tPmJpX3NlY3RvciA+PSBjb25mLT5zdGFy dF9uZXh0X3dpbmRvdykNCiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3RvciA9IGNvbmYtPnN0 YXJ0X25leHRfd2luZG93Ow0KICAgICAgICB9DQpzdGFydF9uZXh0X3dpbmRvdyBvbmx5IGZvciBi aW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURS4gU28gcmVzeW5jIGNhbid0IHdhaXQgcmVhZCBpbyB0 byBjb21wbGV0ZS4NCg0KPkhvd2V2ZXIgeW91IGhhdmluZyBtb2RpZmllZCBhcyBzaW1pbGFyIHRl c3Qgb24gbnJfcGVuZGluZyBpbiB3YWl0X2JhcnJpZXIoKS4NCj5UaGF0IHdvcnJpZXMgbWUgYSBi aXQuICBTaG91bGQgdGhhdCBiZSBjaGFuZ2VkIHRvIGEgdGVzdCBvbiBzdGFydF9uZXh0X3dpbmRv dw0KPnRvIG1hdGNoIHRoZSBhYm92ZSBjaGFuZ2U/DQpGb3IgdGhpcyBjb25kaXRpb24sIGkgb25s eSBjb3B5IGl0LkZvciB0aGlzIGNvbmRpdGlvbiwgaSdtIG5vdCBrbm93IGNsZWFybHkuDQpDYW4g eW91IGdpdmUgbWUgbW9yZSBkZXRhaWxzIGFib3V0IHRoaXM/DQo+DQo+DQo+PiAgDQo+PiAgCXNw aW5fdW5sb2NrX2lycSgmY29uZi0+cmVzeW5jX2xvY2spOw0KPj4gQEAgLTg0NiwxMCArODYyLDMz IEBAIHN0YXRpYyB2b2lkIGxvd2VyX2JhcnJpZXIoc3RydWN0IHIxY29uZiAqY29uZikNCj4+ICAJ d2FrZV91cCgmY29uZi0+d2FpdF9iYXJyaWVyKTsNCj4+ICB9DQo+PiAgDQo+PiAtc3RhdGljIHZv aWQgd2FpdF9iYXJyaWVyKHN0cnVjdCByMWNvbmYgKmNvbmYpDQo+PiArc3RhdGljIGJvb2wgbmVl ZF90b193YWl0X2Zvcl9zeW5jKHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVjdCBiaW8gKmJpbykN Cj4+ICt7DQo+PiArCWJvb2wgd2FpdCA9IGZhbHNlOw0KPj4gKw0KPj4gKwlpZiAoY29uZi0+YXJy YXlfZnJvemVuIHx8ICFiaW8pDQo+PiArCQl3YWl0ID0gdHJ1ZTsNCj4+ICsJZWxzZSBpZiAoY29u Zi0+YmFycmllciAmJiBiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgew0KPj4gKwkJaWYgKGNv bmYtPm5leHRfcmVzeW5jIDwgUkVTWU5DX1dJTkRPV19TRUNUT1JTKQ0KPj4gKwkJCXdhaXQgPSB0 cnVlOw0KPj4gKwkJZWxzZSBpZiAoKGNvbmYtPm5leHRfcmVzeW5jIC0gUkVTWU5DX1dJTkRPV19T RUNUT1JTDQo+PiArCQkJCT49IGJpb19lbmRfc2VjdG9yKGJpbykpIHx8DQo+PiArCQkJIChjb25m LT5uZXh0X3Jlc3luYyArIE5FWFRfTk9STUFMSU9fRElTVEFOQ0UNCj4+ICsJCQkJPD0gYmlvLT5i aV9zZWN0b3IpKQ0KPj4gKwkJCXdhaXQgPSBmYWxzZTsNCj4+ICsJCWVsc2UNCj4+ICsJCQl3YWl0 ID0gdHJ1ZTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gd2FpdDsNCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIHNlY3Rvcl90IHdhaXRfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mLCBzdHJ1 Y3QgYmlvICpiaW8pDQo+PiAgew0KPj4gKwlzZWN0b3JfdCBzZWN0b3IgPSAwOw0KPj4gKw0KPj4g IAlzcGluX2xvY2tfaXJxKCZjb25mLT5yZXN5bmNfbG9jayk7DQo+PiAtCWlmIChjb25mLT5iYXJy aWVyKSB7DQo+PiArCWlmIChuZWVkX3RvX3dhaXRfZm9yX3N5bmMoY29uZiwgYmlvKSkgew0KPj4g IAkJY29uZi0+bnJfd2FpdGluZysrOw0KPj4gIAkJLyogV2FpdCBmb3IgdGhlIGJhcnJpZXIgdG8g ZHJvcC4NCj4+ICAJCSAqIEhvd2V2ZXIgaWYgdGhlcmUgYXJlIGFscmVhZHkgcGVuZGluZw0KPj4g QEAgLTg2OCwxNiArOTA3LDU3IEBAIHN0YXRpYyB2b2lkIHdhaXRfYmFycmllcihzdHJ1Y3QgcjFj b25mICpjb25mKQ0KPj4gIAkJCQkgICAgICFiaW9fbGlzdF9lbXB0eShjdXJyZW50LT5iaW9fbGlz dCkpKSwNCj4+ICAJCQkJICAgIGNvbmYtPnJlc3luY19sb2NrKTsNCj4+ICAJCWNvbmYtPm5yX3dh aXRpbmctLTsNCj4+ICsJfSBlbHNlIGlmIChiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgew0K Pj4gKwkJaWYgKGNvbmYtPm5leHRfcmVzeW5jICsgTkVYVF9OT1JNQUxJT19ESVNUQU5DRQ0KPj4g KwkJCQk8PSBiaW8tPmJpX3NlY3Rvcikgew0KPj4gKwkJCWlmIChjb25mLT5zdGFydF9uZXh0X3dp bmRvdyA9PSBNYXhTZWN0b3IpDQo+PiArCQkJCWNvbmYtPnN0YXJ0X25leHRfd2luZG93ID0NCj4+ ICsJCQkJCWNvbmYtPm5leHRfcmVzeW5jICsNCj4+ICsJCQkJCQlORVhUX05PUk1BTElPX0RJU1RB TkNFOw0KPj4gKw0KPj4gKwkJCWlmICgoY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgKyBORVhUX05P Uk1BTElPX0RJU1RBTkNFKQ0KPj4gKwkJCQk8PSBiaW8tPmJpX3NlY3RvcikNCj4+ICsJCQkJY29u Zi0+bmV4dF93aW5kb3dfcmVxdWVzdHMrKzsNCj4+ICsJCQllbHNlDQo+PiArCQkJCWNvbmYtPmN1 cnJlbnRfd2luZG93X3JlcXVlc3RzKys7DQo+PiArCQl9DQo+PiArCQlpZiAoYmlvLT5iaV9zZWN0 b3IgPj0gY29uZi0+c3RhcnRfbmV4dF93aW5kb3cpDQo+PiArCQkJc2VjdG9yID0gY29uZi0+c3Rh cnRfbmV4dF93aW5kb3c7DQo+DQo+WW91IGFyZW4ndCBzZXR0aW5nICdzZWN0b3InIGlmIHdlIG5l ZWRlZCB0byB3YWl0LiAgSSBkb24ndCB0aGluayB0aGF0IGlzDQo+Y29ycmVjdCwgaXMgaXQ/DQo+ DQpZZXMuSG93IGFib3V0IHRob3NlIGNvZGU6DQpzcGluX2xvY2tfaXJxKCZjb25mLT5yZXN5bmNf bG9jayk7DQpyZXRyeV9jaGVjazoNCiAgICAgICAgaWYgKG5lZWRfdG9fd2FpdF9mb3Jfc3luYyhj b25mLCBiaW8pKSB7DQogICAgICAgICAgICAgICAgY29uZi0+bnJfd2FpdGluZysrOw0KICAgICAg ICAgICAgICAgIC8qIFdhaXQgZm9yIHRoZSBiYXJyaWVyIHRvIGRyb3AuDQogICAgICAgICAgICAg ICAgICogSG93ZXZlciBpZiB0aGVyZSBhcmUgYWxyZWFkeSBwZW5kaW5nDQogICAgICAgICAgICAg ICAgICogcmVxdWVzdHMgKHByZXZlbnRpbmcgdGhlIGJhcnJpZXIgZnJvbQ0KICAgICAgICAgICAg ICAgICAqIHJpc2luZyBjb21wbGV0ZWx5KSwgYW5kIHRoZQ0KICAgICAgICAgICAgICAgICAqIHBy ZS1wcm9jZXNzIGJpbyBxdWV1ZSBpc24ndCBlbXB0eSwNCiAgICAgICAgICAgICAgICAgKiB0aGVu IGRvbid0IHdhaXQsIGFzIHdlIG5lZWQgdG8gZW1wdHkNCiAgICAgICAgICAgICAgICAgKiB0aGF0 IHF1ZXVlIHRvIGdldCB0aGUgbnJfcGVuZGluZw0KICAgICAgICAgICAgICAgICAqIGNvdW50IGRv d24uDQogICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgd2FpdF9ldmVudF9sb2Nr X2lycShjb25mLT53YWl0X2JhcnJpZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhY29uZi0+YXJyYXlfZnJvemVuICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoIWNvbmYtPmJhcnJpZXIgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25mLT5ucl9wZW5kaW5nICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3VycmVudC0+YmlvX2xpc3QgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhYmlvX2xpc3RfZW1wdHkoY3VycmVudC0+YmlvX2xpc3QpKSksDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mLT5yZXN5bmNfbG9jayk7DQogICAgICAg ICAgICAgICAgY29uZi0+bnJfd2FpdGluZy0tOw0KCQkJCWdvdG8gcmV0cnlfY2hlY2s7DQo+DQo+ PiAgCX0NCj4+ICsNCj4+ICAJY29uZi0+bnJfcGVuZGluZysrOw0KPj4gIAlzcGluX3VubG9ja19p cnEoJmNvbmYtPnJlc3luY19sb2NrKTsNCj4+ICsJcmV0dXJuIHNlY3RvcjsNCj4+ICB9DQo+PiAg DQo+PiAtc3RhdGljIHZvaWQgYWxsb3dfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KPj4g K3N0YXRpYyB2b2lkIGFsbG93X2JhcnJpZXIoc3RydWN0IHIxY29uZiAqY29uZiwgc2VjdG9yX3Qg c3RhcnRfbmV4dF93aW5kb3csDQo+PiArCQkJCXNlY3Rvcl90IGJpX3NlY3RvcikNCj4+ICB7DQo+ PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+PiArDQo+PiAgCXNwaW5fbG9ja19pcnFzYXZlKCZj b25mLT5yZXN5bmNfbG9jaywgZmxhZ3MpOw0KPj4gIAljb25mLT5ucl9wZW5kaW5nLS07DQo+PiAr CWlmIChzdGFydF9uZXh0X3dpbmRvdykgew0KPj4gKwkJaWYgKHN0YXJ0X25leHRfd2luZG93ID09 IGNvbmYtPnN0YXJ0X25leHRfd2luZG93KSB7DQo+PiArCQkJaWYgKGNvbmYtPnN0YXJ0X25leHRf d2luZG93ICsgTkVYVF9OT1JNQUxJT19ESVNUQU5DRQ0KPj4gKwkJCQk8PSBiaV9zZWN0b3IpDQo+ PiArCQkJCWNvbmYtPm5leHRfd2luZG93X3JlcXVlc3RzLS07DQo+PiArCQkJZWxzZQ0KPj4gKwkJ CQljb25mLT5jdXJyZW50X3dpbmRvd19yZXF1ZXN0cy0tOw0KPj4gKwkJfSBlbHNlDQo+PiArCQkJ Y29uZi0+Y3VycmVudF93aW5kb3dfcmVxdWVzdHMtLTsNCj4+ICsNCj4+ICsJCWlmICghY29uZi0+ Y3VycmVudF93aW5kb3dfcmVxdWVzdHMpIHsNCj4+ICsJCQlpZiAoY29uZi0+bmV4dF93aW5kb3df cmVxdWVzdHMpIHsNCj4+ICsJCQkJY29uZi0+Y3VycmVudF93aW5kb3dfcmVxdWVzdHMgPQ0KPj4g KwkJCQkJY29uZi0+bmV4dF93aW5kb3dfcmVxdWVzdHM7DQo+PiArCQkJCWNvbmYtPm5leHRfd2lu ZG93X3JlcXVlc3RzID0gMDsNCj4+ICsJCQkJY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgKz0NCj4+ ICsJCQkJCU5FWFRfTk9STUFMSU9fRElTVEFOQ0U7DQo+PiArCQkJfSBlbHNlDQo+PiArCQkJCWNv bmYtPnN0YXJ0X25leHRfd2luZG93ID0gTWF4U2VjdG9yOw0KPj4gKwkJfQ0KPj4gKwl9DQo+PiAg CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvbmYtPnJlc3luY19sb2NrLCBmbGFncyk7DQo+PiAg CXdha2VfdXAoJmNvbmYtPndhaXRfYmFycmllcik7DQo+PiAgfQ0KPj4gQEAgLTEwMTIsNiArMTA5 Miw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1 Y3QgYmlvICogYmlvKQ0KPj4gIAlpbnQgZmlyc3RfY2xvbmU7DQo+PiAgCWludCBzZWN0b3JzX2hh bmRsZWQ7DQo+PiAgCWludCBtYXhfc2VjdG9yczsNCj4+ICsJc2VjdG9yX3Qgc3RhcnRfbmV4dF93 aW5kb3c7DQo+PiAgDQo+PiAgCS8qDQo+PiAgCSAqIFJlZ2lzdGVyIHRoZSBuZXcgcmVxdWVzdCBh bmQgd2FpdCBpZiB0aGUgcmVjb25zdHJ1Y3Rpb24NCj4+IEBAIC0xMDQxLDcgKzExMjIsNyBAQCBz dGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAq IGJpbykNCj4+ICAJCWZpbmlzaF93YWl0KCZjb25mLT53YWl0X2JhcnJpZXIsICZ3KTsNCj4+ICAJ fQ0KPj4gIA0KPj4gLQl3YWl0X2JhcnJpZXIoY29uZik7DQo+PiArCXN0YXJ0X25leHRfd2luZG93 ID0gd2FpdF9iYXJyaWVyKGNvbmYsIGJpbyk7DQo+PiAgDQo+PiAgCWJpdG1hcCA9IG1kZGV2LT5i aXRtYXA7DQo+PiAgDQo+PiBAQCAtMTE2Miw2ICsxMjQzLDcgQEAgcmVhZF9hZ2FpbjoNCj4+ICAN Cj4+ICAJZGlza3MgPSBjb25mLT5yYWlkX2Rpc2tzICogMjsNCj4+ICAgcmV0cnlfd3JpdGU6DQo+ PiArCXIxX2Jpby0+c3RhcnRfbmV4dF93aW5kb3cgPSBzdGFydF9uZXh0X3dpbmRvdzsNCj4+ICAJ YmxvY2tlZF9yZGV2ID0gTlVMTDsNCj4+ICAJcmN1X3JlYWRfbG9jaygpOw0KPj4gIAltYXhfc2Vj dG9ycyA9IHIxX2Jpby0+c2VjdG9yczsNCj4+IEBAIC0xMjMwLDE0ICsxMzEyLDI0IEBAIHJlYWRf YWdhaW46DQo+PiAgCWlmICh1bmxpa2VseShibG9ja2VkX3JkZXYpKSB7DQo+PiAgCQkvKiBXYWl0 IGZvciB0aGlzIGRldmljZSB0byBiZWNvbWUgdW5ibG9ja2VkICovDQo+PiAgCQlpbnQgajsNCj4+ ICsJCXNlY3Rvcl90IG9sZCA9IHN0YXJ0X25leHRfd2luZG93Ow0KPj4gIA0KPj4gIAkJZm9yIChq ID0gMDsgaiA8IGk7IGorKykNCj4+ICAJCQlpZiAocjFfYmlvLT5iaW9zW2pdKQ0KPj4gIAkJCQly ZGV2X2RlY19wZW5kaW5nKGNvbmYtPm1pcnJvcnNbal0ucmRldiwgbWRkZXYpOw0KPj4gIAkJcjFf YmlvLT5zdGF0ZSA9IDA7DQo+PiAtCQlhbGxvd19iYXJyaWVyKGNvbmYpOw0KPj4gKwkJYWxsb3df YmFycmllcihjb25mLCBzdGFydF9uZXh0X3dpbmRvdywgYmlvLT5iaV9zZWN0b3IpOw0KPg0KPkkg dGhpbmsgdGhpcyBzaG91bGQgYmUgcjFfYmlvLT5zZWN0b3IsIG5vdCBiaW8tPmJpX3NlY3Rvciwg Zm9yIHRoZSBzYW1lDQo+cmVhc29uIGFzIGVhcmxpZXIuDQo+DQpUaGUgZXhhcGxhaW5hdGlvbiBp cyB0aGUgc2FtZSBhdCBhYm92ZS4NCg0KVGhhbmtzIQ0KSmlhbnBlbmcgTWENCj4NCj4+ICAJCW1k X3dhaXRfZm9yX2Jsb2NrZWRfcmRldihibG9ja2VkX3JkZXYsIG1kZGV2KTsNCj4+IC0JCXdhaXRf YmFycmllcihjb25mKTsNCj4+ICsJCXN0YXJ0X25leHRfd2luZG93ID0gd2FpdF9iYXJyaWVyKGNv bmYsIGJpbyk7DQo+PiArCQkvKg0KPj4gKwkJICogV2UgbXVzdCBtYWtlIHN1cmUgdGhlIG11bHRp IHIxYmlvcyBvZiBiaW8gaGF2ZQ0KPj4gKwkJICogdGhlIHNhbWUgdmFsdWUgb2YgYmlfcGh5c19z ZWdtZW50cw0KPj4gKwkJICovDQo+PiArCQlpZiAoYmlvLT5iaV9waHlzX3NlZ21lbnRzICYmIG9s ZCAmJg0KPj4gKwkJCW9sZCAhPSBzdGFydF9uZXh0X3dpbmRvdykNCj4+ICsJCQkvKndhaXQgdGhl IGZvcm1lciByMWJpbyhzKSBjb21wbGV0ZWQqLw0KPj4gKwkJCXdhaXRfZXZlbnQoY29uZi0+d2Fp dF9iYXJyaWVyLA0KPj4gKwkJCQkJYmlvLT5iaV9waHlzX3NlZ21lbnRzID09IDEpOw0KPj4gIAkJ Z290byByZXRyeV93cml0ZTsNCj4+ICAJfQ0KPj4gIA0KPj4gQEAgLTE0MzcsMTEgKzE1MjksMTQg QEAgc3RhdGljIHZvaWQgcHJpbnRfY29uZihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KPj4gIA0KPj4g IHN0YXRpYyB2b2lkIGNsb3NlX3N5bmMoc3RydWN0IHIxY29uZiAqY29uZikNCj4+ICB7DQo+PiAt CXdhaXRfYmFycmllcihjb25mKTsNCj4+IC0JYWxsb3dfYmFycmllcihjb25mKTsNCj4+ICsJd2Fp dF9iYXJyaWVyKGNvbmYsIE5VTEwpOw0KPj4gKwlhbGxvd19iYXJyaWVyKGNvbmYsIDAsIDApOw0K Pj4gIA0KPj4gIAltZW1wb29sX2Rlc3Ryb3koY29uZi0+cjFidWZfcG9vbCk7DQo+PiAgCWNvbmYt PnIxYnVmX3Bvb2wgPSBOVUxMOw0KPj4gKw0KPj4gKwljb25mLT5uZXh0X3Jlc3luYyA9IDA7DQo+ PiArCWNvbmYtPnN0YXJ0X25leHRfd2luZG93ID0gTWF4U2VjdG9yOw0KPj4gIH0NCj4+ICANCj4+ ICBzdGF0aWMgaW50IHJhaWQxX3NwYXJlX2FjdGl2ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2KQ0KPj4g QEAgLTI3MTMsNiArMjgwOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgcjFjb25mICpzZXR1cF9jb25mKHN0 cnVjdCBtZGRldiAqbWRkZXYpDQo+PiAgCWNvbmYtPnBlbmRpbmdfY291bnQgPSAwOw0KPj4gIAlj b25mLT5yZWNvdmVyeV9kaXNhYmxlZCA9IG1kZGV2LT5yZWNvdmVyeV9kaXNhYmxlZCAtIDE7DQo+ PiAgDQo+PiArCWNvbmYtPnN0YXJ0X25leHRfd2luZG93ID0gTWF4U2VjdG9yOw0KPj4gKwljb25m LT5jdXJyZW50X3dpbmRvd19yZXF1ZXN0cyA9IGNvbmYtPm5leHRfd2luZG93X3JlcXVlc3RzID0g MDsNCj4+ICsNCj4+ICAJZXJyID0gLUVJTzsNCj4+ICAJZm9yIChpID0gMDsgaSA8IGNvbmYtPnJh aWRfZGlza3MgKiAyOyBpKyspIHsNCj4+ICANCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3Jh aWQxLmggYi9kcml2ZXJzL21kL3JhaWQxLmgNCj4+IGluZGV4IDMzMWE5OGEuLjA3NDI1YTEgMTAw NjQ0DQo+PiAtLS0gYS9kcml2ZXJzL21kL3JhaWQxLmgNCj4+ICsrKyBiL2RyaXZlcnMvbWQvcmFp ZDEuaA0KPj4gQEAgLTQxLDYgKzQxLDE5IEBAIHN0cnVjdCByMWNvbmYgew0KPj4gIAkgKi8NCj4+ ICAJc2VjdG9yX3QJCW5leHRfcmVzeW5jOw0KPj4gIA0KPj4gKwkvKndoZW4gcmFpZDEgc3RhcnQg cmVzeW5jLHdlIGRpdmlkZSByYWlkIGludG8gZm91ciBwYXJ0aXRpb25zDQo+PiArCSAqIHwtLS0t LS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18 DQo+PiArCSAqICAgICAgICBuZXh0X3Jlc3luYyAgIHN0YXJ0X25leHRfd2luZG93ICAgICAgICBQ Yw0KPj4gKwkgKiBOb3cgc3RhcnRfbmV4dF93aW5kb3cgPSBuZXh0X3Jlc3luYyArIE5FWFRfTk9S TUFMSU9fRElTVEFOQ0UNCj4+ICsJICogUGMgPSBzdGFydF9uZXh0X3dpbmRvdyArIE5FWFRfTk9S TUFMSU9fRElTVEFOQ0UNCj4+ICsJICogY3VycmVudF93aW5kb3dfcmVxdWVzdHMgbWVhbnMgdGhl IGNvdW50IG9mIG5vcm1hbElPIGJldHdlZW4NCj4+ICsJICogc3RhcnRfbmV4dF93aW5kb3cgYW5k IFBjLg0KPj4gKwkgKiBuZXh0X3dpbmRvd19yZXF1ZXN0cyBtZWFucyB0aGUgY291bnQgb2Ygbm9y bmFsSU8gYWZ0ZXIgUGMuDQo+PiArCSAqICovDQo+PiArCXNlY3Rvcl90CQlzdGFydF9uZXh0X3dp bmRvdzsNCj4+ICsJaW50CQkJY3VycmVudF93aW5kb3dfcmVxdWVzdHM7DQo+PiArCWludAkJCW5l eHRfd2luZG93X3JlcXVlc3RzOw0KPj4gKw0KPj4gIAlzcGlubG9ja190CQlkZXZpY2VfbG9jazsN Cj4+ICANCj4+ICAJLyogbGlzdCBvZiAnc3RydWN0IHIxYmlvJyB0aGF0IG5lZWQgdG8gYmUgcHJv Y2Vzc2VkIGJ5IHJhaWQxZCwNCj4+IEBAIC0xMTIsNiArMTI1LDcgQEAgc3RydWN0IHIxYmlvIHsN Cj4+ICAJCQkJCQkgKiBpbiB0aGlzIEJlaGluZElPIHJlcXVlc3QNCj4+ICAJCQkJCQkgKi8NCj4+ ICAJc2VjdG9yX3QJCXNlY3RvcjsNCj4+ICsJc2VjdG9yX3QJCXN0YXJ0X25leHRfd2luZG93Ow0K Pj4gIAlpbnQJCQlzZWN0b3JzOw0KPj4gIAl1bnNpZ25lZCBsb25nCQlzdGF0ZTsNCj4+ICAJc3Ry dWN0IG1kZGV2CQkqbWRkZXY7DQo+DQo+DQo+VGhhbmtzLA0KPk5laWxCcm93bg0KPg==