From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Wilck Subject: Re: [PATCH 3/6] libmultipath: refactor calls to get dm device info Date: Thu, 11 May 2017 22:26:00 +0200 Message-ID: <1494534360.6093.35.camel@suse.com> References: <1494349025-6561-1-git-send-email-bmarzins@redhat.com> <1494349025-6561-4-git-send-email-bmarzins@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1494349025-6561-4-git-send-email-bmarzins@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: dm-devel@redhat.com, Benjamin Marzinski List-Id: dm-devel.ids T24gVHVlLCAyMDE3LTA1LTA5IGF0IDExOjU3IC0wNTAwLCBCZW5qYW1pbiBNYXJ6aW5za2kgd3Jv dGU6Cj4gTXVsdGlwYXRoIGhhcyBhIG51bWJlciBvZiBmdW5jdGlvbnMgdGhhdCBhbGwgZG8gYmFz aWNhbGx5IHRoZSBzYW1lCj4gdGhpbmcgdG8gZ2V0IG1lbWJlcnMgb2YgdGhlIGRtX2luZm8gc3Ry dWN0dXJlLiBUaGlzIGp1c3QgcmVmYWN0b3JzCj4gdGhlbQo+IHRvIHVzZSBjb21tb24gY29kZSB0 byBkbyBpdC4KClRoaXMgaXMgbmljZSwgYnV0IGl0IG1pZ2h0IGJlIGV2ZW4gYmV0dGVyIHRvIHNp bXBseSBzdG9yZSBhbGwgcmVsZXZhbnQKaW5mb3JtYXRpb24gZnJvbSBETV9ERVZJQ0VfSU5GTyBp biB0aGUgbXBwIHN0cnVjdHVyZSBpbiB0aGUgZmlyc3QKcGxhY2UsIGF2b2lkaW5nIHRoZSBuZWVk IHRvIGRvIHRoaXMgaW9jdGwgbXVsdGlwbGUgdGltZXMgdG8gZ2V0IHZhcmlvdXMKcGllY2VzIG9m IGluZm9ybWF0aW9uLgoKVGhhdCBjYW4gYmUgZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoLCBvZiBj b3Vyc2UuCgpSZXZpZXdlZC1ieTogTWFydGluIFdpbGNrIDxtd2lsY2tAc3VzZS5jb20+CgpSZWdh cmRzCk1hcnRpbgoKCj4gCj4gU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFy emluc0ByZWRoYXQuY29tPgo+IC0tLQo+IMKgbGlibXVsdGlwYXRoL2Rldm1hcHBlci5jwqDCoHwg MTcxICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLS0tLS0KPiDC oGxpYm11bHRpcGF0aC9kZXZtYXBwZXIuaMKgwqB8wqDCoMKgMyArLQo+IMKgbXVsdGlwYXRoZC9j bGlfaGFuZGxlcnMuYyB8wqDCoDI0ICsrLS0tLS0KPiDCoDMgZmlsZXMgY2hhbmdlZCwgNDIgaW5z ZXJ0aW9ucygrKSwgMTU2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWJtdWx0aXBh dGgvZGV2bWFwcGVyLmMgYi9saWJtdWx0aXBhdGgvZGV2bWFwcGVyLmMKPiBpbmRleCAxYzZiODdl Li4yYzRhMTNhIDEwMDY0NAo+IC0tLSBhL2xpYm11bHRpcGF0aC9kZXZtYXBwZXIuYwo+ICsrKyBi L2xpYm11bHRpcGF0aC9kZXZtYXBwZXIuYwo+IEBAIC0zOTksMTYgKzM5OSwxNiBAQCBpbnQgZG1f YWRkbWFwX3JlbG9hZChzdHJ1Y3QgbXVsdGlwYXRoICptcHAsCj4gY2hhciAqcGFyYW1zLCBpbnQg Zmx1c2gpCj4gwqAJcmV0dXJuIHI7Cj4gwqB9Cj4gwqAKPiAtaW50IGRtX21hcF9wcmVzZW50KGNv bnN0IGNoYXIgKiBzdHIpCj4gK3N0YXRpYyBpbnQKPiArZG9fZ2V0X2luZm8oY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IGRtX2luZm8gKmluZm8pCj4gwqB7Cj4gLQlpbnQgciA9IDA7Cj4gKwlpbnQg ciA9IC0xOwo+IMKgCXN0cnVjdCBkbV90YXNrICpkbXQ7Cj4gLQlzdHJ1Y3QgZG1faW5mbyBpbmZv Owo+IMKgCj4gwqAJaWYgKCEoZG10ID0gZG1fdGFza19jcmVhdGUoRE1fREVWSUNFX0lORk8pKSkK PiAtCQlyZXR1cm4gMDsKPiArCQlyZXR1cm4gcjsKPiDCoAo+IC0JaWYgKCFkbV90YXNrX3NldF9u YW1lKGRtdCwgc3RyKSkKPiArCWlmICghZG1fdGFza19zZXRfbmFtZShkbXQsIG5hbWUpKQo+IMKg CQlnb3RvIG91dDsKPiDCoAo+IMKgCWRtX3Rhc2tfbm9fb3Blbl9jb3VudChkbXQpOwo+IEBAIC00 MTYsMTYgKzQxNiwyNSBAQCBpbnQgZG1fbWFwX3ByZXNlbnQoY29uc3QgY2hhciAqIHN0cikKPiDC oAlpZiAoIWRtX3Rhc2tfcnVuKGRtdCkpCj4gwqAJCWdvdG8gb3V0Owo+IMKgCj4gLQlpZiAoIWRt X3Rhc2tfZ2V0X2luZm8oZG10LCAmaW5mbykpCj4gKwlpZiAoIWRtX3Rhc2tfZ2V0X2luZm8oZG10 LCBpbmZvKSkKPiDCoAkJZ290byBvdXQ7Cj4gwqAKPiAtCWlmIChpbmZvLmV4aXN0cykKPiAtCQly ID0gMTsKPiArCWlmICghaW5mby0+ZXhpc3RzKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCXIgPSAw Owo+IMKgb3V0Ogo+IMKgCWRtX3Rhc2tfZGVzdHJveShkbXQpOwo+IMKgCXJldHVybiByOwo+IMKg fQo+IMKgCj4gK2ludCBkbV9tYXBfcHJlc2VudChjb25zdCBjaGFyICogc3RyKQo+ICt7Cj4gKwlz dHJ1Y3QgZG1faW5mbyBpbmZvOwo+ICsKPiArCXJldHVybiAoZG9fZ2V0X2luZm8oc3RyLCAmaW5m bykgPT0gMCk7Cj4gK30KPiArCj4gwqBpbnQgZG1fZ2V0X21hcChjb25zdCBjaGFyICpuYW1lLCB1 bnNpZ25lZCBsb25nIGxvbmcgKnNpemUsIGNoYXIKPiAqb3V0cGFyYW1zKQo+IMKgewo+IMKgCWlu dCByID0gMTsKPiBAQCAtNjQ2LDI5ICs2NTUsMTUgQEAgb3V0Ogo+IMKgc3RhdGljIGludAo+IMKg ZG1fZGV2X3QgKGNvbnN0IGNoYXIgKiBtYXBuYW1lLCBjaGFyICogZGV2X3QsIGludCBsZW4pCj4g wqB7Cj4gLQlpbnQgciA9IDE7Cj4gLQlzdHJ1Y3QgZG1fdGFzayAqZG10Owo+IMKgCXN0cnVjdCBk bV9pbmZvIGluZm87Cj4gwqAKPiAtCWlmICghKGRtdCA9IGRtX3Rhc2tfY3JlYXRlKERNX0RFVklD RV9JTkZPKSkpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JaWYgKCFkbV90YXNrX3NldF9uYW1lKGRt dCwgbWFwbmFtZSkpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JaWYgKCFkbV90YXNrX3J1bihkbXQp KQo+IC0JCWdvdG8gb3V0Owo+IC0KPiAtCWlmICghZG1fdGFza19nZXRfaW5mbyhkbXQsICZpbmZv KSB8fCAhaW5mby5leGlzdHMpCj4gLQkJZ290byBvdXQ7Cj4gKwlpZiAoZG9fZ2V0X2luZm8obWFw bmFtZSwgJmluZm8pICE9IDApCj4gKwkJcmV0dXJuIDE7Cj4gwqAKPiDCoAlpZiAoc25wcmludGYo ZGV2X3QsIGxlbiwgIiVpOiVpIiwgaW5mby5tYWpvciwgaW5mby5taW5vcikgPgo+IGxlbikKPiAt CQlnb3RvIG91dDsKPiArCQlyZXR1cm4gMTsKPiDCoAo+IC0JciA9IDA7Cj4gLW91dDoKPiAtCWRt X3Rhc2tfZGVzdHJveShkbXQpOwo+IC0JcmV0dXJuIHI7Cj4gKwlyZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgaW50Cj4gQEAgLTcwMCw1OSArNjk1LDE2IEBAIG91dDoKPiDCoH0KPiDCoAo+IMKgaW50 Cj4gLWRtX2dldF9tYWpvciAoY2hhciAqIG1hcG5hbWUpCj4gK2RtX2dldF9tYWpvcl9taW5vcihj b25zdCBjaGFyICpuYW1lLCBpbnQgKm1ham9yLCBpbnQgKm1pbm9yKQo+IMKgewo+IC0JaW50IHIg PSAtMTsKPiAtCXN0cnVjdCBkbV90YXNrICpkbXQ7Cj4gwqAJc3RydWN0IGRtX2luZm8gaW5mbzsK PiDCoAo+IC0JaWYgKCEoZG10ID0gZG1fdGFza19jcmVhdGUoRE1fREVWSUNFX0lORk8pKSkKPiAt CQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAoIWRtX3Rhc2tfc2V0X25hbWUoZG10LCBtYXBuYW1lKSkK PiAtCQlnb3RvIG91dDsKPiAtCj4gLQlpZiAoIWRtX3Rhc2tfcnVuKGRtdCkpCj4gLQkJZ290byBv dXQ7Cj4gLQo+IC0JaWYgKCFkbV90YXNrX2dldF9pbmZvKGRtdCwgJmluZm8pKQo+IC0JCWdvdG8g b3V0Owo+IC0KPiAtCWlmICghaW5mby5leGlzdHMpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JciA9 IGluZm8ubWFqb3I7Cj4gLW91dDoKPiAtCWRtX3Rhc2tfZGVzdHJveShkbXQpOwo+IC0JcmV0dXJu IHI7Cj4gLX0KPiAtCj4gLWludAo+IC1kbV9nZXRfbWlub3IgKGNoYXIgKiBtYXBuYW1lKQo+IC17 Cj4gLQlpbnQgciA9IC0xOwo+IC0Jc3RydWN0IGRtX3Rhc2sgKmRtdDsKPiAtCXN0cnVjdCBkbV9p bmZvIGluZm87Cj4gLQo+IC0JaWYgKCEoZG10ID0gZG1fdGFza19jcmVhdGUoRE1fREVWSUNFX0lO Rk8pKSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAoIWRtX3Rhc2tfc2V0X25hbWUoZG10LCBt YXBuYW1lKSkKPiAtCQlnb3RvIG91dDsKPiAtCj4gLQlpZiAoIWRtX3Rhc2tfcnVuKGRtdCkpCj4g LQkJZ290byBvdXQ7Cj4gLQo+IC0JaWYgKCFkbV90YXNrX2dldF9pbmZvKGRtdCwgJmluZm8pKQo+ IC0JCWdvdG8gb3V0Owo+IC0KPiAtCWlmICghaW5mby5leGlzdHMpCj4gLQkJZ290byBvdXQ7Cj4g KwlpZiAoZG9fZ2V0X2luZm8obmFtZSwgJmluZm8pICE9IDApCj4gKwkJcmV0dXJuIC0xOwo+IMKg Cj4gLQlyID0gaW5mby5taW5vcjsKPiAtb3V0Ogo+IC0JZG1fdGFza19kZXN0cm95KGRtdCk7Cj4g LQlyZXR1cm4gcjsKPiArCSptYWpvciA9IGluZm8ubWFqb3I7Cj4gKwkqbWlub3IgPSBpbmZvLm1p bm9yOwo+ICsJcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQKPiBAQCAtMTA3MCwz MSArMTAyMiwxMiBAQCBvdXQ6Cj4gwqBpbnQKPiDCoGRtX2dldGV2ZW50bnIgKGNoYXIgKm5hbWUp Cj4gwqB7Cj4gLQlzdHJ1Y3QgZG1fdGFzayAqZG10Owo+IMKgCXN0cnVjdCBkbV9pbmZvIGluZm87 Cj4gLQlpbnQgZXZlbnQgPSAtMTsKPiDCoAo+IC0JaWYgKCEoZG10ID0gZG1fdGFza19jcmVhdGUo RE1fREVWSUNFX0lORk8pKSkKPiArCWlmIChkb19nZXRfaW5mbyhuYW1lLCAmaW5mbykgIT0gMCkK PiDCoAkJcmV0dXJuIC0xOwo+IMKgCj4gLQlpZiAoIWRtX3Rhc2tfc2V0X25hbWUoZG10LCBuYW1l KSkKPiAtCQlnb3RvIG91dDsKPiAtCj4gLQlkbV90YXNrX25vX29wZW5fY291bnQoZG10KTsKPiAt Cj4gLQlpZiAoIWRtX3Rhc2tfcnVuKGRtdCkpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JaWYgKCFk bV90YXNrX2dldF9pbmZvKGRtdCwgJmluZm8pKQo+IC0JCWdvdG8gb3V0Owo+IC0KPiAtCWlmIChp bmZvLmV4aXN0cykKPiAtCQlldmVudCA9IGluZm8uZXZlbnRfbnI7Cj4gLQo+IC1vdXQ6Cj4gLQlk bV90YXNrX2Rlc3Ryb3koZG10KTsKPiAtCj4gLQlyZXR1cm4gZXZlbnQ7Cj4gKwlyZXR1cm4gaW5m by5ldmVudF9ucjsKPiDCoH0KPiDCoAo+IMKgY2hhciAqCj4gQEAgLTEyNjIsMjYgKzExOTUsMTIg QEAgY2FuY2VsX3JlbW92ZV9wYXJ0bWFwIChjb25zdCBjaGFyICpuYW1lLCB2b2lkCj4gKnVudXNl ZCkKPiDCoHN0YXRpYyBpbnQKPiDCoGRtX2dldF9kZWZlcnJlZF9yZW1vdmUgKGNoYXIgKiBtYXBu YW1lKQo+IMKgewo+IC0JaW50IHIgPSAtMTsKPiAtCXN0cnVjdCBkbV90YXNrICpkbXQ7Cj4gwqAJ c3RydWN0IGRtX2luZm8gaW5mbzsKPiDCoAo+IC0JaWYgKCEoZG10ID0gZG1fdGFza19jcmVhdGUo RE1fREVWSUNFX0lORk8pKSkKPiArCWlmIChkb19nZXRfaW5mbyhtYXBuYW1lLCAmaW5mbykgIT0g MCkKPiDCoAkJcmV0dXJuIC0xOwo+IMKgCj4gLQlpZiAoIWRtX3Rhc2tfc2V0X25hbWUoZG10LCBt YXBuYW1lKSkKPiAtCQlnb3RvIG91dDsKPiAtCj4gLQlpZiAoIWRtX3Rhc2tfcnVuKGRtdCkpCj4g LQkJZ290byBvdXQ7Cj4gLQo+IC0JaWYgKCFkbV90YXNrX2dldF9pbmZvKGRtdCwgJmluZm8pKQo+ IC0JCWdvdG8gb3V0Owo+IC0KPiAtCXIgPSBpbmZvLmRlZmVycmVkX3JlbW92ZTsKPiAtb3V0Ogo+ IC0JZG1fdGFza19kZXN0cm95KGRtdCk7Cj4gLQlyZXR1cm4gcjsKPiArCXJldHVybiBpbmZvLmRl ZmVycmVkX3JlbW92ZTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludAo+IEBAIC0xMzI4LDkgKzEy NDcsNiBAQCBhbGxvY19kbWluZm8gKHZvaWQpCj4gwqBpbnQKPiDCoGRtX2dldF9pbmZvIChjaGFy ICogbWFwbmFtZSwgc3RydWN0IGRtX2luZm8gKiogZG1pKQo+IMKgewo+IC0JaW50IHIgPSAxOwo+ IC0Jc3RydWN0IGRtX3Rhc2sgKmRtdCA9IE5VTEw7Cj4gLQo+IMKgCWlmICghbWFwbmFtZSkKPiDC oAkJcmV0dXJuIDE7Cj4gwqAKPiBAQCAtMTM0MCwzMiArMTI1NiwxMyBAQCBkbV9nZXRfaW5mbyAo Y2hhciAqIG1hcG5hbWUsIHN0cnVjdCBkbV9pbmZvCj4gKiogZG1pKQo+IMKgCWlmICghKmRtaSkK PiDCoAkJcmV0dXJuIDE7Cj4gwqAKPiAtCWlmICghKGRtdCA9IGRtX3Rhc2tfY3JlYXRlKERNX0RF VklDRV9JTkZPKSkpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JaWYgKCFkbV90YXNrX3NldF9uYW1l KGRtdCwgbWFwbmFtZSkpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JZG1fdGFza19ub19vcGVuX2Nv dW50KGRtdCk7Cj4gLQo+IC0JaWYgKCFkbV90YXNrX3J1bihkbXQpKQo+IC0JCWdvdG8gb3V0Owo+ IC0KPiAtCWlmICghZG1fdGFza19nZXRfaW5mbyhkbXQsICpkbWkpKQo+IC0JCWdvdG8gb3V0Owo+ IC0KPiAtCXIgPSAwOwo+IC1vdXQ6Cj4gLQlpZiAocikgewo+ICsJaWYgKGRvX2dldF9pbmZvKG1h cG5hbWUsICpkbWkpICE9IDApIHsKPiDCoAkJbWVtc2V0KCpkbWksIDAsIHNpemVvZihzdHJ1Y3Qg ZG1faW5mbykpOwo+IMKgCQlGUkVFKCpkbWkpOwo+IMKgCQkqZG1pID0gTlVMTDsKPiArCQlyZXR1 cm4gMTsKPiDCoAl9Cj4gLQo+IC0JaWYgKGRtdCkKPiAtCQlkbV90YXNrX2Rlc3Ryb3koZG10KTsK PiAtCj4gLQlyZXR1cm4gcjsKPiArCXJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdHJ1Y3QgcmVu YW1lX2RhdGEgewo+IGRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZGV2bWFwcGVyLmggYi9saWJt dWx0aXBhdGgvZGV2bWFwcGVyLmgKPiBpbmRleCBhY2E0NDU0Li41YjY2ODY1IDEwMDY0NAo+IC0t LSBhL2xpYm11bHRpcGF0aC9kZXZtYXBwZXIuaAo+ICsrKyBiL2xpYm11bHRpcGF0aC9kZXZtYXBw ZXIuaAo+IEBAIC01Miw4ICs1Miw3IEBAIGludCBkbV9lbmFibGVncm91cChjaGFyICogbWFwbmFt ZSwgaW50IGluZGV4KTsKPiDCoGludCBkbV9kaXNhYmxlZ3JvdXAoY2hhciAqIG1hcG5hbWUsIGlu dCBpbmRleCk7Cj4gwqBpbnQgZG1fZ2V0X21hcHMgKHZlY3RvciBtcCk7Cj4gwqBpbnQgZG1fZ2V0 ZXZlbnRuciAoY2hhciAqbmFtZSk7Cj4gLWludCBkbV9nZXRfbWFqb3IgKGNoYXIgKm5hbWUpOwo+ IC1pbnQgZG1fZ2V0X21pbm9yIChjaGFyICpuYW1lKTsKPiAraW50IGRtX2dldF9tYWpvcl9taW5v ciAoY29uc3QgY2hhciAqbmFtZSwgaW50ICptYWpvciwgaW50ICptaW5vcik7Cj4gwqBjaGFyICog ZG1fbWFwbmFtZShpbnQgbWFqb3IsIGludCBtaW5vcik7Cj4gwqBpbnQgZG1fcmVtb3ZlX3BhcnRt YXBzIChjb25zdCBjaGFyICogbWFwbmFtZSwgaW50IG5lZWRfc3luYywKPiDCoAkJCWludCBkZWZl cnJlZF9yZW1vdmUpOwo+IGRpZmYgLS1naXQgYS9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jIGIv bXVsdGlwYXRoZC9jbGlfaGFuZGxlcnMuYwo+IGluZGV4IGQ1OTgwMzkuLjA0YzczODYgMTAwNjQ0 Cj4gLS0tIGEvbXVsdGlwYXRoZC9jbGlfaGFuZGxlcnMuYwo+ICsrKyBiL211bHRpcGF0aGQvY2xp X2hhbmRsZXJzLmMKPiBAQCAtNzQ2LDcgKzc0Niw3IEBAIGNsaV9hZGRfbWFwICh2b2lkICogdiwg Y2hhciAqKiByZXBseSwgaW50ICogbGVuLAo+IHZvaWQgKiBkYXRhKQo+IMKgCWNoYXIgKiBwYXJh bSA9IGdldF9rZXlwYXJhbSh2LCBNQVApOwo+IMKgCWludCBtYWpvciwgbWlub3I7Cj4gwqAJY2hh ciBkZXZfcGF0aFtQQVRIX1NJWkVdOwo+IC0JY2hhciAqYWxpYXMsICpyZWZ3d2lkOwo+ICsJY2hh ciAqcmVmd3dpZCwgKmFsaWFzID0gTlVMTDsKPiDCoAlpbnQgcmMsIGNvdW50ID0gMDsKPiDCoAlz dHJ1Y3QgY29uZmlnICpjb25mOwo+IMKgCj4gQEAgLTc2MywxNCArNzYzLDEyIEBAIGNsaV9hZGRf bWFwICh2b2lkICogdiwgY2hhciAqKiByZXBseSwgaW50ICoKPiBsZW4sIHZvaWQgKiBkYXRhKQo+ IMKgCX0KPiDCoAlwdXRfbXVsdGlwYXRoX2NvbmZpZyhjb25mKTsKPiDCoAlkbyB7Cj4gLQkJbWlu b3IgPSBkbV9nZXRfbWlub3IocGFyYW0pOwo+IC0JCWlmIChtaW5vciA8IDApCj4gKwkJaWYgKGRt X2dldF9tYWpvcl9taW5vcihwYXJhbSwgJm1ham9yLCAmbWlub3IpIDwgMCkKPiDCoAkJCWNvbmRs b2coMiwgIiVzOiBub3QgYSBkZXZpY2UgbWFwcGVyIHRhYmxlIiwKPiBwYXJhbSk7Cj4gLQkJbWFq b3IgPSBkbV9nZXRfbWFqb3IocGFyYW0pOwo+IC0JCWlmIChtYWpvciA8IDApCj4gLQkJCWNvbmRs b2coMiwgIiVzOiBub3QgYSBkZXZpY2UgbWFwcGVyIHRhYmxlIiwKPiBwYXJhbSk7Cj4gLQkJc3By aW50ZihkZXZfcGF0aCwgImRtLSVkIiwgbWlub3IpOwo+IC0JCWFsaWFzID0gZG1fbWFwbmFtZSht YWpvciwgbWlub3IpOwo+ICsJCWVsc2Ugewo+ICsJCQlzcHJpbnRmKGRldl9wYXRoLCAiZG0tJWQi LCBtaW5vcik7Cj4gKwkJCWFsaWFzID0gZG1fbWFwbmFtZShtYWpvciwgbWlub3IpOwo+ICsJCX0K PiDCoAkJLyppZiB0aGVyZSBpcyBubyBtYXBuYW1lIGZvdW5kLCB3ZSBmaXJzdCBjcmVhdGUgdGhl Cj4gZGV2aWNlKi8KPiDCoAkJaWYgKCFhbGlhcyAmJiAhY291bnQpIHsKPiDCoAkJCWNvbmRsb2co MiwgIiVzOiBtYXBuYW1lIG5vdCBmb3VuZCBmb3IKPiAlZDolZCIsCj4gQEAgLTgwNCwyMyArODAy LDE1IEBAIGNsaV9kZWxfbWFwICh2b2lkICogdiwgY2hhciAqKiByZXBseSwgaW50ICoKPiBsZW4s IHZvaWQgKiBkYXRhKQo+IMKgCXN0cnVjdCB2ZWN0b3JzICogdmVjcyA9IChzdHJ1Y3QgdmVjdG9y cyAqKWRhdGE7Cj4gwqAJY2hhciAqIHBhcmFtID0gZ2V0X2tleXBhcmFtKHYsIE1BUCk7Cj4gwqAJ aW50IG1ham9yLCBtaW5vcjsKPiAtCWNoYXIgZGV2X3BhdGhbUEFUSF9TSVpFXTsKPiDCoAljaGFy ICphbGlhczsKPiDCoAlpbnQgcmM7Cj4gwqAKPiDCoAlwYXJhbSA9IGNvbnZlcnRfZGV2KHBhcmFt LCAwKTsKPiDCoAljb25kbG9nKDIsICIlczogcmVtb3ZlIG1hcCAob3BlcmF0b3IpIiwgcGFyYW0p Owo+IC0JbWlub3IgPSBkbV9nZXRfbWlub3IocGFyYW0pOwo+IC0JaWYgKG1pbm9yIDwgMCkgewo+ IC0JCWNvbmRsb2coMiwgIiVzOiBub3QgYSBkZXZpY2UgbWFwcGVyIHRhYmxlIiwgcGFyYW0pOwo+ IC0JCXJldHVybiAxOwo+IC0JfQo+IC0JbWFqb3IgPSBkbV9nZXRfbWFqb3IocGFyYW0pOwo+IC0J aWYgKG1ham9yIDwgMCkgewo+ICsJaWYgKGRtX2dldF9tYWpvcl9taW5vcihwYXJhbSwgJm1ham9y LCAmbWlub3IpIDwgMCkgewo+IMKgCQljb25kbG9nKDIsICIlczogbm90IGEgZGV2aWNlIG1hcHBl ciB0YWJsZSIsIHBhcmFtKTsKPiDCoAkJcmV0dXJuIDE7Cj4gwqAJfQo+IC0Jc3ByaW50ZihkZXZf cGF0aCwiZG0tJWQiLCBtaW5vcik7Cj4gwqAJYWxpYXMgPSBkbV9tYXBuYW1lKG1ham9yLCBtaW5v cik7Cj4gwqAJaWYgKCFhbGlhcykgewo+IMKgCQljb25kbG9nKDIsICIlczogbWFwbmFtZSBub3Qg Zm91bmQgZm9yICVkOiVkIiwKCi0tIApEci4gTWFydGluIFdpbGNrIDxtd2lsY2tAc3VzZS5jb20+ LCBUZWwuwqArNDkgKDApOTExIDc0MDUzIDIxMDcKU1VTRSBMaW51eCBHbWJILCBHRjogRmVsaXgg SW1lbmTDtnJmZmVyLCBKYW5lIFNtaXRoYXJkLCBHcmFoYW0gTm9ydG9uCkhSQiAyMTI4NCAoQUcg TsO8cm5iZXJnKQoKLS0KZG0tZGV2ZWwgbWFpbGluZyBsaXN0CmRtLWRldmVsQHJlZGhhdC5jb20K aHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3RpbmZvL2RtLWRldmVs