From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 453271FF164
	for <inbox@lore.proxmox.com>; Fri, 11 Apr 2025 13:25:18 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 1D5C5FD9E;
	Fri, 11 Apr 2025 13:25:11 +0200 (CEST)
Message-ID: <204d5cf2-78c1-4939-b0a9-d22e6b414f25@proxmox.com>
Date: Fri, 11 Apr 2025 13:24:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>,
 Proxmox VE development discussion <pve-devel@lists.proxmox.com>
References: <20250325151254.193177-1-d.kral@proxmox.com>
 <20250325151254.193177-4-d.kral@proxmox.com>
 <990ee499-ab4f-4aaa-8df1-b2d1dad1309e@proxmox.com>
 <1743670423.cy7yczwutf.astroid@yuna.none>
Content-Language: en-US
From: Daniel Kral <d.kral@proxmox.com>
In-Reply-To: <1743670423.cy7yczwutf.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.012 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See
 http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more
 information. [proxmox.com, tools.pm]
Subject: Re: [pve-devel] [PATCH ha-manager 02/15] tools: add hash set helper
 subroutines
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

VGhhbmtzIGhlcmUgZm9yIHRoZSBmZWVkYmFjayBmcm9tIGJvdGggb2YgeW91LgoKSSBhZ3JlZSB3
aXRoIGFsbCB0aGUgY29tbWVudHMgYW5kIHdpbGwgbWFrZSB0aGUgaGVscGVycyBtb3JlIHJldXNh
YmxlIHNvIAp0aGF0IHRoZXkgY2FuIGJlIG1vdmVkIHRvIGEgbmV3IGRhdGEgc3RydWN0dXJlL2hh
c2ggbW9kdWxlIGluIFBWRTo6VG9vbHMuCgpPbiA0LzMvMjUgMTQ6MTYsIEZhYmlhbiBHcsO8bmJp
Y2hsZXIgd3JvdGU6Cj4gT24gTWFyY2ggMjUsIDIwMjUgNjo1MyBwbSwgVGhvbWFzIExhbXByZWNo
dCB3cm90ZToKPj4gQW0gMjUuMDMuMjUgdW0gMTY6MTIgc2NocmllYiBEYW5pZWwgS3JhbDoKPj4+
IEltcGxlbWVudCBoZWxwZXIgc3Vicm91dGluZXMsIHdoaWNoIGltcGxlbWVudCBiYXNpYyBzZXQg
b3BlcmF0aW9ucyBkb25lCj4+PiBvbiBoYXNoIHNldHMsIGkuZS4gaGFzaGVzIHdpdGggZWxlbWVu
dHMgc2V0IHRvIGEgdHJ1ZSB2YWx1ZSwgZS5nLiAxLgo+Pj4KPj4+IFRoZXNlIHdpbGwgYmUgdXNl
ZCBmb3IgdmFyaW91cyB0YXNrcyBpbiB0aGUgSEEgTWFuYWdlciBjb2xvY2F0aW9uIHJ1bGVzLAo+
Pj4gZS5nLiBmb3IgdmVyaWZ5aW5nIHRoZSBzYXRpc2ZpYWJpbGl0eSBvZiB0aGUgcnVsZXMgb3Ig
YXBwbHlpbmcgdGhlCj4+PiBjb2xvY2F0aW9uIHJ1bGVzIG9uIHRoZSBhbGxvd2VkIHNldCBvZiBu
b2Rlcy4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3htb3gu
Y29tPgo+Pj4gLS0tCj4+PiBJZiB0aGV5J3JlIHVzZWZ1bCBzb21ld2hlcmUgZWxzZSwgSSBjYW4g
bW92ZSB0aGVtIHRvIFBWRTo6VG9vbHMKPj4+IHBvc3QtUkZDLCBidXQgaXQnZCBiZSBwcm9iYWJs
eSB1c2VmdWwgdG8gcHJlZml4IHRoZW0gd2l0aCBgaGFzaF9gIHRoZXJlLgo+Pgo+PiBtZWgsIG5v
dCBhIGJpZyBmYW4gb2YgZ3Jvd2luZyB0aGUgb3Zlcmx5IGdlbmVyaWMgUFZFOjpUb29scyBtb3Jl
LCBpZiwgdGhpcwo+PiBzaG91bGQgZ28gaW50byBhIGRlZGljYXRlZCBtb2R1bGUgZm9yIGhhc2gv
ZGF0YSBzdHJ1Y3R1cmUgaGVscGVycyAuLi4KPj4KPj4+IEFGQUlDUyB0aGVyZSB3ZXJlbid0IGFu
eSBvdGhlciBoZWxwZXJzIGZvciB0aGlzIHdpdGggYSBxdWljayBncmVwIG92ZXIKPj4+IGFsbCBw
cm9qZWN0cyBhbmQgYFBWRTo6VG9vbHM6OmFycmF5X2ludGVyc2VjdCgpYCB3YXNuJ3Qgd2hhdCBJ
IG5lZWRlZC4KPj4KPj4gLi4uIHdoaWNoIHRob3NlIGV4aXN0aW5nIG9uZSBzaG91bGQgdGhlbiBh
bHNvIG1vdmUgaW50bywgYnV0IG91dCBvZiBzY29wZQo+PiBvZiB0aGlzIHNlcmllcy4KPj4KPj4+
Cj4+PiAgIHNyYy9QVkUvSEEvVG9vbHMucG0gfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKPj4+ICAgMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKykK
Pj4+Cj4+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9IQS9Ub29scy5wbSBiL3NyYy9QVkUvSEEvVG9v
bHMucG0KPj4+IGluZGV4IDBmOWU5YTUuLmZjMzI4MmMgMTAwNjQ0Cj4+PiAtLS0gYS9zcmMvUFZF
L0hBL1Rvb2xzLnBtCj4+PiArKysgYi9zcmMvUFZFL0hBL1Rvb2xzLnBtCj4+PiBAQCAtMTE1LDYg
KzExNSw0OCBAQCBzdWIgd3JpdGVfanNvbl90b19maWxlIHsKPj4+ICAgICAgIFBWRTo6VG9vbHM6
OmZpbGVfc2V0X2NvbnRlbnRzKCRmaWxlbmFtZSwgJHJhdyk7Cj4+PiAgIH0KPj4+ICAgCj4+PiAr
c3ViIGlzX2Rpc2pvaW50IHsKPj4KPj4gSU1PIGEgYml0IHRvbyBnZW5lcmljIG5hbWUgZm9yIGJl
aW5nIGluIGEgVG9vbHMgbmFtZWQgbW9kdWxlLCBtYXliZQo+PiBwcmVmaXggdGhlbSBhbGwgd2l0
aCBoYXNoXyBvciBoYXNoZXNfID8KClllcywgZ29vZCBjYWxsLCBJIHRoaW5rIEknbGwgZ28gZm9y
IHdoYXQgRmFiaWFuIG1lbnRpb25lZCBiZWxvdyB0byAKcHJlZml4IHRoZW0gd2l0aCBoYXNoX3Nl
dF8gLyBzZXRfIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKQW5kIGFzIHdlJ3JlIHdvcmtpbmcgdG93
YXJkcyBtYWtpbmcgdGhvc2UgaGVscGVycyBtb3JlIGFjY2Vzc2libGUgZm9yIApvdGhlciB1c2Ug
Y2FzZXMsIEknbGwgYWxzbyBtb3ZlIHRoZW0gdG8gYSBzZXBhcmF0ZSBQVkU6OlRvb2xzOjoqIG1v
ZHVsZSAKYXMgc3VnZ2VzdGVkIGFib3ZlIDopCgo+IAo+IGlzX2Rpc2pvaW50IGFsc28gb25seSBy
ZWFsbHkgbWFrZXMgc2Vuc2UgYXMgYSBuYW1lIGlmIHlvdSBzZWUgaXQgYXMgYW4KPiBvcGVyYXRp
b24gKm9uKiAkaGFzaDEsIHJhdGhlciB0aGFuIGFuIG9wZXJhdGlvbiBpbnZvbHZpbmcgYm90aCBo
YXNoZXMuLgo+IAo+IGkuZS4sIGluIFJ1c3QKPiAKPiBzZXQxLmlzX2Rpc2pvaW50KCZzZXQyKTsK
PiAKPiBtYWtlcyBzZW5zZS4uCj4gCj4gaW4gUGVybAo+IAo+IGlzX2Rpc2pvaW50KCRzZXQxLCAk
c2V0MikKPiAKPiByZWFkcyB3ZWlyZCwgYW5kIHNob3VsZCBtYXliZSBiZQo+IAo+IGNoZWNrX2Rp
c2pvaW50KCRzZXQxLCAkc2V0MikKPiAKPiBvciBzb21ldGhpbmcgbGlrZSB0aGF0PwoKWWVzIG1h
a2VzIHNlbnNlLCBJIHdhcyBnb2luZyBmb3IgYGFyZV9kaXNqb2ludGAsIGJ1dCBib3RoIGFyZSBm
aW5lIGZvciBtZS4KCj4gCj4+Cj4+PiArICAgIG15ICgkaGFzaDEsICRoYXNoMikgPSBAXzsKPj4+
ICsKPj4+ICsgICAgZm9yIG15ICRrZXkgKGtleXMgJSRoYXNoMSkgewo+Pj4gKwlyZXR1cm4gMCBp
ZiBleGlzdHMoJGhhc2gyLT57JGtleX0pOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIHJldHVy
biAxOwo+Pj4gK307Cj4+PiArCj4+PiArc3ViIGludGVyc2VjdCB7Cj4+PiArICAgIG15ICgkaGFz
aDEsICRoYXNoMikgPSBAXzsKPj4+ICsKPj4+ICsgICAgbXkgJHJlc3VsdCA9IHsgbWFwIHsgJF8g
PT4gJGhhc2gyLT57JF99IH0ga2V5cyAlJGhhc2gxIH07Cj4gCj4gdGhpcyBpcyBhIGJpdCBkYW5n
ZXJvdXMgaWYgJGhhc2gyLT57JGtleX0gaXMgaXRzZWxmIGEgcmVmZXJlbmNlPyBpZiBJCj4gbGF0
ZXIgbW9kaWZ5ICRyZXN1bHQgSSdsbCBtb2RpZnkgJGhhc2gyLi4gSSBrbm93IHRoZSBjb21taXQg
bWVzc2FnZSBzYXlzCj4gdGhhdCB0aGUgaGFzaGVzIGFyZSBhbGwganVzdCBvZiB0aGUgZm9ybSBr
ZXkgPT4gMSwgYnV0IG5vdGhpbmcgaGVyZQo+IHRlbGxzIG1lIHRoYXQgYSB5ZWFyIGxhdGVyIHdo
ZW4gSSBhbSBsb29raW5nIGZvciBhIGdlbmVyaWMgaGFzaAo+IGludGVyc2VjdGlvbiBoZWxwZXIg
OykgSSB0aGluayB0aGlzIHNob3VsZCBhbHNvIGJlIGNsZWFybHkgbWVudGlvbmVkIGluCj4gdGhl
IG1vZHVsZSwgYW5kIGlkZWFsbHksIGFsc28gaW4gdGhlIGhlbHBlciBuYW1lcyAoaS5lLiwgaGF2
ZSAic2V0Igo+IHRoZXJlIGV2ZXJ5d2hlcmUgYW5kIGEgY29tbWVudCBhYm92ZSBlYWNoIHRoYXQg
aXQgb25seSB3b3JrcyBmb3IKPiBoYXNoZXMtYXMtc2V0cyBhbmQgbm90IGdlbmVyaWMgaGFzaGVz
KS4KPiAKPiB3b3VsZG4ndCBpdCBiZSBmYXN0ZXIvc2ltcGxlciB0byBpdGVyYXRlIG92ZXIgZWl0
aGVyIGhhc2ggb25jZT8KPiAKPiBteSAkcmVzdWx0ID0ge307Cj4gZm9yIG15ICRrZXkgKGtleXMg
JSRoYXNoMSkgewo+ICAgICAgJHJlc3VsdC0+eyRrZXl9ID0gMSBpZiAkaGFzaDEtPnska2V5fSAm
JiAkaGFzaDItPnska2V5fTsKPiB9Cj4gcmV0dXJuICRyZXN1bHQ7CgpJIGhhdmVuJ3QgdGhvdWdo
dCB0b28gbXVjaCBhYm91dCB3aGF0IHsgbWFwIHt9IH0gd291bGQgY29zdCBoZXJlIGZvciB0aGUg
ClJGQywgYnV0IHRoZSBhYm92ZSBpcyBib3RoIGVhc2llciB0byByZWFkIGFuZCBhbHNvIHNhZmVy
LCBzbyBJJ2xsIGFkYXB0IAp0aGUgc3Vicm91dGluZSB0byB0aGUgYWJvdmUsIHRoYW5rcyA6KS4K
Cj4gCj4gCj4+PiArCj4+PiArICAgIGZvciBteSAka2V5IChrZXlzICUkcmVzdWx0KSB7Cj4+PiAr
CWRlbGV0ZSAkcmVzdWx0LT57JGtleX0gaWYgIWRlZmluZWQoJHJlc3VsdC0+eyRrZXl9KTsKPj4+
ICsgICAgfQo+Pj4gKwo+Pj4gKyAgICByZXR1cm4gJHJlc3VsdDsKPj4+ICt9Owo+Pj4gKwo+Pj4g
K3N1YiBzZXRfZGlmZmVyZW5jZSB7Cj4+PiArICAgIG15ICgkaGFzaDEsICRoYXNoMikgPSBAXzsK
Pj4+ICsKPj4+ICsgICAgbXkgJHJlc3VsdCA9IHsgbWFwIHsgJF8gPT4gMSB9IGtleXMgJSRoYXNo
MSB9Owo+IAo+IGlmICRoYXNoMSBpcyBvbmx5IG9mIHRoZSBmb3JtIGtleSA9PiAxLCB0aGVuIHRo
aXMgaXMganVzdAo+IAo+IG15ICRyZXN1bHQgPSB7ICUkaGFzaDEgfTsKCkJ1dCAkcmVzdWx0IHdv
dWxkIHRoZW4gYmUgYSBjb3B5IGluc3RlYWQgb2YgYSByZWZlcmVuY2UgdG8gJSRoYXNoMSBoZXJl
IApyaWdodD8gQnV0IG9ubHkgaWYgdGhlcmUncyBubyBvdGhlciByZWZlcmVuY2VzIGluIHRoZXJl
PwoKPiAKPj4+ICsKPj4+ICsgICAgZm9yIG15ICRrZXkgKGtleXMgJSRyZXN1bHQpIHsKPj4+ICsJ
ZGVsZXRlICRyZXN1bHQtPnska2V5fSBpZiBkZWZpbmVkKCRoYXNoMi0+eyRrZXl9KTsKPj4+ICsg
ICAgfQo+Pj4gKwo+IAo+IGJ1dCB0aGUgd2hvbGUgdGhpbmcgY2FuIGJlCj4gCj4gcmV0dXJuIHsg
bWFwIHsgJGhhc2gyLT57JF99ID8gKCRfID0+IDEpIDogKCkgfSBrZXlzICUkaGFzaDEgfTsKPiAK
PiB0aGlzIHRyYW5zZm9ybXMgaGFzaDEgaW50byBpdHMga2V5cywgYW5kIHRoZW4gcmV0dXJucyBl
aXRoZXIgKCRrZXkgPT4gMSkKPiBpZiB0aGUga2V5IGlzIHRydWUgaW4gJGhhc2gyLCBvciB0aGUg
ZW1wdHkgdHVwbGUgaWYgbm90LiB0aGUgb3V0ZXIge30KPiB0aGVuIHR1cm4gdGhpcyBzZXF1ZW5j
ZSBvZiB0dXBsZXMgaW50byBhIGhhc2ggYWdhaW4sIHdoaWNoIHNraXBzIGVtcHR5Cj4gdHVwbGVz
IDspIGNhbiBvZiBjb3Vyc2UgYWxzbyBiZSBhZGFwdGVkIHRvIHVzZSB0aGUgdmFsdWUgZnJvbSBl
aXRoZXIKPiBoYXNoLCBjaGVjayBmb3IgZGVmaW5lZG5lc3MgaW5zdGVhZCBvZiB0cnV0aGluZXNz
LCAuLgoKSSdsbCBoYXZlIHRvIGNoZWNrIG91dCBtb3JlIG9mIHRoZSBwZXJsZG9jIG9mIHRoZSBt
b3JlIGNvbW1vbiBmdW5jdGlvbnMsIApkaWRuJ3Qga25vdyB0aGF0IG1hcCB3aWxsIHNraXAgZW1w
dHkgbGlzdHMgaGVyZSwgdGhhbmtzIDopCgo+IAo+Pj4gKyAgICByZXR1cm4gJHJlc3VsdDsKPj4+
ICt9Owo+Pj4gKwo+Pj4gK3N1YiB1bmlvbiB7Cj4+PiArICAgIG15ICgkaGFzaDEsICRoYXNoMikg
PSBAXzsKPj4+ICsKPj4+ICsgICAgbXkgJHJlc3VsdCA9IHsgbWFwIHsgJF8gPT4gMSB9IGtleXMg
JSRoYXNoMSwga2V5cyAlJGhhc2gyIH07Cj4+PiArCj4+PiArICAgIHJldHVybiAkcmVzdWx0Owo+
Pj4gK307Cj4+PiArCj4+PiAgIHN1YiBjb3VudF9mZW5jZWRfc2VydmljZXMgewo+Pj4gICAgICAg
bXkgKCRzcywgJG5vZGUpID0gQF87Cj4+PiAgIAo+Pgo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBwdmUtZGV2ZWwgbWFpbGluZyBsaXN0
Cj4+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+PiBodHRwczovL2xpc3RzLnByb3htb3gu
Y29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwKPj4KPj4KPj4KCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxp
bmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94
LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==