Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rb5EA-00D4cA-4p for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Feb 2024 20:54:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rb5E8-004Xda-Mk for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Feb 2024 20:54:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rb5E8-004XdS-0N for pgsql-hackers@lists.postgresql.org; Fri, 16 Feb 2024 20:54:32 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rb5E4-0076ii-75 for pgsql-hackers@lists.postgresql.org; Fri, 16 Feb 2024 20:54:30 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-6e22e63abf1so105104b3a.3 for ; Fri, 16 Feb 2024 12:54:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1708116867; x=1708721667; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=H37SbhGx4uZ+8nv/s6GJf6L5wvvBhQSLKOg33gh1k2w=; b=QZT2WBzyxELuZMcsMPwSCmgGx5REdLSPruO6qsuPMxZ4o+lZnYTBqatdxttgegEg/U /yZfDKxyMirlIpujeAAiJfAa6YhCuQwFfenPpRi0wVL+c87Vq/9WPi4pYxKPZuxehJq1 ZPQwi5uR9RYqoCQFiqBO3XVc12lObOA7cG0tGkRrJu8Xj9/RLI9m5An59yU9WOJD7Jsz hnJlTPUTQ+AMs4Ei/4z31qYwubfyrSIQvwHHQpLWUPEvxUoEGQ/UrY6Ea3wwTrVLwPww 2oGpNlnwllUHb1iOlYB4rUKHyIm9X7BzrHZ59TT++7BdHSuRqKzoO6rcyW1xZa8KtpaK +fcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708116867; x=1708721667; h=mime-version:user-agent: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=H37SbhGx4uZ+8nv/s6GJf6L5wvvBhQSLKOg33gh1k2w=; b=ZjX3xp25O7IHJ8zxNE/YYL6tvtAvqY3hnGX7k2LVuV4HMKFJ+e3kweziDJuMfFBe/w gM8Yx+72mAoh3dVGBYx8cdbMbIlISbYO2R2d6n81u1JNMHzIb9kSXwgchkz999y/4xN9 L//c2YcA9x8ov8FtflsvfX4MyCHlt2yKdfk8M2tYHByr2OZK9AiLKCGaQboks08QlPUg ct/sxILUUg7vuolnC2JSZIASAUi52l4LLbzDWFzkzSGcE5WLvD0m45kXdM3m70XW18CO 5qzLg0lv1x6APTr3XMR7A8pS7+X8J7D7eUyRUq6ijqll03Vn82gopbej1g+3X51WaejP Fqag== X-Forwarded-Encrypted: i=1; AJvYcCVamyYuA0MX6We+IO8bs+Z6kM2HzzSAvHF4zhH98ecw81NJ2EDhqV1TVI2NcbRECprCWhUpJy1RgaOCHqg1dlIRR0aSHDKZi1+qndhb+6y/jy5C X-Gm-Message-State: AOJu0YyY1n7dsT3RCjLePmRAUjosGdaZUTde2ftA8eOlBs/Xr00W6X/6 aTmdkGfCwrGCo3ef6aIOC4j2Fx905tj3uHkHxzLu7VqGvTw8Qp/0rh/wEVaLvQ== X-Google-Smtp-Source: AGHT+IHxy2q9EjfBnx5WZVjmceH9DAiUJLVGgFzrkjbDDjVYCMbLpOKPVOtiG817LpJA0Dhu+Wai+g== X-Received: by 2002:a05:6a20:9e4b:b0:1a0:9010:92ad with SMTP id mt11-20020a056a209e4b00b001a0901092admr749094pzb.31.1708116866827; Fri, 16 Feb 2024 12:54:26 -0800 (PST) Received: from [172.18.10.46] ([12.126.244.130]) by smtp.gmail.com with ESMTPSA id c7-20020a62f847000000b006e0e35c1e55sm366185pfm.79.2024.02.16.12.54.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Feb 2024 12:54:26 -0800 (PST) Message-ID: <727449f3151c6b9ab76ba706fa4d30bf7b03ad4f.camel@j-davis.com> Subject: Re: LogwrtResult contended spinlock From: Jeff Davis To: Alvaro Herrera , Tom Lane Cc: Andres Freund , pgsql-hackers@lists.postgresql.org, Jaime Casanova Date: Fri, 16 Feb 2024 12:54:25 -0800 In-Reply-To: References: <20220923084941.g3756xqz6lwnqwso@alvherre.pgsql> Content-Type: multipart/mixed; boundary="=-v7iZKwtMm6nAMRfNNqLT" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-v7iZKwtMm6nAMRfNNqLT Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2024-02-12 at 17:44 -0800, Jeff Davis wrote: > It looks like there's some renewed interest in this patch: After rebasing (attached as 0001), I'm seeing some test failures. It looks like the local LogwrtResult is not being updated in as many places, and that's hitting the Assert that I recently added. The fix is easy (attached as 0002). Though it looks like we can remove the non-shared LogwrtResult entirely. Andres expressed some concern here: https://www.postgresql.org/message-id/20210130020211.rtu5ir3dpjrbiats@alap3= .anarazel.de But then seemed to favor removing it here: https://www.postgresql.org/message-id/20240213001150.4uqzh7tinuhvoopl@awork= 3.anarazel.de I'm inclined to think we can get rid of the non-shared copy. A few other comments: * Should GetFlushRecPtr()/GetXLogWriteRecPtr() use a read memory barrier? * Why did you add pg_memory_barrier() right before a spinlock acquisition? * Is it an invariant that Write >=3D Flush at all times? Are there guaranteed to be write barriers in the right place to ensure that? I would also like it if we could add a new "Copy" pointer indicating how much WAL data has been copied to the WAL buffers. That would be set by WaitXLogInsertionsToFinish() so that subsequent calls are cheap. Attached a patch (0003) for illustration purposes. It adds to the size of XLogCtlData, but it's fairly large already, so I'm not sure if that's a problem. If we do add this, there would be an invariant that Copy >=3D Write at all times. Regards, Jeff Davis --=-v7iZKwtMm6nAMRfNNqLT Content-Disposition: attachment; filename*0=v11j-0001-Make-XLogCtl-LogwrtResult-accessible-with-atomi.pat; filename*1=ch Content-Type: text/x-patch; name="v11j-0001-Make-XLogCtl-LogwrtResult-accessible-with-atomi.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjZDQ4MTI1YWZjNjFmYWE0NmYxNWY0NDQzOTBlZDAxZjY0OTg4MzIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5v cmc+CkRhdGU6IFR1ZSwgMiBGZWIgMjAyMSAxNDowMzo0MyAtMDMwMApTdWJqZWN0OiBbUEFUQ0gg djExaiAxLzNdIE1ha2UgWExvZ0N0bC0+TG9nd3J0UmVzdWx0IGFjY2Vzc2libGUgd2l0aCBhdG9t aWNzCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpDdXJyZW50bHksIGFjY2VzcyB0 byBMb2d3cnRSZXN1bHQgaXMgcHJvdGVjdGVkIGJ5IGEgc3BpbmxvY2suICBUaGlzCmJlY29tZXMg c2V2ZXJlbHkgY29udGVuZGVkIGluIHNvbWUgc2NlbmFyaW9zLCBzdWNoIGFzIHdpdGggYSBsYXJn aXNoCnJlcGxpY2F0aW9uIGZsb2NrOiB3YWxzZW5kZXJzIGFsbCBjYWxsaW5nIEdldEZsdXNoUmVj UHRyIHJlcGVhdGVkbHkKY2F1c2UgdGhlIHByb2Nlc3NvciBoZWF0IHVwIHRvIHRoZSBwb2ludCB3 aGVyZSBlZ2dzIGNhbiBiZSBmcmllZCBvbiB0b3AuCgpUaGlzIGNhbiBiZSByZWR1Y2VkIHRvIGEg bm9uLXByb2JsZW0gYnkgcmVwbGFjaW5nIFhMb2dDdGwtPkxvZ3dydFJlc3VsdAp3aXRoIGEgc3Ry dWN0IGNvbnRhaW5pbmcgYSBwYWlyIG9mIGF0b21pY2FsbHkgYWNjZXNzZWQgdmFyaWFibGVzLiBE byBzby4KSW4gYSBmZXcgcGxhY2VzLCB3ZSBjYW4gYWRqdXN0IHRoZSBleGFjdCBsb2NhdGlvbiB3 aGVyZSB0aGUgbG9jYWxzIGFyZQp1cGRhdGVkIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQg d2Ugbm8gbG9uZ2VyIG5lZWQgdGhlIHNwaW5sb2NrLgoKQXV0aG9yOiDDgWx2YXJvIEhlcnJlcmEg PGFsdmhlcnJlQGFsdmgubm8taXAub3JnPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzIwMjAwODMxMTgyMTU2LkdBMzk4M0BhbHZoZXJyZS5wZ3NxbAotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYyB8IDEwNiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0K IHNyYy9pbmNsdWRlL3BvcnQvYXRvbWljcy5oICAgICAgICB8ICAyOSArKysrKysrKwogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNzgg aW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CmluZGV4IDUwYzM0N2E2NzkuLjQ2Mzk0YzVkMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKQEAgLTI5NCwxNiArMjk0LDEzIEBAIHN0YXRpYyBib29sIGRvUGFnZVdyaXRlczsKICAqCiAg KiBMb2d3cnRScXN0IGluZGljYXRlcyBhIGJ5dGUgcG9zaXRpb24gdGhhdCB3ZSBuZWVkIHRvIHdy aXRlIGFuZC9vciBmc3luYwogICogdGhlIGxvZyB1cCB0byAoYWxsIHJlY29yZHMgYmVmb3JlIHRo YXQgcG9pbnQgbXVzdCBiZSB3cml0dGVuIG9yIGZzeW5jZWQpLgotICogTG9nd3J0UmVzdWx0IGlu ZGljYXRlcyB0aGUgYnl0ZSBwb3NpdGlvbnMgd2UgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4vZnN5bmNl ZC4KLSAqIFRoZXNlIHN0cnVjdHMgYXJlIGlkZW50aWNhbCBidXQgYXJlIGRlY2xhcmVkIHNlcGFy YXRlbHkgdG8gaW5kaWNhdGUgdGhlaXIKLSAqIHNsaWdodGx5IGRpZmZlcmVudCBmdW5jdGlvbnMu CisgKiBMb2dXcnRSZXN1bHQgaW5kaWNhdGVzIHRoZSBieXRlIHBvc2l0aW9ucyB3ZSBoYXZlIGFs cmVhZHkgd3JpdHRlbi9mc3luY2VkLgorICogVGhlc2Ugc3RydWN0cyBhcmUgc2ltaWxhciBidXQg YXJlIGRlY2xhcmVkIHNlcGFyYXRlbHkgdG8gaW5kaWNhdGUgdGhlaXIKKyAqIHNsaWdodGx5IGRp ZmZlcmVudCBmdW5jdGlvbnM7IGluIGFkZGl0aW9uLCB0aGUgbGF0dGVyIGlzIHJlYWQgYW5kIHdy aXR0ZW4KKyAqIHVzaW5nIGF0b21pYyBvcGVyYXRpb25zLgogICoKLSAqIFRvIHJlYWQgWExvZ0N0 bC0+TG9nd3J0UmVzdWx0LCB5b3UgbXVzdCBob2xkIGVpdGhlciBpbmZvX2xjayBvcgotICogV0FM V3JpdGVMb2NrLiAgVG8gdXBkYXRlIGl0LCB5b3UgbmVlZCB0byBob2xkIGJvdGggbG9ja3MuICBU aGUgcG9pbnQgb2YKLSAqIHRoaXMgYXJyYW5nZW1lbnQgaXMgdGhhdCB0aGUgdmFsdWUgY2FuIGJl IGV4YW1pbmVkIGJ5IGNvZGUgdGhhdCBhbHJlYWR5Ci0gKiBob2xkcyBXQUxXcml0ZUxvY2sgd2l0 aG91dCBuZWVkaW5nIHRvIGdyYWIgaW5mb19sY2sgYXMgd2VsbC4gIEluIGFkZGl0aW9uCi0gKiB0 byB0aGUgc2hhcmVkIHZhcmlhYmxlLCBlYWNoIGJhY2tlbmQgaGFzIGEgcHJpdmF0ZSBjb3B5IG9m IExvZ3dydFJlc3VsdCwKLSAqIHdoaWNoIGlzIHVwZGF0ZWQgd2hlbiBjb252ZW5pZW50LgorICog SW4gYWRkaXRpb24gdG8gdGhlIHNoYXJlZCB2YXJpYWJsZSwgZWFjaCBiYWNrZW5kIGhhcyBhIHBy aXZhdGUgY29weSBvZgorICogTG9nd3J0UmVzdWx0LCBlYWNoIG1lbWJlciBvZiB3aGljaCBpcyBz ZXBhcmF0ZWx5IHVwZGF0ZWQgd2hlbiBjb252ZW5pZW50LgogICoKICAqIFRoZSByZXF1ZXN0IGJv b2trZWVwaW5nIGlzIHNpbXBsZXI6IHRoZXJlIGlzIGEgc2hhcmVkIFhMb2dDdGwtPkxvZ3dydFJx c3QKICAqIChwcm90ZWN0ZWQgYnkgaW5mb19sY2spLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBjYWNo ZSBhbnkgY29waWVzIG9mIGl0LgpAQCAtMzI2LDYgKzMyMywxMiBAQCBzdGF0aWMgYm9vbCBkb1Bh Z2VXcml0ZXM7CiAgKi0tLS0tLS0tLS0KICAqLwogCit0eXBlZGVmIHN0cnVjdCBYTG9nd3J0QXRv bWljCit7CisJcGdfYXRvbWljX3VpbnQ2NCBXcml0ZTsJCS8qIGxhc3QgYnl0ZSArIDEgd3JpdHRl biBvdXQgKi8KKwlwZ19hdG9taWNfdWludDY0IEZsdXNoOwkJLyogbGFzdCBieXRlICsgMSBmbHVz aGVkICovCit9IFhMb2d3cnRBdG9taWM7CisKIHR5cGVkZWYgc3RydWN0IFhMb2d3cnRScXN0CiB7 CiAJWExvZ1JlY1B0cglXcml0ZTsJCQkvKiBsYXN0IGJ5dGUgKyAxIHRvIHdyaXRlIG91dCAqLwpA QCAtNDYxLDYgKzQ2NCw3IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dDdGxEYXRhCiB7CiAJWExvZ0N0 bEluc2VydCBJbnNlcnQ7CiAKKwlYTG9nd3J0QXRvbWljIExvZ3dydFJlc3VsdDsgLyogdXNlcyBh dG9taWNzICovCiAJLyogUHJvdGVjdGVkIGJ5IGluZm9fbGNrOiAqLwogCVhMb2d3cnRScXN0IExv Z3dydFJxc3Q7CiAJWExvZ1JlY1B0cglSZWRvUmVjUHRyOwkJLyogYSByZWNlbnQgY29weSBvZiBJ bnNlcnQtPlJlZG9SZWNQdHIgKi8KQEAgLTQ3OCwxMiArNDgyLDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg WExvZ0N0bERhdGEKIAlwZ190aW1lX3QJbGFzdFNlZ1N3aXRjaFRpbWU7CiAJWExvZ1JlY1B0cgls YXN0U2VnU3dpdGNoTFNOOwogCi0JLyoKLQkgKiBQcm90ZWN0ZWQgYnkgaW5mb19sY2sgYW5kIFdB TFdyaXRlTG9jayAoeW91IG11c3QgaG9sZCBlaXRoZXIgbG9jayB0bwotCSAqIHJlYWQgaXQsIGJ1 dCBib3RoIHRvIHVwZGF0ZSkKLQkgKi8KLQlYTG9nd3J0UmVzdWx0IExvZ3dydFJlc3VsdDsKLQog CS8qCiAJICogTGF0ZXN0IGluaXRpYWxpemVkIHBhZ2UgaW4gdGhlIGNhY2hlIChsYXN0IGJ5dGUg cG9zaXRpb24gKyAxKS4KIAkgKgpAQCAtNjEzLDcgKzYxMSw3IEBAIHN0YXRpYyBDb250cm9sRmls ZURhdGEgKkNvbnRyb2xGaWxlID0gTlVMTDsKIHN0YXRpYyBpbnQJVXNhYmxlQnl0ZXNJblNlZ21l bnQ7CiAKIC8qCi0gKiBQcml2YXRlLCBwb3NzaWJseSBvdXQtb2YtZGF0ZSBjb3B5IG9mIHNoYXJl ZCBMb2d3cnRSZXN1bHQuCisgKiBQcml2YXRlLCBwb3NzaWJseSBvdXQtb2YtZGF0ZSBjb3B5IG9m IHNoYXJlZCBYTG9nQ3RsLT5Mb2d3cnRSZXN1bHQuCiAgKiBTZWUgZGlzY3Vzc2lvbiBhYm92ZS4K ICAqLwogc3RhdGljIFhMb2d3cnRSZXN1bHQgTG9nd3J0UmVzdWx0ID0gezAsIDB9OwpAQCAtOTYz LDggKzk2MSw2IEBAIFhMb2dJbnNlcnRSZWNvcmQoWExvZ1JlY0RhdGEgKnJkYXRhLAogCQkvKiBh ZHZhbmNlIGdsb2JhbCByZXF1ZXN0IHRvIGluY2x1ZGUgbmV3IGJsb2NrKHMpICovCiAJCWlmIChY TG9nQ3RsLT5Mb2d3cnRScXN0LldyaXRlIDwgRW5kUG9zKQogCQkJWExvZ0N0bC0+TG9nd3J0UnFz dC5Xcml0ZSA9IEVuZFBvczsKLQkJLyogdXBkYXRlIGxvY2FsIHJlc3VsdCBjb3B5IHdoaWxlIEkg aGF2ZSB0aGUgY2hhbmNlICovCi0JCUxvZ3dydFJlc3VsdCA9IFhMb2dDdGwtPkxvZ3dydFJlc3Vs dDsKIAkJU3BpbkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CiAJfQogCkBAIC0xOTYz LDYgKzE5NTksNyBAQCBBZHZhbmNlWExJbnNlcnRCdWZmZXIoWExvZ1JlY1B0ciB1cHRvLCBUaW1l TGluZUlEIHRsaSwgYm9vbCBvcHBvcnR1bmlzdGljKQogCSAqIE5vdyB0aGF0IHdlIGhhdmUgdGhl IGxvY2ssIGNoZWNrIGlmIHNvbWVvbmUgaW5pdGlhbGl6ZWQgdGhlIHBhZ2UKIAkgKiBhbHJlYWR5 LgogCSAqLworCUxvZ3dydFJlc3VsdC5Xcml0ZSA9IHBnX2F0b21pY19yZWFkX3U2NCgmWExvZ0N0 bC0+TG9nd3J0UmVzdWx0LldyaXRlKTsKIAl3aGlsZSAodXB0byA+PSBYTG9nQ3RsLT5Jbml0aWFs aXplZFVwVG8gfHwgb3Bwb3J0dW5pc3RpYykKIAl7CiAJCW5leHRpZHggPSBYTG9nUmVjUHRyVG9C dWZJZHgoWExvZ0N0bC0+SW5pdGlhbGl6ZWRVcFRvKTsKQEAgLTE5ODIsMTcgKzE5NzksMTggQEAg QWR2YW5jZVhMSW5zZXJ0QnVmZmVyKFhMb2dSZWNQdHIgdXB0bywgVGltZUxpbmVJRCB0bGksIGJv b2wgb3Bwb3J0dW5pc3RpYykKIAkJCWlmIChvcHBvcnR1bmlzdGljKQogCQkJCWJyZWFrOwogCi0J CQkvKiBCZWZvcmUgd2FpdGluZywgZ2V0IGluZm9fbGNrIGFuZCB1cGRhdGUgTG9nd3J0UmVzdWx0 ICovCisJCQkvKiBBZHZhbmNlIHNoYXJlZCBtZW1vcnkgd3JpdGUgcmVxdWVzdCBwb3NpdGlvbiAq LwogCQkJU3BpbkxvY2tBY3F1aXJlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CiAJCQlpZiAoWExvZ0N0 bC0+TG9nd3J0UnFzdC5Xcml0ZSA8IE9sZFBhZ2VScXN0UHRyKQogCQkJCVhMb2dDdGwtPkxvZ3dy dFJxc3QuV3JpdGUgPSBPbGRQYWdlUnFzdFB0cjsKLQkJCUxvZ3dydFJlc3VsdCA9IFhMb2dDdGwt PkxvZ3dydFJlc3VsdDsKIAkJCVNwaW5Mb2NrUmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2spOwog CiAJCQkvKgotCQkJICogTm93IHRoYXQgd2UgaGF2ZSBhbiB1cC10by1kYXRlIExvZ3dydFJlc3Vs dCB2YWx1ZSwgc2VlIGlmIHdlCi0JCQkgKiBzdGlsbCBuZWVkIHRvIHdyaXRlIGl0IG9yIGlmIHNv bWVvbmUgZWxzZSBhbHJlYWR5IGRpZC4KKwkJCSAqIEJlZm9yZSB3YWl0aW5nLCB1cGRhdGUgTG9n d3J0UmVzdWx0LldyaXRlIGFuZCBzZWUgaWYgd2Ugc3RpbGwgbmVlZAorCQkJICogdG8gd3JpdGUg aXQgb3IgaWYgc29tZW9uZSBlbHNlIGFscmVhZHkgZGlkLgogCQkJICovCisJCQlMb2d3cnRSZXN1 bHQuV3JpdGUgPQorCQkJCXBnX2F0b21pY19yZWFkX3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0 LldyaXRlKTsKIAkJCWlmIChMb2d3cnRSZXN1bHQuV3JpdGUgPCBPbGRQYWdlUnFzdFB0cikKIAkJ CXsKIAkJCQkvKgpAQCAtMjAwNyw3ICsyMDA1LDggQEAgQWR2YW5jZVhMSW5zZXJ0QnVmZmVyKFhM b2dSZWNQdHIgdXB0bywgVGltZUxpbmVJRCB0bGksIGJvb2wgb3Bwb3J0dW5pc3RpYykKIAogCQkJ CUxXTG9ja0FjcXVpcmUoV0FMV3JpdGVMb2NrLCBMV19FWENMVVNJVkUpOwogCi0JCQkJTG9nd3J0 UmVzdWx0ID0gWExvZ0N0bC0+TG9nd3J0UmVzdWx0OworCQkJCUxvZ3dydFJlc3VsdC5Xcml0ZSA9 CisJCQkJCXBnX2F0b21pY19yZWFkX3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LldyaXRlKTsK IAkJCQlpZiAoTG9nd3J0UmVzdWx0LldyaXRlID49IE9sZFBhZ2VScXN0UHRyKQogCQkJCXsKIAkJ CQkJLyogT0ssIHNvbWVvbmUgd3JvdGUgaXQgYWxyZWFkeSAqLwpAQCAtMjI5MSw3ICsyMjkwLDcg QEAgWExvZ1dyaXRlKFhMb2d3cnRScXN0IFdyaXRlUnFzdCwgVGltZUxpbmVJRCB0bGksIGJvb2wg ZmxleGlibGUpCiAJLyoKIAkgKiBVcGRhdGUgbG9jYWwgTG9nd3J0UmVzdWx0IChjYWxsZXIgcHJv YmFibHkgZGlkIHRoaXMgYWxyZWFkeSwgYnV0Li4uKQogCSAqLwotCUxvZ3dydFJlc3VsdCA9IFhM b2dDdGwtPkxvZ3dydFJlc3VsdDsKKwlMb2d3cnRSZXN1bHQuV3JpdGUgPSBwZ19hdG9taWNfcmVh ZF91NjQoJlhMb2dDdGwtPkxvZ3dydFJlc3VsdC5Xcml0ZSk7CiAKIAkvKgogCSAqIFNpbmNlIHN1 Y2Nlc3NpdmUgcGFnZXMgaW4gdGhlIHhsb2cgY2FjaGUgYXJlIGNvbnNlY3V0aXZlbHkgYWxsb2Nh dGVkLApAQCAtMjUwNiw2ICsyNTA1LDEwIEBAIFhMb2dXcml0ZShYTG9nd3J0UnFzdCBXcml0ZVJx c3QsIFRpbWVMaW5lSUQgdGxpLCBib29sIGZsZXhpYmxlKQogCiAJQXNzZXJ0KG5wYWdlcyA9PSAw KTsKIAorCS8qIFB1Ymxpc2ggY3VycmVudCB3cml0ZSByZXN1bHQgcG9zaXRpb24gKi8KKwlwZ19h dG9taWNfbW9ub3RvbmljX2FkdmFuY2VfdTY0KCZYTG9nQ3RsLT5Mb2d3cnRSZXN1bHQuV3JpdGUs CisJCQkJCQkJCQlMb2d3cnRSZXN1bHQuV3JpdGUpOworCiAJLyoKIAkgKiBJZiBhc2tlZCB0byBm bHVzaCwgZG8gc28KIAkgKi8KQEAgLTI1NDIsMjIgKzI1NDUsOSBAQCBYTG9nV3JpdGUoWExvZ3dy dFJxc3QgV3JpdGVScXN0LCBUaW1lTGluZUlEIHRsaSwgYm9vbCBmbGV4aWJsZSkKIAkJTG9nd3J0 UmVzdWx0LkZsdXNoID0gTG9nd3J0UmVzdWx0LldyaXRlOwogCX0KIAotCS8qCi0JICogVXBkYXRl IHNoYXJlZC1tZW1vcnkgc3RhdHVzCi0JICoKLQkgKiBXZSBtYWtlIHN1cmUgdGhhdCB0aGUgc2hh cmVkICdyZXF1ZXN0JyB2YWx1ZXMgZG8gbm90IGZhbGwgYmVoaW5kIHRoZQotCSAqICdyZXN1bHQn IHZhbHVlcy4gIFRoaXMgaXMgbm90IGFic29sdXRlbHkgZXNzZW50aWFsLCBidXQgaXQgc2F2ZXMg c29tZQotCSAqIGNvZGUgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLgotCSAqLwotCXsKLQkJU3Bpbkxv Y2tBY3F1aXJlKCZYTG9nQ3RsLT5pbmZvX2xjayk7Ci0JCVhMb2dDdGwtPkxvZ3dydFJlc3VsdCA9 IExvZ3dydFJlc3VsdDsKLQkJaWYgKFhMb2dDdGwtPkxvZ3dydFJxc3QuV3JpdGUgPCBMb2d3cnRS ZXN1bHQuV3JpdGUpCi0JCQlYTG9nQ3RsLT5Mb2d3cnRScXN0LldyaXRlID0gTG9nd3J0UmVzdWx0 LldyaXRlOwotCQlpZiAoWExvZ0N0bC0+TG9nd3J0UnFzdC5GbHVzaCA8IExvZ3dydFJlc3VsdC5G bHVzaCkKLQkJCVhMb2dDdGwtPkxvZ3dydFJxc3QuRmx1c2ggPSBMb2d3cnRSZXN1bHQuRmx1c2g7 Ci0JCVNwaW5Mb2NrUmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2spOwotCX0KKwkvKiBQdWJsaXNo IGN1cnJlbnQgZmx1c2ggcmVzdWx0IHBvc2l0aW9uICovCisJcGdfYXRvbWljX21vbm90b25pY19h ZHZhbmNlX3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LkZsdXNoLAorCQkJCQkJCQkJTG9nd3J0 UmVzdWx0LkZsdXNoKTsKIH0KIAogLyoKQEAgLTI1NzMsOCArMjU2Myw4IEBAIFhMb2dTZXRBc3lu Y1hhY3RMU04oWExvZ1JlY1B0ciBhc3luY1hhY3RMU04pCiAJYm9vbAkJd2FrZXVwID0gZmFsc2U7 CiAJWExvZ1JlY1B0cglwcmV2QXN5bmNYYWN0TFNOOwogCisJTG9nd3J0UmVzdWx0LkZsdXNoID0g cGdfYXRvbWljX3JlYWRfdTY0KCZYTG9nQ3RsLT5Mb2d3cnRSZXN1bHQuRmx1c2gpOwogCVNwaW5M b2NrQWNxdWlyZSgmWExvZ0N0bC0+aW5mb19sY2spOwotCUxvZ3dydFJlc3VsdCA9IFhMb2dDdGwt PkxvZ3dydFJlc3VsdDsKIAlzbGVlcGluZyA9IFhMb2dDdGwtPldhbFdyaXRlclNsZWVwaW5nOwog CXByZXZBc3luY1hhY3RMU04gPSBYTG9nQ3RsLT5hc3luY1hhY3RMU047CiAJaWYgKFhMb2dDdGwt PmFzeW5jWGFjdExTTiA8IGFzeW5jWGFjdExTTikKQEAgLTI3ODIsMTQgKzI3NzIsMTQgQEAgWExv Z0ZsdXNoKFhMb2dSZWNQdHIgcmVjb3JkKQogCXsKIAkJWExvZ1JlY1B0cglpbnNlcnRwb3M7CiAK LQkJLyogcmVhZCBMb2d3cnRSZXN1bHQgYW5kIHVwZGF0ZSBsb2NhbCBzdGF0ZSAqLworCQkvKiBT a2lwIGFoZWFkIHdyaXRlIHJlcXVlc3QgcG9pbnRlciB0byBsYXRlc3Qgd3JpdHRlbiBnbG9iYWxs eSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJlhMb2dDdGwtPmluZm9fbGNrKTsKIAkJaWYgKFdyaXRl UnFzdFB0ciA8IFhMb2dDdGwtPkxvZ3dydFJxc3QuV3JpdGUpCiAJCQlXcml0ZVJxc3RQdHIgPSBY TG9nQ3RsLT5Mb2d3cnRScXN0LldyaXRlOwotCQlMb2d3cnRSZXN1bHQgPSBYTG9nQ3RsLT5Mb2d3 cnRSZXN1bHQ7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2spOwogCiAJCS8q IGRvbmUgYWxyZWFkeT8gKi8KKwkJTG9nd3J0UmVzdWx0LkZsdXNoID0gcGdfYXRvbWljX3JlYWRf dTY0KCZYTG9nQ3RsLT5Mb2d3cnRSZXN1bHQuRmx1c2gpOwogCQlpZiAocmVjb3JkIDw9IExvZ3dy dFJlc3VsdC5GbHVzaCkKIAkJCWJyZWFrOwogCkBAIC0yODE3LDcgKzI4MDcsNyBAQCBYTG9nRmx1 c2goWExvZ1JlY1B0ciByZWNvcmQpCiAJCX0KIAogCQkvKiBHb3QgdGhlIGxvY2s7IHJlY2hlY2sg d2hldGhlciByZXF1ZXN0IGlzIHNhdGlzZmllZCAqLwotCQlMb2d3cnRSZXN1bHQgPSBYTG9nQ3Rs LT5Mb2d3cnRSZXN1bHQ7CisJCUxvZ3dydFJlc3VsdC5GbHVzaCA9IHBnX2F0b21pY19yZWFkX3U2 NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LkZsdXNoKTsKIAkJaWYgKHJlY29yZCA8PSBMb2d3cnRS ZXN1bHQuRmx1c2gpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoV0FMV3JpdGVMb2NrKTsKQEAgLTI5 NDEsNyArMjkzMSw2IEBAIFhMb2dCYWNrZ3JvdW5kRmx1c2godm9pZCkKIAogCS8qIHJlYWQgTG9n d3J0UmVzdWx0IGFuZCB1cGRhdGUgbG9jYWwgc3RhdGUgKi8KIAlTcGluTG9ja0FjcXVpcmUoJlhM b2dDdGwtPmluZm9fbGNrKTsKLQlMb2d3cnRSZXN1bHQgPSBYTG9nQ3RsLT5Mb2d3cnRSZXN1bHQ7 CiAJV3JpdGVScXN0ID0gWExvZ0N0bC0+TG9nd3J0UnFzdDsKIAlTcGluTG9ja1JlbGVhc2UoJlhM b2dDdGwtPmluZm9fbGNrKTsKIApAQCAtMjk0OSw4ICsyOTM4LDEwIEBAIFhMb2dCYWNrZ3JvdW5k Rmx1c2godm9pZCkKIAlXcml0ZVJxc3QuV3JpdGUgLT0gV3JpdGVScXN0LldyaXRlICUgWExPR19C TENLU1o7CiAKIAkvKiBpZiB3ZSBoYXZlIGFscmVhZHkgZmx1c2hlZCB0aGF0IGZhciwgY29uc2lk ZXIgYXN5bmMgY29tbWl0IHJlY29yZHMgKi8KKwlMb2d3cnRSZXN1bHQuRmx1c2ggPSBwZ19hdG9t aWNfcmVhZF91NjQoJlhMb2dDdGwtPkxvZ3dydFJlc3VsdC5GbHVzaCk7CiAJaWYgKFdyaXRlUnFz dC5Xcml0ZSA8PSBMb2d3cnRSZXN1bHQuRmx1c2gpCiAJeworCQlwZ19tZW1vcnlfYmFycmllcigp OwogCQlTcGluTG9ja0FjcXVpcmUoJlhMb2dDdGwtPmluZm9fbGNrKTsKIAkJV3JpdGVScXN0Lldy aXRlID0gWExvZ0N0bC0+YXN5bmNYYWN0TFNOOwogCQlTcGluTG9ja1JlbGVhc2UoJlhMb2dDdGwt PmluZm9fbGNrKTsKQEAgLTI5NjYsNiArMjk1Nyw3IEBAIFhMb2dCYWNrZ3JvdW5kRmx1c2godm9p ZCkKIAl7CiAJCWlmIChvcGVuTG9nRmlsZSA+PSAwKQogCQl7CisJCQlMb2d3cnRSZXN1bHQuV3Jp dGUgPSBwZ19hdG9taWNfcmVhZF91NjQoJlhMb2dDdGwtPkxvZ3dydFJlc3VsdC5Xcml0ZSk7CiAJ CQlpZiAoIVhMQnl0ZUluUHJldlNlZyhMb2d3cnRSZXN1bHQuV3JpdGUsIG9wZW5Mb2dTZWdObywK IAkJCQkJCQkJIHdhbF9zZWdtZW50X3NpemUpKQogCQkJewpAQCAtMzAyOSw3ICszMDIxLDggQEAg WExvZ0JhY2tncm91bmRGbHVzaCh2b2lkKQogCS8qIG5vdyB3YWl0IGZvciBhbnkgaW4tcHJvZ3Jl c3MgaW5zZXJ0aW9ucyB0byBmaW5pc2ggYW5kIGdldCB3cml0ZSBsb2NrICovCiAJV2FpdFhMb2dJ bnNlcnRpb25zVG9GaW5pc2goV3JpdGVScXN0LldyaXRlKTsKIAlMV0xvY2tBY3F1aXJlKFdBTFdy aXRlTG9jaywgTFdfRVhDTFVTSVZFKTsKLQlMb2d3cnRSZXN1bHQgPSBYTG9nQ3RsLT5Mb2d3cnRS ZXN1bHQ7CisJTG9nd3J0UmVzdWx0LldyaXRlID0gcGdfYXRvbWljX3JlYWRfdTY0KCZYTG9nQ3Rs LT5Mb2d3cnRSZXN1bHQuV3JpdGUpOworCUxvZ3dydFJlc3VsdC5GbHVzaCA9IHBnX2F0b21pY19y ZWFkX3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LkZsdXNoKTsKIAlpZiAoV3JpdGVScXN0Lldy aXRlID4gTG9nd3J0UmVzdWx0LldyaXRlIHx8CiAJCVdyaXRlUnFzdC5GbHVzaCA+IExvZ3dydFJl c3VsdC5GbHVzaCkKIAl7CkBAIC0zMTE3LDkgKzMxMTAsNyBAQCBYTG9nTmVlZHNGbHVzaChYTG9n UmVjUHRyIHJlY29yZCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogcmVhZCBMb2d3cnRSZXN1bHQg YW5kIHVwZGF0ZSBsb2NhbCBzdGF0ZSAqLwotCVNwaW5Mb2NrQWNxdWlyZSgmWExvZ0N0bC0+aW5m b19sY2spOwotCUxvZ3dydFJlc3VsdCA9IFhMb2dDdGwtPkxvZ3dydFJlc3VsdDsKLQlTcGluTG9j a1JlbGVhc2UoJlhMb2dDdGwtPmluZm9fbGNrKTsKKwlMb2d3cnRSZXN1bHQuRmx1c2ggPSBwZ19h dG9taWNfcmVhZF91NjQoJlhMb2dDdGwtPkxvZ3dydFJlc3VsdC5GbHVzaCk7CiAKIAkvKiBjaGVj ayBhZ2FpbiAqLwogCWlmIChyZWNvcmQgPD0gTG9nd3J0UmVzdWx0LkZsdXNoKQpAQCAtNTkzNSwx MCArNTkyNiwxMyBAQCBTdGFydHVwWExPRyh2b2lkKQogCQlYTG9nQ3RsLT5Jbml0aWFsaXplZFVw VG8gPSBFbmRPZkxvZzsKIAl9CiAKKwkvKgorCSAqIFVwZGF0ZSBsb2NhbCBhbmQgc2hhcmVkIHN0 YXR1cy4gIFRoaXMgaXMgT0sgdG8gZG8gd2l0aG91dCBhbnkgbG9ja3MKKwkgKiBiZWNhdXNlIG5v IG90aGVyIHByb2Nlc3MgY2FuIGJlIHJlYWRpbmcgb3Igd3JpdGluZyBXQUwgeWV0LgorCSAqLwog CUxvZ3dydFJlc3VsdC5Xcml0ZSA9IExvZ3dydFJlc3VsdC5GbHVzaCA9IEVuZE9mTG9nOwotCi0J WExvZ0N0bC0+TG9nd3J0UmVzdWx0ID0gTG9nd3J0UmVzdWx0OwotCisJcGdfYXRvbWljX3dyaXRl X3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LldyaXRlLCBFbmRPZkxvZyk7CisJcGdfYXRvbWlj X3dyaXRlX3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LkZsdXNoLCBFbmRPZkxvZyk7CiAJWExv Z0N0bC0+TG9nd3J0UnFzdC5Xcml0ZSA9IEVuZE9mTG9nOwogCVhMb2dDdGwtPkxvZ3dydFJxc3Qu Rmx1c2ggPSBFbmRPZkxvZzsKIApAQCAtNjM3Nyw5ICs2MzcxLDcgQEAgR2V0Rmx1c2hSZWNQdHIo VGltZUxpbmVJRCAqaW5zZXJ0VExJKQogewogCUFzc2VydChYTG9nQ3RsLT5TaGFyZWRSZWNvdmVy eVN0YXRlID09IFJFQ09WRVJZX1NUQVRFX0RPTkUpOwogCi0JU3BpbkxvY2tBY3F1aXJlKCZYTG9n Q3RsLT5pbmZvX2xjayk7Ci0JTG9nd3J0UmVzdWx0ID0gWExvZ0N0bC0+TG9nd3J0UmVzdWx0Owot CVNwaW5Mb2NrUmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2spOworCUxvZ3dydFJlc3VsdC5GbHVz aCA9IHBnX2F0b21pY19yZWFkX3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LkZsdXNoKTsKIAog CS8qCiAJICogSWYgd2UncmUgd3JpdGluZyBhbmQgZmx1c2hpbmcgV0FMLCB0aGUgdGltZSBsaW5l IGNhbid0IGJlIGNoYW5naW5nLCBzbwpAQCAtOTI4Nyw5ICs5Mjc5LDcgQEAgR2V0WExvZ0luc2Vy dFJlY1B0cih2b2lkKQogWExvZ1JlY1B0cgogR2V0WExvZ1dyaXRlUmVjUHRyKHZvaWQpCiB7Ci0J U3BpbkxvY2tBY3F1aXJlKCZYTG9nQ3RsLT5pbmZvX2xjayk7Ci0JTG9nd3J0UmVzdWx0ID0gWExv Z0N0bC0+TG9nd3J0UmVzdWx0OwotCVNwaW5Mb2NrUmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2sp OworCUxvZ3dydFJlc3VsdC5Xcml0ZSA9IHBnX2F0b21pY19yZWFkX3U2NCgmWExvZ0N0bC0+TG9n d3J0UmVzdWx0LldyaXRlKTsKIAogCXJldHVybiBMb2d3cnRSZXN1bHQuV3JpdGU7CiB9CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wb3J0L2F0b21pY3MuaCBiL3NyYy9pbmNsdWRlL3BvcnQvYXRv bWljcy5oCmluZGV4IGJmMTUxMDM3ZjcuLmQ3YmRiNzRmMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BvcnQvYXRvbWljcy5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnQvYXRvbWljcy5oCkBAIC01 MTQsNiArNTE0LDM1IEBAIHBnX2F0b21pY19zdWJfZmV0Y2hfdTY0KHZvbGF0aWxlIHBnX2F0b21p Y191aW50NjQgKnB0ciwgaW50NjQgc3ViXykKIAlyZXR1cm4gcGdfYXRvbWljX3N1Yl9mZXRjaF91 NjRfaW1wbChwdHIsIHN1Yl8pOwogfQogCisvKgorICogTW9ub3RvbmljYWxseSBhZHZhbmNlIHRo ZSBnaXZlbiB2YXJpYWJsZSB1c2luZyBvbmx5IGF0b21pYyBvcGVyYXRpb25zIHVudGlsCisgKiBp dCdzIGF0IGxlYXN0IHRoZSB0YXJnZXQgdmFsdWUuCisgKgorICogRnVsbCBiYXJyaWVyIHNlbWFu dGljcyAoZXZlbiB3aGVuIHZhbHVlIGlzIHVuY2hhbmdlZCkuCisgKi8KK3N0YXRpYyBpbmxpbmUg dm9pZAorcGdfYXRvbWljX21vbm90b25pY19hZHZhbmNlX3U2NCh2b2xhdGlsZSBwZ19hdG9taWNf dWludDY0ICpwdHIsIHVpbnQ2NCB0YXJnZXRfKQoreworCXVpbnQ2NAkJY3VycnZhbDsKKworI2lm bmRlZiBQR19IQVZFX0FUT01JQ19VNjRfU0lNVUxBVElPTgorCUFzc2VydFBvaW50ZXJBbGlnbm1l bnQocHRyLCA4KTsKKyNlbmRpZgorCisJY3VycnZhbCA9IHBnX2F0b21pY19yZWFkX3U2NChwdHIp OworCWlmIChjdXJydmFsID49IHRhcmdldF8pCisJeworCQlwZ19tZW1vcnlfYmFycmllcigpOwor CQlyZXR1cm47CisJfQorCisJd2hpbGUgKGN1cnJ2YWwgPCB0YXJnZXRfKQorCXsKKwkJaWYgKHBn X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3U2NChwdHIsICZjdXJydmFsLCB0YXJnZXRfKSkKKwkJ CWJyZWFrOworCX0KK30KKwogI3VuZGVmIElOU0lERV9BVE9NSUNTX0gKIAogI2VuZGlmCQkJCQkJ CS8qIEFUT01JQ1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBkODA4YWFkOGIw Li5lZTBjYmQwYjczIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMzEyNiw2ICszMTI2 LDcgQEAgWExvZ1JlZG9BY3Rpb24KIFhMb2dTZWdObwogWExvZ1NvdXJjZQogWExvZ1N0YXRzCitY TG9nd3J0QXRvbWljCiBYTG9nd3J0UmVzdWx0CiBYTG9nd3J0UnFzdAogWFBWCi0tIAoyLjM0LjEK Cg== --=-v7iZKwtMm6nAMRfNNqLT Content-Disposition: attachment; filename="v11j-0002-fixup.patch" Content-Type: text/x-patch; name="v11j-0002-fixup.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0MjAwMTYyNmFmNDZiOTNhNmVmZjY5YzAwNzZkYWI2NWRlYWVhOTEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDE2IEZlYiAyMDI0IDEyOjE1OjQwIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTFqIDIvM10g Zml4dXAKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIHwgNCArKysrCiAx IGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CmluZGV4IDQ2Mzk0YzVkMzkuLjBhNjY3YTlkZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKQEAgLTk2Miw2ICs5NjIsOCBAQCBYTG9nSW5zZXJ0UmVjb3JkKFhMb2dSZWNEYXRhICpyZGF0 YSwKIAkJaWYgKFhMb2dDdGwtPkxvZ3dydFJxc3QuV3JpdGUgPCBFbmRQb3MpCiAJCQlYTG9nQ3Rs LT5Mb2d3cnRScXN0LldyaXRlID0gRW5kUG9zOwogCQlTcGluTG9ja1JlbGVhc2UoJlhMb2dDdGwt PmluZm9fbGNrKTsKKwkJTG9nd3J0UmVzdWx0LkZsdXNoID0gcGdfYXRvbWljX3JlYWRfdTY0KCZY TG9nQ3RsLT5Mb2d3cnRSZXN1bHQuRmx1c2gpOworCQlMb2d3cnRSZXN1bHQuV3JpdGUgPSBwZ19h dG9taWNfcmVhZF91NjQoJlhMb2dDdGwtPkxvZ3dydFJlc3VsdC5Xcml0ZSk7CiAJfQogCiAJLyoK QEAgLTYzNzEsNyArNjM3Myw5IEBAIEdldEZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKmluc2VydFRM SSkKIHsKIAlBc3NlcnQoWExvZ0N0bC0+U2hhcmVkUmVjb3ZlcnlTdGF0ZSA9PSBSRUNPVkVSWV9T VEFURV9ET05FKTsKIAorCXBnX3JlYWRfYmFycmllcigpOwogCUxvZ3dydFJlc3VsdC5GbHVzaCA9 IHBnX2F0b21pY19yZWFkX3U2NCgmWExvZ0N0bC0+TG9nd3J0UmVzdWx0LkZsdXNoKTsKKwlMb2d3 cnRSZXN1bHQuV3JpdGUgPSBwZ19hdG9taWNfcmVhZF91NjQoJlhMb2dDdGwtPkxvZ3dydFJlc3Vs dC5Xcml0ZSk7CiAKIAkvKgogCSAqIElmIHdlJ3JlIHdyaXRpbmcgYW5kIGZsdXNoaW5nIFdBTCwg dGhlIHRpbWUgbGluZSBjYW4ndCBiZSBjaGFuZ2luZywgc28KLS0gCjIuMzQuMQoK --=-v7iZKwtMm6nAMRfNNqLT Content-Disposition: attachment; filename*0=v11j-0003-Add-WAL-Copy-pointer-representing-data-copied-t.pat; filename*1=ch Content-Type: text/x-patch; name="v11j-0003-Add-WAL-Copy-pointer-representing-data-copied-t.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBmNDE5N2MzNDEzZmQ5YzEwZTk1NjUwOTUwNmIwYjBjNjM1NDc5NGUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDE2IEZlYiAyMDI0IDEyOjI0OjEzIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTFqIDMvM10g QWRkIFdBTCBDb3B5IHBvaW50ZXIsIHJlcHJlc2VudGluZyBkYXRhIGNvcGllZCB0bwogV0FMIGJ1 ZmZlcnMuCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyB8IDI1ICsrKysr KysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDBhNjY3YTlkZWEu LjQxYTdjYjJmYTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTMyNSw2ICszMjUs NyBAQCBzdGF0aWMgYm9vbCBkb1BhZ2VXcml0ZXM7CiAKIHR5cGVkZWYgc3RydWN0IFhMb2d3cnRB dG9taWMKIHsKKwlwZ19hdG9taWNfdWludDY0IENvcHk7CQkvKiBsYXN0IGJ5dGUgKyAxIGNvcGll ZCB0byBXQUwgYnVmZmVycyAqLwogCXBnX2F0b21pY191aW50NjQgV3JpdGU7CQkvKiBsYXN0IGJ5 dGUgKyAxIHdyaXR0ZW4gb3V0ICovCiAJcGdfYXRvbWljX3VpbnQ2NCBGbHVzaDsJCS8qIGxhc3Qg Ynl0ZSArIDEgZmx1c2hlZCAqLwogfSBYTG9nd3J0QXRvbWljOwpAQCAtMTQ5NSw2ICsxNDk2LDcg QEAgc3RhdGljIFhMb2dSZWNQdHIKIFdhaXRYTG9nSW5zZXJ0aW9uc1RvRmluaXNoKFhMb2dSZWNQ dHIgdXB0bykKIHsKIAl1aW50NjQJCWJ5dGVwb3M7CisJWExvZ1JlY1B0cgljb3B5cHRyOwogCVhM b2dSZWNQdHIJcmVzZXJ2ZWRVcHRvOwogCVhMb2dSZWNQdHIJZmluaXNoZWRVcHRvOwogCVhMb2dD dGxJbnNlcnQgKkluc2VydCA9ICZYTG9nQ3RsLT5JbnNlcnQ7CkBAIC0xNTAzLDYgKzE1MDUsMTIg QEAgV2FpdFhMb2dJbnNlcnRpb25zVG9GaW5pc2goWExvZ1JlY1B0ciB1cHRvKQogCWlmIChNeVBy b2MgPT0gTlVMTCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCB3YWl0IHdpdGhvdXQgYSBQR1BST0Mg c3RydWN0dXJlIik7CiAKKwkvKiBjaGVjayBpZiB0aGVyZSdzIGFueSB3b3JrIHRvIGRvICovCisJ cGdfcmVhZF9iYXJyaWVyKCk7CisJY29weXB0ciA9IHBnX2F0b21pY19yZWFkX3U2NCgmWExvZ0N0 bC0+TG9nd3J0UmVzdWx0LkNvcHkpOworCWlmICh1cHRvIDw9IGNvcHlwdHIpCisJCXJldHVybiBj b3B5cHRyOworCiAJLyogUmVhZCB0aGUgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8KIAlTcGlu TG9ja0FjcXVpcmUoJkluc2VydC0+aW5zZXJ0cG9zX2xjayk7CiAJYnl0ZXBvcyA9IEluc2VydC0+ Q3VyckJ5dGVQb3M7CkBAIC0xNTgyLDYgKzE1OTAsOSBAQCBXYWl0WExvZ0luc2VydGlvbnNUb0Zp bmlzaChYTG9nUmVjUHRyIHVwdG8pCiAJCWlmIChpbnNlcnRpbmdhdCAhPSBJbnZhbGlkWExvZ1Jl Y1B0ciAmJiBpbnNlcnRpbmdhdCA8IGZpbmlzaGVkVXB0bykKIAkJCWZpbmlzaGVkVXB0byA9IGlu c2VydGluZ2F0OwogCX0KKworCXBnX2F0b21pY19tb25vdG9uaWNfYWR2YW5jZV91NjQoJlhMb2dD dGwtPkxvZ3dydFJlc3VsdC5Db3B5LCBmaW5pc2hlZFVwdG8pOworCiAJcmV0dXJuIGZpbmlzaGVk VXB0bzsKIH0KIApAQCAtMTcyMywxMyArMTczNCwyNCBAQCBXQUxSZWFkRnJvbUJ1ZmZlcnMoY2hh ciAqZHN0YnVmLCBYTG9nUmVjUHRyIHN0YXJ0cHRyLCBTaXplIGNvdW50LAogewogCWNoYXIJICAg KnBkc3QgPSBkc3RidWY7CiAJWExvZ1JlY1B0cglyZWNwdHIgPSBzdGFydHB0cjsKKwlYTG9nUmVj UHRyCWNvcHlwdHI7CiAJU2l6ZQkJbmJ5dGVzID0gY291bnQ7CiAKIAlpZiAoUmVjb3ZlcnlJblBy b2dyZXNzKCkgfHwgdGxpICE9IEdldFdBTEluc2VydGlvblRpbWVMaW5lKCkpCiAJCXJldHVybiAw OwogCiAJQXNzZXJ0KCFYTG9nUmVjUHRySXNJbnZhbGlkKHN0YXJ0cHRyKSk7Ci0JQXNzZXJ0KHN0 YXJ0cHRyICsgY291bnQgPD0gTG9nd3J0UmVzdWx0LldyaXRlKTsKKworCS8qCisJICogQ2FsbGVy IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIGRhdGEgaGFzIGJlZW4gY29waWVkIHRv IFdBTAorCSAqIGJ1ZmZlcnMgYmVmb3JlIHdlIHRyeSB0byByZWFkIGl0LgorCSAqLworCXBnX3Jl YWRfYmFycmllcigpOworCWNvcHlwdHIgPSBwZ19hdG9taWNfcmVhZF91NjQoJlhMb2dDdGwtPkxv Z3dydFJlc3VsdC5Db3B5KTsKKwlpZiAoc3RhcnRwdHIgKyBjb3VudCA+IGNvcHlwdHIpCisJCWVy ZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJyZXF1ZXN0IHRvIHJlYWQgcGFzdCBlbmQgb2Yg Z2VuZXJhdGVkIFdBTDsgcmVxdWVzdCAlWC8lWCwgY3VycmVudCBwb3NpdGlvbiAlWC8lWCIsCisJ CQkJCQlMU05fRk9STUFUX0FSR1Moc3RhcnRwdHIgKyBjb3VudCksIExTTl9GT1JNQVRfQVJHUyhj b3B5cHRyKSkpKTsKIAogCS8qCiAJICogTG9vcCB0aHJvdWdoIHRoZSBidWZmZXJzIHdpdGhvdXQg YSBsb2NrLiBGb3IgZWFjaCBidWZmZXIsIGF0b21pY2FsbHkKQEAgLTU5MzMsNiArNTk1NSw3IEBA IFN0YXJ0dXBYTE9HKHZvaWQpCiAJICogYmVjYXVzZSBubyBvdGhlciBwcm9jZXNzIGNhbiBiZSBy ZWFkaW5nIG9yIHdyaXRpbmcgV0FMIHlldC4KIAkgKi8KIAlMb2d3cnRSZXN1bHQuV3JpdGUgPSBM b2d3cnRSZXN1bHQuRmx1c2ggPSBFbmRPZkxvZzsKKwlwZ19hdG9taWNfd3JpdGVfdTY0KCZYTG9n Q3RsLT5Mb2d3cnRSZXN1bHQuQ29weSwgRW5kT2ZMb2cpOwogCXBnX2F0b21pY193cml0ZV91NjQo JlhMb2dDdGwtPkxvZ3dydFJlc3VsdC5Xcml0ZSwgRW5kT2ZMb2cpOwogCXBnX2F0b21pY193cml0 ZV91NjQoJlhMb2dDdGwtPkxvZ3dydFJlc3VsdC5GbHVzaCwgRW5kT2ZMb2cpOwogCVhMb2dDdGwt PkxvZ3dydFJxc3QuV3JpdGUgPSBFbmRPZkxvZzsKLS0gCjIuMzQuMQoK --=-v7iZKwtMm6nAMRfNNqLT--