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.96) (envelope-from ) id 1w1bM4-000RPo-1X for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Mar 2026 02:37:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w1bM3-003JZt-1W for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Mar 2026 02:37:24 +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.96) (envelope-from ) id 1w1bM2-003JZj-2k for pgsql-hackers@lists.postgresql.org; Sun, 15 Mar 2026 02:37:23 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w1bM1-00000000Ba9-0ZB5 for pgsql-hackers@lists.postgresql.org; Sun, 15 Mar 2026 02:37:22 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-6642a16be1cso2678936a12.3 for ; Sat, 14 Mar 2026 19:37:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773542240; cv=none; d=google.com; s=arc-20240605; b=GZXqiqmNyyool+2TrV4jhiOg/jIOACUB+5A/CoYiJlb5KvC+Q0YI72iLgglga40HLA 8JTQPm0igUDF+Q+TkcZL0Sb9qnpxI4UfK5TR5i7J7hjPqNe14ZP3fiTN+m5I0e5Qq6Cd Cduv9mZ3y8vFOR9C6y3x1PuK7NHgHawTDHSZMB1AXkVqw6DBG4KLgyWY/UNopcrW5CzG 9XStvf8nHh8yYs7CEng5RqkrXhAiFkX8+ENAcrinSNZuEwVSmMO0x+KFkaqmweA9HPVp A3HR7VowZ9egQ4PMvb+5dAphxjTu8S/bFfS26qhGsvGdm22rYG3MdMoQsRot/BlWi25g gtpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=LmBp/1Q/xzhGCTPLeBFSRy/h2jcdEZIhNTolrMMSdVY=; fh=5lisVc/SdZrXESFhj6i3cPQivKRq2wrqq/p4/OVduqw=; b=hBj6vkT4ee+7Pfujf8js8DgWGQQtXmsV71jRIwYJGi9allkI+ilwkPD7IURNGHif2p AESNAc4F42E2WLvpKMKYwyllUBUfE1mjfK0PQ+jWs8s4UtNDROnxp/pzgpqCuBWNHFUP 3ZXZaiFuPiBTdN2tQbKiirePFuddw5hJ73K1D4idf/XnXKsgUdHPKXswrUjTRQtsusAh IdFVkJySWvw3uWcqQ2wLqaxBI8zoaBbaM6W+7TXMxet+L/ZbjLriwkhqUXVW9/87VY2N nG/fd7I3ZuSLljTuKYYeyS1rlMAkMK3QvY1cZ1XKn/Sik3+OVjH97KhVf/gQssBaurLG QpJA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773542240; x=1774147040; darn=lists.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=LmBp/1Q/xzhGCTPLeBFSRy/h2jcdEZIhNTolrMMSdVY=; b=TSRx3GPLdKyJPask1cTrfd26l+i1dLR5gCxjjfghhEDv1ib1zJfc2FwxKaOE+jwFPI W/WK1kEF7xtbidPrxebmk0xni6uihZlkcffqwvwo+TRwHENYEcQQlYXnBT2CiStGqkjp zHCIFNJrfpv83rxa2hIcaNIXLLmCuUogiAp+87tp2KO17GhWR5FUb6Kfl9YeJc9gbTXe dr0fjHH9Rd7AWi7LIQlYmw8qwtVH2XsHBqn8jT5VZCr6KeZNXE/CGApQaN8NxQm7PoY9 oGj7Q+tDX0u2k1n5pjNVOuFGCHRM8j8XSSJsETLW8lknJ5lVsvzmNhXItyolXBo46BMh 26ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773542240; x=1774147040; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=LmBp/1Q/xzhGCTPLeBFSRy/h2jcdEZIhNTolrMMSdVY=; b=OqLROnYTq7c3UcqZS3I2YEz3CHEY3OUgtPmaiY+Bd+xFRvxBnexzWgKadyDnF9xdTl rd4+Dg/bNt2jLkVv37gpagaWFNBbXMHu969QLngXy9rVI4BgRLlb7iXWFB49twgt9wKf InR3E0p9uYh1Htf/NrbOF2XD0YdaUNMEABnVOa5xmbEZCxtwFAHrpCtTyDJm1EO9wQrA FuMj+xvypQJuJhzpy3NNPsKmdzkGIgfZh6m/yxUMzEI+A3RPbANyU2Hv66TR1AwckIg7 oA4Gzn1v8DGvDfC7dKeI2P0lSbrehKDBHVTK6tf2hb2lyFtn9VncdHKTCJyJWw4zLJ1G 3A1Q== X-Gm-Message-State: AOJu0YxxqreFnCEvYgCQft1OjCvzeCn29MIHEa5YXQY+DFoMhOlxjW/k RcaOJj6YJFg4c5ScqF/w5kTgwQVwik3uno7wAQHKPbnQsf/uD3CAYwX8t/wC3a351d1Bx0djFUo 0HJwTJsusOZltEOpwMbNlZtz38yCKoFNgL+Ss X-Gm-Gg: ATEYQzyTuC7weBpOyr+tIvY/ep2vAqmb+8L7QAteur6rRscv9dE1BvovEhSLBE3bPkc wDbZThk3+vox3pMyttPNowz75KYiA+dlgv0KxISISLootNijggFmpPyHunUzN/W1cPow0rPn+Qf 1YT77eP4EWmZuZbnVpAgiXZ2+eoDS3mANUqicFH45gftXhpv00nwnQoW/5BzVplWjyx9ktMnc5Y 8Fi+q54yGVoTDJSKCG924T7cjN3+HnaRXT/XNugvQ3zUCQ1/oYiEB628kxTlo4x2RO51DrT7B8D h6ilmviN33Li8ODJg+tRH0OfAaEprJHye0FkaRXVArTWd14LYg== X-Received: by 2002:a05:6402:3642:b0:663:46e0:9a91 with SMTP id 4fb4d7f45d1cf-663babfdfa5mr3949579a12.20.1773542239737; Sat, 14 Mar 2026 19:37:19 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexandre Felipe Date: Sun, 15 Mar 2026 02:37:07 +0000 X-Gm-Features: AaiRm50MaTVkZfT9U0bs41PXh1wY9NRnLZBjSe96fvEBfyNTzQsiOsN8Xu2Sedc Message-ID: Subject: Re: Addressing buffer private reference count scalability issue To: Andres Freund Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000031dc65064d06fb18" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000031dc65064d06fb18 Content-Type: multipart/alternative; boundary="00000000000031dc64064d06fb16" --00000000000031dc64064d06fb16 Content-Type: text/plain; charset="UTF-8" Hi Andres, > I don't think it's a good idea to introduce new simplehash infrastructure as > part of this larger change. I am submitting the change I did before on simplehash for empty entry detection. > You also haven't documented the new stuff. What and where I was supposed to document? 01 the change I did before, 02 I applied it to refcount in bufmgr. Exploring a bit more the code base, 03 removes status from nodeMemoize 04 remove status from pg_rewind/filemap.c 05 was a bit trickier because InvalidBlockNumber is not 0, then I had to make entries empty after allocation that uses memset 0 by default. I grepped for a list and there are 21 files in total so I will stop here. > In my benchmarks allowing vectorization helped a decent amount in real > queries, because it does away with all the branch misses. Interesting, did you compile with the default configuration? I used gcc11 (a bit old I know) and and yes, it remove some branches but still use a loop with cmove (conditional copy), in some cases it unrolls but still uses cmove for each entry (the machine I tested is quite feature rich e.g. avx512cd avx512bw avx512vl avx512_vnni. So I am wondering if the impact I see is not the same impact as you see. If we go for vectorisation we could do a vectorized loop e.g. 16 iterations on 16 x 32-bit vectors with early exit. but that would inevitably make the few entries case slightly slower. Do you have any other localised issue like this that could be worth looking into? Regards, Alexandre --00000000000031dc64064d06fb16 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Andres,

