From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 23FA07F82 for ; Fri, 26 Jun 2015 14:32:34 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 116068F8040 for ; Fri, 26 Jun 2015 12:32:34 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id VdnnfLOLzrwPUqHN (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 26 Jun 2015 12:32:32 -0700 (PDT) Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 40FA53CB27A for ; Fri, 26 Jun 2015 19:32:32 +0000 (UTC) Date: Fri, 26 Jun 2015 15:32:30 -0400 From: Brian Foster Subject: Re: [PATCH 15/17] mkfs: don't treat files as though they are block devices Message-ID: <20150626193229.GK40750@bfoster.bfoster> References: <1434711726-13092-1-git-send-email-jtulak@redhat.com> <1434711726-13092-16-git-send-email-jtulak@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1434711726-13092-16-git-send-email-jtulak@redhat.com> List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: Jan =?utf-8?B?xaR1bMOhaw==?= Cc: Dave Chinner , xfs@oss.sgi.com T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDE6MDI6MDRQTSArMDIwMCwgSmFuIMWkdWzDoWsgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IAo+IElmIHRo ZSBkZXZpY2UgaXMgYWN0dWFsbHkgYSBmaWxlLCBhbmQgIi1kIGZpbGUiIGlzIG5vdCBzcGVjaWZp ZWQsCj4gbWtmcyB3aWxsIHRyeSB0byB0cmVhdCBpdCBhcyBhIGJsb2NrIGRldmljZSBhbmQgZ2V0 IHN0dWZmIHdyb25nLgo+IEltYWdlIGZpbGVzIGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgdGhlIHNh bWUgc2VjdG9yIHNpemVzIGFzIHRoZQo+IGJsb2NrIGRldmljZSBvciBmaWxlc3lzdGVtIHVuZGVy bHlpbmcgdGhlIGltYWdlIGZpbGUsIG5vciBzaG91bGQgd2UKPiBiZSBpc3N1aW5nIGRpc2NhcmQg aW9jdGxzIG9uIGltYWdlIGZpbGVzLgo+IAo+IFRvIGZpeCB0aGlzIHNhbmVseSwgb25seSByZXF1 aXJlICItZCBmaWxlIiBpZiB0aGUgZGV2aWNlIG5hbWUgaXMKPiBpbnZhbGlkIHRvIHRyaWdnZXIg Y3JlYXRpb24gb2YgdGhlIGZpbGUuIE90aGVyd2lzZSwgdXNlIHN0YXQoKSB0bwo+IGRldGVybWlu ZSBpZiB0aGUgZGV2aWNlIGlzIGEgZmlsZSBvciBibG9jayBkZXZpY2UgYW5kIGRlYWwgd2l0aCB0 aGF0Cj4gYXBwcm9wcmlhdGVseSBieSBzZXR0aW5nIHRoZSAiaXNmaWxlIiB2YXJpYWJsZXMgYW5k IHR1cm5pbmcgb2ZmCj4gZGlyZWN0IElPLiBUaGVuIGVuc3VyZSB0aGF0IHdlIGNoZWNrIHRoZSAi aXNmaWxlIiBvcHRpb25zIGJlZm9yZQo+IGRvaW5nIHRoaW5ncyB0aGF0IGFyZSBzcGVjaWZpYyB0 byBibG9jayBkZXZpY2VzLgo+IAo+IE90aGVyIGZpbGUvYmxvY2tkZXYgaXNzdWVzIGZpeGVkOgo+ IAktIHVzZSBnZXRzdHIgdG8gZGV0ZWN0IHNwZWNpZnlpbmcgdGhlIGRhdGEgZGV2aWNlIG5hbWUK PiAJICB0d2ljZS4KPiAJLSBjaGVjayBmaWxlL3NpemUvbmFtZSBwYXJhbWV0ZXJzIGJlZm9yZSBh bnl0aGluZyBlbHNlLgo+IAktIG92ZXJ3cml0ZSBjaGVja3MgbmVlZCB0byBiZSBkb25lIGJlZm9y ZSB0aGUgaW1hZ2UgZmlsZSBpcwo+IAkgIG9wZW5lZCBhbmQgcG90ZW50aWFsbHkgdHJ1bmNhdGVk Lgo+IAktIGJsa2lkX2dldF90b3BvbG9neSgpIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBpbWFn ZSBmaWxlcywKPiAJICBzbyB3YXJuIHdoZW4gaXQgaXMgY2FsbGVkIHRoYXQgd2F5Lgo+IAktIHpl cm9fb2xkX3hmc19zdHJ1Y3R1cmVzKCkgZW1pdHMgYSBzcHVyaW91cyBlcnJvcjoKPiAJCSJleGlz dGluZyBzdXBlcmJsb2NrIHJlYWQgZmFpbGVkOiBTdWNjZXNzIgo+IAkgIHdoZW4gaXQgaXMgcnVu IG9uIGEgdHJ1bmNhdGVkIGltYWdlIGZpbGUuIERvbid0IHdhcm4gaWYgd2UKPiAJICBzZWUgdGhp cyBwcm9ibGVtIG9uIGFuIGltYWdlIGZpbGUuCj4gCS0gRG9uJ3QgaXNzdWUgZGlzY2FyZHMgb24g aW1hZ2UgZmlsZXMuCj4gCS0gVXNlIGZzeW5jKCkgZm9yIGltYWdlIGZpbGVzLCBub3QgQkxLRkxT QlVGIGluCj4gCSAgcGxhdGZvcm1fZmx1c2hfZGV2aWNlKCkgZm9yIExpbnV4Lgo+IAo+IFNpZ25l ZC1vZmYtYnk6IERhdmUgQ2hpbm5lciA8ZGNoaW5uZXJAcmVkaGF0LmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBKYW4gxaR1bMOhayA8anR1bGFrQHJlZGhhdC5jb20+Cj4gLS0tCj4gIGxpYnhmcy9pbml0 LmMgICB8ICAgNCArKwo+ICBsaWJ4ZnMvbGludXguYyAgfCAgMTEgKysrLQo+ICBta2ZzL3hmc19t a2ZzLmMgfCAxNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgNTAgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYnhmcy9pbml0LmMgYi9saWJ4ZnMvaW5pdC5j Cj4gaW5kZXggNmY0MDRhYS4uZWQ5NzA0MyAxMDA2NDQKPiAtLS0gYS9saWJ4ZnMvaW5pdC5jCj4g KysrIGIvbGlieGZzL2luaXQuYwo+IEBAIC0yNDYsNiArMjQ2LDcgQEAgbGlieGZzX2luaXQobGli eGZzX2luaXRfdCAqYSkKPiAgCWNoYXIJCXJ0cGF0aFsyNV07Cj4gIAlpbnQJCXJ2YWwgPSAwOwo+ ICAJaW50CQlmbGFnczsKPiArCXN0cnVjdCBzdGF0IHN0OwoKVmFyaWFibGUgYWxpZ25tZW50LgoK PiAgCj4gIAlkcGF0aFswXSA9IGxvZ3BhdGhbMF0gPSBydHBhdGhbMF0gPSAnXDAnOwo+ICAJZG5h bWUgPSBhLT5kbmFtZTsKPiBAQCAtMjc4LDYgKzI3OSw5IEBAIGxpYnhmc19pbml0KGxpYnhmc19p bml0X3QgKmEpCj4gIAkJCWEtPmRkZXY9IGxpYnhmc19kZXZpY2Vfb3BlbihkbmFtZSwgYS0+ZGNy ZWF0LCBmbGFncywKPiAgCQkJCQkJICAgIGEtPnNldGJsa3NpemUpOwo+ICAJCQlhLT5kZmQgPSBs aWJ4ZnNfZGV2aWNlX3RvX2ZkKGEtPmRkZXYpOwo+ICsJCQlzdGF0KGRuYW1lLCAmc3QpOwo+ICsJ CQlhLT5kc2l6ZSA9IHN0LnN0X3NpemU7Cj4gKwkJCWEtPmRic2l6ZSA9IHN0LnN0X2Jsa3NpemU7 CgpFcnJvciBoYW5kbGluZz8KCj4gIAkJfSBlbHNlIHsKPiAgCQkJaWYgKCFjaGVja19vcGVuKGRu YW1lLCBmbGFncywgJnJhd2ZpbGUsICZibG9ja2ZpbGUpKQo+ICAJCQkJZ290byBkb25lOwo+IGRp ZmYgLS1naXQgYS9saWJ4ZnMvbGludXguYyBiL2xpYnhmcy9saW51eC5jCj4gaW5kZXggODg1MDE2 YS4uNDlkNDMwYyAxMDA2NDQKPiAtLS0gYS9saWJ4ZnMvbGludXguYwo+ICsrKyBiL2xpYnhmcy9s aW51eC5jCj4gQEAgLTEyNSw3ICsxMjUsMTYgQEAgcGxhdGZvcm1fc2V0X2Jsb2Nrc2l6ZShpbnQg ZmQsIGNoYXIgKnBhdGgsIGRldl90IGRldmljZSwgaW50IGJsb2Nrc2l6ZSwgaW50IGZhdGEKPiAg dm9pZAo+ICBwbGF0Zm9ybV9mbHVzaF9kZXZpY2UoaW50IGZkLCBkZXZfdCBkZXZpY2UpCj4gIHsK PiAtCWlmIChtYWpvcihkZXZpY2UpICE9IFJBTURJU0tfTUFKT1IpCj4gKwlzdHJ1Y3Qgc3RhdDY0 CXN0Owo+ICsJaWYgKG1ham9yKGRldmljZSkgPT0gUkFNRElTS19NQUpPUikKPiArCQlyZXR1cm47 Cj4gKwo+ICsJaWYgKGZzdGF0NjQoZmQsICZzdCkgPCAwKQo+ICsJCXJldHVybjsKPiArCj4gKwlp ZiAoU19JU1JFRyhzdC5zdF9tb2RlKSkKPiArCQlmc3luYyhmZCk7Cj4gKwllbHNlCj4gIAkJaW9j dGwoZmQsIEJMS0ZMU0JVRiwgMCk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL21rZnMveGZzX21r ZnMuYyBiL21rZnMveGZzX21rZnMuYwo+IGluZGV4IDZiZmE3M2MuLmNlNjQyMzAgMTAwNjQ0Cj4g LS0tIGEvbWtmcy94ZnNfbWtmcy5jCj4gKysrIGIvbWtmcy94ZnNfbWtmcy5jCj4gQEAgLTcwNSw3 ICs3MDUsNyBAQCBjYWxjX3N0cmlwZV9mYWN0b3JzKAo+ICAgKi8KPiAgc3RhdGljIGludAo+ICBj aGVja19vdmVyd3JpdGUoCj4gLQljaGFyCQkqZGV2aWNlKQo+ICsJY29uc3QgY2hhcgkqZGV2aWNl KQo+ICB7Cj4gIAljb25zdCBjaGFyCSp0eXBlOwo+ICAJYmxraWRfcHJvYmUJcHIgPSBOVUxMOwo+ IEBAIC03MjIsNyArNzIyLDcgQEAgY2hlY2tfb3ZlcndyaXRlKAo+ICAJZmQgPSBvcGVuKGRldmlj ZSwgT19SRE9OTFkpOwo+ICAJaWYgKGZkIDwgMCkKPiAgCQlnb3RvIG91dDsKPiAtCXBsYXRmb3Jt X2ZpbmRzaXplcyhkZXZpY2UsIGZkLCAmc2l6ZSwgJmJzeik7Cj4gKwlwbGF0Zm9ybV9maW5kc2l6 ZXMoKGNoYXIgKilkZXZpY2UsIGZkLCAmc2l6ZSwgJmJzeik7Cj4gIAljbG9zZShmZCk7Cj4gIAo+ ICAJLyogbm90aGluZyB0byBvdmVyd3JpdGUgb24gYSAwLWxlbmd0aCBkZXZpY2UgKi8KPiBAQCAt NzY5LDcgKzc2OSw2IEBAIGNoZWNrX292ZXJ3cml0ZSgKPiAgCQkJImFjY29yZGluZyB0byBibGtp ZFxuIiksIHByb2duYW1lLCBkZXZpY2UpOwo+ICAJfQo+ICAJcmV0ID0gMTsKPiAtCj4gIG91dDoK PiAgCWlmIChwcikKPiAgCQlibGtpZF9mcmVlX3Byb2JlKHByKTsKPiBAQCAtNzk1LDggKzc5NCwx MiBAQCBzdGF0aWMgdm9pZCBibGtpZF9nZXRfdG9wb2xvZ3koCj4gIAlzdHJ1Y3Qgc3RhdCBzdGF0 YnVmOwo+ICAKPiAgCS8qIGNhbid0IGdldCB0b3BvbG9neSBpbmZvIGZyb20gYSBmaWxlICovCj4g LQlpZiAoIXN0YXQoZGV2aWNlLCAmc3RhdGJ1ZikgJiYgU19JU1JFRyhzdGF0YnVmLnN0X21vZGUp KQo+ICsJaWYgKCFzdGF0KGRldmljZSwgJnN0YXRidWYpICYmIFNfSVNSRUcoc3RhdGJ1Zi5zdF9t b2RlKSkgewo+ICsJCWZwcmludGYoc3RkZXJyLAo+ICsJXygiJXM6IFdhcm5pbmc6IHRyeWluZyB0 byBwcm9iZSB0b3BvbG9neSBvZiBhIGZpbGUgJXMhXG4iKSwKPiArCQkJcHJvZ25hbWUsIGRldmlj ZSk7Cj4gIAkJcmV0dXJuOwo+ICsJfQo+ICAKPiAgCXByID0gYmxraWRfbmV3X3Byb2JlX2Zyb21f ZmlsZW5hbWUoZGV2aWNlKTsKPiAgCWlmICghcHIpCj4gQEAgLTg5OSw3ICs5MDIsNyBAQCBzdGF0 aWMgdm9pZCBnZXRfdG9wb2xvZ3koCj4gICNlbHNlIC8qIEVOQUJMRV9CTEtJRCAqLwo+ICBzdGF0 aWMgaW50Cj4gIGNoZWNrX292ZXJ3cml0ZSgKPiAtCWNoYXIJCSpkZXZpY2UpCj4gKwljb25zdCBj aGFyCSpkZXZpY2UpCj4gIHsKPiAgCWNoYXIJCSp0eXBlOwo+ICAKPiBAQCAtOTU2LDYgKzk1OSw3 NSBAQCBzdGF0aWMgdm9pZCBnZXRfdG9wb2xvZ3koCj4gICNlbmRpZiAvKiBFTkFCTEVfQkxLSUQg Ki8KPiAgCj4gIHN0YXRpYyB2b2lkCj4gK2NoZWNrX2RldmljZV90eXBlKAo+ICsJY29uc3QgY2hh cgkqbmFtZSwKPiArCWludAkJKmlzZmlsZSwKPiArCWJvb2wJCW5vX3NpemUsCj4gKwlib29sCQlu b19uYW1lLAo+ICsJaW50CQkqY3JlYXRlLAo+ICsJYm9vbAkJZm9yY2Vfb3ZlcndyaXRlLAo+ICsJ Y29uc3QgY2hhcgkqb3B0bmFtZSkKPiArewo+ICsJc3RydWN0IHN0YXQ2NCBzdGF0YnVmOwo+ICsK PiArCWlmICgqaXNmaWxlICYmIChub19zaXplIHx8IG5vX25hbWUpKSB7Cj4gKwkJZnByaW50Zihz dGRlcnIsCj4gKwlfKCJpZiAtJXMgZmlsZSB0aGVuIC0lcyBuYW1lIGFuZCAtJXMgc2l6ZSBhcmUg cmVxdWlyZWRcbiIpLAo+ICsJCQlvcHRuYW1lLCBvcHRuYW1lLCBvcHRuYW1lKTsKPiArCQl1c2Fn ZSgpOwo+ICsJfQo+ICsKPiArCWlmIChzdGF0NjQobmFtZSwgJnN0YXRidWYpKSB7Cj4gKwkJaWYg KGVycm5vID09IEVOT0VOVCAmJiAqaXNmaWxlKSB7Cj4gKwkJCWlmIChjcmVhdGUpCj4gKwkJCQkq Y3JlYXRlID0gMTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCj4gKwkJZnByaW50ZihzdGRlcnIs Cj4gKwlfKCJFcnJvciBhY2Nlc3Npbmcgc3BlY2lmaWVkIGRldmljZSAlczogJXNcbiIpLAo+ICsJ CQkJbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKPiArCQl1c2FnZSgpOwo+ICsJCXJldHVybjsKPiAr CX0KPiArCj4gKwlpZiAoIWZvcmNlX292ZXJ3cml0ZSAmJiBjaGVja19vdmVyd3JpdGUobmFtZSkp IHsKPiArCQlmcHJpbnRmKHN0ZGVyciwKPiArCV8oIiVzOiBVc2UgdGhlIC1mIG9wdGlvbiB0byBm b3JjZSBvdmVyd3JpdGUuXG4iKSwKPiArCQkJcHJvZ25hbWUpOwo+ICsJCWV4aXQoMSk7Cj4gKwl9 Cj4gKwo+ICsJLyoKPiArCSAqIFdlIG9ubHkgd2FudCB0byBjb21wbGV0ZWx5IHRydW5jYXRlIGFu ZCByZWNyZWF0ZSBhbiBleGlzdGluZyBmaWxlIGlmCj4gKwkgKiB3ZSB3ZXJlIHNwZWNpZmljYWxs eSB0b2xkIGl0IHdhcyBhIGZpbGUuIFNldCB0aGUgY3JlYXRlIGZsYWcgb25seSBpbgo+ICsJICog dGhpcyBjYXNlIHRvIHRyaWdnZXIgdGhhdCBiZWhhdmlvdXIuCj4gKwkgKi8KPiArCWlmIChTX0lT UkVHKHN0YXRidWYuc3RfbW9kZSkpIHsKPiArCQlpZiAoISppc2ZpbGUpCj4gKwkJCSppc2ZpbGUg PSAxOwo+ICsJCWVsc2UgaWYgKGNyZWF0ZSkKPiArCQkJKmNyZWF0ZSA9IDE7Cj4gKwkJcmV0dXJu Owo+ICsJfQo+ICsKPiArCWlmIChTX0lTQkxLKHN0YXRidWYuc3RfbW9kZSkpIHsKPiArCQlpZiAo KmlzZmlsZSkgewo+ICsJCQlmcHJpbnRmKHN0ZGVyciwKPiArCV8oInNwZWNpZmllZCBcIi0lcyBm aWxlXCIgb24gYSBibG9jayBkZXZpY2UgJXNcbiIpLAo+ICsJCQkJb3B0bmFtZSwgbmFtZSk7Cj4g KwkJCXVzYWdlKCk7Cj4gKwkJfQo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlmcHJpbnRmKHN0 ZGVyciwKPiArCV8oInNwZWNpZmllZCBkZXZpY2UgJXMgbm90IGEgZmlsZSBvciBibG9jayBkZXZp Y2VcbiIpLAo+ICsJCW5hbWUpOwo+ICsJdXNhZ2UoKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQK PiAgZml4dXBfbG9nX3N0cmlwZV91bml0KAo+ICAJaW50CQlsc2ZsYWcsCj4gIAlpbnQJCXN1bml0 LAo+IEBAIC0xMjQ1LDkgKzEzMTcsMTggQEAgemVyb19vbGRfeGZzX3N0cnVjdHVyZXMoCj4gIAkJ CXN0cmVycm9yKGVycm5vKSk7Cj4gIAkJZ290byBkb25lOwo+ICAJfQo+IC0JaWYgKHRtcCAhPSBu ZXdfc2ItPnNiX3NlY3RzaXplKSB7Cj4gLQkJZnByaW50ZihzdGRlcnIsCj4gLQlfKCJ3YXJuaW5n OiBjb3VsZCBub3QgcmVhZCBleGlzdGluZyBzdXBlcmJsb2NrLCBza2lwIHplcm9pbmdcbiIpKTsK PiArCS8qCj4gKwkgKiBJZiB3ZSBhcmUgY3JlYXRpbmcgYW4gaW1hZ2UgZmlsZSwgaXQgbWlnaHQg YmUgb2YgemVybyBsZW5ndGggYXQgdGhpcwo+ICsJICogcG9pbnQgaW4gdGltZS4gSGVuY2UgcmVh ZGluZyB0aGUgZXhpc3Rpbmcgc3VwZXJibG9jayBpcyBnb2luZyB0bwo+ICsJICogcmV0dXJuIHpl cm8gYnl0ZXMuIEl0J3Mgbm90IGEgZmFpbHVyZSB3ZSBuZWVkIHRvIHdhcm4gYWJvdXQgaW4gdGhp cwo+ICsJICogY2FzZS4KPiArCSAqLwo+ICsJb2ZmID0gcHJlYWQoeGktPmRmZCwgYnVmLCBuZXdf c2ItPnNiX3NlY3RzaXplLCAwKTsKPiArCWlmIChvZmYgIT0gbmV3X3NiLT5zYl9zZWN0c2l6ZSkg ewo+ICsJCWlmICgheGktPmRpc2ZpbGUpCj4gKwkJCWZwcmludGYoc3RkZXJyLAo+ICsJXygiZXJy b3IgcmVhZGluZyBleGlzdGluZyBzdXBlcmJsb2NrOiAlc1xuIiksCj4gKwkJCQlzdHJlcnJvcihl cnJubykpOwoKVGhpcyBhcHBlYXJzIHRvIGJlIGR1cGxpY2F0ZSBjb2RlLiBTZWUgdGhlIGltbWVk aWF0ZWx5IHByZXZpb3VzIHByZWFkKCkKaW4gemVyb19vbGRfeGZzX3N0cnVjdHVyZXMoKS4KCj4g IAkJZ290byBkb25lOwo+ICAJfQo+ICAJbGlieGZzX3NiX2Zyb21fZGlzaygmc2IsIGJ1Zik7Cj4g QEAgLTE3MTMsOCArMTc5NCw2IEBAIG1haW4oCj4gIAkJCQljYXNlIERfRklMRToKPiAgCQkJCQl4 aS5kaXNmaWxlID0gZ2V0bnVtKHZhbHVlLCAmZG9wdHMsCj4gIAkJCQkJCQkgICAgRF9GSUxFKTsK PiAtCQkJCQlpZiAoeGkuZGlzZmlsZSAmJiAhTmZsYWcpCj4gLQkJCQkJCXhpLmRjcmVhdCA9IDE7 Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIERfTkFNRToKPiAgCQkJCQl4aS5kbmFtZSA9IGdl dHN0cih2YWx1ZSwgJmRvcHRzLCBEX05BTUUpOwo+IEBAIC0xODQzLDggKzE5MjIsNiBAQCBtYWlu KAo+ICAJCQkJY2FzZSBMX0ZJTEU6Cj4gIAkJCQkJeGkubGlzZmlsZSA9IGdldG51bSh2YWx1ZSwg JmxvcHRzLAo+ICAJCQkJCQkJICAgIExfRklMRSk7Cj4gLQkJCQkJaWYgKHhpLmxpc2ZpbGUpCj4g LQkJCQkJCXhpLmxjcmVhdCA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIExfSU5URVJO QUw6Cj4gIAkJCQkJbG9naW50ZXJuYWwgPSBnZXRudW0odmFsdWUsICZsb3B0cywKPiBAQCAtMjAx MSw4ICsyMDg4LDYgQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAtbSBjcmM9MSBhbmQgLW4gZnR5 cGVcbiIpKTsKPiAgCQkJCWNhc2UgUl9GSUxFOgo+ICAJCQkJCXhpLnJpc2ZpbGUgPSBnZXRudW0o dmFsdWUsICZyb3B0cywKPiAgCQkJCQkJCSAgICBSX0ZJTEUpOwo+IC0JCQkJCWlmICh4aS5yaXNm aWxlKQo+IC0JCQkJCQl4aS5yY3JlYXQgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBS X05BTUU6Cj4gIAkJCQljYXNlIFJfREVWOgo+IEBAIC0yMDc5LDEzICsyMTU0LDcgQEAgXygiY2Fu bm90IHNwZWNpZnkgYm90aCAtbSBjcmM9MSBhbmQgLW4gZnR5cGVcbiIpKTsKPiAgCQlmcHJpbnRm KHN0ZGVyciwgXygiZXh0cmEgYXJndW1lbnRzXG4iKSk7Cj4gIAkJdXNhZ2UoKTsKPiAgCX0gZWxz ZSBpZiAoYXJnYyAtIG9wdGluZCA9PSAxKSB7Cj4gLQkJZGZpbGUgPSB4aS52b2xuYW1lID0gYXJn dltvcHRpbmRdOwo+IC0JCWlmICh4aS5kbmFtZSkgewo+IC0JCQlmcHJpbnRmKHN0ZGVyciwKPiAt CQkJCV8oImNhbm5vdCBzcGVjaWZ5IGJvdGggJXMgYW5kIC1kIG5hbWU9JXNcbiIpLAo+IC0JCQkJ eGkudm9sbmFtZSwgeGkuZG5hbWUpOwo+IC0JCQl1c2FnZSgpOwo+IC0JCX0KPiArCQlkZmlsZSA9 IHhpLnZvbG5hbWUgPSBnZXRzdHIoYXJndltvcHRpbmRdLCAmZG9wdHMsIERfTkFNRSk7CgpTaG91 bGRuJ3QgdGhpcyBiZSBwYXJ0IG9mIHRoZSBwcmV2aW91cyBwYXRjaD8KCkJyaWFuCgo+ICAJfSBl bHNlCj4gIAkJZGZpbGUgPSB4aS5kbmFtZTsKPiAgCj4gQEAgLTIxMTgsNiArMjE4NywyNiBAQCBf KCJNaW5pbXVtIGJsb2NrIHNpemUgZm9yIENSQyBlbmFibGVkIGZpbGVzeXN0ZW1zIGlzICVkIGJ5 dGVzLlxuIiksCj4gIAkJbHNlY3RvcnNpemUgPSBzZWN0b3JzaXplOwo+ICAJfQo+ICAKPiArCS8q Cj4gKwkgKiBCZWZvcmUgYW55dGhpbmcgZWxzZSwgdmVyaWZ5IHRoYXQgd2UgYXJlIGNvcnJlY3Rs eSBvcGVyYXRpbmcgb24KPiArCSAqIGZpbGVzIG9yIGJsb2NrIGRldmljZXMgYW5kIHNldCB0aGUg Y29udHJvbCBwYXJhbWV0ZXJzIGNvcnJlY3RseS4KPiArCSAqIEV4cGxpY2l0bHkgZGlzYWJsZSBk aXJlY3QgSU8gZm9yIGltYWdlIGZpbGVzIHNvIHdlIGRvbid0IGVycm9yIG91dCBvbgo+ICsJICog c2VjdG9yIHNpemUgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBuZXcgZmlsZXN5c3RlbSBhbmQgdGhl IHVuZGVybHlpbmcKPiArCSAqIGhvc3QgZmlsZXN5c3RlbS4KPiArCSAqLwo+ICsJY2hlY2tfZGV2 aWNlX3R5cGUoZGZpbGUsICZ4aS5kaXNmaWxlLCAhZHNpemUsICF4aS5kbmFtZSwKPiArCQkJICBO ZmxhZyA/IE5VTEwgOiAmeGkuZGNyZWF0LCBmb3JjZV9vdmVyd3JpdGUsICJkIik7Cj4gKwlpZiAo IWxvZ2ludGVybmFsKQo+ICsJCWNoZWNrX2RldmljZV90eXBlKHhpLmxvZ25hbWUsICZ4aS5saXNm aWxlLCAhbG9nc2l6ZSwgIXhpLmxvZ25hbWUsCj4gKwkJCQkgIE5mbGFnID8gTlVMTCA6ICZ4aS5s Y3JlYXQsCj4gKwkJCQkgIGZvcmNlX292ZXJ3cml0ZSwgImwiKTsKPiArCWlmICh4aS5ydG5hbWUp Cj4gKwkJY2hlY2tfZGV2aWNlX3R5cGUoeGkucnRuYW1lLCAmeGkucmlzZmlsZSwgIXJ0c2l6ZSwg IXhpLnJ0bmFtZSwKPiArCQkJCSAgTmZsYWcgPyBOVUxMIDogJnhpLnJjcmVhdCwKPiArCQkJCSAg Zm9yY2Vfb3ZlcndyaXRlLCAiciIpOwo+ICsJaWYgKHhpLmRpc2ZpbGUgfHwgeGkubGlzZmlsZSB8 fCB4aS5yaXNmaWxlKQo+ICsJCXhpLmlzZGlyZWN0ID0gMDsKPiArCj4gIAltZW1zZXQoJmZ0LCAw LCBzaXplb2YoZnQpKTsKPiAgCWdldF90b3BvbG9neSgmeGksICZmdCwgZm9yY2Vfb3ZlcndyaXRl KTsKPiAgCj4gQEAgLTIyNzgsMTEgKzIzNjcsNiBAQCBfKCJ3YXJuaW5nOiBzcGFyc2UgaW5vZGVz IG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBDUkMgc3VwcG9ydCwgZGlzYWJsZWQuXG4iKSk7Cj4gIAl9 Cj4gIAo+ICAKPiAtCWlmICh4aS5kaXNmaWxlICYmICghZHNpemUgfHwgIXhpLmRuYW1lKSkgewo+ IC0JCWZwcmludGYoc3RkZXJyLAo+IC0JXygiaWYgLWQgZmlsZSB0aGVuIC1kIG5hbWUgYW5kIC1k IHNpemUgYXJlIHJlcXVpcmVkXG4iKSk7Cj4gLQkJdXNhZ2UoKTsKPiAtCX0KPiAgCWlmIChkc2l6 ZSkgewo+ICAJCV9fdWludDY0X3QgZGJ5dGVzOwo+ICAKPiBAQCAtMjMxNSwxMSArMjM5OSw2IEBA IF8oIndhcm5pbmc6IHNwYXJzZSBpbm9kZXMgbm90IHN1cHBvcnRlZCB3aXRob3V0IENSQyBzdXBw b3J0LCBkaXNhYmxlZC5cbiIpKTsKPiAgCQl1c2FnZSgpOwo+ICAJfQo+ICAKPiAtCWlmICh4aS5s aXNmaWxlICYmICghbG9nc2l6ZSB8fCAheGkubG9nbmFtZSkpIHsKPiAtCQlmcHJpbnRmKHN0ZGVy ciwKPiAtCQlfKCJpZiAtbCBmaWxlIHRoZW4gLWwgbmFtZSBhbmQgLWwgc2l6ZSBhcmUgcmVxdWly ZWRcbiIpKTsKPiAtCQl1c2FnZSgpOwo+IC0JfQo+ICAJaWYgKGxvZ3NpemUpIHsKPiAgCQlfX3Vp bnQ2NF90IGxvZ2J5dGVzOwo+ICAKPiBAQCAtMjMzNywxMSArMjQxNiw2IEBAIF8oIndhcm5pbmc6 IHNwYXJzZSBpbm9kZXMgbm90IHN1cHBvcnRlZCB3aXRob3V0IENSQyBzdXBwb3J0LCBkaXNhYmxl ZC5cbiIpKTsKPiAgCQkJCShsb25nIGxvbmcpbG9nYnl0ZXMsIGJsb2Nrc2l6ZSwKPiAgCQkJCShs b25nIGxvbmcpKGxvZ2Jsb2NrcyA8PCBibG9ja2xvZykpOwo+ICAJfQo+IC0JaWYgKHhpLnJpc2Zp bGUgJiYgKCFydHNpemUgfHwgIXhpLnJ0bmFtZSkpIHsKPiAtCQlmcHJpbnRmKHN0ZGVyciwKPiAt CQlfKCJpZiAtciBmaWxlIHRoZW4gLXIgbmFtZSBhbmQgLXIgc2l6ZSBhcmUgcmVxdWlyZWRcbiIp KTsKPiAtCQl1c2FnZSgpOwo+IC0JfQo+ICAJaWYgKHJ0c2l6ZSkgewo+ICAJCV9fdWludDY0X3Qg cnRieXRlczsKPiAgCj4gQEAgLTI0NjMsMjIgKzI1MzcsMTQgQEAgXygid2FybmluZzogc3BhcnNl IGlub2RlcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ1JDIHN1cHBvcnQsIGRpc2FibGVkLlxuIikp Owo+ICAJeGkucnRzaXplICY9IHNlY3Rvcl9tYXNrOwo+ICAJeGkubG9nQkJzaXplICY9IChfX3Vp bnQ2NF90KS0xIDw8IChNQVgobHNlY3RvcmxvZywgMTApIC0gQkJTSElGVCk7Cj4gIAo+IC0JaWYg KCFmb3JjZV9vdmVyd3JpdGUpIHsKPiAtCQlpZiAoY2hlY2tfb3ZlcndyaXRlKGRmaWxlKSB8fAo+ IC0JCSAgICBjaGVja19vdmVyd3JpdGUobG9nZmlsZSkgfHwKPiAtCQkgICAgY2hlY2tfb3Zlcndy aXRlKHhpLnJ0bmFtZSkpIHsKPiAtCQkJZnByaW50ZihzdGRlcnIsCj4gLQkJCV8oIiVzOiBVc2Ug dGhlIC1mIG9wdGlvbiB0byBmb3JjZSBvdmVyd3JpdGUuXG4iKSwKPiAtCQkJCXByb2duYW1lKTsK PiAtCQkJZXhpdCgxKTsKPiAtCQl9Cj4gLQl9Cj4gIAo+ICsJLyogZG9uJ3QgZG8gZGlzY2FyZHMg b24gcHJpbnQtb25seSBydW5zIG9yIG9uIGZpbGVzICovCj4gIAlpZiAoZGlzY2FyZCAmJiAhTmZs YWcpIHsKPiAtCQlkaXNjYXJkX2Jsb2Nrcyh4aS5kZGV2LCB4aS5kc2l6ZSk7Cj4gLQkJaWYgKHhp LnJ0ZGV2KQo+ICsJCWlmICgheGkuZGlzZmlsZSkKPiArCQkJZGlzY2FyZF9ibG9ja3MoeGkuZGRl diwgeGkuZHNpemUpOwo+ICsJCWlmICh4aS5ydGRldiAmJiAheGkucmlzZmlsZSkKPiAgCQkJZGlz Y2FyZF9ibG9ja3MoeGkucnRkZXYsIHhpLnJ0c2l6ZSk7Cj4gLQkJaWYgKHhpLmxvZ2RldiAmJiB4 aS5sb2dkZXYgIT0geGkuZGRldikKPiArCQlpZiAoeGkubG9nZGV2ICYmIHhpLmxvZ2RldiAhPSB4 aS5kZGV2ICYmICF4aS5saXNmaWxlKQo+ICAJCQlkaXNjYXJkX2Jsb2Nrcyh4aS5sb2dkZXYsIHhp LmxvZ0JCc2l6ZSk7Cj4gIAl9Cj4gIAo+IC0tIAo+IDIuMS4wCj4gCj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiB4ZnMgbWFpbGluZyBsaXN0Cj4geGZz QG9zcy5zZ2kuY29tCj4gaHR0cDovL29zcy5zZ2kuY29tL21haWxtYW4vbGlzdGluZm8veGZzCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4ZnMgbWFpbGlu ZyBsaXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5m by94ZnMK