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 (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id p68IwuMq261889 for ; Fri, 8 Jul 2011 13:58:56 -0500 Subject: Re: [PATCH 2/4] xfstests: fsx fallocate support is b0rked From: Alex Elder In-Reply-To: <1310086426-30605-3-git-send-email-david@fromorbit.com> References: <1310086426-30605-1-git-send-email-david@fromorbit.com> <1310086426-30605-3-git-send-email-david@fromorbit.com> Date: Fri, 8 Jul 2011 13:58:51 -0500 Message-ID: <1310151531.3024.37.camel@doink> MIME-Version: 1.0 Reply-To: aelder@sgi.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 Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com To: Dave Chinner Cc: xfs@oss.sgi.com T24gRnJpLCAyMDExLTA3LTA4IGF0IDEwOjUzICsxMDAwLCBEYXZlIENoaW5uZXIgd3JvdGU6Cj4g RnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IAo+IFRoZSByZWNlbnQg ZmFsbG9jYXRlL2ZwdW5jaCBhZGRpdGlvbnMgdG8gZnN4IGhhdmUgbm90IGFjdHVhbGx5IGJlCj4g ZXhlY3V0aW5nIGZhbGxvY2F0ZS9mcHVuY2ggb3BlcmF0aW9ucy4gVGhlIGxvZ2ljIHRvIHNlbGVj dCB3aGF0Cj4gb3BlcmF0aW9uIHRvIHJ1biBpcyBicm9rZW4gaW4gc3VjaCBhIHdheSB0aGF0IGZz eCBoYXMgYmVlbiBleGVjdXRpbmcKPiBtYXBwZWQgd3JpdGVzIGFuZCB0cnVuY2F0ZXMgaW5zdGVh ZCBvZiBmYWxsb2NhdGUgYW5kIGZwdW5jaAo+IG9wZXJhdGlvbnMuCj4gCj4gUmVtb3ZlIGFsbCB0 aGUgKGIwcmtlbikgc21hcnR5LXBhbnRzIHNlbGVjdGlvbiBsb2dpYyBmcm9tIHRoZSB0ZXN0KCkK PiBmdW5jdGlvbi4gUmVwbGFjZSBpdCB3aXRoIGEgY2xlYXJseSBkZWZpbmVkIHNldCBvZiBvcGVy YXRpb25zIGZvcgo+IGVhY2ggbW9kZSBhbmQgdXNlIHVuZGVyc3RhbmRhYmxlIGZhbGxiYWNrIGxv Z2ljIHdoZW4gdmFyaW91cwo+IG9wZXJhdGlvbiB0eXBlcyBoYXZlIGJlZW4gZGlzYWJsZWQuIFRo ZW4gdXNlIGEgc2ltcGxlIHN3aXRjaAo+IHN0YXRlbWVudCB0byBleGVjdXRlIGVhY2ggb2YgdGhl IGRpZmZlcmVudCBvcGVyYXRpb25zLCByZW1vdmluZyB0aGUKPiB0b3J0dXJlZCBuZXN0aW5nIG9m IGlmL2Vsc2Ugc3RhdGVtZW50cyB0aGF0IG9ubHkgc2VydmUgdG8gb2JmdXNjYXRlCj4gdGhlIGNv ZGUuCj4gCj4gQXMgYSByZXN1bHQsIGZzeCB1c2VzIGZhbGxvY2F0ZS9mcHVuY2ggYXBwcm9wcmlh dGVseSBkdXJpbmcKPiBvcGVyYXRpb25zIGFuZCB1c2VzL2Rpc2FibGXRlSB0aGUgb3BlcmF0aW9u cyBhcyBkZWZpbmVkIG9uIHRoZQo+IGNvbW1hbmQgbGluZSBjb3JyZWN0bHkuCj4gCj4gU2lnbmVk LW9mZi1ieTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgoKSSBzdGFydGVkIHRy eWluZyB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBvZiB0aGUgb3JpZ2luYWwgaW4gb3JkZXIKdG8g bWFrZSBzdXJlIHlvdXIgbmV3IHZlcnNpb24gcHJlc2VydmVkIHRoZSBsb2dpYy4gIEJ1dCB0aGVu IEkKY29uY2x1ZGVkIGl0IHdhcyBqdXN0IHBsYWluIGJyb2tlbiwgYW5kIHVuZGVyc3Rvb2QgZXhh Y3RseSB0aGUKcG9pbnQgb2YgdGhpcyBjaGFuZ2UuLi4KClNvIEkganVzdCBsb29rZWQgYXQgeW91 ciBuZXcgY29kZS4gIEkgaGF2ZSBhIGZldyBtaW5vciB0aGluZ3MKYnV0IGl0IG90aGVyd2lzZSBs b29rcyBnb29kIHRvIG1lLiAgVGhlIHdheSAiY2xvc2VvcGVuIiBpcwooc3RpbGwpIGNvbXB1dGVk IGlzIGEgYml0IGZ1bmtlZCB1cCAoYW5kIHBvc3NpYmx5IGp1c3Qgd3JvbmcpLApidXQgSSdtIG5v dCBnb2luZyB0byBjb21wbGFpbi0teW91J3ZlIGRvbmUgYSBsb3Qgb2YgZ29vZCBoZXJlLgoKUmV2 aWV3ZWQtYnk6IEFsZXggRWxkZXIgPGFlbGRlckBzZ2kuY29tPgoKPiAtLS0KPiAgbHRwL2ZzeC5j IHwgIDE5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gIDEgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDY5IGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9sdHAvZnN4LmMgYi9sdHAvZnN4LmMKPiBpbmRl eCBhMzdlMjIzLi40MWQ3YzIwIDEwMDY0NAo+IC0tLSBhL2x0cC9mc3guYwo+ICsrKyBiL2x0cC9m c3guYwo+IEBAIC01OCwxOCArNTgsNDcgQEAgaW50CQkJbG9ncHRyID0gMDsJLyogY3VycmVudCBw b3NpdGlvbiBpbiBsb2cgKi8KPiAgaW50CQkJbG9nY291bnQgPSAwOwkvKiB0b3RhbCBvcHMgKi8K PiAgCj4gIC8qCj4gLSAqCURlZmluZSBvcGVyYXRpb25zCj4gKyAqIFRoZSBvcGVyYXRpb24gbWF0 cml4IGlzIGNvbXBsZXggZHVlIHRvIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbiBvZiBkaWZmZXJlbnQK PiArICogZmVhdHVyZXMuIEhlbmNlIHdoZW4gd2UgY29tZSB0byBkZWNpZGluZyB3aGF0IG9wZXJh dGlvbiB0byBydW4sIHdlIG5lZWQgdG8KPiArICogYmUgY2FyZWZ1bCBpbiBob3cgd2Ugc2VsZWN0 IHRoZSBkaWZmZXJlbnQgb3BlcmF0aW9ucy4gVGhlIGFjdGl2ZSBvcGVyYXRpb25zCj4gKyAqIGFy ZSBtYXBwZWQgdG8gbnVtYmVycyBhcyBmb2xsb3dzOgo+ICsgKgo+ICsgKgkJbGl0ZQkhbGl0ZQo+ ICsgKiBSRUFEOgkwCTAKPiArICogV1JJVEU6CTEJMQo+ICsgKiBNQVBSRUFEOgkyCTIKPiArICog TUFQV1JJVEU6CTMJMwo+ICsgKiBUUlVOQ0FURToJLQk0Cj4gKyAqIEZBTExPQ0FURToJLQk1Cj4g KyAqIFBVTkNIIEhPTEU6CS0JNgo+ICsgKgo+ICsgKiBXaGVuIG1hcHBlZCByZWFkL3dyaXRlcyBh cmUgZGlzYWJsZWQsIHRoZXkgYXJlIHNpbXBseSBjb252ZXJ0ZWQgdG8gbm9ybWFsCj4gKyAqIHJl YWRzIGFuZCB3cml0ZXMuIFdoZW4gZmFsbG9jYXRlL2ZwdW5jaCBjYWxscyBhcmUgZGlzYWJsZWQs IHRoZXkgYXJlCj4gKyAqIGNvbnZlcnRlZCB0byBPUF9TS0lQUEVELiBIZW5jZSBPUF9TS0lQUEVE IG5lZWRzIHRvIGhhdmUgYSBudW1iZXIgaGlnaGVyIHRoYW4KClRoZSAiaGVuY2UiIGlzIG5vdCBv YnZpb3VzLiAgVGhlIHJlYXNvbiBpdCBuZWVkcyB0byBoYXZlIGEKaGlnaGVyIG51bWJlciBpcyB0 aGF0IHRoZSBvcGVyYXRpb24gaXMgc2VsZWN0ZWQgYXQgcmFuZG9tCmFtb25nIHRoZSBudW1iZXIg b2Ygb3BlcmF0aW9ucyBhdmFpbGFibGUgKGVpdGhlciBpbiAibGl0ZSIKb3IgaW4gImZ1bGwiIG1v ZGUpLgoKPiArICogdGhlIG9wZXJhdGlvbiBzZWxjdGlvbiBtYXRyaXgsIGFzIGRvZXMgdGhlIE9Q X0NMT1NFT1BFTiB3aGljaCBpcyBhbgoKICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24KCj4g KyAqIG9wZXJhdGlvbiBtb2RpZmllciByYXRoZXIgdGhhbiBhbiBvcGVyYXRpb24gaW4gaXRzZWxm Lgo+ICsgKgo+ICsgKiBCZWNhdXNlIG9mIHRoZSAibGl0ZSIgdmVyc2lvbiwgd2UgYWxzbyBuZWVk IHRvIGhhdmUgZGlmZmVyZW50ICJtYXhpbXVtCj4gKyAqIG9wZXJhdGlvbiIgZGVmaW5lcyB0byBh bGxvdyB0aGUgb3BzIHRvIGJlIHNlbGVjdGVkIGNvcnJlY3RseSBiYXNlZCBvbiB0aGUKPiArICog bW9kZSBiZWluZyBydW4uCj4gICAqLwo+ICAKPiAtI2RlZmluZQlPUF9SRUFECQkxCj4gLSNkZWZp bmUgT1BfV1JJVEUJMgo+IC0jZGVmaW5lIE9QX1RSVU5DQVRFCTMKPiAtI2RlZmluZSBPUF9DTE9T RU9QRU4JNAo+IC0jZGVmaW5lIE9QX01BUFJFQUQJNQo+IC0jZGVmaW5lIE9QX01BUFdSSVRFCTYK PiAtI2RlZmluZSBPUF9TS0lQUEVECTcKPiAtI2RlZmluZSBPUF9GQUxMT0NBVEUJOAo+IC0jZGVm aW5lIE9QX1BVTkNIX0hPTEUJOQo+ICsvKiBjb21tb24gb3BlcmF0aW9ucyAqLwo+ICsjZGVmaW5l CU9QX1JFQUQJCTAKPiArI2RlZmluZSBPUF9XUklURQkxCj4gKyNkZWZpbmUgT1BfTUFQUkVBRAky Cj4gKyNkZWZpbmUgT1BfTUFQV1JJVEUJMwo+ICsjZGVmaW5lIE9QX01BWF9MSVRFCTQKClRvIG1l LCAibWF4IiBzdWdnZXN0cyB0aGF0IGl0IGlzIGFuIGluY2x1ZGVkIHZhbHVlCmluIHRoZSByYW5n ZS4gIFNvIEknZCByYXRoZXIgc2VlIHRoaXMgYmUgIk9QX05VTV9MSVRFIgpvciAobXkgcHJlZmVy ZW5jZSkgIk9QX0xJVEVfQ09VTlQiLiAgU2ltaWxhcmx5IGZvcgpPUF9NQVhfRlVMTCBiZWxvdy4K Cj4gKwo+ICsvKiAhbGl0ZSBvcGVyYXRpb25zICovCj4gKyNkZWZpbmUgT1BfVFJVTkNBVEUJNAo+ ICsjZGVmaW5lIE9QX0ZBTExPQ0FURQk1Cj4gKyNkZWZpbmUgT1BfUFVOQ0hfSE9MRQk2Cj4gKyNk ZWZpbmUgT1BfTUFYX0ZVTEwJNwo+ICsKPiArLyogb3BlcmF0aW9uIG1vZGlmaWVycyAqLwo+ICsj ZGVmaW5lIE9QX0NMT1NFT1BFTgkxMDAKPiArI2RlZmluZSBPUF9TS0lQUEVECTEwMQo+ICAKPiAg I3VuZGVmIFBBR0VfU0laRQo+ICAjZGVmaW5lIFBBR0VfU0laRSAgICAgICBnZXRwYWdlc2l6ZSgp Cj4gQEAgLTk1NSw2ICs5ODQsMTUgQEAgZG9jbG9zZW9wZW4odm9pZCkKPiAgCX0KPiAgfQo+ICAK PiArI2RlZmluZSBUUklNX09GRl9MRU4ob2ZmLCBsZW4sIHNpemUpCVwKPiArZG8gewkJCQkJXAo+ ICsJaWYgKGZpbGVfc2l6ZSkJCQlcCj4gKwkJb2Zmc2V0ICU9IHNpemU7CQlcCj4gKwllbHNlCQkJ CVwKPiArCQlvZmZzZXQgPSAwOwkJXAo+ICsJaWYgKG9mZnNldCArIGxlbiA+IHNpemUpCVwKPiAr CQlsZW4gPSBzaXplIC0gb2Zmc2V0OwlcCj4gK30gd2hpbGUgKDApCgpUaGlzIG1hY3JvIGlzIGEg dmVyeSBnb29kIGlkZWEuICBIb3dldmVyIGl0IGRpZmZlcnMKZnJvbSB0aGUgb3JpZ2luYWwgYmVo YXZpb3Igd2hlbiB1c2VkIGZvciBPUF9XUklURSwKT1BfTUFQV1JJVEUsIE9QX0ZBTExPQ0FURSwg YW5kIE9QX1BVTkNIX0hPTEUgaW4KdGhhdCBpZiBmaWxlX3NpemUgaXMgemVybywgb2Zmc2V0IHdp bGwgYmUgc2V0IHRvCnplcm8uICBJdCBzZWVtcyBsaWtlIHRoYXQgYmVoYXZpb3IgZGlmZmVyZW5j ZSBpcwpzaWduaWZpY2FudCwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQgaGFzIGEgcHJhY3RpY2FsCmVm ZmVjdCBvbiB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdC4gIEkndmUgbGVmdCB0aGUKY29kZSBpbiBx dWVzdGlvbiBiZWxvdyBmb3IgcmVmZXJlbmNlLgoKPiAgdm9pZAo+ICB0ZXN0KHZvaWQpCj4gQEAg LTk2MiwxMSArMTAwMCw3IEBAIHRlc3Qodm9pZCkKPiAgCXVuc2lnbmVkIGxvbmcJb2Zmc2V0Owo+ ICAJdW5zaWduZWQgbG9uZwlzaXplID0gbWF4b3BsZW47Cj4gIAl1bnNpZ25lZCBsb25nCXJ2ID0g cmFuZG9tKCk7Cj4gLQl1bnNpZ25lZCBsb25nCW9wID0gcnYgJSAoMyArICFsaXRlICsgbWFwcGVk X3dyaXRlcyArIGZhbGxvY2F0ZV9jYWxscyArIHB1bmNoX2hvbGVfY2FsbHMpOwo+IC0gICAgICAg IC8qIHR1cm4gb2ZmIHRoZSBtYXAgcmVhZCBpZiBuZWNlc3NhcnkgKi8KPiAtCj4gLSAgICAgICAg aWYgKG9wID09IDIgJiYgIW1hcHBlZF9yZWFkcykKPiAtICAgICAgICAgICAgb3AgPSAwOwo+ICsJ dW5zaWduZWQgbG9uZwlvcDsKPiAgCj4gIAlpZiAoc2ltdWxhdGVkb3Bjb3VudCA+IDAgJiYgdGVz dGNhbGxzID09IHNpbXVsYXRlZG9wY291bnQpCj4gIAkJd3JpdGVmaWxlaW1hZ2UoKTsKPiBAQCAt OTgyLDYyICsxMDE2LDgyIEBAIHRlc3Qodm9pZCkKPiAgCWlmICghcXVpZXQgJiYgdGVzdGNhbGxz IDwgc2ltdWxhdGVkb3Bjb3VudCAmJiB0ZXN0Y2FsbHMgJSAxMDAwMDAgPT0gMCkKPiAgCQlwcnQo IiVsdS4uLlxuIiwgdGVzdGNhbGxzKTsKPiAgCj4gLQkvKgo+IC0JICogICAgICAgICAgICAgICAg IGxpdGUgICFsaXRlCj4gLQkgKiBSRUFEOglvcCA9IDAJICAgMAo+IC0JICogV1JJVEU6CW9wID0g MSAgICAgMQo+IC0JICogTUFQUkVBRDogICAgIG9wID0gMiAgICAgMgo+IC0JICogVFJVTkNBVEU6 CW9wID0gLSAgICAgMwo+IC0JICogTUFQV1JJVEU6ICAgIG9wID0gMyAgICAgNAo+IC0JICogRkFM TE9DQVRFOiAgIG9wID0gLSAgICAgNQo+IC0JICogUFVOQ0ggSE9MRTogIG9wID0gLSAgICAgNgo+ IC0JICovCj4gLQlpZiAobGl0ZSA/IDAgOiBvcCA9PSAzICYmIChzdHlsZSAmIDEpID09IDApIC8q IHZhbmlsbGEgdHJ1bmNhdGU/ICovCj4gLQkJZG90cnVuY2F0ZShyYW5kb20oKSAlIG1heGZpbGVs ZW4pOwo+IC0JZWxzZSB7Cj4gLQkJaWYgKHJhbmRvbW9wbGVuKQo+IC0JCQlzaXplID0gcmFuZG9t KCkgJSAobWF4b3BsZW4rMSk7Cj4gLQo+IC0JCWlmIChsaXRlID8gMCA6IG9wID09IDMpIHsKPiAt CQkJLyogdHJ1bmNhdGUgKi8KPiAtCQkJZG90cnVuY2F0ZShzaXplKTsKPiAtCQl9IGVsc2Ugewo+ IC0JCQlvZmZzZXQgPSByYW5kb20oKTsKPiAtCQkJaWYgKG9wID09IDUpIHsKPiAtCQkJCS8qIGZh bGxvY2F0ZSAqLwo+IC0JCQkJb2Zmc2V0ICU9IG1heGZpbGVsZW47Cj4gLQkJCQlpZiAob2Zmc2V0 ICsgc2l6ZSA+IG1heGZpbGVsZW4pCj4gLQkJCQkJc2l6ZSA9IG1heGZpbGVsZW4gLSBvZmZzZXQ7 Cj4gLQkJCQlkb19wcmVhbGxvY2F0ZShvZmZzZXQsIHNpemUpOwo+IC0JCQl9IGVsc2UgaWYgKG9w ID09IDYpIHsKPiAtCQkJCW9mZnNldCAlPSBtYXhmaWxlbGVuOwo+IC0JCQkJaWYgKG9mZnNldCAr IHNpemUgPiBtYXhmaWxlbGVuKQo+IC0JCQkJCXNpemUgPSBtYXhmaWxlbGVuIC0gb2Zmc2V0Owo+ IC0JCQkJZG9fcHVuY2hfaG9sZShvZmZzZXQsIHNpemUpOwo+IC0JCQl9IGVsc2UgaWYgKG9wID09 IDEgfHwgb3AgPT0gKGxpdGUgPyAzIDogNCkpIHsKPiAtCQkJCS8qIHdyaXRlIC8gbWFwd3JpdGUg Ki8KPiAtCQkJCW9mZnNldCAlPSBtYXhmaWxlbGVuOwo+IC0JCQkJaWYgKG9mZnNldCArIHNpemUg PiBtYXhmaWxlbGVuKQo+IC0JCQkJCXNpemUgPSBtYXhmaWxlbGVuIC0gb2Zmc2V0Owo+IC0JCQkJ aWYgKG9wICE9IDEpCj4gLQkJCQkJZG9tYXB3cml0ZShvZmZzZXQsIHNpemUpOwo+IC0JCQkJZWxz ZQo+IC0JCQkJCWRvd3JpdGUob2Zmc2V0LCBzaXplKTsKPiAtCQkJfSBlbHNlIHsKPiAtCQkJCS8q IHJlYWQgLyBtYXByZWFkICovCj4gLQkJCQlpZiAoZmlsZV9zaXplKQo+IC0JCQkJCW9mZnNldCAl PSBmaWxlX3NpemU7Cj4gLQkJCQllbHNlCj4gLQkJCQkJb2Zmc2V0ID0gMDsKPiAtCQkJCWlmIChv ZmZzZXQgKyBzaXplID4gZmlsZV9zaXplKQo+IC0JCQkJCXNpemUgPSBmaWxlX3NpemUgLSBvZmZz ZXQ7Cj4gLQkJCQlpZiAob3AgIT0gMCkKPiAtCQkJCQlkb21hcHJlYWQob2Zmc2V0LCBzaXplKTsK PiAtCQkJCWVsc2UKPiAtCQkJCQlkb3JlYWQob2Zmc2V0LCBzaXplKTsKPiAtCQkJfQo+ICsJb2Zm c2V0ID0gcmFuZG9tKCk7Cj4gKwlpZiAocmFuZG9tb3BsZW4pCj4gKwkJc2l6ZSA9IHJhbmRvbSgp ICUgKG1heG9wbGVuICsgMSk7Cj4gKwo+ICsJLyogY2FsY3VsYXRlIGFwcHJvcHJpYXRlIG9wIHRv IHJ1biAqLwo+ICsJaWYgKGxpdGUpCj4gKwkJb3AgPSBydiAlIE9QX01BWF9MSVRFOwo+ICsJZWxz ZQo+ICsJCW9wID0gcnYgJSBPUF9NQVhfRlVMTDsKPiArCj4gKwlzd2l0Y2ggKG9wKSB7Cj4gKwlj YXNlIE9QX01BUFJFQUQ6Cj4gKwkJaWYgKCFtYXBwZWRfcmVhZHMpCj4gKwkJCW9wID0gT1BfUkVB RDsKPiArCQlicmVhazsKPiArCWNhc2UgT1BfTUFQV1JJVEU6Cj4gKwkJaWYgKCFtYXBwZWRfd3Jp dGVzKQo+ICsJCQlvcCA9IE9QX1dSSVRFOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBPUF9GQUxMT0NB VEU6Cj4gKwkJaWYgKCFmYWxsb2NhdGVfY2FsbHMpIHsKPiArCQkJbG9nNChPUF9TS0lQUEVELCBP UF9GQUxMT0NBVEUsIG9mZnNldCwgc2l6ZSk7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCQli cmVhazsKPiArCWNhc2UgT1BfUFVOQ0hfSE9MRToKPiArCQlpZiAoIXB1bmNoX2hvbGVfY2FsbHMp IHsKPiArCQkJbG9nNChPUF9TS0lQUEVELCBPUF9QVU5DSF9IT0xFLCBvZmZzZXQsIHNpemUpOwo+ ICsJCQlnb3RvIG91dDsKPiAgCQl9Cj4gKwkJYnJlYWs7Cj4gIAl9Cj4gKwo+ICsJc3dpdGNoIChv cCkgewo+ICsJY2FzZSBPUF9SRUFEOgo+ICsJCVRSSU1fT0ZGX0xFTihvZmZzZXQsIHNpemUsIGZp bGVfc2l6ZSk7Cj4gKwkJZG9yZWFkKG9mZnNldCwgc2l6ZSk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJ Y2FzZSBPUF9XUklURToKPiArCQlUUklNX09GRl9MRU4ob2Zmc2V0LCBzaXplLCBtYXhmaWxlbGVu KTsKPiArCQlkb3dyaXRlKG9mZnNldCwgc2l6ZSk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBP UF9NQVBSRUFEOgo+ICsJCVRSSU1fT0ZGX0xFTihvZmZzZXQsIHNpemUsIGZpbGVfc2l6ZSk7Cj4g KwkJZG9tYXByZWFkKG9mZnNldCwgc2l6ZSk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBPUF9N QVBXUklURToKPiArCQlUUklNX09GRl9MRU4ob2Zmc2V0LCBzaXplLCBtYXhmaWxlbGVuKTsKPiAr CQlkb21hcHdyaXRlKG9mZnNldCwgc2l6ZSk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBPUF9U UlVOQ0FURToKPiArCQlpZiAoIXN0eWxlKQo+ICsJCQlzaXplID0gcmFuZG9tKCkgJSBtYXhmaWxl bGVuOwo+ICsJCWRvdHJ1bmNhdGUoc2l6ZSk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBPUF9G QUxMT0NBVEU6Cj4gKwkJVFJJTV9PRkZfTEVOKG9mZnNldCwgc2l6ZSwgbWF4ZmlsZWxlbik7Cj4g KwkJZG9fcHJlYWxsb2NhdGUob2Zmc2V0LCBzaXplKTsKPiArCQlicmVhazsKPiArCj4gKwljYXNl IE9QX1BVTkNIX0hPTEU6Cj4gKwkJVFJJTV9PRkZfTEVOKG9mZnNldCwgc2l6ZSwgbWF4ZmlsZWxl bik7Cj4gKwkJZG9fcHVuY2hfaG9sZShvZmZzZXQsIHNpemUpOwo+ICsJCWJyZWFrOwo+ICsJZGVm YXVsdDoKPiArCQlwcnRlcnIoInRlc3Q6IHVua25vd24gb3BlcmF0aW9uIik7CgoJCXBydGVycigi dGVzdDogdW5rbm93biBvcGVyYXRpb24gKCVkKSIsIG9wKTsKCj4gKwkJcmVwb3J0X2ZhaWx1cmUo NDIpOwoKI2RlZmluZQlVTFRJTUFURV9BTlNXRVIKCQlyZXBvcnRfZmFpbHVyZShVTFRJTUFURV9B TlNXRVIpOwoKPiArCQlicmVhazsKPiArCX0KPiArCj4gK291dDoKPiAgCWlmIChzaXplY2hlY2tz ICYmIHRlc3RjYWxscyA+IHNpbXVsYXRlZG9wY291bnQpCj4gIAkJY2hlY2tfc2l6ZSgpOwo+ICAJ aWYgKGNsb3Nlb3BlbikKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KeGZzIG1haWxpbmcgbGlzdAp4ZnNAb3NzLnNnaS5jb20KaHR0cDovL29zcy5zZ2ku Y29tL21haWxtYW4vbGlzdGluZm8veGZzCg==