Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp1109814rwi; Thu, 27 Oct 2022 11:16:07 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7/IKK9WDifyuxAYDDc3SB0M5jDyFjIzHAr6uMVmctkK1q9YBpS/aN3JbnOA8cnPWUmWybp X-Received: by 2002:a17:90b:1806:b0:20d:3256:38 with SMTP id lw6-20020a17090b180600b0020d32560038mr11190330pjb.94.1666894567638; Thu, 27 Oct 2022 11:16:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666894567; cv=none; d=google.com; s=arc-20160816; b=TyvWExpB/l7tHL+XlswxvBxdjk5226awzQg6+aSwsh71YyT2vzZaiZxZdpgWzdGaWz AaKKG8LnrPTul5qflrlUH8V0H37Jp3i22k69FItUfYnLpWnAtBVS/I257R+mG2KkUvDv M5eEIq39LWxsGwUbJVamCdr/igjjyzoXYBs67xh6+ub51eVODOuYDmhtV1/p6Ff24pby x5Oh2WHv+08YkFH8Jf3qZgmAVQtQ9eAQqJVDjTUi1dMqXtMNN5ByROg8qTYkLOjSOcm8 s1+5HK67wsY0gzzABBhcfiGZFsaHIPrTA51pG3MuZ/I0ZTgRc8kmX4IWnRDtIn6/4xoz xeEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id; bh=ZSTg5WDEogpwMvmvDQgPRmGzIngl/kf86SqKZ7twN/o=; b=yKEgfeUmMLXSfTxBFQoMlGAcLqLNZhQMIOxaIsAunYlMnibqI+XgTrG86V+D8x+H4m 03w0e5ItN+D5pOb1BNYIEqm3gR0kq9Wkfuw4QB9Gm+wf0oPSDSNvozz1QNVt2nYGHD04 Uo0TzfR5thz9Le37FF/jPrLgaOHKCyGM4p9EtL5N7CnL8pHzMqT2s7mAQlAGMV1tNlXd 86dnO2kpNXw6gHqHU4gemIefvy4jzJVr9sNcbpPf+6ezOxYsPClOESJQvh+Yl6iU3hLa M6A6WU+JqG110LdQg7SF6X+/qlRXz79Y+NGM3/47bXSI/LqTkneKj8ecP/QT+5DreeXy WzKg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z65-20020a17090a6d4700b0021343bcdf6csi2521822pjj.48.2022.10.27.11.15.44; Thu, 27 Oct 2022 11:16:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235824AbiJ0SHd (ORCPT + 99 others); Thu, 27 Oct 2022 14:07:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235332AbiJ0SHc (ORCPT ); Thu, 27 Oct 2022 14:07:32 -0400 Received: from mail-io1-f52.google.com (mail-io1-f52.google.com [209.85.166.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9CD565F9B3 for ; Thu, 27 Oct 2022 11:07:31 -0700 (PDT) Received: by mail-io1-f52.google.com with SMTP id l127so2309658iof.12 for ; Thu, 27 Oct 2022 11:07:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=ZSTg5WDEogpwMvmvDQgPRmGzIngl/kf86SqKZ7twN/o=; b=sYTCFNSWPX/AQ7D/S2mYKVJvZitYd4VTb0NyMqLqLaA+nPuqCXCh0aKgimTSVamZcM mrXAriglRv70f9X3wGzSp6f6asPpsCzTapmBNjCZH+sUbiIbHrl+VSLLaQqYEwgUD1fo k8+ceklfEoCt4Da6JhquhwvYNs+6QaIwJdlU8t9gerpyV5mfMAv4h6/Od6JNrt2Azr/3 PknYlVW6j5KTPxWrksI3BTF0+ycG6R8tBqqTr9pKQGCKMRa6wJmeaKs3ee4dV6RGjFMr E8KqtP2AFFVsYD5D0WscHTXcRhsukGzvncTkep2SBkMPyw4Yc8twE9hIkGsMiQbKWQUP fqrA== X-Gm-Message-State: ACrzQf1bZ0xcrFLkImA6tFN2knlwuS5CSCX3s7FSNahITa6LHSsuzH4+ r4qh53GZKG5LVzgA+ueSvsCZPXchKg== X-Received: by 2002:a05:6602:2e8d:b0:6bd:543c:6fd7 with SMTP id m13-20020a0566022e8d00b006bd543c6fd7mr13867980iow.134.1666894050530; Thu, 27 Oct 2022 11:07:30 -0700 (PDT) Received: from [192.168.75.138] (50-36-85-28.alma.mi.frontiernet.net. [50.36.85.28]) by smtp.gmail.com with ESMTPSA id o17-20020a0566022e1100b006bb57cfcb88sm790793iow.44.2022.10.27.11.07.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Oct 2022 11:07:29 -0700 (PDT) Message-ID: <010f7996fde7dc4aa7a21e4b2b835d5ae7084771.camel@kernel.org> Subject: Re: [PATCH v9 1/5] NFS: Rename readpage_async_filler to nfs_pageio_add_page From: Trond Myklebust To: Dave Wysochanski , Anna Schumaker , Trond Myklebust , David Howells Cc: linux-nfs@vger.kernel.org, linux-cachefs@redhat.com, Benjamin Maynard , Daire Byrne Date: Thu, 27 Oct 2022 14:07:28 -0400 In-Reply-To: <20221017105212.77588-2-dwysocha@redhat.com> References: <20221017105212.77588-1-dwysocha@redhat.com> <20221017105212.77588-2-dwysocha@redhat.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 (3.44.4-2.fc36) MIME-Version: 1.0 X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gTW9uLCAyMDIyLTEwLTE3IGF0IDA2OjUyIC0wNDAwLCBEYXZlIFd5c29jaGFuc2tpIHdyb3Rl Ogo+IFJlbmFtZSByZWFkcGFnZV9hc3luY19maWxsZXIgdG8gbmZzX3BhZ2Vpb19hZGRfcGFnZSB0 bwo+IGJldHRlciByZWZsZWN0IHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIChhZGQgYSBwYWdlIHRv Cj4gdGhlIG5mc19wYWdlaW9fZGVzY3JpcHRvciksIGFuZCBzaW1wbGlmeSBhcmd1bWVudHMgdG8K PiB0aGlzIGZ1bmN0aW9uIGJ5IHJlbW92aW5nIHN0cnVjdCBuZnNfcmVhZGRlc2MuCj4gCj4gU2ln bmVkLW9mZi1ieTogRGF2ZSBXeXNvY2hhbnNraSA8ZHd5c29jaGFAcmVkaGF0LmNvbT4KPiBSZXZp ZXdlZC1ieTogSmVmZiBMYXl0b24gPGpsYXl0b25Aa2VybmVsLm9yZz4KPiAtLS0KPiDCoGZzL25m cy9yZWFkLmMgfCA2MCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gLS0KPiDCoDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAzMCBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL3JlYWQuYyBiL2ZzL25mcy9yZWFkLmMK PiBpbmRleCA4YWUyYzhkMTIxOWQuLjUyNWU4MmVhOWE5ZSAxMDA2NDQKPiAtLS0gYS9mcy9uZnMv cmVhZC5jCj4gKysrIGIvZnMvbmZzL3JlYWQuYwo+IEBAIC0xMjcsMTEgKzEyNyw2IEBAIHN0YXRp YyB2b2lkIG5mc19yZWFkcGFnZV9yZWxlYXNlKHN0cnVjdCBuZnNfcGFnZQo+ICpyZXEsIGludCBl cnJvcikKPiDCoMKgwqDCoMKgwqDCoMKgbmZzX3JlbGVhc2VfcmVxdWVzdChyZXEpOwo+IMKgfQo+ IMKgCj4gLXN0cnVjdCBuZnNfcmVhZGRlc2Mgewo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBuZnNf cGFnZWlvX2Rlc2NyaXB0b3IgcGdpbzsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbmZzX29wZW5f Y29udGV4dCAqY3R4Owo+IC19Owo+IC0KPiDCoHN0YXRpYyB2b2lkIG5mc19wYWdlX2dyb3VwX3Nl dF91cHRvZGF0ZShzdHJ1Y3QgbmZzX3BhZ2UgKnJlcSkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg aWYgKG5mc19wYWdlX2dyb3VwX3N5bmNfb25fYml0KHJlcSwgUEdfVVBUT0RBVEUpKQo+IEBAIC0x NTMsNyArMTQ4LDggQEAgc3RhdGljIHZvaWQgbmZzX3JlYWRfY29tcGxldGlvbihzdHJ1Y3QKPiBu ZnNfcGdpb19oZWFkZXIgKmhkcikKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKHRlc3RfYml0KE5GU19JT0hEUl9FT0YsICZoZHItPmZsYWdzKSkgewo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIG5vdGU6IHJlZ2lvbnMg b2YgdGhlIHBhZ2Ugbm90IGNvdmVyZWQgYnkgYQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogcmVxdWVzdCBhcmUgemVyb2VkIGluCj4gcmVhZHBhZ2Vf YXN5bmNfZmlsbGVyICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiByZXF1ZXN0IGFyZSB6ZXJvZWQgaW4gbmZzX3BhZ2Vpb19hZGRfcGFnZQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGJ5dGVzID4gaGRy LT5nb29kX2J5dGVzKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIG5vdGhpbmcgaW4gdGhpcyByZXF1ZXN0IHdhcyBn b29kLAo+IHNvIHplcm8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogdGhlIGZ1bGwgZXh0ZW50IG9mIHRoZSByZXF1ZXN0 ICovCj4gQEAgLTI4MSw4ICsyNzcsMTAgQEAgc3RhdGljIHZvaWQgbmZzX3JlYWRwYWdlX3Jlc3Vs dChzdHJ1Y3QgcnBjX3Rhc2sKPiAqdGFzaywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG5mc19yZWFkcGFnZV9yZXRyeSh0YXNrLCBoZHIpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQKPiAtcmVhZHBhZ2VfYXN5bmNfZmlsbGVyKHN0cnVjdCBuZnNfcmVhZGRlc2MgKmRlc2MsIHN0 cnVjdCBwYWdlICpwYWdlKQo+ICtpbnQKPiArbmZzX3BhZ2Vpb19hZGRfcGFnZShzdHJ1Y3QgbmZz X3BhZ2Vpb19kZXNjcmlwdG9yICpwZ2lvLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IG5mc19vcGVuX2NvbnRleHQgKmN0eCwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBwYWdlICpwYWdlKQoKSWYgd2UncmUgZ29pbmcg dG8gcmVuYW1lIHRoaXMgZnVuY3Rpb24sIHRoZW4gbGV0J3Mgbm90IGdpdmUgaXQgYSBuYW1lCnRo YXQgc3VnZ2VzdHMgaXQgYmVsb25ncyBpbiBwYWdlbGlzdC5jLiBJdCdzIG5vdCBhIGdlbmVyaWMg aGVscGVyCmZ1bmN0aW9uLCBidXQgaXMgc3RpbGwgdmVyeSBtdWNoIHNwZWNpZmljIHRvIHRoZSBw YWdlY2FjaGUgcmVhZApmdW5jdGlvbmFsaXR5LgoKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGlub2RlICppbm9kZSA9IHBhZ2VfZmlsZV9tYXBwaW5nKHBhZ2UpLT5ob3N0Owo+IMKgwqDC oMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgcnNpemUgPSBORlNfU0VSVkVSKGlub2RlKS0+cnNpemU7 Cj4gQEAgLTMwMiwxNSArMzAwLDE1IEBAIHJlYWRwYWdlX2FzeW5jX2ZpbGxlcihzdHJ1Y3QgbmZz X3JlYWRkZXNjCj4gKmRlc2MsIHN0cnVjdCBwYWdlICpwYWdlKQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X3VubG9jazsKPiDCoMKgwqDC oMKgwqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgbmV3ID0gbmZzX2NyZWF0ZV9yZXF1ZXN0 KGRlc2MtPmN0eCwgcGFnZSwgMCwgYWxpZ25lZF9sZW4pOwo+ICvCoMKgwqDCoMKgwqDCoG5ldyA9 IG5mc19jcmVhdGVfcmVxdWVzdChjdHgsIHBhZ2UsIDAsIGFsaWduZWRfbGVuKTsKPiDCoMKgwqDC oMKgwqDCoMKgaWYgKElTX0VSUihuZXcpKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZ290byBvdXRfZXJyb3I7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGxlbiA8IFBBR0Vf U0laRSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHplcm9fdXNlcl9zZWdtZW50 KHBhZ2UsIGxlbiwgUEFHRV9TSVpFKTsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoIW5mc19wYWdlaW9f YWRkX3JlcXVlc3QoJmRlc2MtPnBnaW8sIG5ldykpIHsKPiArwqDCoMKgwqDCoMKgwqBpZiAoIW5m c19wYWdlaW9fYWRkX3JlcXVlc3QocGdpbywgbmV3KSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbmZzX2xpc3RfcmVtb3ZlX3JlcXVlc3QobmV3KTsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXJyb3IgPSBkZXNjLT5wZ2lvLnBnX2Vycm9yOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvciA9IHBnaW8tPnBnX2Vycm9yOwo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmZzX3JlYWRwYWdlX3JlbGVhc2UobmV3LCBlcnJvcik7 Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiDCoMKgwqDCoMKg wqDCoMKgfQo+IEBAIC0zMzIsNyArMzMwLDggQEAgcmVhZHBhZ2VfYXN5bmNfZmlsbGVyKHN0cnVj dCBuZnNfcmVhZGRlc2MgKmRlc2MsCj4gc3RydWN0IHBhZ2UgKnBhZ2UpCj4gwqBpbnQgbmZzX3Jl YWRfZm9saW8oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwYWdlICpwYWdlID0gJmZvbGlvLT5wYWdlOwo+IC3CoMKg wqDCoMKgwqDCoHN0cnVjdCBuZnNfcmVhZGRlc2MgZGVzYzsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgbmZzX3BhZ2Vpb19kZXNjcmlwdG9yIHBnaW87Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG5m c19vcGVuX2NvbnRleHQgKmN0eDsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlub2RlICppbm9k ZSA9IHBhZ2VfZmlsZV9tYXBwaW5nKHBhZ2UpLT5ob3N0Owo+IMKgwqDCoMKgwqDCoMKgwqBpbnQg cmV0Owo+IMKgCj4gQEAgLTM1OCwyOSArMzU3LDI5IEBAIGludCBuZnNfcmVhZF9mb2xpbyhzdHJ1 Y3QgZmlsZSAqZmlsZSwgc3RydWN0Cj4gZm9saW8gKmZvbGlvKQo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoGlmIChmaWxlID09IE5VTEwpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldCA9IC1FQkFERjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVzYy5jdHgg PSBuZnNfZmluZF9vcGVuX2NvbnRleHQoaW5vZGUsIE5VTEwsCj4gRk1PREVfUkVBRCk7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChkZXNjLmN0eCA9PSBOVUxMKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjdHggPSBuZnNfZmluZF9vcGVuX2NvbnRleHQoaW5v ZGUsIE5VTEwsIEZNT0RFX1JFQUQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoY3R4ID09IE5VTEwpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZ290byBvdXRfdW5sb2NrOwo+IMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVzYy5jdHggPQo+IGdldF9uZnNfb3Blbl9jb250 ZXh0KG5mc19maWxlX29wZW5fY29udGV4dChmaWxlKSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGN0eCA9Cj4gZ2V0X25mc19vcGVuX2NvbnRleHQobmZzX2ZpbGVfb3Blbl9jb250 ZXh0KGZpbGUpKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHhjaGcoJmRlc2MuY3R4LT5lcnJvciwg MCk7Cj4gLcKgwqDCoMKgwqDCoMKgbmZzX3BhZ2Vpb19pbml0X3JlYWQoJmRlc2MucGdpbywgaW5v ZGUsIGZhbHNlLAo+ICvCoMKgwqDCoMKgwqDCoHhjaGcoJmN0eC0+ZXJyb3IsIDApOwo+ICvCoMKg wqDCoMKgwqDCoG5mc19wYWdlaW9faW5pdF9yZWFkKCZwZ2lvLCBpbm9kZSwgZmFsc2UsCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJm5m c19hc3luY19yZWFkX2NvbXBsZXRpb25fb3BzKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHJldCA9 IHJlYWRwYWdlX2FzeW5jX2ZpbGxlcigmZGVzYywgcGFnZSk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0 ID0gbmZzX3BhZ2Vpb19hZGRfcGFnZSgmcGdpbywgY3R4LCBwYWdlKTsKPiDCoMKgwqDCoMKgwqDC oMKgaWYgKHJldCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+ IMKgCj4gLcKgwqDCoMKgwqDCoMKgbmZzX3BhZ2Vpb19jb21wbGV0ZV9yZWFkKCZkZXNjLnBnaW8p Owo+IC3CoMKgwqDCoMKgwqDCoHJldCA9IGRlc2MucGdpby5wZ19lcnJvciA8IDAgPyBkZXNjLnBn aW8ucGdfZXJyb3IgOiAwOwo+ICvCoMKgwqDCoMKgwqDCoG5mc19wYWdlaW9fY29tcGxldGVfcmVh ZCgmcGdpbyk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcGdpby5wZ19lcnJvciA8IDAgPyBwZ2lv LnBnX2Vycm9yIDogMDsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFyZXQpIHsKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHdhaXRfb25fcGFnZV9sb2NrZWRfa2lsbGFibGUo cGFnZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIVBhZ2VVcHRvZGF0 ZShwYWdlKSAmJiAhcmV0KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0ID0geGNoZygmZGVzYy5jdHgtPmVycm9yLCAwKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHhjaGcoJmN0eC0+ZXJyb3Is IDApOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqBvdXQ6Cj4gLcKgwqDCoMKgwqDCoMKgcHV0X25m c19vcGVuX2NvbnRleHQoZGVzYy5jdHgpOwo+ICvCoMKgwqDCoMKgwqDCoHB1dF9uZnNfb3Blbl9j b250ZXh0KGN0eCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHRyYWNlX25mc19hb3BfcmVhZHBhZ2VfZG9u ZShpbm9kZSwgcGFnZSwgcmV0KTsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoG91 dF91bmxvY2s6Cj4gQEAgLTM5MSw5ICszOTAsMTAgQEAgaW50IG5mc19yZWFkX2ZvbGlvKHN0cnVj dCBmaWxlICpmaWxlLCBzdHJ1Y3QKPiBmb2xpbyAqZm9saW8pCj4gwqAKPiDCoHZvaWQgbmZzX3Jl YWRhaGVhZChzdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2wgKnJhY3RsKQo+IMKgewo+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBuZnNfcGFnZWlvX2Rlc2NyaXB0b3IgcGdpbzsKPiArwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgbmZzX29wZW5fY29udGV4dCAqY3R4Owo+IMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25l ZCBpbnQgbnJfcGFnZXMgPSByZWFkYWhlYWRfY291bnQocmFjdGwpOwo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgZmlsZSAqZmlsZSA9IHJhY3RsLT5maWxlOwo+IC3CoMKgwqDCoMKgwqDCoHN0cnVj dCBuZnNfcmVhZGRlc2MgZGVzYzsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlub2RlICppbm9k ZSA9IHJhY3RsLT5tYXBwaW5nLT5ob3N0Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGFnZSAq cGFnZTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IHJldDsKPiBAQCAtNDA3LDI1ICs0MDcsMjUgQEAg dm9pZCBuZnNfcmVhZGFoZWFkKHN0cnVjdCByZWFkYWhlYWRfY29udHJvbAo+ICpyYWN0bCkKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZmlsZSA9PSBOVUxMKSB7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXQgPSAtRUJBREY7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRlc2MuY3R4ID0gbmZzX2ZpbmRfb3Blbl9jb250ZXh0KGlub2RlLCBOVUxMLAo+IEZN T0RFX1JFQUQpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZGVzYy5jdHgg PT0gTlVMTCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY3R4ID0gbmZzX2ZpbmRf b3Blbl9jb250ZXh0KGlub2RlLCBOVUxMLCBGTU9ERV9SRUFEKTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKGN0eCA9PSBOVUxMKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+IMKgwqDCoMKgwqDCoMKgwqB9IGVs c2UKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVzYy5jdHggPQo+IGdldF9uZnNf b3Blbl9jb250ZXh0KG5mc19maWxlX29wZW5fY29udGV4dChmaWxlKSk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGN0eCA9Cj4gZ2V0X25mc19vcGVuX2NvbnRleHQobmZzX2ZpbGVf b3Blbl9jb250ZXh0KGZpbGUpKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoG5mc19wYWdlaW9faW5p dF9yZWFkKCZkZXNjLnBnaW8sIGlub2RlLCBmYWxzZSwKPiArwqDCoMKgwqDCoMKgwqBuZnNfcGFn ZWlvX2luaXRfcmVhZCgmcGdpbywgaW5vZGUsIGZhbHNlLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZuZnNfYXN5bmNfcmVhZF9jb21w bGV0aW9uX29wcyk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKChwYWdlID0gcmVhZGFo ZWFkX3BhZ2UocmFjdGwpKSAhPSBOVUxMKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldCA9IHJlYWRwYWdlX2FzeW5jX2ZpbGxlcigmZGVzYywgcGFnZSk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IG5mc19wYWdlaW9fYWRkX3BhZ2UoJnBnaW8sIGN0 eCwgcGFnZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwdXRfcGFnZShwYWdl KTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gwqDCoMKgwqDC oMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoG5mc19wYWdlaW9fY29tcGxldGVfcmVhZCgm ZGVzYy5wZ2lvKTsKPiArwqDCoMKgwqDCoMKgwqBuZnNfcGFnZWlvX2NvbXBsZXRlX3JlYWQoJnBn aW8pOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcHV0X25mc19vcGVuX2NvbnRleHQoZGVzYy5jdHgp Owo+ICvCoMKgwqDCoMKgwqDCoHB1dF9uZnNfb3Blbl9jb250ZXh0KGN0eCk7Cj4gwqBvdXQ6Cj4g wqDCoMKgwqDCoMKgwqDCoHRyYWNlX25mc19hb3BfcmVhZGFoZWFkX2RvbmUoaW5vZGUsIG5yX3Bh Z2VzLCByZXQpOwo+IMKgfQoKLS0gClRyb25kIE15a2xlYnVzdApMaW51eCBORlMgY2xpZW50IG1h aW50YWluZXIsIEhhbW1lcnNwYWNlCnRyb25kLm15a2xlYnVzdEBoYW1tZXJzcGFjZS5jb20KCgo=