From mboxrd@z Thu Jan 1 00:00:00 1970 From: ycbzzjlby Subject: Re: Re: [PATCH v2] md/raid5: avoid deadlock when raid5 array has unack badblocks during md_stop_writes. Date: Thu, 12 Sep 2013 14:36:52 +0800 Message-ID: <2013091214365192240518@gmail.com> References: <1378098595-11536-1-git-send-email-ycbzzjlby@gmail.com>, <20130912144414.53fb8727@notabene.brown> Reply-To: ycbzzjlby 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 , Bian Yu List-Id: linux-raid.ids SGksDQogIFRoYW5rIHlvdSwgSSB0cmllZCB5b3VyIHBhdGNoLCBidXQgSSBnb3QgYSBkZWFkbG9j ay4NCiAgSSByZXByb2R1Y2UgaXQgd2l0aCBzY3JpcHQgYW5kIHNvbWUgYmFkIHNlY3RvcnMgb24g aGFyZCBkaXNrczoNCgkjIS9iaW4vc2gNCgltZGFkbSAtQ1IgL2Rldi9tZDAgLWIgbm9uZSAtYyA2 NCAtbDUgLW40IC9kZXYvc2RbY2JkZV0NCgl1c2xlZXAgMTgwMDAwMA0KCW1kYWRtIC1TIC9kZXYv bWQwDQoNCjw0PlsgICA3NC44MzU1NDddID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KPDQ+WyAgIDc0LjgzNTU0OF0gWyBJTkZPOiBwb3NzaWJs ZSBjaXJjdWxhciBsb2NraW5nIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgXQ0KPDQ+WyAgIDc0LjgzNTU1 MF0gMy4xMS4wLW5leHQtMjAxMzA5MDYrICM2IE5vdCB0YWludGVkDQo8ND5bICAgNzQuODM1NTUx XSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo8ND5bICAgNzQuODM1NTUyXSBtZGFkbS8zMDg1IGlzIHRyeWluZyB0byBhY3F1aXJlIGxvY2s6 DQo8ND5bICAgNzQuODM1NTYwXSAgKCZtZGRldi0+cmVjb25maWdfbXV0ZXgpeysuKy4rLn0sIGF0 OiBbPGZmZmZmZmZmODE1Mzk3NTE+XSBfX21kX3N0b3Bfd3JpdGVzKzB4NDEvMHhhMA0KPDQ+WyAg IDc0LjgzNTU2MV0gDQo8ND5bICAgNzQuODM1NTYxXSBidXQgdGFzayBpcyBhbHJlYWR5IGhvbGRp bmcgbG9jazoNCjw0PlsgICA3NC44MzU1NjVdICAoJm1kZGV2LT5vcGVuX211dGV4KXsrLisuKy59 LCBhdDogWzxmZmZmZmZmZjgxNTNjNmU3Pl0gZG9fbWRfc3RvcCsweDM3LzB4NGQwDQo8ND5bICAg NzQuODM1NTY1XSANCjw0PlsgICA3NC44MzU1NjVdIHdoaWNoIGxvY2sgYWxyZWFkeSBkZXBlbmRz IG9uIHRoZSBuZXcgbG9jay4NCjw0PlsgICA3NC44MzU1NjVdIA0KPDQ+WyAgIDc0LjgzNTU2Nl0g DQo8ND5bICAgNzQuODM1NTY2XSB0aGUgZXhpc3RpbmcgZGVwZW5kZW5jeSBjaGFpbiAoaW4gcmV2 ZXJzZSBvcmRlcikgaXM6DQo8ND5bICAgNzQuODM1NTY5XSANCjw0PlsgICA3NC44MzU1NjldIC0+ ICMxICgmbWRkZXYtPm9wZW5fbXV0ZXgpeysuKy4rLn06DQo8ND5bICAgNzQuODM1NTc0XSAgICAg ICAgWzxmZmZmZmZmZjgxMGE4Y2M3Pl0gbG9ja19hY3F1aXJlKzB4OTcvMHgxMTANCjw0PlsgICA3 NC44MzU1NzhdICAgICAgICBbPGZmZmZmZmZmODE3NDMzNzc+XSBtdXRleF9sb2NrX25lc3RlZCsw eDQ3LzB4M2EwDQo8ND5bICAgNzQuODM1NTgwXSAgICAgICAgWzxmZmZmZmZmZjgxNTNjNmU3Pl0g ZG9fbWRfc3RvcCsweDM3LzB4NGQwDQo8ND5bICAgNzQuODM1NTgzXSAgICAgICAgWzxmZmZmZmZm ZjgxNTNmNmY5Pl0gbWRfaW9jdGwrMHhlZjkvMHgxNWMwDQo8ND5bICAgNzQuODM1NTg2XSAgICAg ICAgWzxmZmZmZmZmZjgxMmVlZGEzPl0gX19ibGtkZXZfZHJpdmVyX2lvY3RsKzB4MjMvMHgzMA0K PDQ+WyAgIDc0LjgzNTU4OV0gICAgICAgIFs8ZmZmZmZmZmY4MTJlZjQyMD5dIGJsa2Rldl9pb2N0 bCsweDIwMC8weDdiMA0KPDQ+WyAgIDc0LjgzNTU5Ml0gICAgICAgIFs8ZmZmZmZmZmY4MTE5NWIz Nz5dIGJsb2NrX2lvY3RsKzB4MzcvMHg0MA0KPDQ+WyAgIDc0LjgzNTU5N10gICAgICAgIFs8ZmZm ZmZmZmY4MTE2ZjhkMT5dIGRvX3Zmc19pb2N0bCsweDkxLzB4NTUwDQo8ND5bICAgNzQuODM1NTk5 XSAgICAgICAgWzxmZmZmZmZmZjgxMTZmZTIxPl0gU3lTX2lvY3RsKzB4OTEvMHhhMA0KPDQ+WyAg IDc0LjgzNTYwMl0gICAgICAgIFs8ZmZmZmZmZmY4MTc1MDAxMj5dIHN5c3RlbV9jYWxsX2Zhc3Rw YXRoKzB4MTYvMHgxYg0KPDQ+WyAgIDc0LjgzNTYwNF0gDQo8ND5bICAgNzQuODM1NjA0XSAtPiAj MCAoJm1kZGV2LT5yZWNvbmZpZ19tdXRleCl7Ky4rLisufToNCjw0PlsgICA3NC44MzU2MDddICAg ICAgICBbPGZmZmZmZmZmODEwYThiMzA+XSBfX2xvY2tfYWNxdWlyZSsweDE3NDAvMHgxODQwDQo8 ND5bICAgNzQuODM1NjA5XSAgICAgICAgWzxmZmZmZmZmZjgxMGE4Y2M3Pl0gbG9ja19hY3F1aXJl KzB4OTcvMHgxMTANCjw0PlsgICA3NC44MzU2MTJdICAgICAgICBbPGZmZmZmZmZmODE3NDNlMTM+ XSBtdXRleF9sb2NrX2ludGVycnVwdGlibGVfbmVzdGVkKzB4NTMvMHg0MTANCjw0PlsgICA3NC44 MzU2MTRdICAgICAgICBbPGZmZmZmZmZmODE1Mzk3NTE+XSBfX21kX3N0b3Bfd3JpdGVzKzB4NDEv MHhhMA0KPDQ+WyAgIDc0LjgzNTYyNl0gICAgICAgIFs8ZmZmZmZmZmY4MTUzYzcxZD5dIGRvX21k X3N0b3ArMHg2ZC8weDRkMA0KPDQ+WyAgIDc0LjgzNTYyN10gICAgICAgIFs8ZmZmZmZmZmY4MTUz ZjZmOT5dIG1kX2lvY3RsKzB4ZWY5LzB4MTVjMA0KPDQ+WyAgIDc0LjgzNTYyOV0gICAgICAgIFs8 ZmZmZmZmZmY4MTJlZWRhMz5dIF9fYmxrZGV2X2RyaXZlcl9pb2N0bCsweDIzLzB4MzANCjw0Plsg ICA3NC44MzU2MzFdICAgICAgICBbPGZmZmZmZmZmODEyZWY0MjA+XSBibGtkZXZfaW9jdGwrMHgy MDAvMHg3YjANCjw0PlsgICA3NC44MzU2MzNdICAgICAgICBbPGZmZmZmZmZmODExOTViMzc+XSBi bG9ja19pb2N0bCsweDM3LzB4NDANCjw0PlsgICA3NC44MzU2MzRdICAgICAgICBbPGZmZmZmZmZm ODExNmY4ZDE+XSBkb192ZnNfaW9jdGwrMHg5MS8weDU1MA0KPDQ+WyAgIDc0LjgzNTYzNl0gICAg ICAgIFs8ZmZmZmZmZmY4MTE2ZmUyMT5dIFN5U19pb2N0bCsweDkxLzB4YTANCjw0PlsgICA3NC44 MzU2MzhdICAgICAgICBbPGZmZmZmZmZmODE3NTAwMTI+XSBzeXN0ZW1fY2FsbF9mYXN0cGF0aCsw eDE2LzB4MWINCjw0PlsgICA3NC44MzU2MzhdIA0KPDQ+WyAgIDc0LjgzNTYzOF0gb3RoZXIgaW5m byB0aGF0IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoNCjw0PlsgICA3NC44MzU2MzhdIA0KPDQ+ WyAgIDc0LjgzNTYzOV0gIFBvc3NpYmxlIHVuc2FmZSBsb2NraW5nIHNjZW5hcmlvOg0KPDQ+WyAg IDc0LjgzNTYzOV0gDQo8ND5bICAgNzQuODM1NjM5XSAgICAgICAgQ1BVMCAgICAgICAgICAgICAg ICAgICAgQ1BVMQ0KPDQ+WyAgIDc0LjgzNTY0MF0gICAgICAgIC0tLS0gICAgICAgICAgICAgICAg ICAgIC0tLS0NCjw0PlsgICA3NC44MzU2NDFdICAgbG9jaygmbWRkZXYtPm9wZW5fbXV0ZXgpOw0K PDQ+WyAgIDc0LjgzNTY0Ml0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2soJm1k ZGV2LT5yZWNvbmZpZ19tdXRleCk7DQo8ND5bICAgNzQuODM1NjQ0XSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9jaygmbWRkZXYtPm9wZW5fbXV0ZXgpOw0KPDQ+WyAgIDc0LjgzNTY0 NV0gICBsb2NrKCZtZGRldi0+cmVjb25maWdfbXV0ZXgpOw0KPDQ+WyAgIDc0LjgzNTY0NV0gDQo8 ND5bICAgNzQuODM1NjQ1XSAgKioqIERFQURMT0NLICoqKg0KPDQ+WyAgIDc0LjgzNTY0NV0gDQo8 ND5bICAgNzQuODM1NjQ2XSAxIGxvY2sgaGVsZCBieSBtZGFkbS8zMDg1Og0KPDQ+WyAgIDc0Ljgz NTY0OV0gICMwOiAgKCZtZGRldi0+b3Blbl9tdXRleCl7Ky4rLisufSwgYXQ6IFs8ZmZmZmZmZmY4 MTUzYzZlNz5dIGRvX21kX3N0b3ArMHgzNy8weDRkMA0KPDQ+WyAgIDc0LjgzNTY1MF0gDQo8ND5b ICAgNzQuODM1NjUwXSBzdGFjayBiYWNrdHJhY2U6DQo8ND5bICAgNzQuODM1NjUyXSBDUFU6IDEg UElEOiAzMDg1IENvbW06IG1kYWRtIE5vdCB0YWludGVkIDMuMTEuMC1uZXh0LTIwMTMwOTA2KyAj Ng0KPDQ+WyAgIDc0LjgzNTY1M10gSGFyZHdhcmUgbmFtZTogVG8gQmUgRmlsbGVkIEJ5IE8uRS5N LiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0uL1RvIGJlIGZpbGxlZCBieSBPLkUuTS4sIEJJT1MgMDgw MDE1ICAwMi8yNy8yMDEyDQo8ND5bICAgNzQuODM1NjU1XSAgZmZmZmZmZmY4MjBlZDQ0MCBmZmZm ODgwMTM5MTdiYTU4IGZmZmZmZmZmODE3NDI1ZTYgMDAwMDAwMDAwMDAwMDAwMw0KPDQ+WyAgIDc0 LjgzNTY1N10gIGZmZmZmZmZmODIwZWQ1ZjAgZmZmZjg4MDEzOTE3YmFhOCBmZmZmZmZmZjgxMGE2 MWQ2IGZmZmY4ODAxMzkxN2JhOTgNCjw0PlsgICA3NC44MzU2NTldICBmZmZmODgwMTM5MTdiYjA4 IGZmZmY4ODAwYjdlNGEwYzAgZmZmZjg4MDBiN2U0YTdiOCBmZmZmODgwMGI3ZTRhMGMwDQo8ND5b ICAgNzQuODM1NjU5XSBDYWxsIFRyYWNlOg0KPDQ+WyAgIDc0LjgzNTY2MV0gIFs8ZmZmZmZmZmY4 MTc0MjVlNj5dIGR1bXBfc3RhY2srMHg0OS8weDViDQo8ND5bICAgNzQuODM1NjYzXSAgWzxmZmZm ZmZmZjgxMGE2MWQ2Pl0gcHJpbnRfY2lyY3VsYXJfYnVnKzB4MjE2LzB4MzEwDQo8ND5bICAgNzQu ODM1NjY1XSAgWzxmZmZmZmZmZjgxMGE4YjMwPl0gX19sb2NrX2FjcXVpcmUrMHgxNzQwLzB4MTg0 MA0KPDQ+WyAgIDc0LjgzNTY2OF0gIFs8ZmZmZmZmZmY4MTc0ODA2Yj5dID8gX3Jhd19zcGluX3Vu bG9ja19pcnFyZXN0b3JlKzB4M2IvMHg3MA0KPDQ+WyAgIDc0LjgzNTY2OV0gIFs8ZmZmZmZmZmY4 MTUzOTc1MT5dID8gX19tZF9zdG9wX3dyaXRlcysweDQxLzB4YTANCjw0PlsgICA3NC44MzU2NzFd ICBbPGZmZmZmZmZmODEwYThjYzc+XSBsb2NrX2FjcXVpcmUrMHg5Ny8weDExMA0KPDQ+WyAgIDc0 LjgzNTY3M10gIFs8ZmZmZmZmZmY4MTUzOTc1MT5dID8gX19tZF9zdG9wX3dyaXRlcysweDQxLzB4 YTANCjw0PlsgICA3NC44MzU2NzRdICBbPGZmZmZmZmZmODE3NDgwNmI+XSA/IF9yYXdfc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSsweDNiLzB4NzANCjw0PlsgICA3NC44MzU2NzZdICBbPGZmZmZmZmZm ODE3NDNlMTM+XSBtdXRleF9sb2NrX2ludGVycnVwdGlibGVfbmVzdGVkKzB4NTMvMHg0MTANCjw0 PlsgICA3NC44MzU2NzhdICBbPGZmZmZmZmZmODE1Mzk3NTE+XSA/IF9fbWRfc3RvcF93cml0ZXMr MHg0MS8weGEwDQo8ND5bICAgNzQuODM1Njc5XSAgWzxmZmZmZmZmZjgxNTM5NzUxPl0gPyBfX21k X3N0b3Bfd3JpdGVzKzB4NDEvMHhhMA0KPDQ+WyAgIDc0LjgzNTY4MV0gIFs8ZmZmZmZmZmY4MTUz OTc1MT5dIF9fbWRfc3RvcF93cml0ZXMrMHg0MS8weGEwDQo8ND5bICAgNzQuODM1NjgyXSAgWzxm ZmZmZmZmZjgxNTNjNzFkPl0gZG9fbWRfc3RvcCsweDZkLzB4NGQwDQo8ND5bICAgNzQuODM1Njg0 XSAgWzxmZmZmZmZmZjgxNTNlOGY3Pl0gPyBtZF9pb2N0bCsweGY3LzB4MTVjMA0KPDQ+WyAgIDc0 LjgzNTY4Nl0gIFs8ZmZmZmZmZmY4MTEwYTY5Mz5dID8gZmlsZW1hcF9mZGF0YXdhaXQrMHgyMy8w eDMwDQo8ND5bICAgNzQuODM1Njg4XSAgWzxmZmZmZmZmZjgxMTBhYTZjPl0gPyBmaWxlbWFwX3dy aXRlX2FuZF93YWl0KzB4NmMvMHg4MA0KPDQ+WyAgIDc0LjgzNTY4OV0gIFs8ZmZmZmZmZmY4MTUz ZjZmOT5dIG1kX2lvY3RsKzB4ZWY5LzB4MTVjMA0KPDQ+WyAgIDc0LjgzNTY5MV0gIFs8ZmZmZmZm ZmY4MTc0ODA2Yj5dID8gX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKzB4M2IvMHg3MA0KPDQ+ WyAgIDc0LjgzNTY5M10gIFs8ZmZmZmZmZmY4MTBhNzA5ZD5dID8gdHJhY2VfaGFyZGlycXNfb25f Y2FsbGVyKzB4ZmQvMHgxYzANCjw0PlsgICA3NC44MzU2OTVdICBbPGZmZmZmZmZmODEwYTcxNmQ+ XSA/IHRyYWNlX2hhcmRpcnFzX29uKzB4ZC8weDEwDQo8ND5bICAgNzQuODM1Njk2XSAgWzxmZmZm ZmZmZjgxMmVlZGEzPl0gX19ibGtkZXZfZHJpdmVyX2lvY3RsKzB4MjMvMHgzMA0KPDQ+WyAgIDc0 LjgzNTY5OF0gIFs8ZmZmZmZmZmY4MTJlZjQyMD5dIGJsa2Rldl9pb2N0bCsweDIwMC8weDdiMA0K PDQ+WyAgIDc0LjgzNTcwMF0gIFs8ZmZmZmZmZmY4MTE5NWIzNz5dIGJsb2NrX2lvY3RsKzB4Mzcv MHg0MA0KPDQ+WyAgIDc0LjgzNTcwMl0gIFs8ZmZmZmZmZmY4MTE2ZjhkMT5dIGRvX3Zmc19pb2N0 bCsweDkxLzB4NTUwDQo8ND5bICAgNzQuODM1NzA0XSAgWzxmZmZmZmZmZjgxMDcwYmIwPl0gPyB1 cGRhdGVfcm10cCsweDgwLzB4ODANCjw0PlsgICA3NC44MzU3MDZdICBbPGZmZmZmZmZmODE3NTAw Mzc+XSA/IHN5c3JldF9jaGVjaysweDFiLzB4NTYNCjw0PlsgICA3NC44MzU3MDhdICBbPGZmZmZm ZmZmODExNmZlMjE+XSBTeVNfaW9jdGwrMHg5MS8weGEwDQo8ND5bICAgNzQuODM1NzEwXSAgWzxm ZmZmZmZmZjgxMzBkYjJlPl0gPyB0cmFjZV9oYXJkaXJxc19vbl90aHVuaysweDNhLzB4M2YNCjw0 PlsgICA3NC44MzU3MTJdICBbPGZmZmZmZmZmODE3NTAwMTI+XSBzeXN0ZW1fY2FsbF9mYXN0cGF0 aCsweDE2LzB4MWINCjw3PlsgICA3NC44MzU3MTZdIGludGVycnVwdGluZyBNRC10aHJlYWQgcGlk IDMwNzYNCjw2PlsgICA3NC45MzcwMDldIG1kOiBleHBvcnRfcmRldihzZGIpDQoNCg0KPk9uIE1v biwgIDIgU2VwIDIwMTMgMDE6MDk6NTUgLTA0MDAgeWNienpqbGJ5QGdtYWlsLmNvbSB3cm90ZToN Cj4NCj4+IEZyb206IEJpYW4gWXUgPGJpYW55dUBrZWRhY29tLmNvbT4NCj4+IA0KPj4gV2hlbiBy YWlkNSBoaXQgYSBmcmVzaCBiYWRibG9jaywgdGhpcyBiYWRibG9jayB3aWxsIGZsYWdnZWQgYXMg dW5hY2sNCj4+IGJhZGJsb2NrIHVudGlsIG1kX3VwZGF0ZV9zYiBpcyBjYWxsZWQuDQo+PiBCdXQg bWRfc3RvcC9yZWJvb3QvbWRfc2V0X3JlYWRvbmx5IHdpbGwgYXZvaWQgcmFpZDVkIGNhbGwgbWRf dXBkYXRlX3NiDQo+PiBpbiBtZF9jaGVja19yZWNvdmVyeSwgdGhlIGJhZGJsb2NrIHdpbGwgYWx3 YXlzIGJlIHVuYWNrLCBzbyByYWlkNWQNCj4+IHRocmVhZCBlbnRlciBhIGluZmluaXRlIGxvb3Ag YW5kIG5ldmVyIGNhbiB1bnJlZ2lzdGVyIHN5bmNfdGhyZWFkDQo+PiB0aGF0IGNhdXNlIGRlYWRs b2NrLg0KPj4gDQo+PiBUbyBzb2x2ZSB0aGlzLCBiZWZvcmUgbWRfc3RvcF93cml0ZXMgY2FsbCBt ZF91bnJlZ2lzdGVyX3RocmVhZCwgc2V0DQo+PiBNRF9TVE9QUElOR19XUklURVMgb24gbWRkZXYt PmZsYWdzLiBJbiByYWlkNS5jIGFuYWx5c2Vfc3RyaXBlIGp1ZGdlDQo+PiBNRF9TVE9QUElOR19X UklURVMgYml0IG9uIG1kZGV2LT5mbGFncywgaWYgc2V0dGVkIGRvbid0IGJsb2NrIHJkZXYNCj4+ IHRvIHdhaXQgbWRfdXBkYXRlX3NiLiBzbyByYWlkNWQgdGhyZWFkIGNhbiBiZSBzdG9wcGVkLg0K Pj4gDQo+PiBJIGNhbiByZXByb2R1Y2UgaXQgYnkgdXNpbmcgZm9sbG93IHdheToNCj4+IFdoZW4g cmFpZDUgYXJyYXkgaXMgcmVjb3ZlcmluZyBhbmQgaGl0IGEgZnJlc2ggYmFkYmxvY2ssIHRoZW4g c2h1dGRvd24gYXJyYXkgYXQgb25jZS4NCj4+IA0KPj4gWyAgNDgwLjg1MDIwM10gICAgICAgTm90 IHRhaW50ZWQgMy4xMS4wLW5leHQtMjAxMzA5MDYrICM0DQo+PiBbICA0ODAuODUyMzQ0XSAiZWNo byAwID4gL3Byb2Mvc3lzL2tlcm5lbC9odW5nX3Rhc2tfdGltZW91dF9zZWNzIiBkaXNhYmxlcyB0 aGlzIG1lc3NhZ2UuDQo+PiBbICA0ODAuODU0MzgwXSAgWzxmZmZmZmZmZjgxNTNiMzI0Pl0gbWRf ZG9fc3luYysweDdlNC8weGU2MA0KPj4gWyAgNDgwLjg1NDM4Nl0gIFs8ZmZmZmZmZmY4MTc0N2Zj Yj5dID8gX3Jhd19zcGluX3VubG9ja19pcnErMHgyYi8weDQwDQo+PiBbICA0ODAuODU0Mzk1XSAg WzxmZmZmZmZmZjgxNTM2ZmEwPl0gPyBtZF91bnJlZ2lzdGVyX3RocmVhZCsweDkwLzB4OTANCj4+ IFsgIDQ4MC44NTQ0MDBdICBbPGZmZmZmZmZmODEwYTcxNmQ+XSA/IHRyYWNlX2hhcmRpcnFzX29u KzB4ZC8weDEwDQo+PiBbICA0ODAuODU0NDA1XSAgWzxmZmZmZmZmZjgxNTM3MGJmPl0gbWRfdGhy ZWFkKzB4MTFmLzB4MTcwDQo+PiBbICA0ODAuODU0NDEwXSAgWzxmZmZmZmZmZjgxNTM2ZmEwPl0g PyBtZF91bnJlZ2lzdGVyX3RocmVhZCsweDkwLzB4OTANCj4+IFsgIDQ4MC44NTQ0MTVdICBbPGZm ZmZmZmZmODEwNmQ5NTY+XSBrdGhyZWFkKzB4ZDYvMHhlMA0KPj4gWyAgNDgwLjg1NDQyM10gIFs8 ZmZmZmZmZmY4MTA2ZDg4MD5dID8gX19pbml0X2t0aHJlYWRfd29ya2VyKzB4NzAvMHg3MA0KPj4g WyAgNDgwLjg1NDQyOF0gIFs8ZmZmZmZmZmY4MTc0ZmYyYz5dIHJldF9mcm9tX2ZvcmsrMHg3Yy8w eGIwDQo+PiBbICA0ODAuODU0NDMyXSAgWzxmZmZmZmZmZjgxMDZkODgwPl0gPyBfX2luaXRfa3Ro cmVhZF93b3JrZXIrMHg3MC8weDcwDQo+PiBbICA0ODAuODU0NDM1XSBubyBsb2NrcyBoZWxkIGJ5 IG1kMF9yZXN5bmMvMzI0Ni4NCj4+IFsgIDQ4MC44NTQ0MzddIElORk86IHRhc2sgbWRhZG06MzI1 NyBibG9ja2VkIGZvciBtb3JlIHRoYW4gMTIwIHNlY29uZHMuDQo+PiBbICA0ODAuODU0NDM4XSAg ICAgICBOb3QgdGFpbnRlZCAzLjExLjAtbmV4dC0yMDEzMDkwNisgIzQNCj4+IFsgIDQ4MC44NTQ0 MzldICJlY2hvIDAgPiAvcHJvYy9zeXMva2VybmVsL2h1bmdfdGFza190aW1lb3V0X3NlY3MiIGRp c2FibGVzIHRoaXMgbWVzc2FnZS4NCj4+IFsgIDQ4MC44NTQ0NDJdIG1kYWRtICAgICAgICAgICBE IDAwMDAwMDAwMDAwMDAwMDAgIDUwMjQgIDMyNTcgICAzMjA5IDB4MDAwMDAwODANCj4+IFsgIDQ4 MC44NTQ0NDVdICBmZmZmODgwMTM4YzM3YjE4IDAwMDAwMDAwMDAwMDAwNDYgMDAwMDAwMDBmZmZm ZmZmZiBmZmZmODgwMDM3ZDNiMTIwDQo+PiBbICA0ODAuODU0NDQ3XSAgZmZmZjg4MDEzYTAzODcy MCBmZmZmODgwMTNhMDM4MDAwIDAwMDAwMDAwMDAwMTM1MDAgZmZmZjg4MDEzOGMzN2ZkOA0KPj4g WyAgNDgwLjg1NDQ0OV0gIGZmZmY4ODAxMzhjMzYwMTAgMDAwMDAwMDAwMDAxMzUwMCAwMDAwMDAw MDAwMDEzNTAwIGZmZmY4ODAxMzhjMzdmZDgNCj4+IFsgIDQ4MC44NTQ0NDldIENhbGwgVHJhY2U6 DQo+PiBbICA0ODAuODU0NDUyXSAgWzxmZmZmZmZmZjgxNzQ1ZmE0Pl0gc2NoZWR1bGUrMHgyNC8w eDcwDQo+PiBbICA0ODAuODU0NDUzXSAgWzxmZmZmZmZmZjgxNzQyNzI1Pl0gc2NoZWR1bGVfdGlt ZW91dCsweDE3NS8weDIwMA0KPj4gWyAgNDgwLjg1NDQ1NV0gIFs8ZmZmZmZmZmY4MTBhNmQzMD5d ID8gbWFya19oZWxkX2xvY2tzKzB4ODAvMHgxMzANCj4+IFsgIDQ4MC44NTQ0NTddICBbPGZmZmZm ZmZmODE3NDdmY2I+XSA/IF9yYXdfc3Bpbl91bmxvY2tfaXJxKzB4MmIvMHg0MA0KPj4gWyAgNDgw Ljg1NDQ1OV0gIFs8ZmZmZmZmZmY4MTBhNzA5ZD5dID8gdHJhY2VfaGFyZGlycXNfb25fY2FsbGVy KzB4ZmQvMHgxYzANCj4+IFsgIDQ4MC44NTQ0NjFdICBbPGZmZmZmZmZmODEwYTcxNmQ+XSA/IHRy YWNlX2hhcmRpcnFzX29uKzB4ZC8weDEwDQo+PiBbICA0ODAuODU0NDYzXSAgWzxmZmZmZmZmZjgx NzQ2NjAwPl0gd2FpdF9mb3JfY29tcGxldGlvbisweGEwLzB4MTEwDQo+PiBbICA0ODAuODU0NDY1 XSAgWzxmZmZmZmZmZjgxMDdkMTYwPl0gPyB0cnlfdG9fd2FrZV91cCsweDMwMC8weDMwMA0KPj4g WyAgNDgwLjg1NDQ2N10gIFs8ZmZmZmZmZmY4MTA2ZGRiYz5dIGt0aHJlYWRfc3RvcCsweDRjLzB4 ZTANCj4+IFsgIDQ4MC44NTQ0NjhdICBbPGZmZmZmZmZmODE1MzZmNWU+XSBtZF91bnJlZ2lzdGVy X3RocmVhZCsweDRlLzB4OTANCj4+IFsgIDQ4MC44NTQ0NzBdICBbPGZmZmZmZmZmODE1Mzk2NWQ+ XSBtZF9yZWFwX3N5bmNfdGhyZWFkKzB4MWQvMHgxNDANCj4+IFsgIDQ4MC44NTQ0NzJdICBbPGZm ZmZmZmZmODE1Mzk3YWI+XSBfX21kX3N0b3Bfd3JpdGVzKzB4MmIvMHg4MA0KPj4gWyAgNDgwLjg1 NDQ3M10gIFs8ZmZmZmZmZmY4MTUzYzkxMT5dIGRvX21kX3N0b3ArMHg5MS8weDRkMA0KPj4gWyAg NDgwLjg1NDQ3NV0gIFs8ZmZmZmZmZmY4MTUzZThhNz5dID8gbWRfaW9jdGwrMHhmNy8weDE1YzAN Cj4+IFsgIDQ4MC44NTQ0NzddICBbPGZmZmZmZmZmODEwYTcxNmQ+XSA/IHRyYWNlX2hhcmRpcnFz X29uKzB4ZC8weDEwDQo+PiBbICA0ODAuODU0NDc5XSAgWzxmZmZmZmZmZjgxNTNmNmE5Pl0gbWRf aW9jdGwrMHhlZjkvMHgxNWMwDQo+PiBbICA0ODAuODU0NDgxXSAgWzxmZmZmZmZmZjgxMTMxNDVk Pl0gPyBoYW5kbGVfbW1fZmF1bHQrMHgxN2QvMHg5MjANCj4+IA0KPj4gU2lnbmVkLW9mZi1ieTog QmlhbiBZdSA8Ymlhbnl1QGtlZGFjb20uY29tPg0KPj4gLS0tDQo+PiAgZHJpdmVycy9tZC9tZC5j ICAgIHwgICAgMiArKw0KPj4gIGRyaXZlcnMvbWQvbWQuaCAgICB8ICAgIDQgKysrKw0KPj4gIGRy aXZlcnMvbWQvcmFpZDUuYyB8ICAgIDMgKystDQo+PiAgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb25zKC0pDQo+PiANCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21k L21kLmMgYi9kcml2ZXJzL21kL21kLmMNCj4+IGluZGV4IGFkZjRkN2UuLjU0ZWY3MWYgMTAwNjQ0 DQo+PiAtLS0gYS9kcml2ZXJzL21kL21kLmMNCj4+ICsrKyBiL2RyaXZlcnMvbWQvbWQuYw0KPj4g QEAgLTUyNzgsNiArNTI3OCw3IEBAIHN0YXRpYyB2b2lkIG1kX2NsZWFuKHN0cnVjdCBtZGRldiAq bWRkZXYpDQo+PiAgc3RhdGljIHZvaWQgX19tZF9zdG9wX3dyaXRlcyhzdHJ1Y3QgbWRkZXYgKm1k ZGV2KQ0KPj4gIHsNCj4+ICAJc2V0X2JpdChNRF9SRUNPVkVSWV9GUk9aRU4sICZtZGRldi0+cmVj b3ZlcnkpOw0KPj4gKwlzZXRfYml0KE1EX1NUT1BQSU5HX1dSSVRFUywgJm1kZGV2LT5mbGFncyk7 DQo+PiAgCWlmIChtZGRldi0+c3luY190aHJlYWQpIHsNCj4+ICAJCXNldF9iaXQoTURfUkVDT1ZF UllfSU5UUiwgJm1kZGV2LT5yZWNvdmVyeSk7DQo+PiAgCQltZF9yZWFwX3N5bmNfdGhyZWFkKG1k ZGV2KTsNCj4+IEBAIC01Mjk0LDYgKzUyOTUsNyBAQCBzdGF0aWMgdm9pZCBfX21kX3N0b3Bfd3Jp dGVzKHN0cnVjdCBtZGRldiAqbWRkZXYpDQo+PiAgCQltZGRldi0+aW5fc3luYyA9IDE7DQo+PiAg CQltZF91cGRhdGVfc2IobWRkZXYsIDEpOw0KPj4gIAl9DQo+PiArCWNsZWFyX2JpdChNRF9TVE9Q UElOR19XUklURVMsICZtZGRldi0+ZmxhZ3MpOw0KPj4gIH0NCj4+ICANCj4+ICB2b2lkIG1kX3N0 b3Bfd3JpdGVzKHN0cnVjdCBtZGRldiAqbWRkZXYpDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZC9tZC5oIGIvZHJpdmVycy9tZC9tZC5oDQo+PiBpbmRleCA2MDgwNTBjLi5hMjRhZTFkIDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9tZC9tZC5oDQo+PiArKysgYi9kcml2ZXJzL21kL21kLmgNCj4+ IEBAIC0yMTQsNiArMjE0LDEwIEBAIHN0cnVjdCBtZGRldiB7DQo+PiAgI2RlZmluZSBNRF9TVElM TF9DTE9TRUQJNAkvKiBJZiBzZXQsIHRoZW4gYXJyYXkgaGFzIG5vdCBiZWVuIG9wZW5lZCBzaW5j ZQ0KPj4gIAkJCQkgKiBtZF9pb2N0bCBjaGVja2VkIG9uIGl0Lg0KPj4gIAkJCQkgKi8NCj4+ICsj ZGVmaW5lIE1EX1NUT1BQSU5HX1dSSVRFUyA1CS8qIElmIHNldCwgcmFpZDUgc2hvdWxkbid0IHNl dCB1bmFja25vd2xlZGdlZA0KPj4gKwkJCQkgKiBiYWRibG9jayBibG9ja2VkIGluIGFuYWx5c2Vf c3RyaXBlIHRvIGF2b2lkDQo+PiArCQkJCSAqIGluZmluaXRlIGxvb3AuDQo+PiArCQkJCSAqLw0K Pj4gIA0KPj4gIAlpbnQJCQkJc3VzcGVuZGVkOw0KPj4gIAlhdG9taWNfdAkJCWFjdGl2ZV9pbzsN Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQ1LmMgYi9kcml2ZXJzL21kL3JhaWQ1LmMN Cj4+IGluZGV4IGY5OTcyZTIuLmZmMWFlY2YgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL21kL3Jh aWQ1LmMNCj4+ICsrKyBiL2RyaXZlcnMvbWQvcmFpZDUuYw0KPj4gQEAgLTM0NDYsNyArMzQ0Niw4 IEBAIHN0YXRpYyB2b2lkIGFuYWx5c2Vfc3RyaXBlKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0 cnVjdCBzdHJpcGVfaGVhZF9zdGF0ZSAqcykNCj4+ICAJCWlmIChyZGV2KSB7DQo+PiAgCQkJaXNf YmFkID0gaXNfYmFkYmxvY2socmRldiwgc2gtPnNlY3RvciwgU1RSSVBFX1NFQ1RPUlMsDQo+PiAg CQkJCQkgICAgICZmaXJzdF9iYWQsICZiYWRfc2VjdG9ycyk7DQo+PiAtCQkJaWYgKHMtPmJsb2Nr ZWRfcmRldiA9PSBOVUxMDQo+PiArCQkJaWYgKCF0ZXN0X2JpdChNRF9TVE9QUElOR19XUklURVMs ICZjb25mLT5tZGRldi0+ZmxhZ3MpDQo+PiArCQkJICAgICYmIHMtPmJsb2NrZWRfcmRldiA9PSBO VUxMDQo+PiAgCQkJICAgICYmICh0ZXN0X2JpdChCbG9ja2VkLCAmcmRldi0+ZmxhZ3MpDQo+PiAg CQkJCXx8IGlzX2JhZCA8IDApKSB7DQo+PiAgCQkJCWlmIChpc19iYWQgPCAwKQ0KPg0KPg0KPlRo YW5rcyBmb3IgaW5jbHVkaW5nIHRoZSBleHRyYSBkZXRhaWxzIGluIHRoZSBwYXRjaCwgYnV0IGl0 IHdhc24ndCBvbmx5IHRoYXQNCj5JIGRpZG4ndCB0aGluayBpdCBzaG91bGQgYmUgbmVlZGVkIChJ IHdhcyB3cm9uZyB0aGVyZSkuICBJIGFsc28gZG9uJ3QgbGlrZQ0KPnRoZSBwYXRjaC4gIEl0IGlz bid0IGF0IGFsbCBjbGVhciB0byBtZSB0aGF0IGl0IHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nLg0K PlRoZXJlIGlzIGEgcmVhc29uIHRoYXQgd2UgYmxvY2sgdW50aWwgdGhlIGJhZCBibG9jayBsaXN0 cyBoYXMgYmVlbiB1cGRhdGVkLA0KPmFuZCB0byBqdXN0IG5vdCBibG9jayBiZWNhdXNlIGl0IGlz IGluY29udmVuaWVudCBqdXN0IGRvZXNuJ3Qgc2VlbSByaWdodC4NCj4NCj5JIHdvdWxkIHJhdGhl ciBjaGFuZ2UgdGhlIHNlcXVlbmNpbmcgc28gdGhhdCB0aGUgYmFkYmxvY2sgbGlzdCBjYW4gYmUg dXBkYXRlZA0KPmF0IHRoaXMgcG9pbnQuDQo+U29tZXRoaW5nIGxpa2UgdGhhdCBwYXRjaCBiZWxv dywgYnV0IEknbSBub3QgMTAwJSBzdXJlIG9mIGl0IHlldCBhbmQgSSdtDQo+YWJvdXQgdG8gZ28g b24gbGVhdmUgc28gSSdtIG5vdCBzdXJlIEknbGwgYmUgYWJsZSB0byBjb21taXQgdG8gaXQgZm9y IGEgd2hpbGUuDQo+DQo+SWYgeW91IGNvdWxkIHJldmlldyBhbmQgdGVzdCBJIHdvdWxkIGFwcHJl Y2lhdGUgaXQuDQo+DQo+VGhhbmtzLA0KPk5laWxCcm93bg0KPg0KPmRpZmYgLS1naXQgYS9kcml2 ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMNCj5pbmRleCBhZGY0ZDdlLi5lNGQ3OGMwIDEw MDY0NA0KPi0tLSBhL2RyaXZlcnMvbWQvbWQuYw0KPisrKyBiL2RyaXZlcnMvbWQvbWQuYw0KPkBA IC0zMTcwLDYgKzMxNzAsOSBAQCByZGV2X2F0dHJfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmos IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsDQo+IAkJcmV0dXJuIC1FQUNDRVM7DQo+IAlydiA9IG1k ZGV2ID8gbWRkZXZfbG9jayhtZGRldik6IC1FQlVTWTsNCj4gCWlmICghcnYpIHsNCj4rCQltdXRl eF9sb2NrKCZtZGRldi0+b3Blbl9tdXRleCk7DQo+KwkJY2xlYXJfYml0KE1EX1NUSUxMX0NMT1NF RCwgJm1kZGV2LT5mbGFncyk7DQo+KwkJbXV0ZXhfdW5sb2NrKCZtZGRldi0+b3Blbl9tdXRleCk7 DQo+IAkJaWYgKHJkZXYtPm1kZGV2ID09IE5VTEwpDQo+IAkJCXJ2ID0gLUVCVVNZOw0KPiAJCWVs c2UNCj5AQCAtNDc2NCw2ICs0NzY3LDkgQEAgbWRfYXR0cl9zdG9yZShzdHJ1Y3Qga29iamVjdCAq a29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwNCj4gCQlmbHVzaF93b3JrcXVldWUobWRfbWlz Y193cSk7DQo+IAlydiA9IG1kZGV2X2xvY2sobWRkZXYpOw0KPiAJaWYgKCFydikgew0KPisJCW11 dGV4X2xvY2soJm1kZGV2LT5vcGVuX211dGV4KTsNCj4rCQljbGVhcl9iaXQoTURfU1RJTExfQ0xP U0VELCAmbWRkZXYtPmZsYWdzKTsNCj4rCQltdXRleF91bmxvY2soJm1kZGV2LT5vcGVuX211dGV4 KTsNCj4gCQlydiA9IGVudHJ5LT5zdG9yZShtZGRldiwgcGFnZSwgbGVuZ3RoKTsNCj4gCQltZGRl dl91bmxvY2sobWRkZXYpOw0KPiAJfQ0KPkBAIC01Mjc5LDggKzUyODUsMTAgQEAgc3RhdGljIHZv aWQgX19tZF9zdG9wX3dyaXRlcyhzdHJ1Y3QgbWRkZXYgKm1kZGV2KQ0KPiB7DQo+IAlzZXRfYml0 KE1EX1JFQ09WRVJZX0ZST1pFTiwgJm1kZGV2LT5yZWNvdmVyeSk7DQo+IAlpZiAobWRkZXYtPnN5 bmNfdGhyZWFkKSB7DQo+KwkJbWRkZXZfdW5sb2NrKCZtZGRldik7DQo+IAkJc2V0X2JpdChNRF9S RUNPVkVSWV9JTlRSLCAmbWRkZXYtPnJlY292ZXJ5KTsNCj4gCQltZF9yZWFwX3N5bmNfdGhyZWFk KG1kZGV2KTsNCj4rCQltZGRldl9sb2NrKCZtZGRldik7DQo+IAl9DQo+IA0KPiAJZGVsX3RpbWVy X3N5bmMoJm1kZGV2LT5zYWZlbW9kZV90aW1lcik7DQo+QEAgLTUzMzcsNyArNTM0NSw5IEBAIHN0 YXRpYyBpbnQgbWRfc2V0X3JlYWRvbmx5KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBibG9j a19kZXZpY2UgKmJkZXYpDQo+IAkJZXJyID0gLUVCVVNZOw0KPiAJCWdvdG8gb3V0Ow0KPiAJfQ0K Pi0JaWYgKGJkZXYgJiYgIXRlc3RfYml0KE1EX1NUSUxMX0NMT1NFRCwgJm1kZGV2LT5mbGFncykp IHsNCj4rCWlmIChtZGRldi0+cGVycykNCj4rCQlfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTsNCj4r CWlmICghdGVzdF9iaXQoTURfU1RJTExfQ0xPU0VELCAmbWRkZXYtPmZsYWdzKSkgew0KPiAJCS8q IFNvbWVvbmUgb3BlbmVkIHRoZSBkZXZpY2Ugc2luY2Ugd2UgZmx1c2hlZCBpdA0KPiAJCSAqIHNv IHBhZ2UgY2FjaGUgY291bGQgYmUgZGlydHkgYW5kIGl0IGlzIHRvbyBsYXRlDQo+IAkJICogdG8g Zmx1c2guICBTbyBhYm9ydA0KPkBAIC01MzQ2LDggKzUzNTYsNiBAQCBzdGF0aWMgaW50IG1kX3Nl dF9yZWFkb25seShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2 KQ0KPiAJCXJldHVybiAtRUJVU1k7DQo+IAl9DQo+IAlpZiAobWRkZXYtPnBlcnMpIHsNCj4tCQlf X21kX3N0b3Bfd3JpdGVzKG1kZGV2KTsNCj4tDQo+IAkJZXJyICA9IC1FTlhJTzsNCj4gCQlpZiAo bWRkZXYtPnJvPT0xKQ0KPiAJCQlnb3RvIG91dDsNCj5AQCAtNTM3OSw3ICs1Mzg3LDkgQEAgc3Rh dGljIGludCBkb19tZF9zdG9wKHN0cnVjdCBtZGRldiAqIG1kZGV2LCBpbnQgbW9kZSwNCj4gCQlt dXRleF91bmxvY2soJm1kZGV2LT5vcGVuX211dGV4KTsNCj4gCQlyZXR1cm4gLUVCVVNZOw0KPiAJ fQ0KPi0JaWYgKGJkZXYgJiYgIXRlc3RfYml0KE1EX1NUSUxMX0NMT1NFRCwgJm1kZGV2LT5mbGFn cykpIHsNCj4rCWlmIChtZGRldi0+cGVycykNCj4rCQlfX21kX3N0b3Bfd3JpdGVzKG1kZGV2KTsN Cj4rCWlmICghdGVzdF9iaXQoTURfU1RJTExfQ0xPU0VELCAmbWRkZXYtPmZsYWdzKSkgew0KPiAJ CS8qIFNvbWVvbmUgb3BlbmVkIHRoZSBkZXZpY2Ugc2luY2Ugd2UgZmx1c2hlZCBpdA0KPiAJCSAq IHNvIHBhZ2UgY2FjaGUgY291bGQgYmUgZGlydHkgYW5kIGl0IGlzIHRvbyBsYXRlDQo+IAkJICog dG8gZmx1c2guICBTbyBhYm9ydA0KPkBAIC01MzkxLDcgKzU0MDEsNiBAQCBzdGF0aWMgaW50IGRv X21kX3N0b3Aoc3RydWN0IG1kZGV2ICogbWRkZXYsIGludCBtb2RlLA0KPiAJCWlmIChtZGRldi0+ cm8pDQo+IAkJCXNldF9kaXNrX3JvKGRpc2ssIDApOw0KPiANCj4tCQlfX21kX3N0b3Bfd3JpdGVz KG1kZGV2KTsNCj4gCQlfX21kX3N0b3AobWRkZXYpOw0KPiAJCW1kZGV2LT5xdWV1ZS0+bWVyZ2Vf YnZlY19mbiA9IE5VTEw7DQo+IAkJbWRkZXYtPnF1ZXVlLT5iYWNraW5nX2Rldl9pbmZvLmNvbmdl c3RlZF9mbiA9IE5VTEw7DQo+