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 4B79A7CA1 for ; Wed, 28 Sep 2016 21:54:06 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 01B3F8F8035 for ; Wed, 28 Sep 2016 19:54:02 -0700 (PDT) Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id SxBXMy4AuKXMlgTq (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Wed, 28 Sep 2016 19:53:59 -0700 (PDT) Date: Wed, 28 Sep 2016 19:53:52 -0700 From: "Darrick J. Wong" Subject: Re: [PATCH 7/8] xfs: split direct I/O and DAX path Message-ID: <20160929025351.GB4901@birch.djwong.org> References: <1466609236-23801-1-git-send-email-hch@lst.de> <1466609236-23801-8-git-send-email-hch@lst.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1466609236-23801-8-git-send-email-hch@lst.de> 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: Christoph Hellwig Cc: linux-fsdevel@vger.kernel.org, linux-nvdimm@ml01.01.org, xfs@oss.sgi.com T24gV2VkLCBKdW4gMjIsIDIwMTYgYXQgMDU6Mjc6MTVQTSArMDIwMCwgQ2hyaXN0b3BoIEhlbGx3 aWcgd3JvdGU6Cj4gU28gZmFyIHRoZSBEQVggY29kZSBvdmVybG9hZGVkIHRoZSBkaXJlY3QgSS9P IGNvZGUgcGF0aC4gIFRoZXJlIGlzIHZlcnkgbGl0dGxlCj4gaW4gY29tbW9uIGJldHdlZW4gdGhl IHR3bywgYW5kIHVudGFuZ2xpbmcgdGhlbSBhbGxvd3MgdG8gY2xlYW4gdXAgYm90aCB2YXJpYW50 cy4KPiAKPiBBcyBhINGVaWRlIGVmZmVjdCB3ZSBhbHNvIGdldCBzZXBhcmF0ZSB0cmFjZSBwb2lu dHMgZm9yIGJvdGggSS9PIHR5cGVzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzdG9waCBIZWxs d2lnIDxoY2hAbHN0LmRlPgo+IC0tLQo+ICBmcy94ZnMveGZzX2ZpbGUuYyAgfCAxMzkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgZnMveGZz L3hmc190cmFjZS5oIHwgICAyICsKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygr KSwgMjkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZmlsZS5jIGIv ZnMveGZzL3hmc19maWxlLmMKPiBpbmRleCAyNGIyNjdkLi4wZTc0MzI1IDEwMDY0NAo+IC0tLSBh L2ZzL3hmcy94ZnNfZmlsZS5jCj4gKysrIGIvZnMveGZzL3hmc19maWxlLmMKPiBAQCAtMjYyLDEz ICsyNjIsMTEgQEAgeGZzX2ZpbGVfZGlvX2Fpb19yZWFkKAo+ICAJZWxzZQo+ICAJCXRhcmdldCA9 IGlwLT5pX21vdW50LT5tX2RkZXZfdGFyZ3A7Cj4gIAo+IC0JaWYgKCFJU19EQVgoaW5vZGUpKSB7 Cj4gLQkJLyogRElPIG11c3QgYmUgYWxpZ25lZCB0byBkZXZpY2UgbG9naWNhbCBzZWN0b3Igc2l6 ZSAqLwo+IC0JCWlmICgoaW9jYi0+a2lfcG9zIHwgY291bnQpICYgdGFyZ2V0LT5idF9sb2dpY2Fs X3NlY3Rvcm1hc2spIHsKPiAtCQkJaWYgKGlvY2ItPmtpX3BvcyA9PSBpc2l6ZSkKPiAtCQkJCXJl dHVybiAwOwo+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiAtCQl9Cj4gKwkvKiBESU8gbXVzdCBiZSBh bGlnbmVkIHRvIGRldmljZSBsb2dpY2FsIHNlY3RvciBzaXplICovCj4gKwlpZiAoKGlvY2ItPmtp X3BvcyB8IGNvdW50KSAmIHRhcmdldC0+YnRfbG9naWNhbF9zZWN0b3JtYXNrKSB7Cj4gKwkJaWYg KGlvY2ItPmtpX3BvcyA9PSBpc2l6ZSkKPiArCQkJcmV0dXJuIDA7Cj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gIAl9Cj4gIAo+ICAJLyoKPiBAQCAtMzE3LDEzICszMTUsMzcgQEAgeGZzX2ZpbGVfZGlv X2Fpb19yZWFkKAo+ICAJfQo+ICAKPiAgCWRhdGEgPSAqdG87Cj4gLQlpZiAoSVNfREFYKGlub2Rl KSkgewo+IC0JCXJldCA9IGRheF9kb19pbyhpb2NiLCBpbm9kZSwgJmRhdGEsIHhmc19nZXRfYmxv Y2tzX2RpcmVjdCwKPiAtCQkJCU5VTEwsIDApOwo+IC0JfSBlbHNlIHsKPiAtCQlyZXQgPSBfX2Js b2NrZGV2X2RpcmVjdF9JTyhpb2NiLCBpbm9kZSwgdGFyZ2V0LT5idF9iZGV2LCAmZGF0YSwKPiAt CQkJCXhmc19nZXRfYmxvY2tzX2RpcmVjdCwgTlVMTCwgTlVMTCwgMCk7Cj4gKwlyZXQgPSBfX2Js b2NrZGV2X2RpcmVjdF9JTyhpb2NiLCBpbm9kZSwgdGFyZ2V0LT5idF9iZGV2LCAmZGF0YSwKPiAr CQkJeGZzX2dldF9ibG9ja3NfZGlyZWN0LCBOVUxMLCBOVUxMLCAwKTsKPiArCWlmIChyZXQgPiAw KSB7Cj4gKwkJaW9jYi0+a2lfcG9zICs9IHJldDsKPiArCQlpb3ZfaXRlcl9hZHZhbmNlKHRvLCBy ZXQpOwo+ICAJfQo+ICsJeGZzX3J3X2l1bmxvY2soaXAsIFhGU19JT0xPQ0tfU0hBUkVEKTsKPiAr Cj4gKwlmaWxlX2FjY2Vzc2VkKGlvY2ItPmtpX2ZpbHApOwoKU28gSSBub3RpY2VkIHRoYXQgZ2Vu ZXJpYy8zMjMgc3RhcnRzIGNyYXNoaW5nIGluIGZpbGVfYWNjZXNzZWQgLT4gdG91Y2hfYXRpbWUK YmVjYXVzZSBpb2NiLT5raV9maWxwLT5mX3BhdGguZGVudHJ5ID09IE5VTEwuICBGb3IgYSB3aGls ZSBJIHRob3VnaHQgaXQgd2FzCnNvbWUgd2VpcmQgcmVmbGluayBidWcsIGJ1dCBJIGZpbmFsbHkg aGFkIHRpbWUgdG8gZ28gYnVpbGQgYSB2YW5pbGxhIDQuOC1yYzgKa2VybmVsIGFuZCB0aGF0IGJs ZXcgdXAgaGVyZSB0b28uICBJJ20gbm90IHN1cmUgd2h5IHRoaXMgbGluZSBnb3QgaW5zZXJ0ZWQK aGVyZSwgc2luY2UgaXQgd2Fzbid0IHRoZXJlIHByaW9yIHRvIHRoaXMgcGF0Y2gsIEFGQUlDVC4K CjxzaHJ1Zz4KCi0tRAoKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK1NUQVRJQyBzc2l6ZV90 Cj4gK3hmc19maWxlX2RheF9yZWFkKAo+ICsJc3RydWN0IGtpb2NiCQkqaW9jYiwKPiArCXN0cnVj dCBpb3ZfaXRlcgkJKnRvKQo+ICt7Cj4gKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZQkqbWFwcGluZyA9 IGlvY2ItPmtpX2ZpbHAtPmZfbWFwcGluZzsKPiArCXN0cnVjdCBpbm9kZQkJKmlub2RlID0gbWFw cGluZy0+aG9zdDsKPiArCXN0cnVjdCB4ZnNfaW5vZGUJKmlwID0gWEZTX0koaW5vZGUpOwo+ICsJ c3RydWN0IGlvdl9pdGVyCQlkYXRhID0gKnRvOwo+ICsJc2l6ZV90CQkJY291bnQgPSBpb3ZfaXRl cl9jb3VudCh0byk7Cj4gKwlzc2l6ZV90CQkJcmV0ID0gMDsKPiArCj4gKwl0cmFjZV94ZnNfZmls ZV9kYXhfcmVhZChpcCwgY291bnQsIGlvY2ItPmtpX3Bvcyk7Cj4gKwo+ICsJaWYgKCFjb3VudCkK PiArCQlyZXR1cm4gMDsgLyogc2tpcCBhdGltZSAqLwo+ICsKPiArCXhmc19yd19pbG9jayhpcCwg WEZTX0lPTE9DS19TSEFSRUQpOwo+ICsJcmV0ID0gZGF4X2RvX2lvKGlvY2IsIGlub2RlLCAmZGF0 YSwgeGZzX2dldF9ibG9ja3NfZGlyZWN0LCBOVUxMLCAwKTsKPiAgCWlmIChyZXQgPiAwKSB7Cj4g IAkJaW9jYi0+a2lfcG9zICs9IHJldDsKPiAgCQlpb3ZfaXRlcl9hZHZhbmNlKHRvLCByZXQpOwo+ IEBAIC0zNTYsNyArMzc4LDggQEAgeGZzX2ZpbGVfcmVhZF9pdGVyKAo+ICAJc3RydWN0IGtpb2Ni CQkqaW9jYiwKPiAgCXN0cnVjdCBpb3ZfaXRlcgkJKnRvKQo+ICB7Cj4gLQlzdHJ1Y3QgeGZzX21v dW50CSptcCA9IFhGU19JKGZpbGVfaW5vZGUoaW9jYi0+a2lfZmlscCkpLT5pX21vdW50Owo+ICsJ c3RydWN0IGlub2RlCQkqaW5vZGUgPSBmaWxlX2lub2RlKGlvY2ItPmtpX2ZpbHApOwo+ICsJc3Ry dWN0IHhmc19tb3VudAkqbXAgPSBYRlNfSShpbm9kZSktPmlfbW91bnQ7Cj4gIAlzc2l6ZV90CQkJ cmV0ID0gMDsKPiAgCj4gIAlYRlNfU1RBVFNfSU5DKG1wLCB4c19yZWFkX2NhbGxzKTsKPiBAQCAt MzY0LDcgKzM4Nyw5IEBAIHhmc19maWxlX3JlYWRfaXRlcigKPiAgCWlmIChYRlNfRk9SQ0VEX1NI VVRET1dOKG1wKSkKPiAgCQlyZXR1cm4gLUVJTzsKPiAgCj4gLQlpZiAoaW9jYi0+a2lfZmxhZ3Mg JiBJT0NCX0RJUkVDVCkKPiArCWlmIChJU19EQVgoaW5vZGUpKQo+ICsJCXJldCA9IHhmc19maWxl X2RheF9yZWFkKGlvY2IsIHRvKTsKPiArCWVsc2UgaWYgKGlvY2ItPmtpX2ZsYWdzICYgSU9DQl9E SVJFQ1QpCj4gIAkJcmV0ID0geGZzX2ZpbGVfZGlvX2Fpb19yZWFkKGlvY2IsIHRvKTsKPiAgCWVs c2UKPiAgCQlyZXQgPSB4ZnNfZmlsZV9idWZmZXJlZF9haW9fcmVhZChpb2NiLCB0byk7Cj4gQEAg LTU4Niw4ICs2MTEsNyBAQCB4ZnNfZmlsZV9kaW9fYWlvX3dyaXRlKAo+ICAJCQkJCW1wLT5tX3J0 ZGV2X3RhcmdwIDogbXAtPm1fZGRldl90YXJncDsKPiAgCj4gIAkvKiBESU8gbXVzdCBiZSBhbGln bmVkIHRvIGRldmljZSBsb2dpY2FsIHNlY3RvciBzaXplICovCj4gLQlpZiAoIUlTX0RBWChpbm9k ZSkgJiYKPiAtCSAgICAoKGlvY2ItPmtpX3BvcyB8IGNvdW50KSAmIHRhcmdldC0+YnRfbG9naWNh bF9zZWN0b3JtYXNrKSkKPiArCWlmICgoaW9jYi0+a2lfcG9zIHwgY291bnQpICYgdGFyZ2V0LT5i dF9sb2dpY2FsX3NlY3Rvcm1hc2spCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJLyogInVu YWxpZ25lZCIgaGVyZSBtZWFucyBub3QgYWxpZ25lZCB0byBhIGZpbGVzeXN0ZW0gYmxvY2sgKi8K PiBAQCAtNjU2LDE0ICs2ODAsOSBAQCB4ZnNfZmlsZV9kaW9fYWlvX3dyaXRlKAo+ICAJdHJhY2Vf eGZzX2ZpbGVfZGlyZWN0X3dyaXRlKGlwLCBjb3VudCwgaW9jYi0+a2lfcG9zKTsKPiAgCj4gIAlk YXRhID0gKmZyb207Cj4gLQlpZiAoSVNfREFYKGlub2RlKSkgewo+IC0JCXJldCA9IGRheF9kb19p byhpb2NiLCBpbm9kZSwgJmRhdGEsIHhmc19nZXRfYmxvY2tzX2RpcmVjdCwKPiAtCQkJCXhmc19l bmRfaW9fZGlyZWN0X3dyaXRlLCAwKTsKPiAtCX0gZWxzZSB7Cj4gLQkJcmV0ID0gX19ibG9ja2Rl dl9kaXJlY3RfSU8oaW9jYiwgaW5vZGUsIHRhcmdldC0+YnRfYmRldiwgJmRhdGEsCj4gLQkJCQl4 ZnNfZ2V0X2Jsb2Nrc19kaXJlY3QsIHhmc19lbmRfaW9fZGlyZWN0X3dyaXRlLAo+IC0JCQkJTlVM TCwgRElPX0FTWU5DX0VYVEVORCk7Cj4gLQl9Cj4gKwlyZXQgPSBfX2Jsb2NrZGV2X2RpcmVjdF9J Tyhpb2NiLCBpbm9kZSwgdGFyZ2V0LT5idF9iZGV2LCAmZGF0YSwKPiArCQkJeGZzX2dldF9ibG9j a3NfZGlyZWN0LCB4ZnNfZW5kX2lvX2RpcmVjdF93cml0ZSwKPiArCQkJTlVMTCwgRElPX0FTWU5D X0VYVEVORCk7Cj4gIAo+ICAJLyogc2VlIGdlbmVyaWNfZmlsZV9kaXJlY3Rfd3JpdGUoKSBmb3Ig d2h5IHRoaXMgaXMgbmVjZXNzYXJ5ICovCj4gIAlpZiAobWFwcGluZy0+bnJwYWdlcykgewo+IEBA IC02ODAsMTAgKzY5OSw3MCBAQCBvdXQ6Cj4gIAl4ZnNfcndfaXVubG9jayhpcCwgaW9sb2NrKTsK PiAgCj4gIAkvKgo+IC0JICogTm8gZmFsbGJhY2sgdG8gYnVmZmVyZWQgSU8gb24gZXJyb3JzIGZv ciBYRlMuIERBWCBjYW4gcmVzdWx0IGluCj4gLQkgKiBwYXJ0aWFsIHdyaXRlcywgYnV0IGRpcmVj dCBJTyB3aWxsIGVpdGhlciBjb21wbGV0ZSBmdWxseSBvciBmYWlsLgo+ICsJICogTm8gZmFsbGJh Y2sgdG8gYnVmZmVyZWQgSU8gb24gZXJyb3JzIGZvciBYRlMsIGRpcmVjdCBJTyB3aWxsIGVpdGhl cgo+ICsJICogY29tcGxldGUgZnVsbHkgb3IgZmFpbC4KPiArCSAqLwo+ICsJQVNTRVJUKHJldCA8 IDAgfHwgcmV0ID09IGNvdW50KTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK1NUQVRJQyBz c2l6ZV90Cj4gK3hmc19maWxlX2RheF93cml0ZSgKPiArCXN0cnVjdCBraW9jYgkJKmlvY2IsCj4g KwlzdHJ1Y3QgaW92X2l0ZXIJCSpmcm9tKQo+ICt7Cj4gKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZQkq bWFwcGluZyA9IGlvY2ItPmtpX2ZpbHAtPmZfbWFwcGluZzsKPiArCXN0cnVjdCBpbm9kZQkJKmlu b2RlID0gbWFwcGluZy0+aG9zdDsKPiArCXN0cnVjdCB4ZnNfaW5vZGUJKmlwID0gWEZTX0koaW5v ZGUpOwo+ICsJc3RydWN0IHhmc19tb3VudAkqbXAgPSBpcC0+aV9tb3VudDsKPiArCXNzaXplX3QJ CQlyZXQgPSAwOwo+ICsJaW50CQkJdW5hbGlnbmVkX2lvID0gMDsKPiArCWludAkJCWlvbG9jazsK PiArCXN0cnVjdCBpb3ZfaXRlcgkJZGF0YTsKPiArCj4gKwkvKiAidW5hbGlnbmVkIiBoZXJlIG1l YW5zIG5vdCBhbGlnbmVkIHRvIGEgZmlsZXN5c3RlbSBibG9jayAqLwo+ICsJaWYgKChpb2NiLT5r aV9wb3MgJiBtcC0+bV9ibG9ja21hc2spIHx8Cj4gKwkgICAgKChpb2NiLT5raV9wb3MgKyBpb3Zf aXRlcl9jb3VudChmcm9tKSkgJiBtcC0+bV9ibG9ja21hc2spKSB7Cj4gKwkJdW5hbGlnbmVkX2lv ID0gMTsKPiArCQlpb2xvY2sgPSBYRlNfSU9MT0NLX0VYQ0w7Cj4gKwl9IGVsc2UgaWYgKG1hcHBp bmctPm5ycGFnZXMpIHsKPiArCQlpb2xvY2sgPSBYRlNfSU9MT0NLX0VYQ0w7Cj4gKwl9IGVsc2Ug ewo+ICsJCWlvbG9jayA9IFhGU19JT0xPQ0tfU0hBUkVEOwo+ICsJfQo+ICsJeGZzX3J3X2lsb2Nr KGlwLCBpb2xvY2spOwo+ICsKPiArCXJldCA9IHhmc19maWxlX2Fpb193cml0ZV9jaGVja3MoaW9j YiwgZnJvbSwgJmlvbG9jayk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCS8q Cj4gKwkgKiBZZXMsIGV2ZW4gREFYIGZpbGVzIGNhbiBoYXZlIHBhZ2UgY2FjaGUgYXR0YWNoZWQg dG8gdGhlbTogIEEgemVyb2VkCj4gKwkgKiBwYWdlIGlzIGluc2VydGVkIGludG8gdGhlIHBhZ2Vj YWNoZSB3aGVuIHdlIGhhdmUgdG8gc2VydmUgYSB3cml0ZQo+ICsJICogZmF1bHQgb24gYSBob2xl LiAgSXQgc2hvdWxkIG5ldmVyIGJlIGRpcnRpZWQgYW5kIGNhbiBzaW1wbHkgYmUKPiArCSAqIGRy b3BwZWQgZnJvbSB0aGUgcGFnZWNhY2hlIG9uY2Ugd2UgZ2V0IHJlYWwgZGF0YSBmb3IgdGhlIHBh Z2UuCj4gIAkgKi8KPiAtCUFTU0VSVChyZXQgPCAwIHx8IHJldCA9PSBjb3VudCB8fCBJU19EQVgo VkZTX0koaXApKSk7Cj4gKwlpZiAobWFwcGluZy0+bnJwYWdlcykgewo+ICsJCXJldCA9IGludmFs aWRhdGVfaW5vZGVfcGFnZXMyKG1hcHBpbmcpOwo+ICsJCVdBUk5fT05fT05DRShyZXQpOwo+ICsJ fQo+ICsKPiArCWlmIChpb2xvY2sgPT0gWEZTX0lPTE9DS19FWENMICYmICF1bmFsaWduZWRfaW8p IHsKPiArCQl4ZnNfcndfaWxvY2tfZGVtb3RlKGlwLCBYRlNfSU9MT0NLX0VYQ0wpOwo+ICsJCWlv bG9jayA9IFhGU19JT0xPQ0tfU0hBUkVEOwo+ICsJfQo+ICsKPiArCXRyYWNlX3hmc19maWxlX2Rh eF93cml0ZShpcCwgaW92X2l0ZXJfY291bnQoZnJvbSksIGlvY2ItPmtpX3Bvcyk7Cj4gKwo+ICsJ ZGF0YSA9ICpmcm9tOwo+ICsJcmV0ID0gZGF4X2RvX2lvKGlvY2IsIGlub2RlLCAmZGF0YSwgeGZz X2dldF9ibG9ja3NfZGlyZWN0LAo+ICsJCQl4ZnNfZW5kX2lvX2RpcmVjdF93cml0ZSwgMCk7Cj4g KwlpZiAocmV0ID4gMCkgewo+ICsJCWlvY2ItPmtpX3BvcyArPSByZXQ7Cj4gKwkJaW92X2l0ZXJf YWR2YW5jZShmcm9tLCByZXQpOwo+ICsJfQo+ICtvdXQ6Cj4gKwl4ZnNfcndfaXVubG9jayhpcCwg aW9sb2NrKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTc2NSw3ICs4NDQsOSBAQCB4 ZnNfZmlsZV93cml0ZV9pdGVyKAo+ICAJaWYgKFhGU19GT1JDRURfU0hVVERPV04oaXAtPmlfbW91 bnQpKQo+ICAJCXJldHVybiAtRUlPOwo+ICAKPiAtCWlmICgoaW9jYi0+a2lfZmxhZ3MgJiBJT0NC X0RJUkVDVCkgfHwgSVNfREFYKGlub2RlKSkKPiArCWlmIChJU19EQVgoaW5vZGUpKQo+ICsJCXJl dCA9IHhmc19maWxlX2RheF93cml0ZShpb2NiLCBmcm9tKTsKPiArCWVsc2UgaWYgKGlvY2ItPmtp X2ZsYWdzICYgSU9DQl9ESVJFQ1QpCj4gIAkJcmV0ID0geGZzX2ZpbGVfZGlvX2Fpb193cml0ZShp b2NiLCBmcm9tKTsKPiAgCWVsc2UKPiAgCQlyZXQgPSB4ZnNfZmlsZV9idWZmZXJlZF9haW9fd3Jp dGUoaW9jYiwgZnJvbSk7Cj4gZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhY2UuaCBiL2ZzL3hm cy94ZnNfdHJhY2UuaAo+IGluZGV4IDI1MDRmOTQuLjE0NTE2OTAgMTAwNjQ0Cj4gLS0tIGEvZnMv eGZzL3hmc190cmFjZS5oCj4gKysrIGIvZnMveGZzL3hmc190cmFjZS5oCj4gQEAgLTExNjUsOCAr MTE2NSwxMCBAQCBERUZJTkVfRVZFTlQoeGZzX2ZpbGVfY2xhc3MsIG5hbWUsCVwKPiAgCVRQX0FS R1MoaXAsIGNvdW50LCBvZmZzZXQpKQo+ICBERUZJTkVfUldfRVZFTlQoeGZzX2ZpbGVfYnVmZmVy ZWRfcmVhZCk7Cj4gIERFRklORV9SV19FVkVOVCh4ZnNfZmlsZV9kaXJlY3RfcmVhZCk7Cj4gK0RF RklORV9SV19FVkVOVCh4ZnNfZmlsZV9kYXhfcmVhZCk7Cj4gIERFRklORV9SV19FVkVOVCh4ZnNf ZmlsZV9idWZmZXJlZF93cml0ZSk7Cj4gIERFRklORV9SV19FVkVOVCh4ZnNfZmlsZV9kaXJlY3Rf d3JpdGUpOwo+ICtERUZJTkVfUldfRVZFTlQoeGZzX2ZpbGVfZGF4X3dyaXRlKTsKPiAgREVGSU5F X1JXX0VWRU5UKHhmc19maWxlX3NwbGljZV9yZWFkKTsKPiAgCj4gIERFQ0xBUkVfRVZFTlRfQ0xB U1MoeGZzX3BhZ2VfY2xhc3MsCj4gLS0gCj4gMi4xLjQKPiAKPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IHhmcyBtYWlsaW5nIGxpc3QKPiB4ZnNAb3Nz LnNnaS5jb20KPiBodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnhmcyBtYWlsaW5nIGxp c3QKeGZzQG9zcy5zZ2kuY29tCmh0dHA6Ly9vc3Muc2dpLmNvbS9tYWlsbWFuL2xpc3RpbmZvL3hm cwo=