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 1tzWHg-0038YP-E8 for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Apr 2025 07:43:44 +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 1tzWHf-00HBzF-6Q for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Apr 2025 07:43:43 +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 1tzWHe-00HByf-Gl for pgsql-hackers@lists.postgresql.org; Tue, 01 Apr 2025 07:43:42 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tzWHY-002II1-0l for pgsql-hackers@postgresql.org; Tue, 01 Apr 2025 07:43:41 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-30beedb99c9so47811981fa.3 for ; Tue, 01 Apr 2025 00:43:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743493414; x=1744098214; 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=l5OAm1G117x3xhBu9JSrYGZWaAM5vgs7AaeNqP3Rqm8=; b=id+LMBDxgFzAG1pbmW2KefMxQtMc1eAWkQn7571cILxvbp4Vs3N7lqH9dss2ZKXtgr oXb3UC3VL8Tp+mw2hMWJ32JdJnymvQnTnUiWh0/UvB/sjd/t1Lq7M2k32uC98BPu99ZJ 37FL8eAFuOkr7cmURMteQ9daEcCKwt5eWIXkG7kaeSHvQl0NwR9TjZ7WwZDJAfV+vPDg jgeFFoD4aFFWHZ7j9jPQi1ly7eWoChNSBHHLuZ88UbbdU9OLV1Sz/OXYzkuO1IbeZz1N ZZ33I2B9/GIFAq8hbKuQOxj7K7xIjyYjZLOnhvSSiI4CnNfpD4Z/T3Js4l6y6zENq4KV tGoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743493414; x=1744098214; 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=l5OAm1G117x3xhBu9JSrYGZWaAM5vgs7AaeNqP3Rqm8=; b=SVpJhWIE3Fdzt0Fyto2UCIXSAL7XSkEZFAAp6qD5/yZUnz9hsn2+FFEAfcRdgikiA0 VnIDDY+6sMgzZ7/cnFXOwQMxMEh/oGefDviFXcmL4UXXmbUnhQffRJO0MgprbtpgT8qZ KI/d77X9tqyjhhtqs7jDYZkUsvGD5U6cx4jZumtL/zyB9HKqMIPbKva/ajgn7BukgHk6 mB/fZ0UxirDdMWe3OI9npB0+jHPY/GrWQYKbKSsVDCkmUTtAWbgN9yB+NbxvLV0suaZd 4wGX+KLxLtRtQ0cKaeTmtzLpBsEyvwJtlLHb8lZEc93almBqKLB+MlwLz2t+wSh0Gnr/ ojrQ== X-Forwarded-Encrypted: i=1; AJvYcCXslcHwaFbESYZKxjDLBdyvV5oJ+HStH5jg073yTT49WhQXFDzfKjZhIeJVx2MtJ5vbzqM1/kIZ4QUjJLA6@postgresql.org X-Gm-Message-State: AOJu0YzxAM1w9PUzi1LoL/Y8DPMp+yMh+JvEkhr/VfzfY5Av+/S1QXhE MUFgNB8TlPRE3zdh5SR1EAn6jj6XpWcEe3OjsZhNft0bdVdQPKnlmlzP3joPWjk8/PuiFotvTr5 Kwh0DxxckDlHaPu2w0kBsZQzOTzI= X-Gm-Gg: ASbGnctgrxvpYECLtO33CVZSx1kXfNLN4fYGpD33fxE2hH2GGJhmu8MuvfxsIy82MJZ 74cbQyRo3iAmCc419s0yTKXA0PXaqlWDDKeeuyJQ2NX+jKD+UYBJea2RvoL4Wdx6hYPJD2Yf9od F2dTs1xc6kkC7snwhwhYmjLP/3ChYdD5+hWCWGn48dkt/ED2Uxt8IFuRhIL06H X-Google-Smtp-Source: AGHT+IEUOi8/kTj46gN8qIsaNvZoh9n/iTbBVuyCzkMmIF+r/Xq84raiok9MXUHmf1q0ACmlf2FnK7jCmJcF48Hk3n8= X-Received: by 2002:a05:651c:1545:b0:30b:c3ce:ea1f with SMTP id 38308e7fff4ca-30de023bbfemr31886401fa.15.1743493414328; Tue, 01 Apr 2025 00:43:34 -0700 (PDT) MIME-Version: 1.0 References: <3e40eeec-d8bf-4496-854e-485dd901f6a2@vondra.me> <6bf7194e-4c34-4e6d-8215-f6acf8903974@vondra.me> <6705dbd2-060b-4f3c-9fcb-1c7f10880b26@vondra.me> <66283922-0448-44e7-bbdd-38aaf2be34b9@vondra.me> <7987a0b5-9933-457a-b5ba-d28e9cce883b@vondra.me> In-Reply-To: <7987a0b5-9933-457a-b5ba-d28e9cce883b@vondra.me> From: Rahila Syed Date: Tue, 1 Apr 2025 13:13:21 +0530 X-Gm-Features: AQ5f1Jrwgcz4OaPIq5YopFChHbQ9OhnfDuQWB0UeAaSTy9IMpyWghcxyQnp8eDk Message-ID: Subject: Re: Improve monitoring of shared memory allocations To: Tomas Vondra Cc: Nazir Bilal Yavuz , Andres Freund , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a13be00631b2b166" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a13be00631b2b166 Content-Type: multipart/alternative; boundary="000000000000a13bde0631b2b164" --000000000000a13bde0631b2b164 Content-Type: text/plain; charset="UTF-8" Hi, I think it's almost committable. Attached is v8 with some minor review > adjustments, and updated commit messages. Please read through those and > feel free to suggest changes. > > The changes look good to me. About the following question. /* XXX what about segment size? should check have HASH_SEGMENT? */ Do you mean for a shared hash table should the caller have specified HASH_SEGMENT in flags? It appears that the current code does not require this change. All the shared hash tables seem to have the default segment size. I left the comment as it is as I am not sure if you intend to remove it or not. > I still found the hash_get_init_size() comment unclear, and it also > referenced init_size, which is no longer relevant. I improved the > comment a bit (I find it useful to mimic comments of nearby functions, > so I did that too here). The "initial_elems" name was a bit confusing, > as it seemed to suggest "number of elements", but it's a simple flag. So > I renamed it to "prealloc", which seems clearer to me. I also tweaked > (reordered/reformatted) the conditions a bit. I appreciate your edtis, the comment and code are clearer now. PFA the patches after merging the review patches. Thank you, Rahila Syed --000000000000a13bde0631b2b164 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

I think it's almost committable. Attached is v8 with some minor review<= br> adjustments, and updated commit messages. Please read through those and
feel free to suggest changes.

=C2=A0
The changes look good to me.=C2=A0About the following question.
=C2=A0 =C2=A0/* XXX what about segment s= ize? should check have HASH_SEGMENT? */
Do you mean for a shared hash ta= ble should the caller have specified HASH_SEGMENT
in flags?
It appea= rs that the current code does not require this change. All the shared hash = tables seem
to have the default segment size.=C2=A0
I left the comme= nt as it is as I am not sure if you intend to remove it or not.
=C2=A0
I still found the hash_get_init_size() comment unclear, and it also
referenced init_size, which is no longer relevant. I improved the
comment a bit (I find it useful to mimic comments of nearby functions,
so I did that too here). The "initial_elems" name was a bit confu= sing,
as it seemed to suggest "number of elements", but it's a simp= le flag. So
I renamed it to "prealloc", which seems clearer to me. I also twe= aked
(reordered/reformatted) the conditions a bit.

I appreciate your edtis, the comment and code are clearer now.

PF= A the patches after merging the review patches.

