From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4B8EC77B76 for ; Tue, 18 Apr 2023 13:07:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231489AbjDRNH0 (ORCPT ); Tue, 18 Apr 2023 09:07:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33344 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229652AbjDRNHZ (ORCPT ); Tue, 18 Apr 2023 09:07:25 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 300DC8A7C for ; Tue, 18 Apr 2023 06:06:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1681823197; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=y1yyivED3ChqrgkEaJDoICoKgkVUP+JB1KAZ7VLZweY=; b=JvVZ5qvHiqf7u8/gOtlrziaQU2iX03eaf0Vcv9YFZIK38Mpc+0veOht9vsk9fXhJ3M1hGi +wSg4kVhZnBojBm7Cs8ofuRx9GVddC2Ec6uhw6la8K2/Hx78YTsto3Sb5OgpzR2erQmpW/ 1zJykW0piGUdsVXco7Rkj9VUjfduRwc= Received: from mail-lj1-f197.google.com (mail-lj1-f197.google.com [209.85.208.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-247--1cuw9DPOr2MkiHB0AhdIw-1; Tue, 18 Apr 2023 09:06:35 -0400 X-MC-Unique: -1cuw9DPOr2MkiHB0AhdIw-1 Received: by mail-lj1-f197.google.com with SMTP id 38308e7fff4ca-2a8adcdb84aso8884921fa.3 for ; Tue, 18 Apr 2023 06:06:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681823194; x=1684415194; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=y1yyivED3ChqrgkEaJDoICoKgkVUP+JB1KAZ7VLZweY=; b=iQ2JwknNcoMklzcXmvW8OemgQ2huKt7K4ELHvSMUFcdG0lOEC8eYs9QkzmuCEBTl4s Qplo13rMhTJHQ0owywMpKnySNcxOaKBF/UoqCUrMLc3NF0SZiBDFZtCZ7hjLwocI8EeC qkwqrBovTxVZ486Ns2Y84CLh8w4FwAu+CloNO3aWSj8h+eycJhxDk/O3DGQjJUSuxkPO sYjxKAo1D+ndPRNqTK7aDObhKkmNihTpnlWXzsjb42I3/6GmLDD/GzZ0kcIBQHOV1d08 yH/M4GP6zFIQwu525mTn8N6zUSPyTkFhvKK8H6S314E+loqugTCrnQkQR3quM0gJmOGv 6b9Q== X-Gm-Message-State: AAQBX9cxeDb+JNmH2FEfzROzPHMk5oQ7kh1HKBa70cbzuM4kee6spr5F rxbOhbjCgwTveAa3D74IPqsxqOxCr7Ly3RyrQAnoQLE2+kbTYnfeWgknjpcZIeC/SwZAzf1zrgF JIAX0tvozUdH8Iq04S3fN5Hr+kA== X-Received: by 2002:ac2:5545:0:b0:4e8:3fc7:9483 with SMTP id l5-20020ac25545000000b004e83fc79483mr2523685lfk.23.1681823194187; Tue, 18 Apr 2023 06:06:34 -0700 (PDT) X-Google-Smtp-Source: AKy350awZZo0WCwGvnMfK2FoqggM7+Ksdlp1SgEp056fhNrLI+vJ0Ff/0Cyk96haGgMn91izXzmsFg== X-Received: by 2002:ac2:5545:0:b0:4e8:3fc7:9483 with SMTP id l5-20020ac25545000000b004e83fc79483mr2523680lfk.23.1681823193843; Tue, 18 Apr 2023 06:06:33 -0700 (PDT) Received: from greebo.mooo.com (c-e6a5e255.022-110-73746f36.bbcust.telenor.se. [85.226.165.230]) by smtp.gmail.com with ESMTPSA id m9-20020ac24ac9000000b004ea018bb8f7sm2364417lfp.77.2023.04.18.06.06.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Apr 2023 06:06:33 -0700 (PDT) Message-ID: Subject: Re: [PATCH 5/5] ovl: implement lazy lookup of lowerdata in data-only layers From: Alexander Larsson To: Amir Goldstein , Miklos Szeredi Cc: linux-unionfs@vger.kernel.org Date: Tue, 18 Apr 2023 15:06:32 +0200 In-Reply-To: <20230412135412.1684197-6-amir73il@gmail.com> References: <20230412135412.1684197-1-amir73il@gmail.com> <20230412135412.1684197-6-amir73il@gmail.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-unionfs@vger.kernel.org T24gV2VkLCAyMDIzLTA0LTEyIGF0IDE2OjU0ICswMzAwLCBBbWlyIEdvbGRzdGVpbiB3cm90ZToK PiBEZWZlciBsb29rdXAgb2YgbG93ZXJkYXRhIGluIHRoZSBkYXRhLW9ubHkgbGF5ZXJzIHRvIGZp cnN0IGRhdGEKPiBhY2Nlc3MKPiBvciBiZWZvcmUgY29weSB1cC4KPiAKPiBXZSBwZXJmb3JtIGxv d2VyZGF0YSBsb29rdXAgYmVmb3JlIGNvcHkgdXAgZXZlbiBpZiBjb3B5IHVwIGlzCj4gbWV0YWRh dGEKPiBvbmx5IGNvcHkgdXAuwqAgV2UgY2FuIGZ1cnRoZXIgb3B0aW1pemUgdGhpcyBsb29rdXAg bGF0ZXIgaWYgbmVlZGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFtaXIgR29sZHN0ZWluIDxhbWly NzNpbEBnbWFpbC5jb20+CgpMR1RNIAoKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBMYXJzc29uIDxh bGV4bEByZWRoYXQuY29tPgoKPiAtLS0KPiDCoGZzL292ZXJsYXlmcy9jb3B5X3VwLmPCoMKgIHzC oCA5ICsrKysrKysKPiDCoGZzL292ZXJsYXlmcy9maWxlLmPCoMKgwqDCoMKgIHwgMTggKysrKysr KysrKy0tLQo+IMKgZnMvb3ZlcmxheWZzL25hbWVpLmPCoMKgwqDCoCB8IDU2ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gLS0KPiDCoGZzL292ZXJsYXlmcy9vdmVybGF5 ZnMuaCB8wqAgMiArKwo+IMKgZnMvb3ZlcmxheWZzL292bF9lbnRyeS5oIHzCoCAyICstCj4gwqBm cy9vdmVybGF5ZnMvdXRpbC5jwqDCoMKgwqDCoCB8IDMxICsrKysrKysrKysrKysrKysrKysrKy0K PiDCoDYgZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvY29weV91cC5jIGIvZnMvb3ZlcmxheWZzL2Nv cHlfdXAuYwo+IGluZGV4IDdiZjEwMWU3NTZjOC4uZWIyNjZmYjY4NzMwIDEwMDY0NAo+IC0tLSBh L2ZzL292ZXJsYXlmcy9jb3B5X3VwLmMKPiArKysgYi9mcy9vdmVybGF5ZnMvY29weV91cC5jCj4g QEAgLTEwNzQsNiArMTA3NCwxNSBAQCBzdGF0aWMgaW50IG92bF9jb3B5X3VwX2ZsYWdzKHN0cnVj dCBkZW50cnkKPiAqZGVudHJ5LCBpbnQgZmxhZ3MpCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChXQVJO X09OKGRpc2Nvbm5lY3RlZCAmJiBkX2lzX2RpcihkZW50cnkpKSkKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlPOwo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiAr wqDCoMKgwqDCoMKgwqAgKiBXZSBtYXkgbm90IG5lZWQgbG93ZXJkYXRhIGlmIHdlIGFyZSBvbmx5 IGRvaW5nIG1ldGFjb3B5Cj4gdXAsIGJ1dCBpdCBpcwo+ICvCoMKgwqDCoMKgwqDCoCAqIG5vdCB2 ZXJ5IGltcG9ydGFudCB0byBvcHRpbWl6ZSB0aGlzIGNhc2UsIHNvIGRvIGxhenkKPiBsb3dlcmRh dGEgbG9va3VwCj4gK8KgwqDCoMKgwqDCoMKgICogYmVmb3JlIGFueSBjb3B5IHVwLCBzbyB3ZSBj YW4gZG8gaXQgYmVmb3JlIHRha2luZwo+IG92bF9pbm9kZV9sb2NrKCkuCj4gK8KgwqDCoMKgwqDC oMKgICovCj4gK8KgwqDCoMKgwqDCoMKgZXJyID0gb3ZsX21heWJlX2xvb2t1cF9sb3dlcmRhdGEo ZGVudHJ5KTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ICsKPiDCoMKgwqDCoMKgwqDCoMKgb2xkX2NyZWQgPSBv dmxfb3ZlcnJpZGVfY3JlZHMoZGVudHJ5LT5kX3NiKTsKPiDCoMKgwqDCoMKgwqDCoMKgd2hpbGUg KCFlcnIpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkZW50cnkg Km5leHQ7Cj4gZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy9maWxlLmMgYi9mcy9vdmVybGF5ZnMv ZmlsZS5jCj4gaW5kZXggOTUxNjgzYTY2ZmY2Li4zOTczN2MyYWFhODQgMTAwNjQ0Cj4gLS0tIGEv ZnMvb3ZlcmxheWZzL2ZpbGUuYwo+ICsrKyBiL2ZzL292ZXJsYXlmcy9maWxlLmMKPiBAQCAtMTA3 LDE1ICsxMDcsMjEgQEAgc3RhdGljIGludCBvdmxfcmVhbF9mZGdldF9tZXRhKGNvbnN0IHN0cnVj dAo+IGZpbGUgKmZpbGUsIHN0cnVjdCBmZCAqcmVhbCwKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gZmlsZV9kZW50cnkoZmlsZSk7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBwYXRoIHJlYWxwYXRoOwo+ICvCoMKgwqDCoMKgwqDCoGludCBlcnI7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgcmVhbC0+ZmxhZ3MgPSAwOwo+IMKgwqDCoMKgwqDCoMKgwqByZWFs LT5maWxlID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWYgKGFs bG93X21ldGEpCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGFsbG93X21ldGEpIHsKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG92bF9wYXRoX3JlYWwoZGVudHJ5LCAmcmVhbHBhdGgpOwo+ IC3CoMKgwqDCoMKgwqDCoGVsc2UKPiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBsYXp5IGxvb2t1cCBvZiBsb3dlcmRhdGEgKi8KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gb3ZsX21heWJlX2xvb2t1cF9sb3dl cmRhdGEoZGVudHJ5KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBl cnI7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb3ZsX3BhdGhfcmVhbGRh dGEoZGVudHJ5LCAmcmVhbHBhdGgpOwo+IC3CoMKgwqDCoMKgwqDCoC8qIFRPRE86IGxhenkgbG9v a3VwIG9mIGxvd2VyZGF0YSAqLwo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKg aWYgKCFyZWFscGF0aC5kZW50cnkpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gLUVJTzsKPiDCoAo+IEBAIC0xNTMsNiArMTU5LDExIEBAIHN0YXRpYyBpbnQgb3ZsX29w ZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0Cj4gZmlsZSAqZmlsZSkKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHBhdGggcmVhbHBhdGg7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBlcnI7Cj4g wqAKPiArwqDCoMKgwqDCoMKgwqAvKiBsYXp5IGxvb2t1cCBvZiBsb3dlcmRhdGEgKi8KPiArwqDC oMKgwqDCoMKgwqBlcnIgPSBvdmxfbWF5YmVfbG9va3VwX2xvd2VyZGF0YShkZW50cnkpOwo+ICvC oMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiBlcnI7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBvdmxfbWF5YmVfY29weV91cChk ZW50cnksIGZpbGUtPmZfZmxhZ3MpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiBAQCAtMTYxLDcgKzE3Miw2 IEBAIHN0YXRpYyBpbnQgb3ZsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0Cj4gZmls ZSAqZmlsZSkKPiDCoMKgwqDCoMKgwqDCoMKgZmlsZS0+Zl9mbGFncyAmPSB+KE9fQ1JFQVQgfCBP X0VYQ0wgfCBPX05PQ1RUWSB8IE9fVFJVTkMpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG92bF9w YXRoX3JlYWxkYXRhKGRlbnRyeSwgJnJlYWxwYXRoKTsKPiAtwqDCoMKgwqDCoMKgwqAvKiBUT0RP OiBsYXp5IGxvb2t1cCBvZiBsb3dlcmRhdGEgKi8KPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFyZWFs cGF0aC5kZW50cnkpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJ TzsKPiDCoAo+IGRpZmYgLS1naXQgYS9mcy9vdmVybGF5ZnMvbmFtZWkuYyBiL2ZzL292ZXJsYXlm cy9uYW1laS5jCj4gaW5kZXggODJlMTAzZTIzMDhiLi5iYTJiMTU2MTYyY2EgMTAwNjQ0Cj4gLS0t IGEvZnMvb3ZlcmxheWZzL25hbWVpLmMKPiArKysgYi9mcy9vdmVybGF5ZnMvbmFtZWkuYwo+IEBA IC04ODksNiArODg5LDUyIEBAIHN0YXRpYyBpbnQgb3ZsX2ZpeF9vcmlnaW4oc3RydWN0IG92bF9m cyAqb2ZzLAo+IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IGVycjsKPiDCoH0KPiDCoAo+ICsvKiBMYXp5IGxvb2t1cCBvZiBsb3dlcmRhdGEgKi8KPiAraW50 IG92bF9tYXliZV9sb29rdXBfbG93ZXJkYXRhKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKPiArewo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkX2lub2RlKGRlbnRyeSk7Cj4g K8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqcmVkaXJlY3QgPSBvdmxfbG93ZXJkYXRhX3JlZGly ZWN0KGlub2RlKTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgb3ZsX3BhdGggZGF0YXBhdGggPSB7 fTsKPiArwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgY3JlZCAqb2xkX2NyZWQ7Cj4gK8KgwqDC oMKgwqDCoMKgaW50IGVycjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFyZWRpcmVjdCB8fCBv dmxfZGVudHJ5X2xvd2VyZGF0YShkZW50cnkpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJlZGlyZWN0WzBdICE9ICcv JykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU87Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoGVyciA9IG92bF9pbm9kZV9sb2NrX2ludGVycnVwdGlibGUoaW5vZGUpOwo+ ICvCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiBlcnI7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGVyciA9IDA7Cj4gK8KgwqDCoMKgwqDC oMKgLyogU29tZW9uZSBnb3QgaGVyZSBiZWZvcmUgdXM/ICovCj4gK8KgwqDCoMKgwqDCoMKgaWYg KG92bF9kZW50cnlfbG93ZXJkYXRhKGRlbnRyeSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGdvdG8gb3V0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBvbGRfY3JlZCA9IG92bF9vdmVy cmlkZV9jcmVkcyhkZW50cnktPmRfc2IpOwo+ICvCoMKgwqDCoMKgwqDCoGVyciA9IG92bF9sb29r dXBfZGF0YV9sYXllcnMoZGVudHJ5LCByZWRpcmVjdCwgJmRhdGFwYXRoKTsKPiArwqDCoMKgwqDC oMKgwqByZXZlcnRfY3JlZHMob2xkX2NyZWQpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X2VycjsKPiArCj4gK8KgwqDC oMKgwqDCoMKgZXJyID0gb3ZsX2RlbnRyeV9zZXRfbG93ZXJkYXRhKGRlbnRyeSwgJmRhdGFwYXRo KTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBnb3RvIG91dF9lcnI7Cj4gKwo+ICtvdXQ6Cj4gK8KgwqDCoMKgwqDCoMKgb3ZsX2lub2Rl X3VubG9jayhpbm9kZSk7Cj4gK8KgwqDCoMKgwqDCoMKgZHB1dChkYXRhcGF0aC5kZW50cnkpOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+ICsKPiArb3V0X2VycjoKPiArwqDCoMKg wqDCoMKgwqBwcl93YXJuX3JhdGVsaW1pdGVkKCJsYXp5IGxvd2VyZGF0YSBsb29rdXAgZmFpbGVk ICglcGQyLAo+IGVycj0laSlcbiIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVudHJ5LCBlcnIpOwo+ICvCoMKgwqDCoMKgwqDCoGdvdG8g b3V0Owo+ICt9Cj4gKwo+IMKgc3RydWN0IGRlbnRyeSAqb3ZsX2xvb2t1cChzdHJ1Y3QgaW5vZGUg KmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBmbGFncykKPiDCoHsKPiBAQCAt MTA3NCwxNCArMTEyMCwxMCBAQCBzdHJ1Y3QgZGVudHJ5ICpvdmxfbG9va3VwKHN0cnVjdCBpbm9k ZSAqZGlyLAo+IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgLyog TG9va3VwIGFic29sdXRlIHJlZGlyZWN0IGZyb20gbG93ZXIgbWV0YWNvcHkgaW4gZGF0YS1vbmx5 Cj4gbGF5ZXJzICovCj4gK8KgwqDCoMKgwqDCoMKgLyogRGVmZXIgbG9va3VwIG9mIGxvd2VyZGF0 YSBpbiBkYXRhLW9ubHkgbGF5ZXJzIHRvIGZpcnN0Cj4gYWNjZXNzICovCj4gwqDCoMKgwqDCoMKg wqDCoGlmIChkLm1ldGFjb3B5ICYmIGN0ciAmJiBvZnMtPm51bWRhdGFsYXllciAmJgo+IGQuYWJz b2x1dGVfcmVkaXJlY3QpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0g b3ZsX2xvb2t1cF9kYXRhX2xheWVycyhkZW50cnksIGQucmVkaXJlY3QsCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICZzdGFja1tjdHJdKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKCFlcnIpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGQubWV0YWNvcHkgPSBmYWxzZTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGN0cisrOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGQubWV0YWNvcHkgPSBm YWxzZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY3RyKys7Cj4gwqDCoMKgwqDC oMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAvKgo+IGRpZmYgLS1naXQgYS9mcy9vdmVy bGF5ZnMvb3ZlcmxheWZzLmggYi9mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgKPiBpbmRleCAwMTFi N2I0NjZmNzAuLjRlMzI3NjY1YzMxNiAxMDA2NDQKPiAtLS0gYS9mcy9vdmVybGF5ZnMvb3Zlcmxh eWZzLmgKPiArKysgYi9mcy9vdmVybGF5ZnMvb3ZlcmxheWZzLmgKPiBAQCAtNDAwLDYgKzQwMCw3 IEBAIGVudW0gb3ZsX3BhdGhfdHlwZSBvdmxfcGF0aF9yZWFsZGF0YShzdHJ1Y3QKPiBkZW50cnkg KmRlbnRyeSwgc3RydWN0IHBhdGggKnBhdGgpOwo+IMKgc3RydWN0IGRlbnRyeSAqb3ZsX2RlbnRy eV91cHBlcihzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwo+IMKgc3RydWN0IGRlbnRyeSAqb3ZsX2Rl bnRyeV9sb3dlcihzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwo+IMKgc3RydWN0IGRlbnRyeSAqb3Zs X2RlbnRyeV9sb3dlcmRhdGEoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKPiAraW50IG92bF9kZW50 cnlfc2V0X2xvd2VyZGF0YShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBvdmxfcGF0aAo+ ICpkYXRhcGF0aCk7Cj4gwqBjb25zdCBzdHJ1Y3Qgb3ZsX2xheWVyICpvdmxfaV9sYXllcl9sb3dl cihzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKPiDCoGNvbnN0IHN0cnVjdCBvdmxfbGF5ZXIgKm92bF9s YXllcl9sb3dlcihzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwo+IMKgc3RydWN0IGRlbnRyeSAqb3Zs X2RlbnRyeV9yZWFsKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7Cj4gQEAgLTU2Miw2ICs1NjMsNyBA QCBzdHJ1Y3QgZGVudHJ5ICpvdmxfZ2V0X2luZGV4X2ZoKHN0cnVjdCBvdmxfZnMKPiAqb2ZzLCBz dHJ1Y3Qgb3ZsX2ZoICpmaCk7Cj4gwqBzdHJ1Y3QgZGVudHJ5ICpvdmxfbG9va3VwX2luZGV4KHN0 cnVjdCBvdmxfZnMgKm9mcywgc3RydWN0IGRlbnRyeQo+ICp1cHBlciwKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGRlbnRyeSAqb3JpZ2luLCBib29sIHZlcmlmeSk7Cj4gwqBpbnQgb3ZsX3BhdGhfbmV4dChpbnQg aWR4LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBwYXRoCj4gKnBhdGgpOwo+ICtpbnQg b3ZsX21heWJlX2xvb2t1cF9sb3dlcmRhdGEoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKPiDCoHN0 cnVjdCBkZW50cnkgKm92bF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkg KmRlbnRyeSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwo+IMKgYm9vbCBvdmxfbG93ZXJfcG9zaXRpdmUoc3Ry dWN0IGRlbnRyeSAqZGVudHJ5KTsKPiBkaWZmIC0tZ2l0IGEvZnMvb3ZlcmxheWZzL292bF9lbnRy eS5oIGIvZnMvb3ZlcmxheWZzL292bF9lbnRyeS5oCj4gaW5kZXggMjVmYWJiMzE3NWNmLi5hN2Ix MDA2YzUzMjEgMTAwNjQ0Cj4gLS0tIGEvZnMvb3ZlcmxheWZzL292bF9lbnRyeS5oCj4gKysrIGIv ZnMvb3ZlcmxheWZzL292bF9lbnRyeS5oCj4gQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgaW5s aW5lIHN0cnVjdCBkZW50cnkKPiAqb3ZsX2xvd2VyZGF0YV9kZW50cnkoc3RydWN0IG92bF9lbnRy eSAqb2UpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvdmxfcGF0aCAqbG93ZXJkYXRh ID0gb3ZsX2xvd2VyZGF0YShvZSk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gbG93ZXJk YXRhID8gbG93ZXJkYXRhLT5kZW50cnkgOiBOVUxMOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBs b3dlcmRhdGEgPyBSRUFEX09OQ0UobG93ZXJkYXRhLT5kZW50cnkpIDogTlVMTDsKPiDCoH0KPiDC oAo+IMKgLyogcHJpdmF0ZSBpbmZvcm1hdGlvbiBoZWxkIGZvciBldmVyeSBvdmVybGF5ZnMgZGVu dHJ5ICovCj4gZGlmZiAtLWdpdCBhL2ZzL292ZXJsYXlmcy91dGlsLmMgYi9mcy9vdmVybGF5ZnMv dXRpbC5jCj4gaW5kZXggMjg0YjViYTRmY2Y2Li45YTA0Mjc2ODAxM2UgMTAwNjQ0Cj4gLS0tIGEv ZnMvb3ZlcmxheWZzL3V0aWwuYwo+ICsrKyBiL2ZzL292ZXJsYXlmcy91dGlsLmMKPiBAQCAtMjUw LDcgKzI1MCwxMyBAQCB2b2lkIG92bF9wYXRoX2xvd2VyZGF0YShzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCj4gc3RydWN0IHBhdGggKnBhdGgpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGxvd2Vy ZGF0YV9kZW50cnkpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhdGgtPmRl bnRyeSA9IGxvd2VyZGF0YV9kZW50cnk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHBhdGgtPm1udCA9IGxvd2VyZGF0YS0+bGF5ZXItPm1udDsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogUGFpcnMg d2l0aCBzbXBfd21iKCkgaW4KPiBvdmxfZGVudHJ5X3NldF9sb3dlcmRhdGEoKS4KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogTWFrZSBzdXJlIHRoYXQgaWYgbG93ZXJkYXRhLT5k ZW50cnkgaXMgdmlzaWJsZSwKPiB0aGVuCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIGRhdGFwYXRoLT5sYXllciBpcyB2aXNpYmxlIGFzIHdlbGwuCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbXBf cm1iKCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhdGgtPm1udCA9IFJFQURf T05DRShsb3dlcmRhdGEtPmxheWVyKS0+bW50Owo+IMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnBhdGggPSAoc3RydWN0IHBhdGgpIHsg fTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IEBAIC0zMTIsNiArMzE4LDI5IEBAIHN0cnVjdCBkZW50 cnkgKm92bF9kZW50cnlfbG93ZXJkYXRhKHN0cnVjdAo+IGRlbnRyeSAqZGVudHJ5KQo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gb3ZsX2xvd2VyZGF0YV9kZW50cnkoT1ZMX0UoZGVudHJ5KSk7Cj4g wqB9Cj4gwqAKPiAraW50IG92bF9kZW50cnlfc2V0X2xvd2VyZGF0YShzdHJ1Y3QgZGVudHJ5ICpk ZW50cnksIHN0cnVjdCBvdmxfcGF0aAo+ICpkYXRhcGF0aCkKPiArewo+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCBvdmxfZW50cnkgKm9lID0gT1ZMX0UoZGVudHJ5KTsKPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3Qgb3ZsX3BhdGggKmxvd2VyZGF0YSA9IG92bF9sb3dlcmRhdGEob2UpOwo+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBkZW50cnkgKmRhdGFkZW50cnkgPSBkYXRhcGF0aC0+ZGVudHJ5Owo+ICsK PiArwqDCoMKgwqDCoMKgwqBpZiAoV0FSTl9PTl9PTkNFKG92bF9udW1sb3dlcihvZSkgPD0gMSkp Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlPOwo+ICsKPiArwqDC oMKgwqDCoMKgwqBXUklURV9PTkNFKGxvd2VyZGF0YS0+bGF5ZXIsIGRhdGFwYXRoLT5sYXllcik7 Cj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqAgKiBQYWlycyB3aXRoIHNtcF9y bWIoKSBpbiBvdmxfcGF0aF9sb3dlcmRhdGEoKS4KPiArwqDCoMKgwqDCoMKgwqAgKiBNYWtlIHN1 cmUgdGhhdCBpZiBsb3dlcmRhdGEtPmRlbnRyeSBpcyB2aXNpYmxlLCB0aGVuCj4gK8KgwqDCoMKg wqDCoMKgICogbG93ZXJkYXRhLT5sYXllciBpcyB2aXNpYmxlIGFzIHdlbGwuCj4gK8KgwqDCoMKg wqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgc21wX3dtYigpOwo+ICvCoMKgwqDCoMKgwqDCoFdS SVRFX09OQ0UobG93ZXJkYXRhLT5kZW50cnksIGRnZXQoZGF0YWRlbnRyeSkpOwo+ICsKPiArwqDC oMKgwqDCoMKgwqBvdmxfZGVudHJ5X3VwZGF0ZV9yZXZhbChkZW50cnksIGRhdGFkZW50cnkpOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArfQo+ICsKPiDCoHN0cnVjdCBkZW50cnkg Km92bF9kZW50cnlfcmVhbChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiBvdmxfZGVudHJ5X3VwcGVyKGRlbnRyeSkgPzogb3ZsX2RlbnRyeV9sb3dl cihkZW50cnkpOwoKLS0gCj0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09 LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KPS09LT0KIEFsZXhhbmRlciBMYXJzc29uICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWQgSGF0LApJbmMgCiAg ICAgICBhbGV4bEByZWRoYXQuY29tICAgICAgICAgICAgYWxleGFuZGVyLmxhcnNzb25AZ21haWwu Y29tIApIZSdzIGFuIHVuY29udmVudGlvbmFsIGFyYWNobm9waG9iaWMgZXgtY29uIGZsZWVpbmcg ZnJvbSBhIHNlY3JldCAKZ292ZXJubWVudCBwcm9ncmFtbWUuIFNoZSdzIGEgc3Ryb25nLXdpbGxl ZCBtb3Rvcm1vdXRoIHBvbGl0aWNpYW4gZnJvbSAKb3V0IG9mIHRvd24uIFRoZXkgZmlnaHQgY3Jp bWUhIAo=