> I don't = think it's a good idea to introduce new simplehash infrastructure as> part of this larger change.=C2=A0=C2=A0

= I am submitting the change I did before on simplehash for empty=C2=A0entry = detection.

> You also haven't documented th= e new stuff.

What and where I was supposed to docu= ment?

01 the change I did before, 02 I applied it = to refcount in bufmgr.
Exploring a bit more the code base, 03 rem= oves status from nodeMemoize
04 remove status from pg_rewind/file= map.c
05 was=C2=A0a bit trickier because InvalidBlockNumber is no= t 0, then I had to=C2=A0
make entries empty after allocation that= uses memset 0 by default.

I grepped for a list and there are= 21 files in total so I will stop here.


=
> In my benchmarks allowing vectorization helped a decent amount in= real
> queries, because it does away with all the branch misses.

Interesting, did you compile with the default configu= ration?
I used gcc11 (a bit old I know) and and yes, it remove so= me branches
but still use a loop with cmove (conditional copy), i= n some cases it unrolls
but still uses cmove for each entry (the = machine I tested=C2=A0 is quite feature rich
e.g.=C2=A0avx512cd a= vx512bw avx512vl avx512_vnni.

So I am wondering if= the impact I see is not the same impact as you see.

If we go for vectorisation we could do a vectorized loop
e.g. = 16 iterations on 16 x 32-bit vectors with early exit.
but that wo= uld inevitably make the few entries case slightly slower.


Do you have any other localised issue like this that= could be worth looking
into?

Regards,
Alexandre



<= br>
--00000000000031dc64064d06fb16-- --00000000000031dc65064d06fb18 Content-Type: application/octet-stream; name="v3-0004-Use-null-pointer-as-an-empty-marker.patch" Content-Disposition: attachment; filename="v3-0004-Use-null-pointer-as-an-empty-marker.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmr425aw1 RnJvbSBmNDU3ZWI5YzIzMmYwZTM1MTQzYWEzY2UzNzQ4MGI3YjA3MTQ4YzUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4KRGF0ZTogU3VuLCAxNSBN YXIgMjAyNiAwMToyMzoxMiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggNC81XSBVc2UgbnVsbCBwb2lu dGVyIGFzIGFuIGVtcHR5IG1hcmtlcgoKSGVyZSBzaW1wbGVoYXNoIGlzIGJlaW5nIHNpbXBseSB1 c2VkIGFzIGEgU2V0Ck5VTEwgcG9pbnRlciBpcyBhIG5hdHVyYWwgZW1wdHkgbWFya2VyLgotLS0K IHNyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYyB8IDcgKysrKysrLQogc3JjL2Jpbi9wZ19yZXdp bmQvZmlsZW1hcC5oIHwgMiAtLQogMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5jIGIv c3JjL2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5jCmluZGV4IGI3OWM0N2Y5MjUuLjU3NGEyODJkODQg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYworKysgYi9zcmMvYmluL3Bn X3Jld2luZC9maWxlbWFwLmMKQEAgLTQ1LDYgKzQ1LDkgQEAKICNkZWZpbmUgU0hfS0VZCQkJCQlw YXRoCiAjZGVmaW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpCWhhc2hfc3RyaW5nKGtleSkKICNkZWZp bmUgU0hfRVFVQUwodGIsIGEsIGIpCQkoc3RyY21wKGEsIGIpID09IDApCisjZGVmaW5lIFNIX0VO VFJZX0VNUFRZKGVudHJ5KSAgICgoZW50cnkpLT5wYXRoID09IE5VTEwpCisjZGVmaW5lIFNIX01B S0VfRU1QVFkoZW50cnkpICAgICgoZW50cnkpLT5wYXRoID0gTlVMTCkKKyNkZWZpbmUgU0hfTUFL RV9JTl9VU0UoZW50cnkpICAgKCh2b2lkKTApCiAjZGVmaW5lIFNIX1NDT1BFCQkJCXN0YXRpYyBp bmxpbmUKICNkZWZpbmUgU0hfUkFXX0FMTE9DQVRPUgkJcGdfbWFsbG9jMAogI2RlZmluZSBTSF9E RUNMQVJFCkBAIC02OCw3ICs3MSw2IEBAIHN0YXRpYyBmaWxlX2VudHJ5X3QgKmxvb2t1cF9maWxl aGFzaF9lbnRyeShjb25zdCBjaGFyICpwYXRoKTsKIHR5cGVkZWYgc3RydWN0IGtlZXB3YWxfZW50 cnkKIHsKIAljb25zdCBjaGFyICpwYXRoOwotCXVpbnQzMgkJc3RhdHVzOwogfSBrZWVwd2FsX2Vu dHJ5OwogCiAjZGVmaW5lIFNIX1BSRUZJWAkJCQlrZWVwd2FsCkBAIC03Nyw2ICs3OSw5IEBAIHR5 cGVkZWYgc3RydWN0IGtlZXB3YWxfZW50cnkKICNkZWZpbmUgU0hfS0VZCQkJCQlwYXRoCiAjZGVm aW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpCWhhc2hfc3RyaW5nKGtleSkKICNkZWZpbmUgU0hfRVFV QUwodGIsIGEsIGIpCQkoc3RyY21wKGEsIGIpID09IDApCisjZGVmaW5lIFNIX0VOVFJZX0VNUFRZ KGVudHJ5KSAgICgoZW50cnkpLT5wYXRoID09IE5VTEwpCisjZGVmaW5lIFNIX01BS0VfRU1QVFko ZW50cnkpICAgICgoZW50cnkpLT5wYXRoID0gTlVMTCkKKyNkZWZpbmUgU0hfTUFLRV9JTl9VU0Uo ZW50cnkpICAgKCh2b2lkKTApCiAjZGVmaW5lIFNIX1NDT1BFCQkJCXN0YXRpYyBpbmxpbmUKICNk ZWZpbmUgU0hfUkFXX0FMTE9DQVRPUgkJcGdfbWFsbG9jMAogI2RlZmluZSBTSF9ERUNMQVJFCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9maWxlbWFwLmggYi9zcmMvYmluL3BnX3Jld2lu ZC9maWxlbWFwLmgKaW5kZXggNGM2ZGQ4NzQwZC4uYjNlNjdiZTFkYSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5oCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAu aApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIGVudW0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgZmls ZV9lbnRyeV90CiB7Ci0JdWludDMyCQlzdGF0dXM7CQkJLyogaGFzaCBzdGF0dXMgKi8KLQogCWNv bnN0IGNoYXIgKnBhdGg7CiAJZmlsZV9jb250ZW50X3R5cGVfdCBjb250ZW50X3R5cGU7CiAKLS0g CjIuMzQuMQoK --00000000000031dc65064d06fb18 Content-Type: application/octet-stream; name="v3-0001-Custom-simplehash-empty-value-detection.patch" Content-Disposition: attachment; filename="v3-0001-Custom-simplehash-empty-value-detection.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmr425b04 RnJvbSBkYjA0OTU2YjIwYmE0MzI0YTBjZDRkMzkxYTJkMmUzZTJhMzU4ODMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmUgRmVsaXBlIDxvLmFsZXhhbmRyZS5mZWxpcGVA Z21haWwuY29tPgpEYXRlOiBTdW4sIDE1IE1hciAyMDI2IDAwOjAwOjAwICswMDAwClN1YmplY3Q6 IFtQQVRDSCAxLzVdIEN1c3RvbSBzaW1wbGVoYXNoIGVtcHR5IHZhbHVlIGRldGVjdGlvbgoKQ2hh bmdlcyB0aGUgZW1wdHkgdmFsdWUgaWRlbnRpZmljYXRpb24gaW4gc2ltcGxlaGFzaCBhbGxvd2lu ZyBjdXN0b20KdmFsdWVzIHRvIGJlIHVzZWQuIFRoZSBkZWZhdWx0IGNvbnRpbnVlcyB0byB1c2Ug dGhlIHN0YXR1cyBmaWVsZC4KCkZvciB0eXBlcyB3aGVyZSB0aGUga2V5IHZhbHVlIGFscmVhZHkg aGFzIGFuICJpbnZhbGlkIiB2YWx1ZSwKdGhlIG1hY3JvcyBTSF9FTlRSWV9FTVBUWSwgU0hfTUFL RV9FTVBUWSBhbmQgU0hfTUFLRV9JTl9VU0UgY2FuIGJlCm92ZXJyaWRkZW4gdG8gZWxsaW1pbmF0 ZSB0aGUgbmVlZCBmb3IgYSBzZXBhcmF0ZSBzdGF0dXMgZmllbGQuCi0tLQogc3JjL2luY2x1ZGUv bGliL3NpbXBsZWhhc2guaCB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9zaW1wbGVoYXNoLmggYi9zcmMvaW5jbHVkZS9saWIv c2ltcGxlaGFzaC5oCmluZGV4IDg0ODcxOTIzMmEuLjNjMDNhN2U5YzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2xpYi9zaW1wbGVoYXNoLmgKKysrIGIvc3JjL2luY2x1ZGUvbGliL3NpbXBsZWhh c2guaApAQCAtMjg3LDYgKzI4NywyMCBAQCBTSF9TQ09QRSB2b2lkIFNIX1NUQVQoU0hfVFlQRSAq IHRiKTsKICNkZWZpbmUgU0hfQ09NUEFSRV9LRVlTKHRiLCBhaGFzaCwgYWtleSwgYikgKFNIX0VR VUFMKHRiLCBiLT5TSF9LRVksIGFrZXkpKQogI2VuZGlmCiAKKy8qCisgKiBNYWNyb3MgdG8gY2hl Y2svc2V0IGVudHJ5IHN0YXR1cy4gVXNlcnMgY2FuIG92ZXJyaWRlIHRoZXNlIHRvIGF2b2lkCisg KiBuZWVkaW5nIGEgc2VwYXJhdGUgc3RhdHVzIGZpZWxkIGlmIHRoZWlyIGtleSB0eXBlIGhhcyBh biAiaW52YWxpZCIgdmFsdWUuCisgKi8KKyNpZm5kZWYgU0hfRU5UUllfRU1QVFkKKyNkZWZpbmUg U0hfRU5UUllfRU1QVFkoZW50cnkpICgoZW50cnkpLT5zdGF0dXMgPT0gU0hfU1RBVFVTX0VNUFRZ KQorI2VuZGlmCisjaWZuZGVmIFNIX01BS0VfRU1QVFkKKyNkZWZpbmUgU0hfTUFLRV9FTVBUWShl bnRyeSkgKChlbnRyeSktPnN0YXR1cyA9IFNIX1NUQVRVU19FTVBUWSkKKyNlbmRpZgorI2lmbmRl ZiBTSF9NQUtFX0lOX1VTRQorI2RlZmluZSBTSF9NQUtFX0lOX1VTRShlbnRyeSkgKChlbnRyeSkt PnN0YXR1cyA9IFNIX1NUQVRVU19JTl9VU0UpCisjZW5kaWYKKwogLyoKICAqIFdyYXAgdGhlIGZv bGxvd2luZyBkZWZpbml0aW9ucyBpbiBpbmNsdWRlIGd1YXJkcywgdG8gYXZvaWQgbXVsdGlwbGUK ICAqIGRlZmluaXRpb24gZXJyb3JzIGlmIHRoaXMgaGVhZGVyIGlzIGluY2x1ZGVkIG1vcmUgdGhh biBvbmNlLiAgVGhlIHJlc3Qgb2YKQEAgLTU0NCw3ICs1NTgsNyBAQCBTSF9HUk9XKFNIX1RZUEUg KiB0YiwgdWludDY0IG5ld3NpemUpCiAJCXVpbnQzMgkJaGFzaDsKIAkJdWludDMyCQlvcHRpbWFs OwogCi0JCWlmIChvbGRlbnRyeS0+c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmIChT SF9FTlRSWV9FTVBUWShvbGRlbnRyeSkpCiAJCXsKIAkJCXN0YXJ0ZWxlbSA9IGk7CiAJCQlicmVh azsKQEAgLTU2Niw3ICs1ODAsNyBAQCBTSF9HUk9XKFNIX1RZUEUgKiB0YiwgdWludDY0IG5ld3Np emUpCiAJewogCQlTSF9FTEVNRU5UX1RZUEUgKm9sZGVudHJ5ID0gJm9sZGRhdGFbY29weWVsZW1d OwogCi0JCWlmIChvbGRlbnRyeS0+c3RhdHVzID09IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmICgh U0hfRU5UUllfRU1QVFkob2xkZW50cnkpKQogCQl7CiAJCQl1aW50MzIJCWhhc2g7CiAJCQl1aW50 MzIJCXN0YXJ0ZWxlbTI7CkBAIC01ODIsNyArNTk2LDcgQEAgU0hfR1JPVyhTSF9UWVBFICogdGIs IHVpbnQ2NCBuZXdzaXplKQogCQkJewogCQkJCW5ld2VudHJ5ID0gJm5ld2RhdGFbY3VyZWxlbV07 CiAKLQkJCQlpZiAobmV3ZW50cnktPnN0YXR1cyA9PSBTSF9TVEFUVVNfRU1QVFkpCisJCQkJaWYg KFNIX0VOVFJZX0VNUFRZKG5ld2VudHJ5KSkKIAkJCQl7CiAJCQkJCWJyZWFrOwogCQkJCX0KQEAg LTY1MywxNCArNjY3LDE0IEBAIHJlc3RhcnQ6CiAJCVNIX0VMRU1FTlRfVFlQRSAqZW50cnkgPSAm ZGF0YVtjdXJlbGVtXTsKIAogCQkvKiBhbnkgZW1wdHkgYnVja2V0IGNhbiBkaXJlY3RseSBiZSB1 c2VkICovCi0JCWlmIChlbnRyeS0+c3RhdHVzID09IFNIX1NUQVRVU19FTVBUWSkKKwkJaWYgKFNI X0VOVFJZX0VNUFRZKGVudHJ5KSkKIAkJewogCQkJdGItPm1lbWJlcnMrKzsKIAkJCWVudHJ5LT5T SF9LRVkgPSBrZXk7CiAjaWZkZWYgU0hfU1RPUkVfSEFTSAogCQkJU0hfR0VUX0hBU0godGIsIGVu dHJ5KSA9IGhhc2g7CiAjZW5kaWYKLQkJCWVudHJ5LT5zdGF0dXMgPSBTSF9TVEFUVVNfSU5fVVNF OworCQkJU0hfTUFLRV9JTl9VU0UoZW50cnkpOwogCQkJKmZvdW5kID0gZmFsc2U7CiAJCQlyZXR1 cm4gZW50cnk7CiAJCX0KQEAgLTY3NSw3ICs2ODksNyBAQCByZXN0YXJ0OgogCiAJCWlmIChTSF9D T01QQVJFX0tFWVModGIsIGhhc2gsIGtleSwgZW50cnkpKQogCQl7Ci0JCQlBc3NlcnQoZW50cnkt PnN0YXR1cyA9PSBTSF9TVEFUVVNfSU5fVVNFKTsKKwkJCUFzc2VydCghU0hfRU5UUllfRU1QVFko ZW50cnkpKTsKIAkJCSpmb3VuZCA9IHRydWU7CiAJCQlyZXR1cm4gZW50cnk7CiAJCX0KQEAgLTY5 OSw3ICs3MTMsNyBAQCByZXN0YXJ0OgogCQkJCWVtcHR5ZWxlbSA9IFNIX05FWFQodGIsIGVtcHR5 ZWxlbSwgc3RhcnRlbGVtKTsKIAkJCQllbXB0eWVudHJ5ID0gJmRhdGFbZW1wdHllbGVtXTsKIAot CQkJCWlmIChlbXB0eWVudHJ5LT5zdGF0dXMgPT0gU0hfU1RBVFVTX0VNUFRZKQorCQkJCWlmIChT SF9FTlRSWV9FTVBUWShlbXB0eWVudHJ5KSkKIAkJCQl7CiAJCQkJCWxhc3RlbnRyeSA9IGVtcHR5 ZW50cnk7CiAJCQkJCWJyZWFrOwpAQCAtNzQ4LDcgKzc2Miw3IEBAIHJlc3RhcnQ6CiAjaWZkZWYg U0hfU1RPUkVfSEFTSAogCQkJU0hfR0VUX0hBU0godGIsIGVudHJ5KSA9IGhhc2g7CiAjZW5kaWYK LQkJCWVudHJ5LT5zdGF0dXMgPSBTSF9TVEFUVVNfSU5fVVNFOworCQkJU0hfTUFLRV9JTl9VU0Uo ZW50cnkpOwogCQkJKmZvdW5kID0gZmFsc2U7CiAJCQlyZXR1cm4gZW50cnk7CiAJCX0KQEAgLTgx MCwxMiArODI0LDEyIEBAIFNIX0xPT0tVUF9IQVNIX0lOVEVSTkFMKFNIX1RZUEUgKiB0YiwgU0hf S0VZX1RZUEUga2V5LCB1aW50MzIgaGFzaCkKIAl7CiAJCVNIX0VMRU1FTlRfVFlQRSAqZW50cnkg PSAmdGItPmRhdGFbY3VyZWxlbV07CiAKLQkJaWYgKGVudHJ5LT5zdGF0dXMgPT0gU0hfU1RBVFVT X0VNUFRZKQorCQlpZiAoU0hfRU5UUllfRU1QVFkoZW50cnkpKQogCQl7CiAJCQlyZXR1cm4gTlVM TDsKIAkJfQogCi0JCUFzc2VydChlbnRyeS0+c3RhdHVzID09IFNIX1NUQVRVU19JTl9VU0UpOwor CQlBc3NlcnQoIVNIX0VOVFJZX0VNUFRZKGVudHJ5KSk7CiAKIAkJaWYgKFNIX0NPTVBBUkVfS0VZ Uyh0YiwgaGFzaCwga2V5LCBlbnRyeSkpCiAJCQlyZXR1cm4gZW50cnk7CkBAIC04NjgsMTAgKzg4 MiwxMCBAQCBTSF9ERUxFVEUoU0hfVFlQRSAqIHRiLCBTSF9LRVlfVFlQRSBrZXkpCiAJewogCQlT SF9FTEVNRU5UX1RZUEUgKmVudHJ5ID0gJnRiLT5kYXRhW2N1cmVsZW1dOwogCi0JCWlmIChlbnRy eS0+c3RhdHVzID09IFNIX1NUQVRVU19FTVBUWSkKKwkJaWYgKFNIX0VOVFJZX0VNUFRZKGVudHJ5 KSkKIAkJCXJldHVybiBmYWxzZTsKIAotCQlpZiAoZW50cnktPnN0YXR1cyA9PSBTSF9TVEFUVVNf SU5fVVNFICYmCisJCWlmICghU0hfRU5UUllfRU1QVFkoZW50cnkpICYmCiAJCQlTSF9DT01QQVJF X0tFWVModGIsIGhhc2gsIGtleSwgZW50cnkpKQogCQl7CiAJCQlTSF9FTEVNRU5UX1RZUEUgKmxh c3RlbnRyeSA9IGVudHJ5OwpAQCAtODk0LDkgKzkwOCw5IEBAIFNIX0RFTEVURShTSF9UWVBFICog dGIsIFNIX0tFWV9UWVBFIGtleSkKIAkJCQljdXJlbGVtID0gU0hfTkVYVCh0YiwgY3VyZWxlbSwg c3RhcnRlbGVtKTsKIAkJCQljdXJlbnRyeSA9ICZ0Yi0+ZGF0YVtjdXJlbGVtXTsKIAotCQkJCWlm IChjdXJlbnRyeS0+c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCQkJaWYgKFNIX0VOVFJZ X0VNUFRZKGN1cmVudHJ5KSkKIAkJCQl7Ci0JCQkJCWxhc3RlbnRyeS0+c3RhdHVzID0gU0hfU1RB VFVTX0VNUFRZOworCQkJCQlTSF9NQUtFX0VNUFRZKGxhc3RlbnRyeSk7CiAJCQkJCWJyZWFrOwog CQkJCX0KIApAQCAtOTA2LDcgKzkyMCw3IEBAIFNIX0RFTEVURShTSF9UWVBFICogdGIsIFNIX0tF WV9UWVBFIGtleSkKIAkJCQkvKiBjdXJyZW50IGlzIGF0IG9wdGltYWwgcG9zaXRpb24sIGRvbmUg Ki8KIAkJCQlpZiAoY3Vyb3B0aW1hbCA9PSBjdXJlbGVtKQogCQkJCXsKLQkJCQkJbGFzdGVudHJ5 LT5zdGF0dXMgPSBTSF9TVEFUVVNfRU1QVFk7CisJCQkJCVNIX01BS0VfRU1QVFkobGFzdGVudHJ5 KTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCkBAIC05NTcsOSArOTcxLDkgQEAgU0hfREVMRVRFX0lU RU0oU0hfVFlQRSAqIHRiLCBTSF9FTEVNRU5UX1RZUEUgKiBlbnRyeSkKIAkJY3VyZWxlbSA9IFNI X05FWFQodGIsIGN1cmVsZW0sIHN0YXJ0ZWxlbSk7CiAJCWN1cmVudHJ5ID0gJnRiLT5kYXRhW2N1 cmVsZW1dOwogCi0JCWlmIChjdXJlbnRyeS0+c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJ CWlmIChTSF9FTlRSWV9FTVBUWShjdXJlbnRyeSkpCiAJCXsKLQkJCWxhc3RlbnRyeS0+c3RhdHVz ID0gU0hfU1RBVFVTX0VNUFRZOworCQkJU0hfTUFLRV9FTVBUWShsYXN0ZW50cnkpOwogCQkJYnJl YWs7CiAJCX0KIApAQCAtOTY5LDcgKzk4Myw3IEBAIFNIX0RFTEVURV9JVEVNKFNIX1RZUEUgKiB0 YiwgU0hfRUxFTUVOVF9UWVBFICogZW50cnkpCiAJCS8qIGN1cnJlbnQgaXMgYXQgb3B0aW1hbCBw b3NpdGlvbiwgZG9uZSAqLwogCQlpZiAoY3Vyb3B0aW1hbCA9PSBjdXJlbGVtKQogCQl7Ci0JCQls YXN0ZW50cnktPnN0YXR1cyA9IFNIX1NUQVRVU19FTVBUWTsKKwkJCVNIX01BS0VfRU1QVFkobGFz dGVudHJ5KTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTk5Nyw3ICsxMDExLDcgQEAgU0hfU1RBUlRf SVRFUkFURShTSF9UWVBFICogdGIsIFNIX0lURVJBVE9SICogaXRlcikKIAl7CiAJCVNIX0VMRU1F TlRfVFlQRSAqZW50cnkgPSAmdGItPmRhdGFbaV07CiAKLQkJaWYgKGVudHJ5LT5zdGF0dXMgIT0g U0hfU1RBVFVTX0lOX1VTRSkKKwkJaWYgKFNIX0VOVFJZX0VNUFRZKGVudHJ5KSkKIAkJewogCQkJ c3RhcnRlbGVtID0gaTsKIAkJCWJyZWFrOwpAQCAtMTA2Myw3ICsxMDc3LDcgQEAgU0hfSVRFUkFU RShTSF9UWVBFICogdGIsIFNIX0lURVJBVE9SICogaXRlcikKIAogCQlpZiAoKGl0ZXItPmN1ciAm IHRiLT5zaXplbWFzaykgPT0gKGl0ZXItPmVuZCAmIHRiLT5zaXplbWFzaykpCiAJCQlpdGVyLT5k b25lID0gdHJ1ZTsKLQkJaWYgKGVsZW0tPnN0YXR1cyA9PSBTSF9TVEFUVVNfSU5fVVNFKQorCQlp ZiAoIVNIX0VOVFJZX0VNUFRZKGVsZW0pKQogCQl7CiAJCQlyZXR1cm4gZWxlbTsKIAkJfQpAQCAt MTE0MCw3ICsxMTU0LDcgQEAgU0hfU1RBVChTSF9UWVBFICogdGIpCiAKIAkJZWxlbSA9ICZ0Yi0+ ZGF0YVtpXTsKIAotCQlpZiAoZWxlbS0+c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCWlm IChTSF9FTlRSWV9FTVBUWShlbGVtKSkKIAkJCWNvbnRpbnVlOwogCiAJCWhhc2ggPSBTSF9FTlRS WV9IQVNIKHRiLCBlbGVtKTsKQEAgLTEyMDUsNiArMTIxOSw5IEBAIFNIX1NUQVQoU0hfVFlQRSAq IHRiKQogI3VuZGVmIFNIX1NUT1JFX0hBU0gKICN1bmRlZiBTSF9VU0VfTk9OREVGQVVMVF9BTExP Q0FUT1IKICN1bmRlZiBTSF9FUVVBTAorI3VuZGVmIFNIX0VOVFJZX0VNUFRZCisjdW5kZWYgU0hf TUFLRV9FTVBUWQorI3VuZGVmIFNIX01BS0VfSU5fVVNFCiAKIC8qIHVuZGVmaW5lIGxvY2FsbHkg ZGVjbGFyZWQgbWFjcm9zICovCiAjdW5kZWYgU0hfTUFLRV9QUkVGSVgKLS0gCjIuMzQuMQoK --00000000000031dc65064d06fb18 Content-Type: application/octet-stream; name="v3-0003-Use-NULL-key-as-empty-in-nodeMemoize.c.patch" Content-Disposition: attachment; filename="v3-0003-Use-NULL-key-as-empty-in-nodeMemoize.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmr425ay2 RnJvbSBlMDkxZmQwNjIxN2FhZTMwY2Y3MzY5NzE1NmIyMmJjNjZjMzgyNDQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4KRGF0ZTogU3VuLCAxNSBN YXIgMjAyNiAwMToxOTowNSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMy81XSBVc2UgTlVMTCBrZXkg YXMgZW1wdHkgaW4gbm9kZU1lbW9pemUuYwoKTWVtb2l6ZUtleSAqa2V5IGlzIGRlc2NyaWJlZWQg YXMgSGFzaCBrZXkgZm9yIGhhc2ggdGFibGUgbG9va3VwcwpCdXQgaXQgaXMgbm90IGFzIG9uZSB3 b3VsZCBleHBlY3QuCk1lbW9pemVIYXNoX2hhc2ggY29tcHV0ZXMgaGFzaCBmcm9tIHRiLT5wcml2 YXRlX2RhdGEgaWdub3JpbmcgdGhlIGtleQpTaW1pbGFybHkgTWVtb2l6ZV9lcXVhbCBkb2Vzbid0 IHVzZSBrZXkyLCBhbmQgdXNlcyBwcm9iZXNsb3QgZnJvbSB0Yi0+cHJpdmF0ZV9kYXRhLgoKQXQg bGluZSA1NDUKbWVtb2l6ZV9pbnNlcnQobXN0YXRlLT5oYXNodGFibGUsIE5VTEwsIGZvdW5kKTsK aWYgbm90IGZvdW5kIHdlIGhvbGQgYSBwb2ludGVyIHRvIGFuIGVudHJ5IHN0aWxsIGVtcHR5IGlu CnRoZSBzaW1wbGVoYXNoLCB1bnRpbCB3ZSBhc3NpZ24gaXQgYSBrZXkgKGxpbmUgNTYxKQotLS0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgfCAzICsrKwogMSBmaWxlIGNoYW5n ZWQsIDMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZW1vaXplLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCmluZGV4IGZk Y2E5N2Q3NDIuLjQ0MTU0YWQyNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZW1vaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwpAQCAt MTQzLDYgKzE0Myw5IEBAIHN0YXRpYyBib29sIE1lbW9pemVIYXNoX2VxdWFsKHN0cnVjdCBtZW1v aXplX2hhc2ggKnRiLAogI2RlZmluZSBTSF9LRVkga2V5CiAjZGVmaW5lIFNIX0hBU0hfS0VZKHRi LCBrZXkpIE1lbW9pemVIYXNoX2hhc2godGIsIGtleSkKICNkZWZpbmUgU0hfRVFVQUwodGIsIGEs IGIpIE1lbW9pemVIYXNoX2VxdWFsKHRiLCBhLCBiKQorI2RlZmluZSBTSF9FTlRSWV9FTVBUWShl bnRyeSkgKChlbnRyeSktPmtleSA9PSBOVUxMKQorI2RlZmluZSBTSF9NQUtFX0VNUFRZKGVudHJ5 KSAoKGVudHJ5KS0+a2V5ID0gTlVMTCkKKyNkZWZpbmUgU0hfTUFLRV9JTl9VU0UoZW50cnkpICgo dm9pZCkwKQogI2RlZmluZSBTSF9TQ09QRSBzdGF0aWMgaW5saW5lCiAjZGVmaW5lIFNIX1NUT1JF X0hBU0gKICNkZWZpbmUgU0hfR0VUX0hBU0godGIsIGEpIGEtPmhhc2gKLS0gCjIuMzQuMQoK --00000000000031dc65064d06fb18 Content-Type: application/octet-stream; name="v3-0005-Use-InvalidBlockNumber-as-empty-marker.patch" Content-Disposition: attachment; filename="v3-0005-Use-InvalidBlockNumber-as-empty-marker.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmr4259h0 RnJvbSAyMTA5MTZiY2MyMzY4NTZlNjNiMjU4YTAzNTczZGE1MzE5YjNlMjQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4KRGF0ZTogU3VuLCAxNSBN YXIgMjAyNiAwMTo0ODowOSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggNS81XSBVc2UgSW52YWxpZEJs b2NrTnVtYmVyIGFzIGVtcHR5IG1hcmtlcgoKVGhpcyBvbmUgcmVxdWlyZWQgYW4gdXBkYXRlIG9u IHNpbXBsZWhhc2ggaW1wbGVtZW50YXRpb24KSW52YWxpZEJsb2NrTnVtYmVyIGRlZmluZWQgYXMg KChCbG9ja051bWJlcikgMHhGRkZGRkZGRikKaW4gLi9zcmMvaW5jbHVkZS9zdG9yYWdlL2Jsb2Nr LmggYnkgZGVmYXVsdCBTaW1wbGVIYXNoIHNpbXBseQp6ZXJvZXMgdGhlIG1lbW9yeSBhbmQgdGhh dCBtYWtlcyBldmVyeXRoaW5nIGVtcHR5LgoKRm9yIHRoaXMgY2FzZSB3ZSBoYXZlIHRvIGNhbGwg U0hfTUFLRV9FTVBUWSBvbiBlYWNoCmVudHJ5IGFmdGVyIGFsbG9jYXRpbmcuCgpSZW1vdmluZyB0 aGUgc3RhdHVzIGZpZWxkIGFsc28gYSB0aGUgaGFja3MKb2xkX3N0YXR1cyA9IGVudHJ5LT5zdGF0 dXMKbW9kaWZ5IGVudHJ5LCBjb3JydXB0cyBzdGF0dXMKZW50cnktPnN0YXR1cyA9IG9sZF9zdGF0 dXMKCndoZXJlIHRoZSBzdGF0dXMgaW5pdGlhbGl6ZWQgYnkgc2ltcGxlaGFzaCBoYWQgdG8gYmUK c2F2ZWQgYW5kIHJlc3RvcmVkIHdoZW4gdXBkYXRpbmcgdGhlIGVudHJ5LgotLS0KIHNyYy9iYWNr ZW5kL25vZGVzL3RpZGJpdG1hcC5jIHwgMTkgKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1 ZGUvbGliL3NpbXBsZWhhc2guaCAgfCAyMiArKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVz IGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL3RpZGJpdG1hcC5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvdGlkYml0 bWFwLmMKaW5kZXggZjFmOTI1Y2IxMy4uMjA3ZjI3ZjBjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvdGlkYml0bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvdGlkYml0bWFwLmMK QEAgLTkyLDcgKzkyLDYgQEAKIHR5cGVkZWYgc3RydWN0IFBhZ2V0YWJsZUVudHJ5CiB7CiAJQmxv Y2tOdW1iZXIgYmxvY2tubzsJCS8qIHBhZ2UgbnVtYmVyIChoYXNodGFibGUga2V5KSAqLwotCWNo YXIJCXN0YXR1czsJCQkvKiBoYXNoIGVudHJ5IHN0YXR1cyAqLwogCWJvb2wJCWlzY2h1bms7CQkv KiBUID0gbG9zc3kgc3RvcmFnZSwgRiA9IGV4YWN0ICovCiAJYm9vbAkJcmVjaGVjazsJCS8qIHNo b3VsZCB0aGUgdHVwbGVzIGJlIHJlY2hlY2tlZD8gKi8KIAliaXRtYXB3b3JkCXdvcmRzW01heChX T1JEU19QRVJfUEFHRSwgV09SRFNfUEVSX0NIVU5LKV07CkBAIC0yMzcsNiArMjM2LDEyIEBAIHN0 YXRpYyBpbnQJdGJtX3NoYXJlZF9jb21wYXJhdG9yKGNvbnN0IHZvaWQgKmxlZnQsIGNvbnN0IHZv aWQgKnJpZ2h0LAogI2RlZmluZSBTSF9LRVkgYmxvY2tubwogI2RlZmluZSBTSF9IQVNIX0tFWSh0 Yiwga2V5KSBtdXJtdXJoYXNoMzIoa2V5KQogI2RlZmluZSBTSF9FUVVBTCh0YiwgYSwgYikgYSA9 PSBiCisjZGVmaW5lIFNIX0VOVFJZX0VNUFRZKGVudHJ5KSAoKGVudHJ5KS0+YmxvY2tubyA9PSBJ bnZhbGlkQmxvY2tOdW1iZXIpCisjZGVmaW5lIFNIX01BS0VfRU1QVFkoZW50cnkpICgoZW50cnkp LT5ibG9ja25vID0gSW52YWxpZEJsb2NrTnVtYmVyKQorI2RlZmluZSBTSF9NQUtFX0lOX1VTRShl bnRyeSkgKCh2b2lkKTApCisvLyBTaW5jZSB0aGUgZW1wdHkgbWFya2VyIGlzIG5vbi16ZXJvLCB3 ZSBuZWVkIHRvIHJlc2V0IHRoZSBlbnRyaWVzCisvLyBhZnRlciBhbGxvY2F0aW9uIHVzaW5nIHRo ZSBjdXN0b20gU0hfTUFLRV9FTVBUWSBtYWNyby4KKyNkZWZpbmUgU0hfTk9OWkVST19FTVBUWQog I2RlZmluZSBTSF9TQ09QRSBzdGF0aWMgaW5saW5lCiAjZGVmaW5lIFNIX0RFRklORQogI2RlZmlu ZSBTSF9ERUNMQVJFCkBAIC0yOTEsMTUgKzI5NiwxMiBAQCB0Ym1fY3JlYXRlX3BhZ2V0YWJsZShU SURCaXRtYXAgKnRibSkKIAl7CiAJCVBhZ2V0YWJsZUVudHJ5ICpwYWdlOwogCQlib29sCQlmb3Vu ZDsKLQkJY2hhcgkJb2xkc3RhdHVzOwogCiAJCXBhZ2UgPSBwYWdldGFibGVfaW5zZXJ0KHRibS0+ cGFnZXRhYmxlLAogCQkJCQkJCQl0Ym0tPmVudHJ5MS5ibG9ja25vLAogCQkJCQkJCQkmZm91bmQp OwogCQlBc3NlcnQoIWZvdW5kKTsKLQkJb2xkc3RhdHVzID0gcGFnZS0+c3RhdHVzOwogCQltZW1j cHkocGFnZSwgJnRibS0+ZW50cnkxLCBzaXplb2YoUGFnZXRhYmxlRW50cnkpKTsKLQkJcGFnZS0+ c3RhdHVzID0gb2xkc3RhdHVzOwogCX0KIAogCXRibS0+c3RhdHVzID0gVEJNX0hBU0g7CkBAIC0x MjMwLDEwICsxMjMyLDcgQEAgdGJtX2dldF9wYWdlZW50cnkoVElEQml0bWFwICp0Ym0sIEJsb2Nr TnVtYmVyIHBhZ2VubykKIAkvKiBJbml0aWFsaXplIGl0IGlmIG5vdCBwcmVzZW50IGJlZm9yZSAq LwogCWlmICghZm91bmQpCiAJewotCQljaGFyCQlvbGRzdGF0dXMgPSBwYWdlLT5zdGF0dXM7Ci0K IAkJTWVtU2V0KHBhZ2UsIDAsIHNpemVvZihQYWdldGFibGVFbnRyeSkpOwotCQlwYWdlLT5zdGF0 dXMgPSBvbGRzdGF0dXM7CiAJCXBhZ2UtPmJsb2Nrbm8gPSBwYWdlbm87CiAJCS8qIG11c3QgY291 bnQgaXQgdG9vICovCiAJCXRibS0+bmVudHJpZXMrKzsKQEAgLTEzMTcsMTAgKzEzMTYsNyBAQCB0 Ym1fbWFya19wYWdlX2xvc3N5KFRJREJpdG1hcCAqdGJtLCBCbG9ja051bWJlciBwYWdlbm8pCiAJ LyogSW5pdGlhbGl6ZSBpdCBpZiBub3QgcHJlc2VudCBiZWZvcmUgKi8KIAlpZiAoIWZvdW5kKQog CXsKLQkJY2hhcgkJb2xkc3RhdHVzID0gcGFnZS0+c3RhdHVzOwotCiAJCU1lbVNldChwYWdlLCAw LCBzaXplb2YoUGFnZXRhYmxlRW50cnkpKTsKLQkJcGFnZS0+c3RhdHVzID0gb2xkc3RhdHVzOwog CQlwYWdlLT5ibG9ja25vID0gY2h1bmtfcGFnZW5vOwogCQlwYWdlLT5pc2NodW5rID0gdHJ1ZTsK IAkJLyogbXVzdCBjb3VudCBpdCB0b28gKi8KQEAgLTEzMjksMTEgKzEzMjUsOCBAQCB0Ym1fbWFy a19wYWdlX2xvc3N5KFRJREJpdG1hcCAqdGJtLCBCbG9ja051bWJlciBwYWdlbm8pCiAJfQogCWVs c2UgaWYgKCFwYWdlLT5pc2NodW5rKQogCXsKLQkJY2hhcgkJb2xkc3RhdHVzID0gcGFnZS0+c3Rh dHVzOwotCiAJCS8qIGNodW5rIGhlYWRlciBwYWdlIHdhcyBmb3JtZXJseSBub24tbG9zc3ksIG1h a2UgaXQgbG9zc3kgKi8KIAkJTWVtU2V0KHBhZ2UsIDAsIHNpemVvZihQYWdldGFibGVFbnRyeSkp OwotCQlwYWdlLT5zdGF0dXMgPSBvbGRzdGF0dXM7CiAJCXBhZ2UtPmJsb2Nrbm8gPSBjaHVua19w YWdlbm87CiAJCXBhZ2UtPmlzY2h1bmsgPSB0cnVlOwogCQkvKiB3ZSBhc3N1bWUgaXQgaGFkIHNv bWUgdHVwbGUgYml0KHMpIHNldCwgc28gbWFyayBpdCBsb3NzeSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaCBiL3NyYy9pbmNsdWRlL2xpYi9zaW1wbGVoYXNoLmgK aW5kZXggM2MwM2E3ZTljOS4uYzg5MGEwOWI3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGli L3NpbXBsZWhhc2guaAorKysgYi9zcmMvaW5jbHVkZS9saWIvc2ltcGxlaGFzaC5oCkBAIC0zMDEs NiArMzAxLDEyIEBAIFNIX1NDT1BFIHZvaWQgU0hfU1RBVChTSF9UWVBFICogdGIpOwogI2RlZmlu ZSBTSF9NQUtFX0lOX1VTRShlbnRyeSkgKChlbnRyeSktPnN0YXR1cyA9IFNIX1NUQVRVU19JTl9V U0UpCiAjZW5kaWYKIAorLyoKKyAqIElmIHRoZSBlbXB0eSBtYXJrZXIgaXMgbm9uLXplcm8gKGUu Zy4sIEludmFsaWRCbG9ja051bWJlciA9IDB4RkZGRkZGRkYpLAorICogZGVmaW5lIFNIX05PTlpF Uk9fRU1QVFkgdG8gZXhwbGljaXRseSBpbml0aWFsaXplIGVudHJpZXMuIFdoZW4gdW5zZXQsCisg KiB6ZXJvLWluaXRpYWxpemF0aW9uIHZpYSBtZW1zZXQgaXMgc3VmZmljaWVudCAodGhlIGRlZmF1 bHQpLgorICovCisKIC8qCiAgKiBXcmFwIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgaW4gaW5j bHVkZSBndWFyZHMsIHRvIGF2b2lkIG11bHRpcGxlCiAgKiBkZWZpbml0aW9uIGVycm9ycyBpZiB0 aGlzIGhlYWRlciBpcyBpbmNsdWRlZCBtb3JlIHRoYW4gb25jZS4gIFRoZSByZXN0IG9mCkBAIC00 ODEsNiArNDg3LDExIEBAIFNIX0NSRUFURShNZW1vcnlDb250ZXh0IGN0eCwgdWludDMyIG5lbGVt ZW50cywgdm9pZCAqcHJpdmF0ZV9kYXRhKQogCiAJdGItPmRhdGEgPSAoU0hfRUxFTUVOVF9UWVBF ICopIFNIX0FMTE9DQVRFKHRiLCBzaXplb2YoU0hfRUxFTUVOVF9UWVBFKSAqIHNpemUpOwogCisj aWZkZWYgU0hfTk9OWkVST19FTVBUWQorCWZvciAodWludDY0IGkgPSAwOyBpIDwgc2l6ZTsgaSsr KQorCQlTSF9NQUtFX0VNUFRZKCZ0Yi0+ZGF0YVtpXSk7CisjZW5kaWYKKwogCVNIX1VQREFURV9Q QVJBTUVURVJTKHRiLCBzaXplKTsKIAlyZXR1cm4gdGI7CiB9CkBAIC00OTcsNyArNTA4LDEyIEBA IFNIX0RFU1RST1koU0hfVFlQRSAqIHRiKQogU0hfU0NPUEUgdm9pZAogU0hfUkVTRVQoU0hfVFlQ RSAqIHRiKQogeworI2lmZGVmIFNIX05PTlpFUk9fRU1QVFkKKwlmb3IgKHVpbnQzMiBpID0gMDsg aSA8IHRiLT5zaXplOyBpKyspCisJCVNIX01BS0VfRU1QVFkoJnRiLT5kYXRhW2ldKTsKKyNlbHNl CiAJbWVtc2V0KHRiLT5kYXRhLCAwLCBzaXplb2YoU0hfRUxFTUVOVF9UWVBFKSAqIHRiLT5zaXpl KTsKKyNlbmRpZgogCXRiLT5tZW1iZXJzID0gMDsKIH0KIApAQCAtNTI2LDYgKzU0MiwxMSBAQCBT SF9HUk9XKFNIX1RZUEUgKiB0YiwgdWludDY0IG5ld3NpemUpCiAKIAl0Yi0+ZGF0YSA9IChTSF9F TEVNRU5UX1RZUEUgKikgU0hfQUxMT0NBVEUodGIsIHNpemVvZihTSF9FTEVNRU5UX1RZUEUpICog bmV3c2l6ZSk7CiAKKyNpZmRlZiBTSF9OT05aRVJPX0VNUFRZCisJZm9yICh1aW50NjQgaiA9IDA7 IGogPCBuZXdzaXplOyBqKyspCisJCVNIX01BS0VfRU1QVFkoJnRiLT5kYXRhW2pdKTsKKyNlbmRp ZgorCiAJLyoKIAkgKiBVcGRhdGUgcGFyYW1ldGVycyBmb3IgbmV3IHRhYmxlIGFmdGVyIGFsbG9j YXRpb24gc3VjY2VlZHMgdG8gYXZvaWQKIAkgKiBpbmNvbnNpc3RlbnQgc3RhdGUgb24gT09NLgpA QCAtMTIyMiw2ICsxMjQzLDcgQEAgU0hfU1RBVChTSF9UWVBFICogdGIpCiAjdW5kZWYgU0hfRU5U UllfRU1QVFkKICN1bmRlZiBTSF9NQUtFX0VNUFRZCiAjdW5kZWYgU0hfTUFLRV9JTl9VU0UKKyN1 bmRlZiBTSF9OT05aRVJPX0VNUFRZCiAKIC8qIHVuZGVmaW5lIGxvY2FsbHkgZGVjbGFyZWQgbWFj cm9zICovCiAjdW5kZWYgU0hfTUFLRV9QUkVGSVgKLS0gCjIuMzQuMQoK --00000000000031dc65064d06fb18 Content-Type: application/octet-stream; name="v3-0002-Use-InvalidBuffer-to-indicate-empty-slot.patch" Content-Disposition: attachment; filename="v3-0002-Use-InvalidBuffer-to-indicate-empty-slot.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmr425az3 RnJvbSAwNTZiMTIzYWU0MWQ4ZWU4ZGE1ZmRmNWQ0ZWU5Y2Q4ODZhNTJiMmQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4KRGF0ZTogU3VuLCAxNSBN YXIgMjAyNiAwMDoxMzo1NSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMi81XSBVc2UgSW52YWxpZEJ1 ZmZlciB0byBpbmRpY2F0ZSBlbXB0eSBzbG90CgpTaW1wbGUgaGFzaCByZXF1aXJlcyBhIG1lY2hh bmlzbSB0byBkaXN0aW5ndWlzaAplbXB0eSBzbG90cy4gVGhlIHByZXZpb3VzIGltcGxlbWVudGF0 aW9uIG9mIHJlZmNvdW50CnNpbXBsZWhhc2ggd2FzIHVzaW5nIHRoZSBkZWZhdWx0IGBzdGF0dXNg IGZpZWxkLCBhZGRpbmcgYQpjaGFyIHRvIHRoZSBQcml2YXRlUmVmQ291bnRFbnRyLgoKVGhlIGJ1 ZmZlciBhbHJlYWR5IGhhcyBhbiByZXNlcnZlZCB2YWx1ZSBJbnZhbGlkQnVmZmVyIHRoYXQKY2Fu IGJlIHVzZWQgdG8gbWFyayBhbiBlbnRyeSBhcyBlbXB0eS4gTWFraW5nIHVzZSBvZiB0aGF0CnJl bW92ZXMgb25lIGZpZWxkIGZyb20gUHJpdmF0ZVJlZkNvdW50RW50cnkgYW5kIGtlZXAgaXQKMzJi aXQgYWxpZ25lZCwgd2l0aG91dCBwYWRkaW5nIHJlcXVpcmVkLgotLS0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIHwgNSArKystLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmlu ZGV4IDAwYmM2MDk1MjkuLmRiOTExMzI3ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1n ci5jCkBAIC0xMjUsOCArMTI1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJpdmF0ZVJlZkNvdW50RW50 cnkKIAkgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsKIAotCWNoYXIJCXN0YXR1czsKLQogCVByaXZhdGVS ZWZDb3VudERhdGEgZGF0YTsKIH0gUHJpdmF0ZVJlZkNvdW50RW50cnk7CiAKQEAgLTEzNiw2ICsx MzQsOSBAQCB0eXBlZGVmIHN0cnVjdCBQcml2YXRlUmVmQ291bnRFbnRyeQogI2RlZmluZSBTSF9L RVkgYnVmZmVyCiAjZGVmaW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpIG11cm11cmhhc2gzMigodWlu dDMyKSAoa2V5KSkKICNkZWZpbmUgU0hfRVFVQUwodGIsIGEsIGIpICgoYSkgPT0gKGIpKQorI2Rl ZmluZSBTSF9FTlRSWV9FTVBUWShlbnRyeSkgKChlbnRyeSktPmJ1ZmZlciA9PSBJbnZhbGlkQnVm ZmVyKQorI2RlZmluZSBTSF9NQUtFX0VNUFRZKGVudHJ5KSAoKGVudHJ5KS0+YnVmZmVyID0gSW52 YWxpZEJ1ZmZlcikKKyNkZWZpbmUgU0hfTUFLRV9JTl9VU0UoZW50cnkpICgodm9pZCkwKSAvKiBr ZXkgYXNzaWdubWVudCBpbXBsaWVzIGluIHVzZSAqLwogI2RlZmluZSBTSF9TQ09QRSBzdGF0aWMg aW5saW5lCiAjZGVmaW5lIFNIX0RFQ0xBUkUKICNkZWZpbmUgU0hfREVGSU5FCi0tIAoyLjM0LjEK Cg== --00000000000031dc65064d06fb18--