Thank you,
Rahila Syed
--000000000000a13bde0631b2b164-- --000000000000a13be00631b2b166 Content-Type: application/octet-stream; name="v9-0001-Improve-acounting-for-memory-used-by-shared-hash-tab.patch" Content-Disposition: attachment; filename="v9-0001-Improve-acounting-for-memory-used-by-shared-hash-tab.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8y6x6ot0 RnJvbSA0NGEyODgyZTQ5MGNkMGNkNDM3NTFkMjRhODY0ZWEyNGUyYjIwMTM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMSBBcHIgMjAyNSAxMjo1OToxOSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMS8z XSBJbXByb3ZlIGFjb3VudGluZyBmb3IgbWVtb3J5IHVzZWQgYnkgc2hhcmVkIGhhc2ggdGFibGVz CgpwZ19zaG1lbV9hbGxvY2F0aW9ucyB0cmFja3MgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgU2ht ZW1Jbml0U3RydWN0KCksCmJ1dCBmb3Igc2hhcmVkIGhhc2ggdGFibGVzIHRoYXQgY292ZXJlZCBv bmx5IHRoZSBoZWFkZXIgYW5kIGhhc2gKZGlyZWN0b3J5LiAgVGhlIHJlbWFpbmluZyBwYXJ0cyAo c2VnbWVudHMgYW5kIGJ1Y2tldHMpIHdlcmUgYWxsb2NhdGVkCmxhdGVyIHVzaW5nIFNobWVtQWxs b2MoKSwgd2hpY2ggZG9lcyBub3QgdXBkYXRlIHRoZSBzaG1lbSBhY2NvdW50aW5nLgpUaHVzLCB0 aGVzZSBhbGxvY2F0aW9ucyB3ZXJlIG5vdCBzaG93biBpbiBwZ19zaG1lbV9hbGxvY2F0aW9ucy4K ClRoaXMgY29tbWl0IGltcHJvdmVzIHRoZSBzaXR1YXRpb24gYnkgYWxsb2NhdGluZyBhbGwgdGhl IGhhc2ggdGFibGUKcGFydHMgYXQgb25jZSwgdXNpbmcgYSBzaW5nbGUgU2htZW1Jbml0U3RydWN0 KCkgY2FsbC4gVGhpcyB3YXkgdGhlClNobWVtSW5kZXggZW50cmllcyAoYW5kIHRodXMgcGdfc2ht ZW1fYWxsb2NhdGlvbnMpIGJldHRlciByZWZsZWN0IHRoZQpwcm9wZXIgc2l6ZSBvZiB0aGUgaGFz aCB0YWJsZS4KClRoaXMgYWZmZWN0cyBhbGxvY2F0aW9ucyBmb3IgcHJpdmF0ZSAobm9uLXNoYXJl ZCkgaGFzaCB0YWJsZXMgdG9vLCBhcwp0aGUgaGFzaF9jcmVhdGUoKSBjb2RlIGlzIHNoYXJlZC4g Rm9yIG5vbi1zaGFyZWQgdGFibGVzIHRoaXMgaG93ZXZlcgptYWtlcyBubyBwcmFjdGljYWwgZGlm ZmVyZW5jZS4KClRoaXMgY2hhbmdlcyB0aGUgYWxpZ25tZW50IGEgYml0LiBTaG1lbUFsbG9jKCkg YWxpZ25zIHRoZSBjaHVua3MgdXNpbmcKQ0FDSEVMSU5FQUxJR04oKSwgd2hpY2ggbWVhbnMgc29t ZSBwYXJ0cyAoaGVhZGVyLCBkaXJlY3RvcnksIHNlZ21lbnRzKQp3ZXJlIGFsaWduZWQgdGhpcyB3 YXkuIEFsbG9jYXRpbmcgYWxsIHBhcnRzIGFzIGEgc2luZ2xlIGNodW5rcyByZW1vdmVzCnRoaXMg KGltcGxpY2l0KSBhbGlnbm1lbnQuIFdlJ3ZlIGNvbnNpZGVyZWQgYWRkaW5nIGV4cGxpY2l0IGFs aWdubWVudCwKYnV0IHdlJ3ZlIGRlY2lkZWQgbm90IHRvIC0gaXQgc2VlbXMgdG8gYmUgbWVyZWx5 IGEgY29pbmNpZGVuY2UgZHVlIHRvCnVzaW5nIHRoZSBTaG1lbUFsbG9jKCkgQVBJLCBub3QgZHVl IHRvIG5lY2Vzc2l0eS4KCkF1dGhvcjogUmFoaWxhIFN5ZWQgPHJhaGlsYXN5ZWQ5MEBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBOYXppciBCaWxhbCBZYXZ1eiA8YnlhdnV6ODFAZ21haWwuY29tPgpSZXZpZXdlZC1i eTogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vQ0FIMkwyOHZIelJhbmtzemhxejdkZVhVUnhLbmN4ZmlybnVXNjh6RDcraFZBcWFT NUdRQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAg IHwgICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMgfCAyODYgKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmggICAg ICAgfCAgIDMgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjI1IGluc2VydGlvbnMoKyksIDY4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDg5NWE0M2ZiMzkuLjhlMTkxMzRj YjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2R5bmFoYXNoLmgiCiAKIHN0YXRpYyB2 b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpOwogCkBA IC0zNDYsNyArMzQ3LDggQEAgU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1lLAkJLyogdGFi bGUgc3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAKIAkvKiBsb29rIGl0IHVwIGluIHRo ZSBzaG1lbSBpbmRleCAqLwogCWxvY2F0aW9uID0gU2htZW1Jbml0U3RydWN0KG5hbWUsCi0JCQkJ CQkJICAgaGFzaF9nZXRfc2hhcmVkX3NpemUoaW5mb1AsIGhhc2hfZmxhZ3MpLAorCQkJCQkJCSAg IGhhc2hfZ2V0X2luaXRfc2l6ZShpbmZvUCwgaGFzaF9mbGFncywKKwkJCQkJCQkJCQkJCSAgaW5p dF9zaXplLCB0cnVlKSwKIAkJCQkJCQkgICAmZm91bmQpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gv ZHluYWhhc2guYwppbmRleCAzZjI1OTI5ZjJkLi4wMjQwYTg3MTM5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFz aC9keW5haGFzaC5jCkBAIC0yNjAsMTIgKzI2MCwzNiBAQCBzdGF0aWMgbG9uZyBoYXNoX2FjY2Vz c2VzLAogCQkJaGFzaF9leHBhbnNpb25zOwogI2VuZGlmCiAKKyNkZWZpbmUJSEFTSF9ESVJFQ1RP UllfUFRSKGhhc2hwKSBcCisJKCgoY2hhciAqKSAoaGFzaHApLT5oY3RsKSArIHNpemVvZihIQVNI SERSKSkKKworI2RlZmluZSBIQVNIX1NFR01FTlRfT0ZGU0VUKGhjdGwsIGlkeCkgXAorCShzaXpl b2YoSEFTSEhEUikgKyBcCisJICgoaGN0bCktPmRzaXplICogc2l6ZW9mKEhBU0hTRUdNRU5UKSkg KyBcCisJICgoaGN0bCktPnNzaXplICogKGlkeCkgKiBzaXplb2YoSEFTSEJVQ0tFVCkpKQorCisj ZGVmaW5lIEhBU0hfU0VHTUVOVF9QVFIoaGFzaHAsIGlkeCkgXAorCSgoY2hhciAqKSAoaGFzaHAp LT5oY3RsICsgSEFTSF9TRUdNRU5UX09GRlNFVCgoaGFzaHApLT5oY3RsLCAoaWR4KSkpCisKKyNk ZWZpbmUgSEFTSF9TRUdNRU5UX1NJWkUoaGFzaHApIFwKKwkoKGhhc2hwKS0+c3NpemUgKiBzaXpl b2YoSEFTSEJVQ0tFVCkpCisKKyNkZWZpbmUgSEFTSF9FTEVNRU5UU19QVFIoaGFzaHAsIG5zZWdz KSBcCisJKChjaGFyICopIChoYXNocCktPmhjdGwgKyBIQVNIX1NFR01FTlRfT0ZGU0VUKChoYXNo cCktPmhjdGwsIG5zZWdzKSkKKworLyogRWFjaCBlbGVtZW50IGhhcyBhIEhBU0hFTEVNRU5UIGhl YWRlciBwbHVzIHVzZXIgZGF0YS4gKi8KKyNkZWZpbmUgSEFTSF9FTEVNRU5UX1NJWkUoaGN0bCkg XAorCShNQVhBTElHTihzaXplb2YoSEFTSEVMRU1FTlQpKSArIE1BWEFMSUdOKChoY3RsKS0+ZW50 cnlzaXplKSkKKworI2RlZmluZSBIQVNIX0VMRU1FTlRfTkVYVChoY3RsLCBudW0sIHB0cikgXAor CSgoY2hhciAqKSAocHRyKSArICgobnVtKSAqIEhBU0hfRUxFTUVOVF9TSVpFKGhjdGwpKSkKKwog LyoKICAqIFByaXZhdGUgZnVuY3Rpb24gcHJvdG90eXBlcwogICovCiBzdGF0aWMgdm9pZCAqRHlu YUhhc2hBbGxvYyhTaXplIHNpemUpOwogc3RhdGljIEhBU0hTRUdNRU5UIHNlZ19hbGxvYyhIVEFC ICpoYXNocCk7Ci1zdGF0aWMgYm9vbCBlbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQgbmVs ZW0sIGludCBmcmVlbGlzdF9pZHgpOworc3RhdGljIEhBU0hFTEVNRU5UICplbGVtZW50X2FsbG9j KEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0pOwogc3RhdGljIGJvb2wgZGlyX3JlYWxsb2MoSFRBQiAq aGFzaHApOwogc3RhdGljIGJvb2wgZXhwYW5kX3RhYmxlKEhUQUIgKmhhc2hwKTsKIHN0YXRpYyBI QVNIQlVDS0VUIGdldF9oYXNoX2VudHJ5KEhUQUIgKmhhc2hwLCBpbnQgZnJlZWxpc3RfaWR4KTsK QEAgLTI4MSw2ICszMDUsMTEgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJfc2VxX3NjYW4oSFRBQiAq aGFzaHApOwogc3RhdGljIHZvaWQgZGVyZWdpc3Rlcl9zZXFfc2NhbihIVEFCICpoYXNocCk7CiBz dGF0aWMgYm9vbCBoYXNfc2VxX3NjYW5zKEhUQUIgKmhhc2hwKTsKIAorc3RhdGljIHZvaWQgY29t cHV0ZV9idWNrZXRzX2FuZF9zZWdzKGxvbmcgbmVsZW0sIGxvbmcgbnVtX3BhcnRpdGlvbnMsCisJ CQkJCQkJCQkgbG9uZyBzc2l6ZSwKKwkJCQkJCQkJCSBpbnQgKm5idWNrZXRzLCBpbnQgKm5zZWdt ZW50cyk7CitzdGF0aWMgdm9pZCBlbGVtZW50X2FkZChIVEFCICpoYXNocCwgSEFTSEVMRU1FTlQg KmZpcnN0RWxlbWVudCwKKwkJCQkJCWludCBuZWxlbSwgaW50IGZyZWVsaXN0X2lkeCk7CiAKIC8q CiAgKiBtZW1vcnkgYWxsb2NhdGlvbiBzdXBwb3J0CkBAIC0zNTMsNiArMzgyLDggQEAgaGFzaF9j cmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5m bywgaW50IGZsYWdzKQogewogCUhUQUIJICAgKmhhc2hwOwogCUhBU0hIRFIgICAgKmhjdGw7CisJ aW50CQkJbmVsZW1fYmF0Y2g7CisJYm9vbAkJcHJlYWxsb2M7CiAKIAkvKgogCSAqIEhhc2ggdGFi bGVzIG5vdyBhbGxvY2F0ZSBzcGFjZSBmb3Iga2V5IGFuZCBkYXRhLCBidXQgeW91IGhhdmUgdG8g c2F5CkBAIC01MDcsOSArNTM4LDMxIEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUs IGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAkJaGFzaHAtPmlz c2hhcmVkID0gZmFsc2U7CiAJfQogCisJLyogQ2hvb3NlIHRoZSBudW1iZXIgb2YgZW50cmllcyB0 byBhbGxvY2F0ZSBhdCBhIHRpbWUuICovCisJbmVsZW1fYmF0Y2ggPSBjaG9vc2VfbmVsZW1fYWxs b2MoaW5mby0+ZW50cnlzaXplKTsKKworCS8qCisJICogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2Yg ZWxlbWVudHMgdG8gYWxsb2NhdGUKKwkgKgorCSAqIEZvciBhIHNoYXJlZCBoYXNoIHRhYmxlLCBw cmVhbGxvY2F0ZSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBlbGVtZW50cy4KKwkgKiBUaGlzIHJl ZHVjZXMgcHJvYmxlbXMgd2l0aCBydW4tdGltZSBvdXQtb2Ytc2hhcmVkLW1lbW9yeSBjb25kaXRp b25zLgorCSAqCisJICogRm9yIGEgcHJpdmF0ZSBoYXNoIHRhYmxlLCBwcmVhbGxvY2F0ZSB0aGUg cmVxdWVzdGVkIG51bWJlciBvZiBlbGVtZW50cworCSAqIGlmIGl0J3MgbGVzcyB0aGFuIG91ciBj aG9zZW4gbmVsZW1fYWxsb2MuICBUaGlzIGF2b2lkcyB3YXN0aW5nIHNwYWNlIGlmCisJICogdGhl IGNhbGxlciBjb3JyZWN0bHkgZXN0aW1hdGVzIGEgc21hbGwgdGFibGUgc2l6ZS4KKwkgKi8KKwlw cmVhbGxvYyA9IChmbGFncyAmIEhBU0hfU0hBUkVEX01FTSkgfHwgKG5lbGVtIDwgbmVsZW1fYmF0 Y2gpOworCisJLyoKKwkgKiBBbGxvY2F0ZSB0aGUgbWVtb3J5IG5lZWRlZCBmb3IgaGFzaCBoZWFk ZXIsIGRpcmVjdG9yeSwgc2VnbWVudHMgYW5kCisJICogZWxlbWVudHMgdG9nZXRoZXIuIFVzZSBw b2ludGVyIGFyaXRobWV0aWMgdG8gYXJyaXZlIGF0IHRoZSBzdGFydCBvZgorCSAqIGVhY2ggb2Yg dGhlc2Ugc3RydWN0dXJlcyBsYXRlci4KKwkgKi8KIAlpZiAoIWhhc2hwLT5oY3RsKQogCXsKLQkJ aGFzaHAtPmhjdGwgPSAoSEFTSEhEUiAqKSBoYXNocC0+YWxsb2Moc2l6ZW9mKEhBU0hIRFIpKTsK KwkJU2l6ZQkJc2l6ZSA9IGhhc2hfZ2V0X2luaXRfc2l6ZShpbmZvLCBmbGFncywgbmVsZW0sIHBy ZWFsbG9jKTsKKworCQloYXNocC0+aGN0bCA9IChIQVNISERSICopIGhhc2hwLT5hbGxvYyhzaXpl KTsKIAkJaWYgKCFoYXNocC0+aGN0bCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfT1VUX09GX01FTU9SWSksCkBAIC01NTgsNiArNjExLDkgQEAgaGFzaF9jcmVhdGUo Y29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50 IGZsYWdzKQogCWhjdGwtPmtleXNpemUgPSBpbmZvLT5rZXlzaXplOwogCWhjdGwtPmVudHJ5c2l6 ZSA9IGluZm8tPmVudHJ5c2l6ZTsKIAorCS8qIHJlbWVtYmVyIGhvdyBtYW55IGVsZW1lbnRzIHRv IGFsbG9jYXRlIGF0IG9uY2UgKi8KKwloY3RsLT5uZWxlbV9hbGxvYyA9IG5lbGVtX2JhdGNoOwor CiAJLyogbWFrZSBsb2NhbCBjb3BpZXMgb2YgaGVhdmlseS11c2VkIGNvbnN0YW50IGZpZWxkcyAq LwogCWhhc2hwLT5rZXlzaXplID0gaGN0bC0+a2V5c2l6ZTsKIAloYXNocC0+c3NpemUgPSBoY3Rs LT5zc2l6ZTsKQEAgLTU2NywxNCArNjIzLDYgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFi bmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCWlmICgh aW5pdF9odGFiKGhhc2hwLCBuZWxlbSkpCiAJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gaW5pdGlh bGl6ZSBoYXNoIHRhYmxlIFwiJXNcIiIsIGhhc2hwLT50YWJuYW1lKTsKIAotCS8qCi0JICogRm9y IGEgc2hhcmVkIGhhc2ggdGFibGUsIHByZWFsbG9jYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9m IGVsZW1lbnRzLgotCSAqIFRoaXMgcmVkdWNlcyBwcm9ibGVtcyB3aXRoIHJ1bi10aW1lIG91dC1v Zi1zaGFyZWQtbWVtb3J5IGNvbmRpdGlvbnMuCi0JICoKLQkgKiBGb3IgYSBub24tc2hhcmVkIGhh c2ggdGFibGUsIHByZWFsbG9jYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mCi0JICogZWxlbWVu dHMgaWYgaXQncyBsZXNzIHRoYW4gb3VyIGNob3NlbiBuZWxlbV9hbGxvYy4gIFRoaXMgYXZvaWRz IHdhc3RpbmcKLQkgKiBzcGFjZSBpZiB0aGUgY2FsbGVyIGNvcnJlY3RseSBlc3RpbWF0ZXMgYSBz bWFsbCB0YWJsZSBzaXplLgotCSAqLwogCWlmICgoZmxhZ3MgJiBIQVNIX1NIQVJFRF9NRU0pIHx8 CiAJCW5lbGVtIDwgaGN0bC0+bmVsZW1fYWxsb2MpCiAJewpAQCAtNTgyLDYgKzYzMCw5IEBAIGhh c2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwg KmluZm8sIGludCBmbGFncykKIAkJCQkJZnJlZWxpc3RfcGFydGl0aW9ucywKIAkJCQkJbmVsZW1f YWxsb2MsCiAJCQkJCW5lbGVtX2FsbG9jX2ZpcnN0OworCQl2b2lkCSAgICpwdHIgPSBOVUxMOwor CQlpbnQJCQluc2VnczsKKwkJaW50CQkJbmJ1Y2tldHM7CiAKIAkJLyoKIAkJICogSWYgaGFzaCB0 YWJsZSBpcyBwYXJ0aXRpb25lZCwgZ2l2ZSBlYWNoIGZyZWVsaXN0IGFuIGVxdWFsIHNoYXJlIG9m CkBAIC02MDYsMTQgKzY1NywzMiBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBs b25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJCWVsc2UKIAkJCW5l bGVtX2FsbG9jX2ZpcnN0ID0gbmVsZW1fYWxsb2M7CiAKKwkJLyoKKwkJICogQ2FsY3VsYXRlIHRo ZSBvZmZzZXQgYXQgd2hpY2ggdG8gZmluZCB0aGUgZmlyc3QgcGFydGl0aW9uIG9mCisJCSAqIGVs ZW1lbnRzLiBXZSBoYXZlIHRvIHNraXAgc3BhY2UgZm9yIHRoZSBoZWFkZXIsIHNlZ21lbnRzIGFu ZAorCQkgKiBidWNrZXRzLiBXZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZSBudW1iZXIgb2Ygc2Vn bWVudHMsIHdoaWNoIHdlCisJCSAqIGRvbid0IHN0b3JlIGFueXdoZXJlLgorCQkgKi8KKwkJY29t cHV0ZV9idWNrZXRzX2FuZF9zZWdzKG5lbGVtLCBoY3RsLT5udW1fcGFydGl0aW9ucywgaGN0bC0+ c3NpemUsCisJCQkJCQkJCSAmbmJ1Y2tldHMsICZuc2Vncyk7CisKKwkJcHRyID0gSEFTSF9FTEVN RU5UU19QVFIoaGFzaHAsIG5zZWdzKTsKKworCQkvKgorCQkgKiBBc3NpZ24gdGhlIGNvcnJlY3Qg bG9jYXRpb24gb2YgZWFjaCBwYXJpdGlvbiB3aXRoaW4gYSBwcmUtYWxsb2NhdGVkCisJCSAqIGJ1 ZmZlci4KKwkJICoKKwkJICogQWN0dWFsIG1lbW9yeSBhbGxvY2F0aW9uIGhhcHBlbnMgaW4gU2ht ZW1Jbml0SGFzaCBmb3Igc2hhcmVkIGhhc2gKKwkJICogdGFibGVzIG9yIGVhcmxpZXIgaW4gdGhp cyBmdW5jdGlvbiBmb3Igbm9uLXNoYXJlZCBoYXNoIHRhYmxlcy4KKwkJICoKKwkJICogV2UganVz dCBuZWVkIHRvIHNwbGl0IHRoYXQgYWxsb2NhdGlvbiBpbnRvIHBlci1iYXRjaCBmcmVlbGlzdHMu CisJCSAqLwogCQlmb3IgKGkgPSAwOyBpIDwgZnJlZWxpc3RfcGFydGl0aW9uczsgaSsrKQogCQl7 CiAJCQlpbnQJCQl0ZW1wID0gKGkgPT0gMCkgPyBuZWxlbV9hbGxvY19maXJzdCA6IG5lbGVtX2Fs bG9jOwogCi0JCQlpZiAoIWVsZW1lbnRfYWxsb2MoaGFzaHAsIHRlbXAsIGkpKQotCQkJCWVyZXBv cnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAotCQkJCQkJ IGVycm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CisJCQllbGVtZW50X2FkZChoYXNocCwgKEhBU0hF TEVNRU5UICopIHB0ciwgdGVtcCwgaSk7CisJCQlwdHIgPSBIQVNIX0VMRU1FTlRfTkVYVChoY3Rs LCB0ZW1wLCBwdHIpOwogCQl9CiAJfQogCkBAIC03MDEsMzAgKzc3MCwxMiBAQCBpbml0X2h0YWIo SFRBQiAqaGFzaHAsIGxvbmcgbmVsZW0pCiAJCWZvciAoaSA9IDA7IGkgPCBOVU1fRlJFRUxJU1RT OyBpKyspCiAJCQlTcGluTG9ja0luaXQoJihoY3RsLT5mcmVlTGlzdFtpXS5tdXRleCkpOwogCi0J LyoKLQkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5leHQgZ3JlYXRlciBwb3dlciBvZiB0d28g bnVtYmVyIG9mIGJ1Y2tldHMsCi0JICogYXNzdW1pbmcgYSBkZXNpcmVkIG1heGltdW0gbG9hZCBm YWN0b3Igb2YgMS4KLQkgKi8KLQluYnVja2V0cyA9IG5leHRfcG93Ml9pbnQobmVsZW0pOwotCi0J LyoKLQkgKiBJbiBhIHBhcnRpdGlvbmVkIHRhYmxlLCBuYnVja2V0cyBtdXN0IGJlIGF0IGxlYXN0 IGVxdWFsIHRvCi0JICogbnVtX3BhcnRpdGlvbnM7IHdlcmUgaXQgbGVzcywga2V5cyB3aXRoIGFw cGFyZW50bHkgZGlmZmVyZW50IHBhcnRpdGlvbgotCSAqIG51bWJlcnMgd291bGQgbWFwIHRvIHRo ZSBzYW1lIGJ1Y2tldCwgYnJlYWtpbmcgcGFydGl0aW9uIGluZGVwZW5kZW5jZS4KLQkgKiAoTm9y bWFsbHkgbmJ1Y2tldHMgd2lsbCBiZSBtdWNoIGJpZ2dlcjsgdGhpcyBpcyBqdXN0IGEgc2FmZXR5 IGNoZWNrLikKLQkgKi8KLQl3aGlsZSAobmJ1Y2tldHMgPCBoY3RsLT5udW1fcGFydGl0aW9ucykK LQkJbmJ1Y2tldHMgPDw9IDE7CisJY29tcHV0ZV9idWNrZXRzX2FuZF9zZWdzKG5lbGVtLCBoY3Rs LT5udW1fcGFydGl0aW9ucywgaGN0bC0+c3NpemUsCisJCQkJCQkJICZuYnVja2V0cywgJm5zZWdz KTsKIAogCWhjdGwtPm1heF9idWNrZXQgPSBoY3RsLT5sb3dfbWFzayA9IG5idWNrZXRzIC0gMTsK IAloY3RsLT5oaWdoX21hc2sgPSAobmJ1Y2tldHMgPDwgMSkgLSAxOwogCi0JLyoKLQkgKiBGaWd1 cmUgbnVtYmVyIG9mIGRpcmVjdG9yeSBzZWdtZW50cyBuZWVkZWQsIHJvdW5kIHVwIHRvIGEgcG93 ZXIgb2YgMgotCSAqLwotCW5zZWdzID0gKG5idWNrZXRzIC0gMSkgLyBoY3RsLT5zc2l6ZSArIDE7 Ci0JbnNlZ3MgPSBuZXh0X3BvdzJfaW50KG5zZWdzKTsKLQogCS8qCiAJICogTWFrZSBzdXJlIGRp cmVjdG9yeSBpcyBiaWcgZW5vdWdoLiBJZiBwcmUtYWxsb2NhdGVkIGRpcmVjdG9yeSBpcyB0b28K IAkgKiBzbWFsbCwgY2hva2UgKGNhbGxlciBzY3Jld2VkIHVwKS4KQEAgLTczNywyNiArNzg4LDI1 IEBAIGluaXRfaHRhYihIVEFCICpoYXNocCwgbG9uZyBuZWxlbSkKIAkJCXJldHVybiBmYWxzZTsK IAl9CiAKLQkvKiBBbGxvY2F0ZSBhIGRpcmVjdG9yeSAqLworCS8qCisJICogQXNzaWduIGEgZGly ZWN0b3J5IGJ5IG1ha2luZyBpdCBwb2ludCB0byB0aGUgY29ycmVjdCBsb2NhdGlvbiBpbiB0aGUK KwkgKiBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4KKwkgKi8KIAlpZiAoIShoYXNocC0+ZGlyKSkKIAl7 CiAJCUN1cnJlbnREeW5hSGFzaEN4dCA9IGhhc2hwLT5oY3h0OwotCQloYXNocC0+ZGlyID0gKEhB U0hTRUdNRU5UICopCi0JCQloYXNocC0+YWxsb2MoaGN0bC0+ZHNpemUgKiBzaXplb2YoSEFTSFNF R01FTlQpKTsKLQkJaWYgKCFoYXNocC0+ZGlyKQotCQkJcmV0dXJuIGZhbHNlOworCQloYXNocC0+ ZGlyID0gKEhBU0hTRUdNRU5UICopIEhBU0hfRElSRUNUT1JZX1BUUihoYXNocCk7CiAJfQogCi0J LyogQWxsb2NhdGUgaW5pdGlhbCBzZWdtZW50cyAqLworCS8qIEFzc2lnbiBpbml0aWFsIHNlZ21l bnRzLCB3aGljaCBhcmUgYWxzbyBwcmUtYWxsb2NhdGVkICovCisJaSA9IDA7CiAJZm9yIChzZWdw ID0gaGFzaHAtPmRpcjsgaGN0bC0+bnNlZ3MgPCBuc2VnczsgaGN0bC0+bnNlZ3MrKywgc2VncCsr KQogCXsKLQkJKnNlZ3AgPSBzZWdfYWxsb2MoaGFzaHApOwotCQlpZiAoKnNlZ3AgPT0gTlVMTCkK LQkJCXJldHVybiBmYWxzZTsKKwkJKnNlZ3AgPSAoSEFTSFNFR01FTlQpIEhBU0hfU0VHTUVOVF9Q VFIoaGFzaHAsIGkrKyk7CisJCU1lbVNldCgqc2VncCwgMCwgSEFTSF9TRUdNRU5UX1NJWkUoaGFz aHApKTsKIAl9CiAKLQkvKiBDaG9vc2UgbnVtYmVyIG9mIGVudHJpZXMgdG8gYWxsb2NhdGUgYXQg YSB0aW1lICovCi0JaGN0bC0+bmVsZW1fYWxsb2MgPSBjaG9vc2VfbmVsZW1fYWxsb2MoaGN0bC0+ ZW50cnlzaXplKTsKKwlBc3NlcnQoaSA9PSBuc2Vncyk7CiAKICNpZmRlZiBIQVNIX0RFQlVHCiAJ ZnByaW50ZihzdGRlcnIsICJpbml0X2h0YWI6XG4lcyVwXG4lcyVsZFxuJXMlbGRcbiVzJWRcbiVz JWxkXG4lcyV1XG4lcyV4XG4lcyV4XG4lcyVsZFxuIiwKQEAgLTg0NiwxNiArODk2LDc2IEBAIGhh c2hfc2VsZWN0X2RpcnNpemUobG9uZyBudW1fZW50cmllcykKIH0KIAogLyoKLSAqIENvbXB1dGUg dGhlIHJlcXVpcmVkIGluaXRpYWwgbWVtb3J5IGFsbG9jYXRpb24gZm9yIGEgc2hhcmVkLW1lbW9y eQotICogaGFzaHRhYmxlIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuICBXZSBuZWVkIHNwYWNl IGZvciB0aGUgSEFTSEhEUgotICogYW5kIGZvciB0aGUgKG5vbiBleHBhbnNpYmxlKSBkaXJlY3Rv cnkuCisgKiBoYXNoX2dldF9pbml0X3NpemUgLS0gZGV0ZXJtaW5lIG1lbW9yeSBuZWVkZWQgZm9y IGEgbmV3IGR5bmFtaWMgaGFzaCB0YWJsZQorICoKKyAqCWluZm86IGhhc2ggdGFibGUgcGFyYW1l dGVycworICoJZmxhZ3M6IGJpdG1hc2sgaW5kaWNhdGluZyB3aGljaCBwYXJhbWV0ZXJzIHRvIHRh a2UgZnJvbSAqaW5mbworICoJbmVsZW06IG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGV4cGVj dGVkCisgKglwcmVhbGxvYzogcmVxdWVzdCBwcmVhbGxvY2F0aW9uIG9mIGVsZW1lbnRzCisgKgor ICogQ29tcHV0ZSB0aGUgcmVxdWlyZWQgaW5pdGlhbCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgYSBo YXNodGFibGUgd2l0aCB0aGUgZ2l2ZW4KKyAqIHBhcmFtZXRlcnMuIFdlIG5lZWQgc3BhY2UgZm9y IHRoZSBIQVNISERSLCBmb3IgdGhlIGRpcmVjdG9yeSwgc2VnbWVudHMgYW5kCisgKiBwcmVhbGxv Y2F0ZWQgZWxlbWVudHMuCisgKgorICogVGhlIGhhc2ggdGFibGUgbWF5IGJlIHByaXZhdGUgb3Ig c2hhcmVkLiBGb3Igc2hhcmVkIGhhc2ggdGFibGVzIHRoZSBkaXJlY3RvcnkKKyAqIHNpemUgaXMg bm9uLWV4cGFuc2l2ZSwgYW5kIHdlIHByZWFsbG9jYXRlIGFsbCBlbGVtZW50cyAobmVsZW0pLiBG b3IgcHJpdmF0ZQorICogaGFzaCB0YWJsZXMsIHdlIHByZWFsbG9jYXRlIGVsZW1lbnRzIG9ubHkg aWYgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBlbGVtZW50cworICogaXMgc21hbGwgKGxlc3MgdGhh biBuZWxlbV9hbGxvYykuCiAgKi8KIFNpemUKLWhhc2hfZ2V0X3NoYXJlZF9zaXplKEhBU0hDVEwg KmluZm8sIGludCBmbGFncykKK2hhc2hfZ2V0X2luaXRfc2l6ZShjb25zdCBIQVNIQ1RMICppbmZv LCBpbnQgZmxhZ3MsIGxvbmcgbmVsZW0sIGJvb2wgcHJlYWxsb2MpCiB7Ci0JQXNzZXJ0KGZsYWdz ICYgSEFTSF9ESVJTSVpFKTsKLQlBc3NlcnQoaW5mby0+ZHNpemUgPT0gaW5mby0+bWF4X2RzaXpl KTsKLQlyZXR1cm4gc2l6ZW9mKEhBU0hIRFIpICsgaW5mby0+ZHNpemUgKiBzaXplb2YoSEFTSFNF R01FTlQpOworCWludAkJCW5idWNrZXRzOworCWludAkJCW5zZWdzOworCWludAkJCW51bV9wYXJ0 aXRpb25zOworCWxvbmcJCXNzaXplOworCWxvbmcJCWRzaXplOworCVNpemUJCWVsZW1lbnRTaXpl ID0gSEFTSF9FTEVNRU5UX1NJWkUoaW5mbyk7CisJbG9uZwkJbmVsZW1fcHJlYWxsb2MgPSAwOwor CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCS8qIHNoYXJlZCBoYXNoIHRhYmxlcyBoYXZl IG5vbi1leHBhbnNpdmUgZGlyZWN0b3J5ICovCisJLyogWFhYIHdoYXQgYWJvdXQgc2VnbWVudCBz aXplPyBzaG91bGQgY2hlY2sgaGF2ZSBIQVNIX1NFR01FTlQ/ICovCisJaWYgKGZsYWdzICYgSEFT SF9TSEFSRURfTUVNKQorCXsKKwkJQXNzZXJ0KGZsYWdzICYgSEFTSF9ESVJTSVpFKTsKKwkJQXNz ZXJ0KGluZm8tPmRzaXplID09IGluZm8tPm1heF9kc2l6ZSk7CisJCUFzc2VydChwcmVhbGxvYyk7 CisJfQorI2VuZGlmCisKKwkvKiBOb24tc2hhcmVkIGhhc2ggdGFibGVzIG1heSBub3Qgc3BlY2lm eSBkaXIgc2l6ZSAqLworCWlmIChmbGFncyAmIEhBU0hfRElSU0laRSkKKwkJZHNpemUgPSBpbmZv LT5kc2l6ZTsKKwllbHNlCisJCWRzaXplID0gREVGX0RJUlNJWkU7CisKKwlpZiAoZmxhZ3MgJiBI QVNIX1NFR01FTlQpCisJCXNzaXplID0gaW5mby0+c3NpemU7CisJZWxzZQorCQlzc2l6ZSA9IERF Rl9TRUdTSVpFOworCisJaWYgKGZsYWdzICYgSEFTSF9QQVJUSVRJT04pCisJeworCQludW1fcGFy dGl0aW9ucyA9IGluZm8tPm51bV9wYXJ0aXRpb25zOworCisJCS8qIE51bWJlciBvZiBlbnRyaWVz IHNob3VsZCBiZSBhdGxlYXN0IGVxdWFsIHRvIHRoZSBmcmVlbGlzdHMgKi8KKwkJaWYgKG5lbGVt IDwgTlVNX0ZSRUVMSVNUUykKKwkJCW5lbGVtID0gTlVNX0ZSRUVMSVNUUzsKKwl9CisJZWxzZQor CQludW1fcGFydGl0aW9ucyA9IDA7CisKKwljb21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MobmVsZW0s IG51bV9wYXJ0aXRpb25zLCBzc2l6ZSwKKwkJCQkJCQkgJm5idWNrZXRzLCAmbnNlZ3MpOworCisJ LyogaW5pdGlhbF9lbGVtcyBhcyBmYWxzZSBpbmRpY2F0ZXMgbm8gZWxlbWVudHMgYXJlIHRvIGJl IHByZS1hbGxvY2F0ZWQgKi8KKwlpZiAocHJlYWxsb2MpCisJCW5lbGVtX3ByZWFsbG9jID0gbmVs ZW07CisKKwlyZXR1cm4gc2l6ZW9mKEhBU0hIRFIpICsgZHNpemUgKiBzaXplb2YoSEFTSFNFR01F TlQpCisJCSsgc2l6ZW9mKEhBU0hCVUNLRVQpICogc3NpemUgKiBuc2VncworCQkrIG5lbGVtX3By ZWFsbG9jICogZWxlbWVudFNpemU7CiB9CiAKIApAQCAtMTI4NSw3ICsxMzk1LDcgQEAgZ2V0X2hh c2hfZW50cnkoSFRBQiAqaGFzaHAsIGludCBmcmVlbGlzdF9pZHgpCiAJCSAqIEZhaWxpbmcgYmVj YXVzZSB0aGUgbmVlZGVkIGVsZW1lbnQgaXMgaW4gYSBkaWZmZXJlbnQgZnJlZWxpc3QgaXMKIAkJ ICogbm90IGFjY2VwdGFibGUuCiAJCSAqLwotCQlpZiAoIWVsZW1lbnRfYWxsb2MoaGFzaHAsIGhj dGwtPm5lbGVtX2FsbG9jLCBmcmVlbGlzdF9pZHgpKQorCQlpZiAoKG5ld0VsZW1lbnQgPSBlbGVt ZW50X2FsbG9jKGhhc2hwLCBoY3RsLT5uZWxlbV9hbGxvYykpID09IE5VTEwpCiAJCXsKIAkJCWlu dAkJCWJvcnJvd19mcm9tX2lkeDsKIApAQCAtMTMyMiw2ICsxNDMyLDcgQEAgZ2V0X2hhc2hfZW50 cnkoSFRBQiAqaGFzaHAsIGludCBmcmVlbGlzdF9pZHgpCiAJCQkvKiBubyBlbGVtZW50cyBhdmFp bGFibGUgdG8gYm9ycm93IGVpdGhlciwgc28gb3V0IG9mIG1lbW9yeSAqLwogCQkJcmV0dXJuIE5V TEw7CiAJCX0KKwkJZWxlbWVudF9hZGQoaGFzaHAsIG5ld0VsZW1lbnQsIGhjdGwtPm5lbGVtX2Fs bG9jLCBmcmVlbGlzdF9pZHgpOwogCX0KIAogCS8qIHJlbW92ZSBlbnRyeSBmcm9tIGZyZWVsaXN0 LCBidW1wIG5lbnRyaWVzICovCkBAIC0xNzAwLDI5ICsxODExLDQzIEBAIHNlZ19hbGxvYyhIVEFC ICpoYXNocCkKIH0KIAogLyoKLSAqIGFsbG9jYXRlIHNvbWUgbmV3IGVsZW1lbnRzIGFuZCBsaW5r IHRoZW0gaW50byB0aGUgaW5kaWNhdGVkIGZyZWUgbGlzdAorICogYWxsb2NhdGUgc29tZSBuZXcg ZWxlbWVudHMKICAqLwotc3RhdGljIGJvb2wKLWVsZW1lbnRfYWxsb2MoSFRBQiAqaGFzaHAsIGlu dCBuZWxlbSwgaW50IGZyZWVsaXN0X2lkeCkKK3N0YXRpYyBIQVNIRUxFTUVOVCAqCitlbGVtZW50 X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0pCiB7CiAJSEFTSEhEUiAgICAqaGN0bCA9IGhh c2hwLT5oY3RsOwogCVNpemUJCWVsZW1lbnRTaXplOwotCUhBU0hFTEVNRU5UICpmaXJzdEVsZW1l bnQ7Ci0JSEFTSEVMRU1FTlQgKnRtcEVsZW1lbnQ7Ci0JSEFTSEVMRU1FTlQgKnByZXZFbGVtZW50 OwotCWludAkJCWk7CisJSEFTSEVMRU1FTlQgKmZpcnN0RWxlbWVudCA9IE5VTEw7CiAKIAlpZiAo aGFzaHAtPmlzZml4ZWQpCi0JCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKiBF YWNoIGVsZW1lbnQgaGFzIGEgSEFTSEVMRU1FTlQgaGVhZGVyIHBsdXMgdXNlciBkYXRhLiAqLwot CWVsZW1lbnRTaXplID0gTUFYQUxJR04oc2l6ZW9mKEhBU0hFTEVNRU5UKSkgKyBNQVhBTElHTiho Y3RsLT5lbnRyeXNpemUpOwotCisJZWxlbWVudFNpemUgPSBIQVNIX0VMRU1FTlRfU0laRShoY3Rs KTsKIAlDdXJyZW50RHluYUhhc2hDeHQgPSBoYXNocC0+aGN4dDsKIAlmaXJzdEVsZW1lbnQgPSAo SEFTSEVMRU1FTlQgKikgaGFzaHAtPmFsbG9jKG5lbGVtICogZWxlbWVudFNpemUpOwogCiAJaWYg KCFmaXJzdEVsZW1lbnQpCi0JCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1 cm4gZmlyc3RFbGVtZW50OworfQorCisvKgorICogbGluayB0aGUgZWxlbWVudHMgYWxsb2NhdGVk IGJ5IGVsZW1lbnRfYWxsb2MgaW50byB0aGUgaW5kaWNhdGVkIGZyZWUgbGlzdAorICovCitzdGF0 aWMgdm9pZAorZWxlbWVudF9hZGQoSFRBQiAqaGFzaHAsIEhBU0hFTEVNRU5UICpmaXJzdEVsZW1l bnQsIGludCBuZWxlbSwgaW50IGZyZWVsaXN0X2lkeCkKK3sKKwlIQVNISERSICAgICpoY3RsID0g aGFzaHAtPmhjdGw7CisJU2l6ZQkJZWxlbWVudFNpemU7CisJSEFTSEVMRU1FTlQgKnRtcEVsZW1l bnQ7CisJSEFTSEVMRU1FTlQgKnByZXZFbGVtZW50OworCWludAkJCWk7CisKKwkvKiBFYWNoIGVs ZW1lbnQgaGFzIGEgSEFTSEVMRU1FTlQgaGVhZGVyIHBsdXMgdXNlciBkYXRhLiAqLworCWVsZW1l bnRTaXplID0gSEFTSF9FTEVNRU5UX1NJWkUoaGN0bCk7CiAKIAkvKiBwcmVwYXJlIHRvIGxpbmsg YWxsIHRoZSBuZXcgZW50cmllcyBpbnRvIHRoZSBmcmVlbGlzdCAqLwogCXByZXZFbGVtZW50ID0g TlVMTDsKQEAgLTE3NDQsOCArMTg2OSw2IEBAIGVsZW1lbnRfYWxsb2MoSFRBQiAqaGFzaHAsIGlu dCBuZWxlbSwgaW50IGZyZWVsaXN0X2lkeCkKIAogCWlmIChJU19QQVJUSVRJT05FRChoY3RsKSkK IAkJU3BpbkxvY2tSZWxlYXNlKCZoY3RsLT5mcmVlTGlzdFtmcmVlbGlzdF9pZHhdLm11dGV4KTsK LQotCXJldHVybiB0cnVlOwogfQogCiAvKgpAQCAtMTk1NywzICsyMDgwLDM0IEBAIEF0RU9TdWJY YWN0X0hhc2hUYWJsZXMoYm9vbCBpc0NvbW1pdCwgaW50IG5lc3REZXB0aCkKIAkJfQogCX0KIH0K KworLyoKKyAqIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGJ1Y2tldHMgYW5kIHNlZ21lbnRzIHRv IHN0b3JlIHRoZSBnaXZlbgorICogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgaGFzaCB0YWJsZS4g U2VnbWVudHMgY29udGFpbiBidWNrZXRzIHdoaWNoCisgKiBpbiB0dXJuIGNvbnRhaW4gZWxlbWVu dHMuCisgKi8KK3N0YXRpYyB2b2lkCitjb21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MobG9uZyBuZWxl bSwgbG9uZyBudW1fcGFydGl0aW9ucywgbG9uZyBzc2l6ZSwKKwkJCQkJCSBpbnQgKm5idWNrZXRz LCBpbnQgKm5zZWdtZW50cykKK3sKKwkvKgorCSAqIEFsbG9jYXRlIHNwYWNlIGZvciB0aGUgbmV4 dCBncmVhdGVyIHBvd2VyIG9mIHR3byBudW1iZXIgb2YgYnVja2V0cywKKwkgKiBhc3N1bWluZyBh IGRlc2lyZWQgbWF4aW11bSBsb2FkIGZhY3RvciBvZiAxLgorCSAqLworCSpuYnVja2V0cyA9IG5l eHRfcG93Ml9pbnQobmVsZW0pOworCisJLyoKKwkgKiBJbiBhIHBhcnRpdGlvbmVkIHRhYmxlLCBu YnVja2V0cyBtdXN0IGJlIGF0IGxlYXN0IGVxdWFsIHRvCisJICogbnVtX3BhcnRpdGlvbnM7IHdl cmUgaXQgbGVzcywga2V5cyB3aXRoIGFwcGFyZW50bHkgZGlmZmVyZW50IHBhcnRpdGlvbgorCSAq IG51bWJlcnMgd291bGQgbWFwIHRvIHRoZSBzYW1lIGJ1Y2tldCwgYnJlYWtpbmcgcGFydGl0aW9u IGluZGVwZW5kZW5jZS4KKwkgKiAoTm9ybWFsbHkgbmJ1Y2tldHMgd2lsbCBiZSBtdWNoIGJpZ2dl cjsgdGhpcyBpcyBqdXN0IGEgc2FmZXR5IGNoZWNrLikKKwkgKi8KKwl3aGlsZSAoKCpuYnVja2V0 cykgPCBudW1fcGFydGl0aW9ucykKKwkJKCpuYnVja2V0cykgPDw9IDE7CisKKwkvKgorCSAqIEZp Z3VyZSBudW1iZXIgb2YgZGlyZWN0b3J5IHNlZ21lbnRzIG5lZWRlZCwgcm91bmQgdXAgdG8gYSBw b3dlciBvZiAyCisJICovCisJKm5zZWdtZW50cyA9ICgoKm5idWNrZXRzKSAtIDEpIC8gc3NpemUg KyAxOworCSpuc2VnbWVudHMgPSBuZXh0X3BvdzJfaW50KCpuc2VnbWVudHMpOworfQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvaHNl YXJjaC5oCmluZGV4IDkzMmNjNGYzNGQuLjVkYzc0ZGI2ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL2hzZWFyY2guaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKQEAg LTE1MSw3ICsxNTEsOCBAQCBleHRlcm4gdm9pZCBoYXNoX3NlcV90ZXJtKEhBU0hfU0VRX1NUQVRV UyAqc3RhdHVzKTsKIGV4dGVybiB2b2lkIGhhc2hfZnJlZXplKEhUQUIgKmhhc2hwKTsKIGV4dGVy biBTaXplIGhhc2hfZXN0aW1hdGVfc2l6ZShsb25nIG51bV9lbnRyaWVzLCBTaXplIGVudHJ5c2l6 ZSk7CiBleHRlcm4gbG9uZyBoYXNoX3NlbGVjdF9kaXJzaXplKGxvbmcgbnVtX2VudHJpZXMpOwot ZXh0ZXJuIFNpemUgaGFzaF9nZXRfc2hhcmVkX3NpemUoSEFTSENUTCAqaW5mbywgaW50IGZsYWdz KTsKK2V4dGVybiBTaXplIGhhc2hfZ2V0X2luaXRfc2l6ZShjb25zdCBIQVNIQ1RMICppbmZvLCBp bnQgZmxhZ3MsCisJCQkJCQkJICAgbG9uZyBuZWxlbSwgYm9vbCBwcmVhbGxvYyk7CiBleHRlcm4g dm9pZCBBdEVPWGFjdF9IYXNoVGFibGVzKGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQXRF T1N1YlhhY3RfSGFzaFRhYmxlcyhib29sIGlzQ29tbWl0LCBpbnQgbmVzdERlcHRoKTsKIAotLSAK Mi4zNC4xCgo= --000000000000a13be00631b2b166 Content-Type: application/octet-stream; name="v9-0002-Improve-accounting-for-PredXactList-RWConflictPool-a.patch" Content-Disposition: attachment; filename="v9-0002-Improve-accounting-for-PredXactList-RWConflictPool-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8y6xbkq1 RnJvbSAxNDQ4N2ViMDY4ZjQzNGRlNDg0MTE3MjdhMzIzMTBiYzljM2VmOTMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMSBBcHIgMjAyNSAxMzowMTozOCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMi8z XSBJbXByb3ZlIGFjY291bnRpbmcgZm9yIFByZWRYYWN0TGlzdCwgUldDb25mbGljdFBvb2wgYW5k CiBQR1BST0MKClZhcmlvdXMgcGxhY2VzIGFsbG9jYXRlZCBzaGFyZWQgbWVtb3J5IGJ5IGZpcnN0 IGFsbG9jYXRpbmcgYSBzbWFsbCBjaHVuawp1c2luZyBTaG1lbUluaXRTdHJ1Y3QoKSwgZm9sbG93 ZWQgYnkgU2htZW1BbGxvYygpIGNhbGxzIHRvIGFsbG9jYXRlIG1vcmUKbWVtb3J5LiBVbmZvcnR1 bmF0ZWx5LCBTaG1lbUFsbG9jKCkgZG9lcyBub3QgdXBkYXRlIFNobWVtSW5kZXgsIHNvIHRoaXMK YWZmZWN0ZWQgcGdfc2htZW1fYWxsb2NhdGlvbnMgLSBpdCBvbmx5IHNob3duIHRoZSBpbml0aWFs IGNodW5rLgoKVGhpcyBjb21taXQgbW9kaWZpZXMgdGhlIGZvbGxvd2luZyBhbGxvY2F0aW9ucywg dG8gYWxsb2NhdGUgZXZlcnl0aGluZwphcyBhIHNpbmdsZSBjaHVuaywgYW5kIHRoZW4gc3BsaXQg aXQgaW50ZXJuYWxseS4KCi0gUHJlZFhhY3RMaXN0Ci0gUldDb25mbGljdFBvb2wKLSBQR1BST0Mg c3RydWN0dXJlcwotIEZhc3QtUGF0aCBsb2NrIGFycmF5cwoKQXV0aG9yOiBSYWhpbGEgU3llZCA8 cmFoaWxhc3llZDkwQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJl c0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IE5hemlyIEJpbGFsIFlhdnV6IDxieWF2dXo4MUBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4KRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUgyTDI4dkh6UmFua3N6aHF6N2RlWFVSeEtu Y3hmaXJudVc2OHpENytoVkFxYVM1R1FAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgfCAzMCArKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgfCA2MyArKysrKysrKysrKysrKysrKysrKystLS0tLS0t CiAyIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCA1YjIxYTA1Mzk4Li5kODIxMTRmZmNh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0xMjI2LDE0ICsxMjI2LDIx IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKi8KIAltYXhfdGFibGVfc2l6ZSAq PSAxMDsKIAorCXJlcXVlc3RTaXplID0gYWRkX3NpemUoUHJlZFhhY3RMaXN0RGF0YVNpemUsCisJ CQkJCQkgICAobXVsX3NpemUoKFNpemUpIG1heF90YWJsZV9zaXplLAorCQkJCQkJCQkJIHNpemVv ZihTRVJJQUxJWkFCTEVYQUNUKSkpKTsKKwogCVByZWRYYWN0ID0gU2htZW1Jbml0U3RydWN0KCJQ cmVkWGFjdExpc3QiLAotCQkJCQkJCSAgIFByZWRYYWN0TGlzdERhdGFTaXplLAorCQkJCQkJCSAg IHJlcXVlc3RTaXplLAogCQkJCQkJCSAgICZmb3VuZCk7CiAJQXNzZXJ0KGZvdW5kID09IElzVW5k ZXJQb3N0bWFzdGVyKTsKIAlpZiAoIWZvdW5kKQogCXsKIAkJaW50CQkJaTsKIAorCQkvKiBjbGVh biBldmVyeXRoaW5nLCBib3RoIHRoZSBoZWFkZXIgYW5kIHRoZSBlbGVtZW50ICovCisJCW1lbXNl dChQcmVkWGFjdCwgMCwgcmVxdWVzdFNpemUpOworCiAJCWRsaXN0X2luaXQoJlByZWRYYWN0LT5h dmFpbGFibGVMaXN0KTsKIAkJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmFjdGl2ZUxpc3QpOwogCQlQ cmVkWGFjdC0+U3hhY3RHbG9iYWxYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CkBAIC0xMjQy LDExICsxMjQ5LDkgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCQlQcmVkWGFjdC0+ TGFzdFN4YWN0Q29tbWl0U2VxTm8gPSBGaXJzdE5vcm1hbFNlckNvbW1pdFNlcU5vIC0gMTsKIAkJ UHJlZFhhY3QtPkNhblBhcnRpYWxDbGVhclRocm91Z2ggPSAwOwogCQlQcmVkWGFjdC0+SGF2ZVBh cnRpYWxDbGVhcmVkVGhyb3VnaCA9IDA7Ci0JCXJlcXVlc3RTaXplID0gbXVsX3NpemUoKFNpemUp IG1heF90YWJsZV9zaXplLAotCQkJCQkJCSAgIHNpemVvZihTRVJJQUxJWkFCTEVYQUNUKSk7Ci0J CVByZWRYYWN0LT5lbGVtZW50ID0gU2htZW1BbGxvYyhyZXF1ZXN0U2l6ZSk7CisJCVByZWRYYWN0 LT5lbGVtZW50CisJCQk9IChTRVJJQUxJWkFCTEVYQUNUICopICgoY2hhciAqKSBQcmVkWGFjdCAr IFByZWRYYWN0TGlzdERhdGFTaXplKTsKIAkJLyogQWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFi bGUgbGlzdCwgY2xlYW4uICovCi0JCW1lbXNldChQcmVkWGFjdC0+ZWxlbWVudCwgMCwgcmVxdWVz dFNpemUpOwogCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3RhYmxlX3NpemU7IGkrKykKIAkJewogCQkJ TFdMb2NrSW5pdGlhbGl6ZSgmUHJlZFhhY3QtPmVsZW1lbnRbaV0ucGVyWGFjdFByZWRpY2F0ZUxp c3RMb2NrLApAQCAtMTMwMCwyMCArMTMwNSwyNSBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZv aWQpCiAJICovCiAJbWF4X3RhYmxlX3NpemUgKj0gNTsKIAorCXJlcXVlc3RTaXplID0gUldDb25m bGljdFBvb2xIZWFkZXJEYXRhU2l6ZSArCisJCW11bF9zaXplKChTaXplKSBtYXhfdGFibGVfc2l6 ZSwKKwkJCQkgUldDb25mbGljdERhdGFTaXplKTsKKwogCVJXQ29uZmxpY3RQb29sID0gU2htZW1J bml0U3RydWN0KCJSV0NvbmZsaWN0UG9vbCIsCi0JCQkJCQkJCQkgUldDb25mbGljdFBvb2xIZWFk ZXJEYXRhU2l6ZSwKKwkJCQkJCQkJCSByZXF1ZXN0U2l6ZSwKIAkJCQkJCQkJCSAmZm91bmQpOwog CUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1hc3Rlcik7CiAJaWYgKCFmb3VuZCkKIAl7CiAJ CWludAkJCWk7CiAKKwkJLyogY2xlYW4gZXZlcnl0aGluZywgaW5jbHVkaW5nIHRoZSBlbGVtZW50 cyAqLworCQltZW1zZXQoUldDb25mbGljdFBvb2wsIDAsIHJlcXVlc3RTaXplKTsKKwogCQlkbGlz dF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7Ci0JCXJlcXVlc3RTaXplID0g bXVsX3NpemUoKFNpemUpIG1heF90YWJsZV9zaXplLAotCQkJCQkJCSAgIFJXQ29uZmxpY3REYXRh U2l6ZSk7Ci0JCVJXQ29uZmxpY3RQb29sLT5lbGVtZW50ID0gU2htZW1BbGxvYyhyZXF1ZXN0U2l6 ZSk7CisJCVJXQ29uZmxpY3RQb29sLT5lbGVtZW50ID0gKFJXQ29uZmxpY3QpICgoY2hhciAqKSBS V0NvbmZsaWN0UG9vbCArCisJCQkJCQkJCQkJCQlSV0NvbmZsaWN0UG9vbEhlYWRlckRhdGFTaXpl KTsKIAkJLyogQWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCi0J CW1lbXNldChSV0NvbmZsaWN0UG9vbC0+ZWxlbWVudCwgMCwgcmVxdWVzdFNpemUpOwogCQlmb3Ig KGkgPSAwOyBpIDwgbWF4X3RhYmxlX3NpemU7IGkrKykKIAkJewogCQkJZGxpc3RfcHVzaF90YWls KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxhYmxlTGlzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmlu ZGV4IDA2NjMxOWFmZTIuLmJhMWFjN2U0ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAt MTIzLDYgKzEyMywyNSBAQCBQcm9jR2xvYmFsU2htZW1TaXplKHZvaWQpCiAJcmV0dXJuIHNpemU7 CiB9CiAKKy8qCisgKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUEdQUk9D LgorICovCitzdGF0aWMgU2l6ZQorUEdQcm9jU2htZW1TaXplKHZvaWQpCit7CisJU2l6ZQkJc2l6 ZTsKKwl1aW50MzIJCVRvdGFsUHJvY3M7CisKKwlUb3RhbFByb2NzID0gTWF4QmFja2VuZHMgKyBO VU1fQVVYSUxJQVJZX1BST0NTICsgbWF4X3ByZXBhcmVkX3hhY3RzOworCisJc2l6ZSA9IFRvdGFs UHJvY3MgKiBzaXplb2YoUEdQUk9DKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9j cyAqIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBU b3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKKwlzaXplID0g YWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxh Z3MpKTsKKworCXJldHVybiBzaXplOworfQorCiAvKgogICogUmVwb3J0IG51bWJlciBvZiBzZW1h cGhvcmVzIG5lZWRlZCBieSBJbml0UHJvY0dsb2JhbC4KICAqLwpAQCAtMTc1LDYgKzE5NCw4IEBA IEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJCQkgICAqZnBFbmRQdHIgUEdfVVNFRF9GT1JfQVNTRVJU U19PTkxZOwogCVNpemUJCWZwTG9ja0JpdHNTaXplLAogCQkJCWZwUmVsSWRTaXplOworCVNpemUJ CXJlcXVlc3RTaXplOworCWNoYXIJICAgKnB0cjsKIAogCS8qIENyZWF0ZSB0aGUgUHJvY0dsb2Jh bCBzaGFyZWQgc3RydWN0dXJlICovCiAJUHJvY0dsb2JhbCA9IChQUk9DX0hEUiAqKQpAQCAtMjA0 LDggKzIyNSwxNyBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCSAqIHdpdGggYSBzaW5nbGUgZnJl ZWxpc3QuKSAgRWFjaCBQR1BST0Mgc3RydWN0dXJlIGlzIGRlZGljYXRlZCB0byBleGFjdGx5CiAJ ICogb25lIG9mIHRoZXNlIHB1cnBvc2VzLCBhbmQgdGhleSBkbyBub3QgbW92ZSBiZXR3ZWVuIGdy b3Vwcy4KIAkgKi8KLQlwcm9jcyA9IChQR1BST0MgKikgU2htZW1BbGxvYyhUb3RhbFByb2NzICog c2l6ZW9mKFBHUFJPQykpOwotCU1lbVNldChwcm9jcywgMCwgVG90YWxQcm9jcyAqIHNpemVvZihQ R1BST0MpKTsKKwlyZXF1ZXN0U2l6ZSA9IFBHUHJvY1NobWVtU2l6ZSgpOworCisJcHRyID0gU2ht ZW1Jbml0U3RydWN0KCJQR1BST0Mgc3RydWN0dXJlcyIsCisJCQkJCQkgIHJlcXVlc3RTaXplLAor CQkJCQkJICAmZm91bmQpOworCisJTWVtU2V0KHB0ciwgMCwgcmVxdWVzdFNpemUpOworCisJcHJv Y3MgPSAoUEdQUk9DICopIHB0cjsKKwlwdHIgPSAoY2hhciAqKSBwdHIgKyBUb3RhbFByb2NzICog c2l6ZW9mKFBHUFJPQyk7CisKIAlQcm9jR2xvYmFsLT5hbGxQcm9jcyA9IHByb2NzOwogCS8qIFhY WCBhbGxQcm9jQ291bnQgaXNuJ3QgcmVhbGx5IGFsbCBvZiB0aGVtOyBpdCBleGNsdWRlcyBwcmVw YXJlZCB4YWN0cyAqLwogCVByb2NHbG9iYWwtPmFsbFByb2NDb3VudCA9IE1heEJhY2tlbmRzICsg TlVNX0FVWElMSUFSWV9QUk9DUzsKQEAgLTIxMywxNyArMjQzLDE4IEBAIEluaXRQcm9jR2xvYmFs KHZvaWQpCiAJLyoKIAkgKiBBbGxvY2F0ZSBhcnJheXMgbWlycm9yaW5nIFBHUFJPQyBmaWVsZHMg aW4gYSBkZW5zZSBtYW5uZXIuIFNlZQogCSAqIFBST0NfSERSLgotCSAqCi0JICogWFhYOiBJdCBt aWdodCBtYWtlIHNlbnNlIHRvIGluY3JlYXNlIHBhZGRpbmcgZm9yIHRoZXNlIGFycmF5cywgZ2l2 ZW4KLQkgKiBob3cgaG90bHkgdGhleSBhcmUgYWNjZXNzZWQuCiAJICovCi0JUHJvY0dsb2JhbC0+ eGlkcyA9Ci0JCShUcmFuc2FjdGlvbklkICopIFNobWVtQWxsb2MoVG90YWxQcm9jcyAqIHNpemVv ZigqUHJvY0dsb2JhbC0+eGlkcykpOwotCU1lbVNldChQcm9jR2xvYmFsLT54aWRzLCAwLCBUb3Rh bFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSk7Ci0JUHJvY0dsb2JhbC0+c3VieGlk U3RhdGVzID0gKFhpZENhY2hlU3RhdHVzICopIFNobWVtQWxsb2MoVG90YWxQcm9jcyAqIHNpemVv ZigqUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzKSk7Ci0JTWVtU2V0KFByb2NHbG9iYWwtPnN1Ynhp ZFN0YXRlcywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVz KSk7Ci0JUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgU2htZW1BbGxvYyhUb3Rh bFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykpOwotCU1lbVNldChQcm9j R2xvYmFsLT5zdGF0dXNGbGFncywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+ c3RhdHVzRmxhZ3MpKTsKKwlQcm9jR2xvYmFsLT54aWRzID0gKFRyYW5zYWN0aW9uSWQgKikgcHRy OworCXB0ciA9IChjaGFyICopIHB0ciArIChUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFs LT54aWRzKSk7CisKKwlQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMgPSAoWGlkQ2FjaGVTdGF0dXMg KikgcHRyOworCXB0ciA9IChjaGFyICopIHB0ciArIChUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9j R2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKKworCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzID0gKHVp bnQ4ICopIHB0cjsKKwlwdHIgPSAoY2hhciAqKSBwdHIgKyAoVG90YWxQcm9jcyAqIHNpemVvZigq UHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKKworCS8qIG1ha2Ugc3VyZSB3ZXIgZGlkbid0IG92 ZXJmbG93ICovCisJQXNzZXJ0KChwdHIgPiAoY2hhciAqKSBwcm9jcykgJiYgKHB0ciA8PSAoY2hh ciAqKSBwcm9jcyArIHJlcXVlc3RTaXplKSk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGFycmF5cyBm b3IgZmFzdC1wYXRoIGxvY2tzLiBUaG9zZSBhcmUgdmFyaWFibGUtbGVuZ3RoLCBzbwpAQCAtMjMz LDcgKzI2NCw5IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJZnBMb2NrQml0c1NpemUgPSBNQVhB TElHTihGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kICogc2l6ZW9mKHVpbnQ2NCkpOwogCWZw UmVsSWRTaXplID0gTUFYQUxJR04oRmFzdFBhdGhMb2NrU2xvdHNQZXJCYWNrZW5kKCkgKiBzaXpl b2YoT2lkKSk7CiAKLQlmcFB0ciA9IFNobWVtQWxsb2MoVG90YWxQcm9jcyAqIChmcExvY2tCaXRz U2l6ZSArIGZwUmVsSWRTaXplKSk7CisJZnBQdHIgPSBTaG1lbUluaXRTdHJ1Y3QoIkZhc3QgcGF0 aCBsb2NrIGFycmF5cyIsCisJCQkJCQkJVG90YWxQcm9jcyAqIChmcExvY2tCaXRzU2l6ZSArIGZw UmVsSWRTaXplKSwKKwkJCQkJCQkmZm91bmQpOwogCU1lbVNldChmcFB0ciwgMCwgVG90YWxQcm9j cyAqIChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSk7CiAKIAkvKiBGb3IgYXNzZXJ0cyBj aGVja2luZyB3ZSBkaWQgbm90IG92ZXJmbG93LiAqLwpAQCAtMzMwLDcgKzM2Myw5IEBAIEluaXRQ cm9jR2xvYmFsKHZvaWQpCiAJUHJlcGFyZWRYYWN0UHJvY3MgPSAmcHJvY3NbTWF4QmFja2VuZHMg KyBOVU1fQVVYSUxJQVJZX1BST0NTXTsKIAogCS8qIENyZWF0ZSBQcm9jU3RydWN0TG9jayBzcGlu bG9jaywgdG9vICovCi0JUHJvY1N0cnVjdExvY2sgPSAoc2xvY2tfdCAqKSBTaG1lbUFsbG9jKHNp emVvZihzbG9ja190KSk7CisJUHJvY1N0cnVjdExvY2sgPSAoc2xvY2tfdCAqKSBTaG1lbUluaXRT dHJ1Y3QoIlByb2NTdHJ1Y3RMb2NrIHNwaW5sb2NrIiwKKwkJCQkJCQkJCQkJCSBzaXplb2Yoc2xv Y2tfdCksCisJCQkJCQkJCQkJCQkgJmZvdW5kKTsKIAlTcGluTG9ja0luaXQoUHJvY1N0cnVjdExv Y2spOwogfQogCi0tIAoyLjM0LjEKCg== --000000000000a13be00631b2b166 Content-Type: application/octet-stream; name="v9-0003-Add-cacheline-padding-between-heavily-accessed-array.patch" Content-Disposition: attachment; filename="v9-0003-Add-cacheline-padding-between-heavily-accessed-array.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8y6xnbh2 RnJvbSA3OGE1Y2RkM2QwNDQ5OGVlYjExZWM4MTg5MTMxMzFkOWI2OTYxM2ZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMSBBcHIgMjAyNSAxMzowNjo1NyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMy8z XSBBZGQgY2FjaGVsaW5lIHBhZGRpbmcgYmV0d2VlbiBoZWF2aWx5IGFjY2Vzc2VkIGFycmF5cwoK LS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIHwgMTIgKysrKysrLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJvYy5jCmluZGV4IGJhMWFjN2U0ODYuLmMzOWI1MTEyN2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYwpAQCAtMTM0LDkgKzEzNCw5IEBAIFBHUHJvY1NobWVtU2l6ZSh2b2lkKQogCiAJ VG90YWxQcm9jcyA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyArIG1heF9wcmVw YXJlZF94YWN0czsKIAotCXNpemUgPSBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7Ci0Jc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2Jh bC0+c3VieGlkU3RhdGVzKSk7CisJc2l6ZSA9IENBQ0hFTElORUFMSUdOKFRvdGFsUHJvY3MgKiBz aXplb2YoUEdQUk9DKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIENBQ0hFTElORUFMSUdOKFRv dGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKSk7CisJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIENBQ0hFTElORUFMSUdOKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1 YnhpZFN0YXRlcykpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVv ZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAogCXJldHVybiBzaXplOwpAQCAtMjM0LDcg KzIzNCw3IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJTWVtU2V0KHB0ciwgMCwgcmVxdWVzdFNp emUpOwogCiAJcHJvY3MgPSAoUEdQUk9DICopIHB0cjsKLQlwdHIgPSAoY2hhciAqKSBwdHIgKyBU b3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7CisJcHRyID0gKGNoYXIgKikgcHRyICsgQ0FDSEVM SU5FQUxJR04oVG90YWxQcm9jcyAqIHNpemVvZihQR1BST0MpKTsKIAogCVByb2NHbG9iYWwtPmFs bFByb2NzID0gcHJvY3M7CiAJLyogWFhYIGFsbFByb2NDb3VudCBpc24ndCByZWFsbHkgYWxsIG9m IHRoZW07IGl0IGV4Y2x1ZGVzIHByZXBhcmVkIHhhY3RzICovCkBAIC0yNDUsMTAgKzI0NSwxMCBA QCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCSAqIFBST0NfSERSLgogCSAqLwogCVByb2NHbG9iYWwt PnhpZHMgPSAoVHJhbnNhY3Rpb25JZCAqKSBwdHI7Ci0JcHRyID0gKGNoYXIgKikgcHRyICsgKFRv dGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsKKwlwdHIgPSAoY2hhciAqKSBw dHIgKyBDQUNIRUxJTkVBTElHTihUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRz KSk7CiAKIAlQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMgPSAoWGlkQ2FjaGVTdGF0dXMgKikgcHRy OwotCXB0ciA9IChjaGFyICopIHB0ciArIChUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFs LT5zdWJ4aWRTdGF0ZXMpKTsKKwlwdHIgPSAoY2hhciAqKSBwdHIgKyBDQUNIRUxJTkVBTElHTihU b3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKIAogCVByb2NH bG9iYWwtPnN0YXR1c0ZsYWdzID0gKHVpbnQ4ICopIHB0cjsKIAlwdHIgPSAoY2hhciAqKSBwdHIg KyAoVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKLS0gCjIu MzQuMQoK --000000000000a13be00631b2b166--