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 1tsAYL-00G36D-BG for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Mar 2025 01:06:33 +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 1tsAYK-00AkRQ-1V for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Mar 2025 01:06: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 1tsAYI-00AkRI-R0 for pgsql-hackers@lists.postgresql.org; Wed, 12 Mar 2025 01:06:31 +0000 Received: from mail-vk1-xa29.google.com ([2607:f8b0:4864:20::a29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tsAYF-002KCK-0P for pgsql-hackers@postgresql.org; Wed, 12 Mar 2025 01:06:28 +0000 Received: by mail-vk1-xa29.google.com with SMTP id 71dfb90a1353d-523efb24fb9so1880643e0c.3 for ; Tue, 11 Mar 2025 18:06:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741741586; x=1742346386; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=K1J3lrcseU5RD32DVJZLLQOJGq+urHfjHUuQx+dTZZk=; b=dKmQDATiVQ3jpNll1osj46sPouZu/LbsrWA7v6mYC/qw48ibEb6nOLrUqq8qjSQA8d wFV+oCht2t2XUwcKVdhpYj7eX/qd3SlO+S9TTHT9U2o9MxM55LEDhmgBJSD6zzVNl037 hyxok1cgBvh4unArem0IfHTcM9KQpbVHRsKwIsJWssAgzLARyo94U/ZbJu7bA+/PVcZV YaSSFkApzulU7z433dILlOyx4qyt/Xbx76qq6Wl3rasE5vNV8kVccUeAWHOrx5FfcgAo HDyu+R7+aucl6CRChROlDiPFM8baUDMB8uWf/ZuIDm3gmFXCqCnDpj0VB9GQvdI7VSkh pBSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741741586; x=1742346386; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=K1J3lrcseU5RD32DVJZLLQOJGq+urHfjHUuQx+dTZZk=; b=pbQ4s+pOd5z3Jf++DEyv8I0SZ1Gzv3VYfQaWUFHWyhPC1m16jm+svJ+dvRPIaau9gx 3G6m/2Qcy0dJPMFTA1kjg6g/WVOaomMdjwd67gsU+JGZkDpYyipjKyPnQQzhx6yLg6sd o+lP/Ft1L/fOVj9EDaCVHCKQIidi0bUR/mZKO5WFK3ljcNWrTF6aOoI78Hqfi3ZpvX/9 eMZD2e8vfG60lU6GqrLaRSAYfSNPDuXvCL3X04ZkwMRoWZ5aoG50lqCCi50FhJwrP+gV eKkDKEwTGJIFphrldRpAocQ1VXEaD22FPIbDN79shrplQE7CwyvvZ6FIO+gvR7p04clJ TyVQ== X-Forwarded-Encrypted: i=1; AJvYcCW50mvq5JeqdrQeYD4lzUPiXsWo1Y3TA2QpysEQw5AaxldcCfLGefI9wdDMcXxQj0RR4VqvIGQjZI4KMPFu@postgresql.org X-Gm-Message-State: AOJu0Yx/mY8bYqTKtwhYn5Qlo7spWIbiXkDdaz2qjtHY3Z+b59w67Q1V vS/SW9pEaB4FfEnwx5pR1QHBCSsa4keNqnStXqBccjCJpfVibW+WUe+SpSKq5MMEae63nICXQ8G /QBDZl+ujgYLC1fIub6wDNK0/Co4= X-Gm-Gg: ASbGncuczyTxuSr5LAzrAlQiRdxePYumBWyvHhALPQZ0fZNBTgjx6DSNUNDZwWppe8n 5PgXbvyRK0A9uq3PRTkv8X3piFfKvpjTnHjBizeth2it7O3BTPWmuV2hdf3Z3T6VYAoamktT1dg Y2txfZwSxZAQWIPHKPdwCaj83ulg== X-Google-Smtp-Source: AGHT+IEWCT9G7yfetVMGG3gXaW/ITnQysUriYONoSuZVNrKjCrkzKrZt3ElFGbLEs5O7H/stt5PuG0cgZVZwsOodAdw= X-Received: by 2002:a05:6122:910:b0:523:e175:4af1 with SMTP id 71dfb90a1353d-523e426529emr13147686e0c.6.1741741586374; Tue, 11 Mar 2025 18:06:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Wed, 12 Mar 2025 02:05:50 +0100 X-Gm-Features: AQ5f1JqnYPq9UNFhwCV0kJ2CWyg0BDxX2cP2BGvpr9zf3sKREE4HneTMpAhMpHk Message-ID: Subject: Re: [BUG?] check_exclusion_or_unique_constraint false negative To: "Zhijie Hou (Fujitsu)" , Peter Geoghegan Cc: Amit Kapila , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Andres Freund Content-Type: multipart/mixed; boundary="0000000000008c0a5a06301ad040" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008c0a5a06301ad040 Content-Type: multipart/alternative; boundary="0000000000008c0a5a06301ad03e" --0000000000008c0a5a06301ad03e Content-Type: text/plain; charset="UTF-8" Hello, everyone and Peter! Peter, I have added you because you may be interested in (or already know about) this btree-related issue. Short description of the problem: I noticed a concurrency issue in btree index scans that affects SnapshotDirty and SnapshotSelf scan types. When using these non-MVCC snapshot types, a scan could miss tuples if concurrent transactions delete existing tuples and insert new one with different TIDs on the same page. The problem occurs because: 1. The scan reads a page and caches its tuples in backend-local storage 2. A concurrent transaction deletes a tuple and inserts a new one with a different TID 3. The scan misses the new tuple because it was already deleted by a committed transaction and does not pass visibility check 4. But new version on the page is missed, because not in cached tuples This may cause issues with: - logical replication (RelationFindReplTupleByIndex fail) - invalid conflict message (MISSING instead of ORIGIN_DIFFERS), probably other issues with upcoming conflict resolution for logical replication - check_exclusion_or_unique_constraint false negative (but currently it does not cause any real issues as far as I can see) The fix implemented in this version of the patch: - Retains the read lock on a page for SnapshotDirty and SnapshotSelf scans until we're completely done with all tuples from that page - Introduces a new 'extra_unlock' field in BTScanPos to track when a lock is being held longer than usual - Updates documentation to explain this special locking behavior Yes, it may cause some degradation in performance because of that additional lock. Another possible idea is to use a fresh MVCC snapshot for such cases (but I think it is still better to fix or at least document that issue anyway). Best regards, Mikhail. > --0000000000008c0a5a06301ad03e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, everyone and=C2=A0Peter!

Peter, I have = added=C2=A0you because you may be interested in (or already know about) thi= s btree-related issue.

Short description of the problem:

I no= ticed a concurrency issue in btree index scans that affects SnapshotDirty a= nd SnapshotSelf scan types.
When using these non-MVCC snapshot ty= pes, a scan could miss tuples if concurrent transactions delete existing tu= ples and insert new one with different TIDs on the same page.

The pr= oblem occurs because:
=C2=A0 1. The scan reads a page and caches its tup= les in backend-local storage
=C2=A0 2. A concurrent transaction deletes = a tuple and inserts a new one with a different TID
=C2=A0 3. The scan mi= sses the new tuple because it was already deleted by a committed transactio= n and does not pass=C2=A0visibility check
=C2=A0 4. But new versi= on on the page is missed, because=C2=A0not in cached tuples

This may= cause issues with:
=C2=A0 - logical replication (RelationFindRep= lTupleByIndex fail) - invalid conflict message (MISSING instead of ORIGIN_D= IFFERS), probably other issues with upcoming conflict resolution for logica= l replication
=C2=A0 - check_exclusion_or_unique_constraint false= negative=C2=A0(but currently=C2=A0it does not cause any real issues as far= as I can see)

The fix implemented in this version of the patch:
= =C2=A0 - Retains the read lock on a page for SnapshotDirty and SnapshotSelf= scans until we're completely done with all tuples from that page
= =C2=A0 - Introduces a new 'extra_unlock' field in BTScanPos to trac= k when a lock is being held longer than usual
=C2=A0 - Updates documenta= tion to explain this special locking behavior

Yes,= it may cause some degradation in performance because of that additional lo= ck.
Another possible idea is to use a fresh MVCC snapshot for suc= h cases (but I think it is still better to fix or at least document that is= sue anyway).

Best regards,
Mikhail.
--0000000000008c0a5a06301ad03e-- --0000000000008c0a5a06301ad040 Content-Type: application/octet-stream; name="v5-0002-Fix-btree-index-scan-concurrency-issues-with-dirt.patch" Content-Disposition: attachment; filename="v5-0002-Fix-btree-index-scan-concurrency-issues-with-dirt.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m856smji0 RnJvbSBmMGQ5ZGZmYjMzZDFjMDY5ZjQ3ZmIwNWY2NjYyMzUxNTIwYmJjM2QyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxMiBNYXIgMjAyNSAwMDo1MzowMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMi8y XSBGaXggYnRyZWUgaW5kZXggc2NhbiBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBkaXJ0eQogc25h cHNob3RzCgpUaGlzIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSB3aGVyZSBub24tTVZDQyBpbmRl eCBzY2FucyB1c2luZyBTbmFwc2hvdERpcnR5Cm9yIFNuYXBzaG90U2VsZiBjb3VsZCBtaXNzIHR1 cGxlcyBkdWUgdG8gY29uY3VycmVudCBtb2RpZmljYXRpb25zLiBUaGUgZml4CnJldGFpbnMgcmVh ZCBsb2NrcyBvbiBwYWdlcyBmb3IgdGhlc2Ugc3BlY2lhbCBzbmFwc2hvdCB0eXBlcyB1bnRpbCB0 aGUgc2NhbgppcyBkb25lIHdpdGggdGhlIHBhZ2UncyB0dXBsZXMsIHByZXZlbnRpbmcgY29uY3Vy cmVudCBtb2RpZmljYXRpb25zIGZyb20KY2F1c2luZyBpbmNvbnNpc3RlbnQgcmVzdWx0cy4KClVw ZGF0ZWQgUkVBRE1FIHRvIGRvY3VtZW50IHRoaXMgc3BlY2lhbCBjYXNlIGluIHRoZSBidHJlZSBs b2NraW5nIG1lY2hhbmlzbS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL1JFQURNRSAg ICAgIHwgMTMgKysrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYyAg ICB8IDE3ICsrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNo LmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0dXRpbHMuYyAgfCAgOCArKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUu aCAgICAgICAgICAgfCAgMyArKysKIDUgZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL1JF QURNRSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvUkVBRE1FCmluZGV4IDUzZDRhNjFkYzNm Li5hOTI4MDQxNTYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFE TUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKQEAgLTg1LDcgKzg1LDgg QEAgbW92ZSByaWdodCB1bnRpbCB3ZSBmaW5kIGEgcGFnZSB3aG9zZSByaWdodC1saW5rIG1hdGNo ZXMgdGhlIHBhZ2Ugd2UKIGNhbWUgZnJvbS4gIChBY3R1YWxseSwgaXQncyBldmVuIGhhcmRlciB0 aGFuIHRoYXQ7IHNlZSBwYWdlIGRlbGV0aW9uCiBkaXNjdXNzaW9uIGJlbG93LikKIAotUGFnZSBy ZWFkIGxvY2tzIGFyZSBoZWxkIG9ubHkgZm9yIGFzIGxvbmcgYXMgYSBzY2FuIGlzIGV4YW1pbmlu ZyBhIHBhZ2UuCitQYWdlIHJlYWQgbG9ja3MgYXJlIGhlbGQgb25seSBmb3IgYXMgbG9uZyBhcyBh IHNjYW4gaXMgZXhhbWluaW5nIGEgcGFnZQorKHdpdGggZXhjZXB0aW9uIGZvciBTbmFwc2hvdERp cnR5IGFuZCBTbmFwc2hvdFNlbGYgc2NhbnMgLSBzZWUgYmVsb3cpLgogVG8gbWluaW1pemUgbG9j ay91bmxvY2sgdHJhZmZpYywgYW4gaW5kZXggc2NhbiBhbHdheXMgc2VhcmNoZXMgYSBsZWFmIHBh Z2UKIHRvIGlkZW50aWZ5IGFsbCB0aGUgbWF0Y2hpbmcgaXRlbXMgYXQgb25jZSwgY29weWluZyB0 aGVpciBoZWFwIHR1cGxlIElEcwogaW50byBiYWNrZW5kLWxvY2FsIHN0b3JhZ2UuICBUaGUgaGVh cCB0dXBsZSBJRHMgYXJlIHRoZW4gcHJvY2Vzc2VkIHdoaWxlCkBAIC0xMDMsNiArMTA0LDE2IEBA IFdlIGFsc28gcmVtZW1iZXIgdGhlIGxlZnQtbGluaywgYW5kIGZvbGxvdyBpdCB3aGVuIHRoZSBz Y2FuIG1vdmVzIGJhY2t3YXJkcwogKHRob3VnaCB0aGlzIHJlcXVpcmVzIGV4dHJhIGhhbmRsaW5n IHRvIGFjY291bnQgZm9yIGNvbmN1cnJlbnQgc3BsaXRzIG9mCiB0aGUgbGVmdCBzaWJsaW5nOyBz ZWUgZGV0YWlsZWQgbW92ZS1sZWZ0IGFsZ29yaXRobSBiZWxvdykuCiAKK0Rlc3BpdGUgdGhlIGRl c2NyaWJlZCBtZWNoYW5pY3MgaW4gcGxhY2UsIGluY29uc2lzdGVudCByZXN1bHRzIG1heSBzdGls bCBvY2N1cgorZHVyaW5nIG5vbi1NVkNDIHNjYW5zIChTbmFwc2hvdERpcnR5IGFuZCBTbmFwc2hv dFNlbGYpLiBUaGlzIGlzc3VlIGNhbiBvY2N1ciBpZiBhIAorY29uY3VycmVudCB0cmFuc2FjdGlv biBkZWxldGVzIGEgdHVwbGUgYW5kIGluc2VydHMgYSBuZXcgdHVwbGUgd2l0aCBhIG5ldyBUSUQg aW4gdGhlIAorc2FtZSBwYWdlLiBJZiB0aGUgc2NhbiBoYXMgYWxyZWFkeSB2aXNpdGVkIHRoZSBw YWdlIGFuZCBjYWNoZWQgaXRzIGNvbnRlbnQgaW4gdGhlCitiYWNrZW5kLWxvY2FsIHN0b3JhZ2Us IGl0IG1pZ2h0IHNraXAgdGhlIG9sZCB0dXBsZSBkdWUgdG8gZGVsZXRpb24gYW5kIG1pc3MgdGhl IG5ldyAKK3R1cGxlIGJlY2F1c2UgdGhlIHNjYW4gZG9lcyBub3QgcmUtcmVhZCB0aGUgcGFnZS4g VG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBmb3IgCitTbmFwc2hvdERpcnR5IGFuZCBTbmFwc2hvdFNl bGYgc2NhbnMsIHdlIHJldGFpbiB0aGUgcmVhZCBsb2NrIG9uIHRoZSBwYWdlIHVudGlsIAord2Un cmUgY29tcGxldGVseSBkb25lIHByb2Nlc3NpbmcgYWxsIHRoZSB0dXBsZXMgZnJvbSB0aGF0IHBh Z2UsIHByZXZlbnRpbmcgCitjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdGhhdCBjb3VsZCBsZWFk IHRvIGluY29uc2lzdGVudCByZXN1bHRzLgorCiBJbiBtb3N0IGNhc2VzIHdlIHJlbGVhc2Ugb3Vy IGxvY2sgYW5kIHBpbiBvbiBhIHBhZ2UgYmVmb3JlIGF0dGVtcHRpbmcKIHRvIGFjcXVpcmUgcGlu IGFuZCBsb2NrIG9uIHRoZSBwYWdlIHdlIGFyZSBtb3ZpbmcgdG8uICBJbiBhIGZldyBwbGFjZXMK IGl0IGlzIG5lY2Vzc2FyeSB0byBsb2NrIHRoZSBuZXh0IHBhZ2UgYmVmb3JlIHJlbGVhc2luZyB0 aGUgY3VycmVudCBvbmUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwppbmRleCA0NWVhNmFm YmExZC4uYmQyYzBkNTdkZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwpAQCAtMzcz LDYgKzM3MywxMiBAQCBidHJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2Nhbmtl eSwgaW50IG5zY2Fua2V5cywKIAkJLyogQmVmb3JlIGxlYXZpbmcgY3VycmVudCBwYWdlLCBkZWFs IHdpdGggYW55IGtpbGxlZCBpdGVtcyAqLwogCQlpZiAoc28tPm51bUtpbGxlZCA+IDApCiAJCQlf YnRfa2lsbGl0ZW1zKHNjYW4pOworCQkvKiBSZWxlYXNlIGFueSBleHRlbmRlZCBsb2NrIGhlbGQg Zm9yIFNuYXBzaG90RGlydHkvU2VsZiBzY2FucyAqLworCQlpZiAoc28tPmN1cnJQb3MuZXh0cmFf dW5sb2NrKQorCQl7CisJCQlfYnRfdW5sb2NrYnVmKHNjYW4tPmluZGV4UmVsYXRpb24sIHNvLT5j dXJyUG9zLmJ1Zik7CisJCQlzby0+Y3VyclBvcy5leHRyYV91bmxvY2sgPSBmYWxzZTsKKwkJfQog CQlCVFNjYW5Qb3NVbnBpbklmUGlubmVkKHNvLT5jdXJyUG9zKTsKIAkJQlRTY2FuUG9zSW52YWxp ZGF0ZShzby0+Y3VyclBvcyk7CiAJfQpAQCAtNDI5LDYgKzQzNSwxMiBAQCBidGVuZHNjYW4oSW5k ZXhTY2FuRGVzYyBzY2FuKQogCQkvKiBCZWZvcmUgbGVhdmluZyBjdXJyZW50IHBhZ2UsIGRlYWwg d2l0aCBhbnkga2lsbGVkIGl0ZW1zICovCiAJCWlmIChzby0+bnVtS2lsbGVkID4gMCkKIAkJCV9i dF9raWxsaXRlbXMoc2Nhbik7CisJCS8qIFJlbGVhc2UgYW55IGV4dGVuZGVkIGxvY2sgaGVsZCBm b3IgU25hcHNob3REaXJ0eS9TZWxmIHNjYW5zICovCisJCWlmIChzby0+Y3VyclBvcy5leHRyYV91 bmxvY2spCisJCXsKKwkJCV9idF91bmxvY2tidWYoc2Nhbi0+aW5kZXhSZWxhdGlvbiwgc28tPmN1 cnJQb3MuYnVmKTsKKwkJCXNvLT5jdXJyUG9zLmV4dHJhX3VubG9jayA9IGZhbHNlOworCQl9CiAJ CUJUU2NhblBvc1VucGluSWZQaW5uZWQoc28tPmN1cnJQb3MpOwogCX0KIApAQCAtNTA5LDYgKzUy MSwxMSBAQCBidHJlc3RycG9zKEluZGV4U2NhbkRlc2Mgc2NhbikKIAkJCS8qIEJlZm9yZSBsZWF2 aW5nIGN1cnJlbnQgcGFnZSwgZGVhbCB3aXRoIGFueSBraWxsZWQgaXRlbXMgKi8KIAkJCWlmIChz by0+bnVtS2lsbGVkID4gMCkKIAkJCQlfYnRfa2lsbGl0ZW1zKHNjYW4pOworCQkJaWYgKHNvLT5j dXJyUG9zLmV4dHJhX3VubG9jaykKKwkJCXsKKwkJCQlfYnRfdW5sb2NrYnVmKHNjYW4tPmluZGV4 UmVsYXRpb24sIHNvLT5jdXJyUG9zLmJ1Zik7CisJCQkJc28tPmN1cnJQb3MuZXh0cmFfdW5sb2Nr ID0gZmFsc2U7CisJCQl9CiAJCQlCVFNjYW5Qb3NVbnBpbklmUGlubmVkKHNvLT5jdXJyUG9zKTsK IAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYwppbmRleCA0NzJjZTA2ZjE5 MC4uMGFiODljNzcwY2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c2VhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYwpAQCAt NjEsMTEgKzYxLDIyIEBAIHN0YXRpYyBib29sIF9idF9lbmRwb2ludChJbmRleFNjYW5EZXNjIHNj YW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKICAqIFRoaXMgd2lsbCBwcmV2ZW50IHZhY3V1bSBmcm9t IHN0YWxsaW5nIGluIGEgYmxvY2tlZCBzdGF0ZSB0cnlpbmcgdG8gcmVhZCBhCiAgKiBwYWdlIHdo ZW4gYSBjdXJzb3IgaXMgc2l0dGluZyBvbiBpdC4KICAqCisgKiBGb3IgU25hcHNob3REaXJ0eSBh bmQgU25hcHNob3RTZWxmIHNjYW5zLCB3ZSBkb24ndCBhY3R1YWxseSB1bmxvY2sgdGhlIGJ1ZmZl cgorICogaGVyZSwgYnV0IGluc3RlYWQgc2V0IGV4dHJhX3VubG9jayB0byBpbmRpY2F0ZSB0aGF0 IHRoZSBsb2NrIHNob3VsZCBiZSBoZWxkCisgKiB1bnRpbCB3ZSdyZSBjb21wbGV0ZWx5IGRvbmUg d2l0aCB0aGlzIHBhZ2UuIFRoaXMgcHJldmVudHMgY29uY3VycmVudAorICogbW9kaWZpY2F0aW9u cyBmcm9tIGNhdXNpbmcgaW5jb25zaXN0ZW50IHJlc3VsdHMgZHVyaW5nIG5vbi1NVkNDIHNjYW5z LgorICoKICAqIFNlZSBuYnRyZWUvUkVBRE1FIHNlY3Rpb24gb24gbWFraW5nIGNvbmN1cnJlbnQg VElEIHJlY3ljbGluZyBzYWZlLgogICovCiBzdGF0aWMgdm9pZAogX2J0X2Ryb3BfbG9ja19hbmRf bWF5YmVfcGluKEluZGV4U2NhbkRlc2Mgc2NhbiwgQlRTY2FuUG9zIHNwKQogeworCWlmIChzY2Fu LT54c19zbmFwc2hvdC0+c25hcHNob3RfdHlwZSA9PSBTTkFQU0hPVF9ESVJUWSB8fAorCQlzY2Fu LT54c19zbmFwc2hvdC0+c25hcHNob3RfdHlwZSA9PSBTTkFQU0hPVF9TRUxGKQorCXsKKwkJc3At PmV4dHJhX3VubG9jayA9IHRydWU7CisJCXJldHVybjsKKwl9CiAJX2J0X3VubG9ja2J1ZihzY2Fu LT5pbmRleFJlbGF0aW9uLCBzcC0+YnVmKTsKIAogCWlmIChJc01WQ0NTbmFwc2hvdChzY2FuLT54 c19zbmFwc2hvdCkgJiYKQEAgLTE0MzQsNyArMTQ0NSw4IEBAIF9idF9maXJzdChJbmRleFNjYW5E ZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogICoJX2J0X25leHQoKSAtLSBHZXQgdGhlIG5l eHQgaXRlbSBpbiBhIHNjYW4uCiAgKgogICoJCU9uIGVudHJ5LCBzby0+Y3VyclBvcyBkZXNjcmli ZXMgdGhlIGN1cnJlbnQgcGFnZSwgd2hpY2ggbWF5IGJlIHBpbm5lZAotICoJCWJ1dCBpcyBub3Qg bG9ja2VkLCBhbmQgc28tPmN1cnJQb3MuaXRlbUluZGV4IGlkZW50aWZpZXMgd2hpY2ggaXRlbSB3 YXMKKyAqCQlidXQgaXMgbm90IGxvY2tlZCAoZXhjZXB0IGZvciBTbmFwc2hvdERpcnR5IGFuZCBT bmFwc2hvdFNlbGYgc2NhbnMsIHdoZXJlCisgKgkJdGhlIHBhZ2UgcmVtYWlucyBsb2NrZWQpLCBh bmQgc28tPmN1cnJQb3MuaXRlbUluZGV4IGlkZW50aWZpZXMgd2hpY2ggaXRlbSB3YXMKICAqCQlw cmV2aW91c2x5IHJldHVybmVkLgogICoKICAqCQlPbiBzdWNjZXNzIGV4aXQsIHNvLT5jdXJyUG9z IGlzIHVwZGF0ZWQgYXMgbmVlZGVkLCBhbmQgX2J0X3JldHVybml0ZW0KQEAgLTIwMDIsMTAgKzIw MTQsMTEgQEAgX2J0X3JldHVybml0ZW0oSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFNjYW5PcGFxdWUg c28pCiAgKgogICogV3JhcHBlciBvbiBfYnRfcmVhZG5leHRwYWdlIHRoYXQgcGVyZm9ybXMgZmlu YWwgc3RlcHMgZm9yIHRoZSBjdXJyZW50IHBhZ2UuCiAgKgotICogT24gZW50cnksIGlmIHNvLT5j dXJyUG9zLmJ1ZiBpcyB2YWxpZCB0aGUgYnVmZmVyIGlzIHBpbm5lZCBidXQgbm90IGxvY2tlZC4K LSAqIElmIHRoZXJlJ3Mgbm8gcGluIGhlbGQsIGl0J3MgYmVjYXVzZSBfYnRfZHJvcF9sb2NrX2Fu ZF9tYXliZV9waW4gZHJvcHBlZAotICogdGhlIHBpbiBlYWdlcmx5IGVhcmxpZXIgb24uICBUaGUg c2NhbiBtdXN0IGhhdmUgc28tPmN1cnJQb3MuY3VyclBhZ2Ugc2V0IHRvCi0gKiBhIHZhbGlkIGJs b2NrLCBpbiBhbnkgY2FzZS4KKyAqIE9uIGVudHJ5LCBpZiBzby0+Y3VyclBvcy5idWYgaXMgdmFs aWQgdGhlIGJ1ZmZlciBpcyBwaW5uZWQgYnV0IG5vdCBsb2NrZWQsCisgKiBleGNlcHQgZm9yIFNu YXBzaG90RGlydHkgYW5kIFNuYXBzaG90U2VsZiBzY2FucyB3aGVyZSB0aGUgYnVmZmVyIHJlbWFp bnMgbG9ja2VkCisgKiB1bnRpbCB3ZSdyZSBkb25lIHdpdGggYWxsIHR1cGxlcyBmcm9tIHRoZSBw YWdlLiBJZiB0aGVyZSdzIG5vIHBpbiBoZWxkLCBpdCdzCisgKiBiZWNhdXNlIF9idF9kcm9wX2xv Y2tfYW5kX21heWJlX3BpbiBkcm9wcGVkIHRoZSBwaW4gZWFnZXJseSBlYXJsaWVyIG9uLgorICog VGhlIHNjYW4gbXVzdCBoYXZlIHNvLT5jdXJyUG9zLmN1cnJQYWdlIHNldCB0byBhIHZhbGlkIGJs b2NrLCBpbiBhbnkgY2FzZS4KICAqLwogc3RhdGljIGJvb2wKIF9idF9zdGVwcGFnZShJbmRleFNj YW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQpAQCAtMjA2NCw4ICsyMDc3LDIwIEBAIF9i dF9zdGVwcGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCiAJCS8q IG1hcmsvcmVzdG9yZSBub3Qgc3VwcG9ydGVkIGJ5IHBhcmFsbGVsIHNjYW5zICovCiAJCUFzc2Vy dCghc2Nhbi0+cGFyYWxsZWxfc2Nhbik7CisJCUFzc2VydChzY2FuLT54c19zbmFwc2hvdC0+c25h cHNob3RfdHlwZSAhPSBTTkFQU0hPVF9ESVJUWSk7CisJCUFzc2VydChzY2FuLT54c19zbmFwc2hv dC0+c25hcHNob3RfdHlwZSAhPSBTTkFQU0hPVF9TRUxGKTsKIAl9CiAKKwkvKiAKKwkgKiBGb3Ig U25hcHNob3REaXJ0eS9TZWxmIHNjYW5zLCB3ZSBrZXB0IHRoZSByZWFkIGxvY2sgYWZ0ZXIgcHJv Y2Vzc2luZworCSAqIHRoZSBwYWdlJ3MgdHVwbGVzIChzZWUgX2J0X2Ryb3BfbG9ja19hbmRfbWF5 YmVfcGluKS4gTm93IHRoYXQgd2UncmUgCisJICogbW92aW5nIHRvIGFub3RoZXIgcGFnZSwgd2Ug bmVlZCB0byBleHBsaWNpdGx5IHJlbGVhc2UgdGhhdCBsb2NrLgorCSAqLworCWlmIChzby0+Y3Vy clBvcy5leHRyYV91bmxvY2spCisJeworCQlfYnRfdW5sb2NrYnVmKHNjYW4tPmluZGV4UmVsYXRp b24sIHNvLT5jdXJyUG9zLmJ1Zik7CisJCXNvLT5jdXJyUG9zLmV4dHJhX3VubG9jayA9IGZhbHNl OworCX0KIAlCVFNjYW5Qb3NVbnBpbklmUGlubmVkKHNvLT5jdXJyUG9zKTsKIAogCS8qIFdhbGsg dG8gdGhlIG5leHQgcGFnZSB3aXRoIGRhdGEgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRp bHMuYwppbmRleCA2OTNlNDNjNjc0Yi4uMjcwNGYxZTQ2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHV0aWxzLmMKQEAgLTIzNTksMTMgKzIzNTksMTcgQEAgX2J0X2tpbGxpdGVtcyhJbmRl eFNjYW5EZXNjIHNjYW4pCiAJCSAqIExTTi4KIAkJICovCiAJCWRyb3BwZWRwaW4gPSBmYWxzZTsK LQkJX2J0X2xvY2tidWYoc2Nhbi0+aW5kZXhSZWxhdGlvbiwgc28tPmN1cnJQb3MuYnVmLCBCVF9S RUFEKTsKKwkJLyogRm9yIFNuYXBzaG90RGlydHkvU2VsZiBzY2FucywgdGhlIGJ1ZmZlciBpcyBh bHJlYWR5IGxvY2tlZCAqLworCQlpZiAoIXNvLT5jdXJyUG9zLmV4dHJhX3VubG9jaykKKwkJCV9i dF9sb2NrYnVmKHNjYW4tPmluZGV4UmVsYXRpb24sIHNvLT5jdXJyUG9zLmJ1ZiwgQlRfUkVBRCk7 CiAKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uoc28tPmN1cnJQb3MuYnVmKTsKIAl9CiAJZWxzZQog CXsKIAkJQnVmZmVyCQlidWY7CisJCS8qIGV4dHJhX3VubG9jayBzaG91bGQgbmV2ZXIgYmUgc2V0 IHdpdGhvdXQgYSB2YWxpZCBidWZmZXIgcGluICovCisJCUFzc2VydCghc28tPmN1cnJQb3MuZXh0 cmFfdW5sb2NrKTsKIAogCQlkcm9wcGVkcGluID0gdHJ1ZTsKIAkJLyogQXR0ZW1wdCB0byByZS1y ZWFkIHRoZSBidWZmZXIsIGdldHRpbmcgcGluIGFuZCBsb2NrLiAqLwpAQCAtMjUwMiw2ICsyNTA2 LDggQEAgX2J0X2tpbGxpdGVtcyhJbmRleFNjYW5EZXNjIHNjYW4pCiAJfQogCiAJX2J0X3VubG9j a2J1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3VyclBvcy5idWYpOworCS8qIFJlc2V0IHRo ZSBleHRyYV91bmxvY2sgZmxhZyBzaW5jZSB3ZSd2ZSBub3cgcmVsZWFzZWQgdGhlIGxvY2sgKi8K Kwlzby0+Y3VyclBvcy5leHRyYV91bmxvY2sgPSBmYWxzZTsKIH0KIAogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgK aW5kZXggZTRmZGVjYTM0MDIuLjA2N2QxY2FmOWNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC05NTYs NiArOTU2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTY2FuUG9zSXRlbQkvKiB3aGF0IHdlIHJlbWVt YmVyIGFib3V0IGVhY2ggbWF0Y2ggKi8KIHR5cGVkZWYgc3RydWN0IEJUU2NhblBvc0RhdGEKIHsK IAlCdWZmZXIJCWJ1ZjsJCQkvKiBjdXJyUGFnZSBidWYgKGludmFsaWQgbWVhbnMgdW5waW5uZWQp ICovCisJYm9vbAkJZXh0cmFfdW5sb2NrOwkvKiBmb3IgU25hcHNob3REaXJ0eS9TZWxmLCByZWFk IGxvY2sgaXMgaGVsZCBldmVuIGFmdGVyIF9idF9kcm9wX2xvY2tfYW5kX21heWJlX3BpbiAqLwog CiAJLyogcGFnZSBkZXRhaWxzIGFzIG9mIHRoZSBzYXZlZCBwb3NpdGlvbidzIGNhbGwgdG8gX2J0 X3JlYWRwYWdlICovCiAJQmxvY2tOdW1iZXIgY3VyclBhZ2U7CQkvKiBwYWdlIHJlZmVyZW5jZWQg YnkgaXRlbXMgYXJyYXkgKi8KQEAgLTEwMDMsNiArMTAwNCw3IEBAIHR5cGVkZWYgQlRTY2FuUG9z RGF0YSAqQlRTY2FuUG9zOwogKQogI2RlZmluZSBCVFNjYW5Qb3NVbnBpbihzY2FucG9zKSBcCiAJ ZG8geyBcCisJCUFzc2VydCghKHNjYW5wb3MpLmV4dHJhX3VubG9jayk7IFwKIAkJUmVsZWFzZUJ1 ZmZlcigoc2NhbnBvcykuYnVmKTsgXAogCQkoc2NhbnBvcykuYnVmID0gSW52YWxpZEJ1ZmZlcjsg XAogCX0gd2hpbGUgKDApCkBAIC0xMDIyLDYgKzEwMjQsNyBAQCB0eXBlZGVmIEJUU2NhblBvc0Rh dGEgKkJUU2NhblBvczsKIAlkbyB7IFwKIAkJKHNjYW5wb3MpLmJ1ZiA9IEludmFsaWRCdWZmZXI7 IFwKIAkJKHNjYW5wb3MpLmN1cnJQYWdlID0gSW52YWxpZEJsb2NrTnVtYmVyOyBcCisJCShzY2Fu cG9zKS5leHRyYV91bmxvY2sgPSBmYWxzZTsgXAogCX0gd2hpbGUgKDApCiAKIC8qIFdlIG5lZWQg b25lIG9mIHRoZXNlIGZvciBlYWNoIGVxdWFsaXR5LXR5cGUgU0tfU0VBUkNIQVJSQVkgc2NhbiBr ZXkgKi8KLS0gCjIuNDMuMAoK --0000000000008c0a5a06301ad040 Content-Type: application/octet-stream; name="v5-0001-Add-isolation-test-to-reproduce-dirty-snapshot-sc.patch" Content-Disposition: attachment; filename="v5-0001-Add-isolation-test-to-reproduce-dirty-snapshot-sc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m856smjn1 RnJvbSAwODVmNTYzNWMxZGRiYTAyYjc0YzJiZGM3NTg4ZDU1NmNjMGJkMTM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMyBOb3YgMjAyNCAxMzoyNToxMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMS8y XSBBZGQgaXNvbGF0aW9uIHRlc3QgdG8gcmVwcm9kdWNlIGRpcnR5IHNuYXBzaG90IHNjYW4KIGlz c3VlCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGFuIGlzb2xhdGlvbiB0ZXN0IHRvIHJlbGlhYmx5 IHJlcHJvZHVjZSB0aGUgaXNzdWUgd2hlcmUgbm9uLU1WQ0MgaW5kZXggc2NhbnMgdXNpbmcgU25h cHNob3REaXJ0eSBjYW4gbWlzcyB0dXBsZXMgZHVlIHRvIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9u cy4gVGhpcyBzaXR1YXRpb24gY2FuIGxlYWQgdG8gaW5jb3JyZWN0IHJlc3VsdHMuCgpUbyBmYWNp bGl0YXRlIHRoaXMgdGVzdCwgbmV3IGluamVjdGlvbiBwb2ludCAgYWRkZWQgaW4gdGhlIGluZGV4 X2dldG5leHRfc2xvdC4KCkNoYW5nZXMgaW5jbHVkZToKCiogQWRkZWQgaW5qZWN0aW9uIHBvaW50 IGluIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKiBVcGRhdGVkIE1ha2VmaWxl IGFuZCBtZXNvbi5idWlsZCB0byBpbmNsdWRlIHRoZSBuZXcgZGlydHlfaW5kZXhfc2NhbiBpc29s YXRpb24gdGVzdC4KKiBDcmVhdGVkIGEgbmV3IGlzb2xhdGlvbiBzcGVjIGRpcnR5X2luZGV4X3Nj YW4uc3BlYyBhbmQgaXRzIGV4cGVjdGVkIG91dHB1dCB0byBkZWZpbmUgYW5kIHZlcmlmeSB0aGUg dGVzdCBzdGVwcy4KKiBUaGlzIHRlc3QgY29tcGxlbWVudHMgdGhlIHByZXZpb3VzIGZpeCBieSBk ZW1vbnN0cmF0aW5nIHRoZSBpc3N1ZSBhbmQgdmVyaWZ5aW5nIHRoYXQgdGhlIGZpeCBlZmZlY3Rp dmVseSBhZGRyZXNzZXMgaXQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0u YyAgICAgICAgICAgIHwgIDggKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgICAgICAgICAgIHwgIDMgKysKIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9N YWtlZmlsZSAgICB8ICAyICstCiAuLi4vZXhwZWN0ZWQvZGlydHlfaW5kZXhfc2Nhbi5vdXQgICAg ICAgICAgICAgfCAyNyArKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIHwgIDEgKwogLi4uL3NwZWNzL2RpcnR5X2luZGV4X3NjYW4uc3Bl YyAgICAgICAgICAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2Vk LCA3NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2RpcnR5X2luZGV4X3NjYW4u b3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L3NwZWNzL2RpcnR5X2luZGV4X3NjYW4uc3BlYwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9pbmRleC9pbmRleGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5j CmluZGV4IDhiMWY1NTU0MzViLi5hZDNhMzYwNTI4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2luZGV4L2luZGV4YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5k ZXhhbS5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAj aW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjk2 LDYgKzY5NywxMyBAQCBpbmRleF9nZXRuZXh0X3Nsb3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2Fu RGlyZWN0aW9uIGRpcmVjdGlvbiwgVHVwbGVUYWJsZVNsb3QgKgogCQkgKiB0aGUgaW5kZXguCiAJ CSAqLwogCQlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKCZzY2FuLT54c19oZWFwdGlkKSk7Cisj aWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkJaWYgKCFJc0NhdGFsb2dSZWxhdGlvbk9pZChz Y2FuLT5pbmRleFJlbGF0aW9uLT5yZF9pZCkpCisJCXsKKwkJCUlOSkVDVElPTl9QT0lOVCgiaW5k ZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaCIpOworCQl9CisjZW5kaWYKKwogCQlpZiAoaW5k ZXhfZmV0Y2hfaGVhcChzY2FuLCBzbG90KSkKIAkJCXJldHVybiB0cnVlOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggNzQyZjNmOGMwOGQuLmRlY2ExNGQ2MzI2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVk ZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5o IgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25f cG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1lbnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3Vu aXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYgZW51bQpAQCAtOTQ0LDYgKzk0NSw4IEBAIHJl dHJ5OgogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlzdGluZ19zbG90KTsKIAor CWlmICghY29uZmxpY3QpCisJCUlOSkVDVElPTl9QT0lOVCgiY2hlY2tfZXhjbHVzaW9uX29yX3Vu aXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Iik7CiAJcmV0dXJuICFjb25mbGljdDsKIH0KIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlIGIv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCmluZGV4IGU2ODA5OTFm OGQ0Li5iNzNmOGFjODBmMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9N YWtlZmlsZQpAQCAtMTQsNyArMTQsNyBAQCBQR0ZJTEVERVNDID0gImluamVjdGlvbl9wb2ludHMg LSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIFJFR1JFU1MgPSBpbmplY3Rpb25fcG9p bnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9i dWlsZGRpcikvc3JjL3Rlc3QvcmVncmVzcwogCi1JU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIHN5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQKK0lTT0xBVElPTiA9IGJhc2ljIGlucGxhY2Ugc3lzY2FjaGUt dXBkYXRlLXBydW5lZCBkaXJ0eV9pbmRleF9zY2FuCiAKIFRBUF9URVNUUyA9IDEKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2RpcnR5X2lu ZGV4X3NjYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVk L2RpcnR5X2luZGV4X3NjYW4ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMjg2YTlmZDViNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9kaXJ0eV9pbmRleF9zY2FuLm91dApAQCAtMCwwICsxLDI3 IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMyBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczFfczEgczJfczEgczNfczEKK2luamVjdGlvbl9wb2ludHNfYXR0YWNoCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMV9zMTogSU5TRVJUIElOVE8gdGVzdC50YmwgVkFMVUVTKDQyLCAxKSBvbiBjb25mbGljdChp KSBkbyB1cGRhdGUgc2V0IG4gPSBFWENMVURFRC5uICsgMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz Ml9zMTogVVBEQVRFIHRlc3QudGJsIFNFVCBuID0gbiArIDEgV0hFUkUgaSA9IDQyOyA8d2FpdGlu ZyAuLi4+CitzdGVwIHMzX3MxOiAKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2lu ZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2gnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c193YWtldXAoJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2gnKTsKKyA8d2FpdGluZyAu Li4+CitzdGVwIHMxX3MxOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJfczE6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzM19zMTogPC4uLiBjb21wbGV0ZWQ+CitpbmplY3Rpb25fcG9pbnRzX2RldGFj aAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK2luamVjdGlvbl9wb2ludHNfd2FrZXVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCmluZGV4IGQ2MTE0OTcxMmZkLi5iYjM4NjlmOWE3 NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1 aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApA QCAtNDcsNiArNDcsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAnYmFzaWMnLAogICAgICAgJ2lucGxh Y2UnLAogICAgICAgJ3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQnLAorICAgICAgJ2RpcnR5X2luZGV4 X3NjYW4nLAogICAgIF0sCiAgICAgJ3J1bm5pbmdjaGVjayc6IGZhbHNlLCAjIHNlZSBzeXNjYWNo ZS11cGRhdGUtcHJ1bmVkCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3BlY3MvZGlydHlfaW5kZXhfc2Nhbi5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2RpcnR5X2luZGV4X3NjYW4uc3BlYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzczYmNhZjQ5MjkKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3MvZGlydHlfaW5kZXhf c2Nhbi5zcGVjCkBAIC0wLDAgKzEsMzcgQEAKK3NldHVwCit7CisJQ1JFQVRFIEVYVEVOU0lPTiBp bmplY3Rpb25fcG9pbnRzOworCUNSRUFURSBTQ0hFTUEgdGVzdDsKKwlDUkVBVEUgVU5MT0dHRUQg VEFCTEUgdGVzdC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIG4gaW50KTsKKwlDUkVBVEUgSU5ERVgg dGJsX25faWR4IE9OIHRlc3QudGJsKG4pOworCUlOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUyg0 MiwxKTsKK30KKwordGVhcmRvd24KK3sKKwlEUk9QIFNDSEVNQSB0ZXN0IENBU0NBREU7CisJRFJP UCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK30KKworc2Vzc2lvbiBzMQorc2V0dXAJewor CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2Nv bmZsaWN0JywgJ2Vycm9yJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbmRl eF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoJywgJ3dhaXQnKTsKK30KKworc3RlcCBzMV9zMQl7 IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUyg0MiwgMSkgb24gY29uZmxpY3QoaSkgZG8gdXBk YXRlIHNldCBuID0gRVhDTFVERUQubiArIDE7IH0KKworc2Vzc2lvbiBzMgorc3RlcCBzMl9zMQl7 IFVQREFURSB0ZXN0LnRibCBTRVQgbiA9IG4gKyAxIFdIRVJFIGkgPSA0MjsgfQorCitzZXNzaW9u IHMzCitzdGVwIHMzX3MxCQl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdpbmRl eF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNf d2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoJyk7Cit9CisKK3Blcm11dGF0 aW9uCisJczFfczEKKwlzMl9zMSgqKQorCXMzX3MxKHMxX3MxKQpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKLS0gCjIuNDMuMAoK --0000000000008c0a5a06301ad040--