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 1tk7ge-000Ffd-Cx for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Feb 2025 20:25:53 +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 1tk7gd-002nFv-4D for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Feb 2025 20:25:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tk7gc-002nFm-L3 for pgsql-hackers@lists.postgresql.org; Mon, 17 Feb 2025 20:25:50 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tk7gZ-001Q6P-1v for pgsql-hackers@postgresql.org; Mon, 17 Feb 2025 20:25:49 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-30a2f240156so13427961fa.3 for ; Mon, 17 Feb 2025 12:25:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1739823946; x=1740428746; 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=lbEPS1WT4ZcbszUgXR5FHbnC1uChzM9co5vAvoCXk6c=; b=gbQTsfum82dn5Ybq5v5Rp9mTt2JaZ3ScLjKvKXPeVqfZ7CKN/yN2RTD3kHVLlT+XcE CI9XmiJ6y39NYv5EuEoOzYzuz1L1fXejoYLLX/uROT3N+9PpZxIYQhZzsI38pNLetXKi 1lECi/ykwAc8cI9ofq4dh8tXNI9WvuN1W9o/mD0ogfmoIW5M42BVOefUBjGTIx50VTRk pVsKsJVUbvLlGg+qYjw+HJeDhjq8nAzIR+PvAB5mqbLXXDPOLB1oVvcyy0SxY5GB7Yyl Gu6yhufkjRAXZQnCSsLHWoduhqeYn0SlPhxYARUEJqL2h2x4unW8blPYvR8R8wjtUT6h DWRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739823946; x=1740428746; 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=lbEPS1WT4ZcbszUgXR5FHbnC1uChzM9co5vAvoCXk6c=; b=UGL96BwnzB9BmnE+gfZRn+tl1FMAlVXskKXG55zAz6MoZ8T2yNzcBYHuFvD7RXm9u5 VjN4zZMqm2Lca3+kvGo+8zXLhU/LI+OFzJEHCsd2cyZSd6uzmp5/B9Xg9WdfV66LVcSx 3E2v5lFHJHlv5umtur4SRQPwYcajDa0kKprWcBrci2kLTRqmOGdBm+KN18DNsTacueB7 KeLJPhxm05aBstPkmpn2UkJJ5sN+4ZXyC9uqM0hOSlFTgDjxDz7HG/lxM6ZU4n0tRugw kKr/WqAd5kTFMZmAf1kZnBMf4TbX3wKFvfmieDKIgelClIFFrPFeTIbLM9lBOeInM+P1 hV3Q== X-Forwarded-Encrypted: i=1; AJvYcCVVOJFsTtelrFUYL4sFNA07On4rGOAS2gO8rkt/FLhzukhvTYDlXKtIRUkJ9IsS3Z+nC2T+5quMFPI4kIXZ@postgresql.org X-Gm-Message-State: AOJu0Yylurvlk6XxAkXNg3jNfyNO23DIMQcmgk8YFMeEFLDdwApjZ5rq dwp5JS/9kDrjsPM4h5P/fgRZsy32fE8UC/BWk9vQyzighma1Q4kWFHdS2qtDBpBynnPKPP+PEAE 7R5cP3YG1/2yqIq8gD6Sn0oR5W9lf4g8Af0KI4A== X-Gm-Gg: ASbGncsYVSVYzuv3fVv2sh/dxj3DekJk+f2FWUVtq3DasC0+pNtpfXCCMkNKL5jeOYm 9fC3sC0w1CRU8/8PACy6l1C4K/mpanmmTEEu5UDUTPYwnp2ovwmnRChZThOTYhSZ+QjE/eOjExw == X-Google-Smtp-Source: AGHT+IHrY8BcRbaEl0hX2dWtXbp1y+oMsvN4Cjfw2ZH/8sY+MuI9Ge1oCEbnsVvcbK4FWVXx2GxiJSXa4TZOYUMYKDA= X-Received: by 2002:a05:6512:2342:b0:544:1451:fa06 with SMTP id 2adb3069b0e04-5452fe653e1mr3673612e87.28.1739823946003; Mon, 17 Feb 2025 12:25:46 -0800 (PST) MIME-Version: 1.0 References: <3203865.1739301613@sss.pgh.pa.us> <94798ef1-0f13-416a-983a-88447e434a7f@vondra.me> <7u7dbn6s2i6bf3hjzkbqaexj2bpoblqxwbkffbetl4rjv6dcom@s2uickjc5z53> <3216369.1739308717@sss.pgh.pa.us> In-Reply-To: From: Jelte Fennema-Nio Date: Mon, 17 Feb 2025 21:25:33 +0100 X-Gm-Features: AWEUYZnf1WrcvQJwBEpXb7vCSWAWekccFj4qfYlZsfYCJu0JLafiF9b1TKgN1E4 Message-ID: Subject: Re: Bump soft open file limit (RLIMIT_NOFILE) to hard limit on startup To: Andres Freund Cc: Tom Lane , Tomas Vondra , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000467bab062e5c5473" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000467bab062e5c5473 Content-Type: text/plain; charset="UTF-8" On Mon, 17 Feb 2025 at 18:24, Andres Freund wrote: > Why not do this only in the if (rlim.rlim_cur < nclients + 3) case? Done, I also changed it to not bump to rlim_max, but only to nclients + 3. The rest of the patches I'll update later. But response below. > I think it might be better to have a precursor commit that wraps system(), > including the fflush(), pgstat_report_wait_start(), pgstat_report_wait_end(). > > It seems a bit silly to have a dance of 5 function calls that are repeated in > three places. Fair enough, I'll update that in the next version. > > +#ifdef HAVE_GETRLIMIT > > +/* > > + * Increases the open file limit (RLIMIT_NOFILE) by the requested amount. > > + * Returns true if successful, false otherwise. > > + */ > > +static bool > > +IncreaseOpenFileLimit(int extra_files) > > +{ > > Why is this a relative instead of an absolute amount? I don't feel strongly about this, but it seemed nicer to encapsulate that. My callers (and I expect the io_uring one too) all had the relative amount. Seemed a bit silly to always require the caller to add custom_max_open_files.rlim_cur to that, especially since you might want to call IncreaseOpenFileLimit from another file for your io_uring stuff, which would mean also making custom_max_open_files.rlim_cur non-static. Or of course you'd have to query getrlimit again. > > + if (setrlimit(RLIMIT_NOFILE, &rlim) != 0) > > + { > > + ereport(WARNING, (errmsg("setrlimit failed: %m"))); > > + return false; > > + } > > Is a WARNING really appropriate here? I guess it's just copied from elsewhere > in the file, but still... I mean this shouldn't ever fail. We checked beforehand if we are allowed to increase it this far. So if setrlimit fails then there's a bug somewhere. That made me think it was sensible to report a warning, so at least people can see something strange is going on. > > + if (setrlimit(RLIMIT_NOFILE, &original_max_open_files) != 0) > > + { > > + ereport(WARNING, (errmsg("setrlimit failed: %m"))); > > + } > > +#endif > > +} > > Hm. Does this actually work if we currently have more than > original_max_open_files.rlim_cur files open? So according to at least the Linux and FreeBSD manpages, lowering below the currently open files is not a failure mode. - https://linux.die.net/man/2/setrlimit - https://man.freebsd.org/cgi/man.cgi?query=setrlimit I also tried this out manually on my Linux machine, by starting postgres with only a soft limit of 15 (lower than that and it wouldn't start). I was then able to change the limits without issue when calling setrlimit or system. ... Sadly that turned out not to be true when calling popen in OpenPipeStream (ofcourse). Because that will actually open a file in the postgres process too, and at that point you're already over your file limit. I can see two ways around that: 1. Writing a custom version of popen, where we lower the limit just before we call exec in the forked process. 2. Don't care about restoring the original limit for OpenPipeStream My suggestion would be to go for 2: It doesn't seem worth the complexity of having a custom popen implementation, just to be able to handle buggy programs (i.e. ones that cannot handle more than 1024 files, while still trying to open more than that amount of files) > It'd be fine to do the system() with more files open, because it'll internally > do exec(), but of course setrlimit() doesn't know that ... I'm not sure I understand what you mean here. > All these ifdefs make this function rather hard to read. It was kinda bad > before, but it does get even worse with this patch. Not really sure what to > do about that though. Agreed, I'll see if I can figure out a way to restructure it a bit. > We were discussing calling set_max_fds() twice to deal with io_uring FDs > requiring a higher FD limit than before. With the patch as-is, we'd overwrite > our original original_max_open_files in that case... That should be very easy to change if that's indeed how we want to bump the rlimit for the io_uring file descriptors. But it didn't seem like you were sure which of the two options you liked best. > Hm. When is this second case here reachable and useful? Shouldn't we already > have increased the limit before getting here? If so IncreaseOpenFileLimit() > won't help, no? While it's a very unlikely edge case, it's theoretically possible (afaict) that the maximum number of open files is already open. So highestfd will then be 0 (because it's the first loop), and we'll only find out that we're at the limit due to getting ENFILE. I'll add a code comment about this, because it's indeed not obvious. > > @@ -1078,6 +1164,7 @@ set_max_safe_fds(void) > > max_safe_fds, usable_fds, already_open); > > } > > > > + > > /* > > * Open a file with BasicOpenFilePerm() and pass default file mode for the > > * fileMode parameter. > > Unrelated change. Ugh, yeah I guess I added the new functions there originally, but moved them around and didn't clean up the added whitespace. > If we want to reflect the value, shouldn't it show up as PGC_S_OVERRIDE or > such? Makes sense --000000000000467bab062e5c5473 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0003-Reflect-the-value-of-max_safe_fds-in-max_files_pe.patch" Content-Disposition: attachment; filename="v3-0003-Reflect-the-value-of-max_safe_fds-in-max_files_pe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m79i69qw2 RnJvbSA3NjFjM2IwYTE2MWViOWQ2ODAzNTRjOWMyMGE4NzIwOTFjZTIyNGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8Z2l0aHViLXRlY2hAamVsdGVm Lm5sPgpEYXRlOiBXZWQsIDEyIEZlYiAyMDI1IDAxOjA4OjA3ICswMTAwClN1YmplY3Q6IFtQQVRD SCB2MyAzLzNdIFJlZmxlY3QgdGhlIHZhbHVlIG9mIG1heF9zYWZlX2ZkcyBpbgogbWF4X2ZpbGVz X3Blcl9wcm9jZXNzCgpJdCBpcyBjdXJyZW50bHkgaGFyZCB0byBmaWd1cmUgb3V0IGlmIG1heF9z YWZlX2ZkcyBpcyBzaWduaWZpY2FudGx5Cmxvd2VyIHRoYW4gbWF4X2ZpbGVzX3Blcl9wcm9jZXNz LiBUaGlzIHN0YXJ0cyByZWZsZWN0aW5nIHRoZSB2YWx1ZSBvZgptYXhfc2FmZV9mZHMgaW4gbWF4 X2ZpbGVzX3Blcl9wcm9jZXNzIGFmdGVyIG91ciBsaW1pdCBkZXRlY3Rpb24uIFdlCnN0aWxsIHdh bnQgdG8gaGF2ZSB0d28gc2VwYXJhdGUgdmFyaWFibGVzIGJlY2F1c2UgZm9yIHRoZSBib290c3Ry YXAgb3IKc3RhbmRhbG9uZS1iYWNrZW5kIGNhc2VzIHRoZWlyIHZhbHVlcyBkaWZmZXIgb24gcHVy cG9zZS4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYyB8IDMgKysrCiAxIGZpbGUg Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9maWxlL2ZkLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYwppbmRleCAwNGZiOTNi ZTU2ZC4uMDVjMDc5MmU0ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9m ZC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCkBAIC0xMTQ5LDYgKzExNDks OSBAQCBzZXRfbWF4X3NhZmVfZmRzKHZvaWQpCiAKIAltYXhfc2FmZV9mZHMgPSBNaW4odXNhYmxl X2ZkcyAtIE5VTV9SRVNFUlZFRF9GRFMsIG1heF9maWxlc19wZXJfcHJvY2Vzcyk7CiAKKwkvKiBV cGRhdGUgR1VDIHZhcmlhYmxlIHRvIGFsbG93IHVzZXJzIHRvIHNlZSB0aGUgcmVzdWx0ICovCisJ bWF4X2ZpbGVzX3Blcl9wcm9jZXNzID0gbWF4X3NhZmVfZmRzOworCiAJLyoKIAkgKiBNYWtlIHN1 cmUgd2Ugc3RpbGwgaGF2ZSBlbm91Z2ggdG8gZ2V0IGJ5LgogCSAqLwotLSAKMi40My4wCgo= --000000000000467bab062e5c5473 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0002-Bump-postmaster-soft-open-file-limit-RLIMIT_NOFIL.patch" Content-Disposition: attachment; filename="v3-0002-Bump-postmaster-soft-open-file-limit-RLIMIT_NOFIL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m79i69qh1 RnJvbSBmM2VkM2EzNDg0ZTFkM2RjZmVhM2Q3Zjk0Y2Q1NDg1MzNhODQ5OTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8Z2l0aHViLXRlY2hAamVsdGVm Lm5sPgpEYXRlOiBUdWUsIDExIEZlYiAyMDI1IDE5OjE1OjM2ICswMTAwClN1YmplY3Q6IFtQQVRD SCB2MyAyLzNdIEJ1bXAgcG9zdG1hc3RlciBzb2Z0IG9wZW4gZmlsZSBsaW1pdCAoUkxJTUlUX05P RklMRSkKIHdoZW4gbmVjZXNzYXJ5CgpUaGUgZGVmYXVsdCBvcGVuIGZpbGUgbGltaXQgb2YgMTAy NCBvbiBMaW51eCBpcyBleHRyZW1lbHkgbG93LiBUaGUKcmVhc29uIHRoYXQgdGhpcyBoYXNuJ3Qg Y2hhbmdlZCBjaGFuZ2UgaXMgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBicmVhawpsZWdhY3kgcHJv Z3JhbXMgdGhhdCB1c2UgdGhlIHNlbGVjdCgyKSBzeXN0ZW0gY2FsbCBpbiBoYXJkIHRvIGRlYnVn CndheXMuIFNvIGluc3RlYWQgcHJvZ3JhbXMgdGhhdCB3YW50IHRvIG9wdC1pbiB0byBhIGhpZ2hl ciBvcGVuIGZpbGUKbGltaXQgYXJlIGV4cGVjdGVkIHRvIGJ1bXAgdGhlaXIgc29mdCBsaW1pdCB0 byB0aGVpciBoYXJkIGxpbWl0IG9uCnN0YXJ0dXAuIERldGFpbHMgb24gdGhpcyBhcmUgdmVyeSB3 ZWxsIGV4cGxhaW5lZCBpbiBhIGJsb2dwb3N0IGJ5IHRoZQpzeXN0ZW1kIGF1dGhvclsxXS4gVGhl cmUncyBhbHNvIGEgc2ltaWxhciBjaGFuZ2UgZG9uZSBieSB0aGUgR28KbGFuZ3VhZ2VbMl0uCgpU aGlzIHN0YXJ0cyBidW1waW5nIHBvc3RtYXN0ZXIgaXRzIHNvZnQgb3BlbiBmaWxlIGxpbWl0IHdo ZW4gd2UgcmVhbGl6ZQp0aGF0IHdlJ2xsIHJ1biBpbnRvIHRoZSBzb2Z0IGxpbWl0IHdpdGggdGhl IHJlcXVlc3RlZAptYXhfZmlsZXNfcGVyX3Byb2Nlc3MgR1VDLiBXZSBkbyBzbyBieSBzbGlnaHRs eSBjaGFuZ2luZyB0aGUgbWVhbmluZyBvZgp0aGUgbWF4X2ZpbGVzX3Blcl9wcm9jZXNzIEdVQy4g VGhlIGFjdHVhbCAobm90IHB1YmxpY2x5IGV4cG9zZWQpIGxpbWl0CmlzIG1heF9zYWZlX2Zkcywg cHJldmlvdXNseSB0aGlzIHdvdWxkIGJlIHNldCB0bzoKbWF4X2ZpbGVzX3Blcl9wcm9jZXNzIC0g YWxyZWFkeV9vcGVuX2ZpbGVzIC0gTlVNX1JFU0VSVkVEX0ZEUwpBZnRlciB0aGlzIGNoYW5nZSB3 ZSBub3cgdHJ5IHRvIHNldCBtYXhfc2FmZV9mZHMgdG8KbWF4X2ZpbGVzX3Blcl9wcm9jZXNzIGlm IHRoZSBzeXN0ZW0gYWxsb3dzIHRoYXQuIFRoaXMgaXMgZGVlbWVkIG1vcmUKbmF0dXJhbCB0byB1 bmRlcnN0YW5kIGZvciB1c2VycywgYmVjYXVzZSBub3cgdGhlIGxpbWl0IG9mIGZpbGVzIHRoYXQK dGhleSBjYW4gb3BlbiBpcyBhY3R1YWxseSB3aGF0IHRoZXkgY29uZmlndXJlZCBpbiBtYXhfZmls ZXNfcGVyX3Byb2Nlc3MuCgpBZGRpbmcgdGhpcyBpbmZyYXN0cnVjdHVyZSB0byBjaGFuZ2UgUkxJ TUlUX05PRklMRSB3aGVuIG5lZWRlZCBpcwplc3BlY2lhbGx5IHVzZWZ1bCBmb3IgdGhlIEFJTyB3 b3JrIHRoYXQgQW5kcmVzIGlzIGRvaW5nLCBiZWNhdXNlCmlvX3VyaW5nIGNvbnN1bWVzIGEgbG90 IG9mIGZpbGUgZGVzY3JpcHRvcnMuIEV2ZW4gd2l0aG91dCBsb29raW5nIGF0IEFJTwp0aGVyZSBp cyBhIGxhcmdlIG51bWJlciBvZiByZXBvcnRzIGZyb20gcGVvcGxlIHRoYXQgcmVxdWlyZSBjaGFu Z2luZwp0aGVpciBzb2Z0IGZpbGUgbGltaXQgYmVmb3JlIHN0YXJ0aW5nIFBvc3RncmVzLCBzb21l dGltZXMgZmFsbGluZyBiYWNrCnRvIGxvd2VyaW5nIG1heF9maWxlc19wZXJfcHJvY2VzcyB3aGVu IHRoZXkgZmFpbCB0byBkbyBzb1szLThdLiBJdCdzCmFsc28gbm90IGFsbCB0aGF0IHN0cmFuZ2Ug dG8gZmFpbCBhdCBzZXR0aW5nIHRoZSBzb2Z0IG9wZW4gZmlsZSBsaW1pdApiZWNhdXNlIHRoZXJl IGFyZSBtdWx0aXBsZSBwbGFjZXMgd2hlcmUgb25lIGNhbiBjb25maWd1cmUgc3VjaCBsaW1pdHMK YW5kIHVzdWFsbHkgb25seSBvbmUgb2YgdGhlbSBpcyBlZmZlY3RpdmUgKHdoaWNoIG9uZSBkZXBl bmRzIG9uIGhvdwpQb3N0Z3JlcyBpcyBzdGFydGVkKS4gSW4gY2xvdWQgZW52aXJvbm1lbnRzIGl0 cyBhbHNvIG9mdGVuIG5vdCBwb3NzaWJsZQpmb3IgdXNlciB0byBjaGFuZ2UgdGhlIHNvZnQgbGlt aXQsIGJlY2F1c2UgdGhleSBkb24ndCBjb250cm9sIHRoZSB3YXkKdGhhdCBQb3N0Z3JlcyBpcyBz dGFydGVkLgoKT25lIHRoaW5nIHRvIG5vdGUgaXMgdGhhdCB3ZSB0ZW1wb3JhcmlseSByZXN0b3Jl IHRoZSBvcmlnaW5hbCBzb2Z0CmxpbWl0IHdoZW4gc2hlbGwtaW5nIG91dCB0byBvdGhlciBleGVj dXRhYmxlcy4gVGhpcyBpcyBkb25lIGFzIGEKcHJlY2F1dGlvbiBpbiBjYXNlIHRob3NlIGV4ZWN1 dGFibGVzIGFyZSB1c2luZyBzZWxlY3QoMikuCgpbMV06IGh0dHBzOi8vMHBvaW50ZXIubmV0L2Js b2cvZmlsZS1kZXNjcmlwdG9yLWxpbWl0cy5odG1sClsyXTogaHR0cHM6Ly9naXRodWIuY29tL2dv bGFuZy9nby9pc3N1ZXMvNDYyNzkKWzNdOiBodHRwczovL3NlcnZlcmZhdWx0LmNvbS9xdWVzdGlv bnMvNzg1MzMwL2dldHRpbmctdG9vLW1hbnktb3Blbi1maWxlcy1lcnJvci1mb3ItcG9zdGdyZXMK WzRdOiBodHRwczovL3NlcnZlcmZhdWx0LmNvbS9xdWVzdGlvbnMvNzE2OTgyL2hvdy10by1yYWlz ZS1tYXgtbm8tb2YtZmlsZS1kZXNjcmlwdG9ycy1mb3ItZGFlbW9ucy1ydW5uaW5nLW9uLWRlYmlh bi1qZXNzaWUKWzVdOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQv Q0FLdGM4dlhoN052UF9xV2o4RXFxb3JQWTk3YnZ4U2FYM2g1dTdhOVBwdFJGSFc1eDdnJTQwbWFp bC5nbWFpbC5jb20KWzZdOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2Zs YXQvMTEzY2UzMWIwOTA4MTIwOTU1dzc3MDI5MDk5aTdlY2VjYzA1MzA4NDA5NWElNDBtYWlsLmdt YWlsLmNvbQpbN106IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmlvc29mdC9jb2xpbWEvZGlzY3Vzc2lv bnMvODM2Cls4XTogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzI5 NjYzLjEwMDc3Mzg5NTclNDBzc3MucGdoLnBhLnVzIzIwNzllYzllMmQ4YjI1MTU5MzgxMmEzNzEx YmZlOWU5Ci0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICB8ICAx NyArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2ZS5jIHwgICA0ICsK IHNyYy9iYWNrZW5kL2FyY2hpdmUvc2hlbGxfYXJjaGl2ZS5jICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMgICAgICAgICAgICB8IDExMSArKysrKysrKysrKysrKysr KysrKy0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oICAgICAgICAgICAgICAgICB8ICAgMiAr CiA1IGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKaW5kZXggMzM2NjMwY2U0MTcuLjZiNGJmNzhhOWZjIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yMzUy LDE1ICsyMzUyLDE0IEBAIGluY2x1ZGVfZGlyICdjb25mLmQnCiAgICAgICA8L3Rlcm0+CiAgICAg ICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVt YmVyIG9mIHNpbXVsdGFuZW91c2x5IG9wZW4gZmlsZXMgYWxsb3dlZCB0byBlYWNoCi0gICAgICAg IHNlcnZlciBzdWJwcm9jZXNzLiBUaGUgZGVmYXVsdCBpcyBvbmUgdGhvdXNhbmQgZmlsZXMuIElm IHRoZSBrZXJuZWwgaXMgZW5mb3JjaW5nCi0gICAgICAgIGEgc2FmZSBwZXItcHJvY2VzcyBsaW1p dCwgeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhpcyBzZXR0aW5nLgotICAgICAgICBC dXQgb24gc29tZSBwbGF0Zm9ybXMgKG5vdGFibHksIG1vc3QgQlNEIHN5c3RlbXMpLCB0aGUga2Vy bmVsIHdpbGwKLSAgICAgICAgYWxsb3cgaW5kaXZpZHVhbCBwcm9jZXNzZXMgdG8gb3BlbiBtYW55 IG1vcmUgZmlsZXMgdGhhbiB0aGUgc3lzdGVtCi0gICAgICAgIGNhbiBhY3R1YWxseSBzdXBwb3J0 IGlmIG1hbnkgcHJvY2Vzc2VzIGFsbCB0cnkgdG8gb3BlbgotICAgICAgICB0aGF0IG1hbnkgZmls ZXMuIElmIHlvdSBmaW5kIHlvdXJzZWxmIHNlZWluZyA8cXVvdGU+VG9vIG1hbnkgb3BlbgotICAg ICAgICBmaWxlczwvcXVvdGU+IGZhaWx1cmVzLCB0cnkgcmVkdWNpbmcgdGhpcyBzZXR0aW5nLgot ICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgYXQgc2VydmVyIHN0YXJ0Lgor ICAgICAgICBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmaWxlcyB0byBlYWNoIHNlcnZlciBz dWJwcm9jZXNzIGlzIGFsbG93ZWQKKyAgICAgICAgdG8gb3Blbi4gVGhlIGRlZmF1bHQgaXMgb25l IHRob3VzYW5kIGZpbGVzLiBJZiB0aGUga2VybmVsIGlzIGVuZm9yY2luZworICAgICAgICBhIGxv d2VyIHNvZnQgbGltaXQgUG9zdGdyZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGluY3JlYXNlIGl0IGlm IHRoZSBoYXJkCisgICAgICAgIGxpbWl0IGFsbG93cyB0aGF0LiBTZXR0aW5nIHRoaXMgdmFsdWUg dG9vIGhpZ2ggY2FuIGNhdXNlIHJlc291cmNlCisgICAgICAgIGV4aGF1c3Rpb24gcHJvYmxlbXM6 IE9uIHNvbWUgcGxhdGZvcm1zIChub3RhYmx5LCBtb3N0IEJTRCBzeXN0ZW1zKSwgdGhlCisgICAg ICAgIGtlcm5lbCB3aWxsIGFsbG93IGluZGl2aWR1YWwgcHJvY2Vzc2VzIHRvIG9wZW4gbWFueSBt b3JlIGZpbGVzIHRoYW4gdGhlCisgICAgICAgIHN5c3RlbSBjYW4gYWN0dWFsbHkgc3VwcG9ydCBp ZiBtYW55IHByb2Nlc3NlcyBhbGwgdHJ5IHRvIG9wZW4gdGhhdCBtYW55CisgICAgICAgIGZpbGVz LiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgYXQgc2VydmVyIHN0YXJ0LgogICAgICAg IDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2FyY2hpdmUuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZlLmMKaW5kZXggMWVmMTcxM2M5MWEuLmJmMTc0 MjYwMzllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2 ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZlLmMKQEAgLTE1 OCw2ICsxNTgsNyBAQCBSZXN0b3JlQXJjaGl2ZWRGaWxlKGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIg Knhsb2dmbmFtZSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoImV4ZWN1dGluZyByZXN0b3JlIGNvbW1h bmQgXCIlc1wiIiwKIAkJCQkJCQkgeGxvZ1Jlc3RvcmVDbWQpKSk7CiAKKwlSZXN0b3JlT3JpZ2lu YWxPcGVuRmlsZUxpbWl0KCk7CiAJZmZsdXNoKE5VTEwpOwogCXBnc3RhdF9yZXBvcnRfd2FpdF9z dGFydChXQUlUX0VWRU5UX1JFU1RPUkVfQ09NTUFORCk7CiAKQEAgLTE4MCw2ICsxODEsNyBAQCBS ZXN0b3JlQXJjaGl2ZWRGaWxlKGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnhsb2dmbmFtZSwKIAog CXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKIAlwZnJlZSh4bG9nUmVzdG9yZUNtZCk7CisJUmVz dG9yZUN1c3RvbU9wZW5GaWxlTGltaXQoKTsKIAogCWlmIChyYyA9PSAwKQogCXsKQEAgLTMyNSwx MCArMzI3LDEyIEBAIEV4ZWN1dGVSZWNvdmVyeUNvbW1hbmQoY29uc3QgY2hhciAqY29tbWFuZCwg Y29uc3QgY2hhciAqY29tbWFuZE5hbWUsCiAJLyoKIAkgKiBleGVjdXRlIHRoZSBjb25zdHJ1Y3Rl ZCBjb21tYW5kCiAJICovCisJUmVzdG9yZU9yaWdpbmFsT3BlbkZpbGVMaW1pdCgpOwogCWZmbHVz aChOVUxMKTsKIAlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQod2FpdF9ldmVudF9pbmZvKTsKIAly YyA9IHN5c3RlbSh4bG9nUmVjb3ZlcnlDbWQpOwogCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsK KwlSZXN0b3JlQ3VzdG9tT3BlbkZpbGVMaW1pdCgpOwogCiAJcGZyZWUoeGxvZ1JlY292ZXJ5Q21k KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYXJjaGl2ZS9zaGVsbF9hcmNoaXZlLmMgYi9z cmMvYmFja2VuZC9hcmNoaXZlL3NoZWxsX2FyY2hpdmUuYwppbmRleCA4Mjg3MjNhZmU0Ny4uYzE2 ZjM1NGExMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FyY2hpdmUvc2hlbGxfYXJjaGl2ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2FyY2hpdmUvc2hlbGxfYXJjaGl2ZS5jCkBAIC03NSwxMCArNzUs MTIgQEAgc2hlbGxfYXJjaGl2ZV9maWxlKEFyY2hpdmVNb2R1bGVTdGF0ZSAqc3RhdGUsIGNvbnN0 IGNoYXIgKmZpbGUsCiAJCQkoZXJybXNnX2ludGVybmFsKCJleGVjdXRpbmcgYXJjaGl2ZSBjb21t YW5kIFwiJXNcIiIsCiAJCQkJCQkJIHhsb2dhcmNoY21kKSkpOwogCisJUmVzdG9yZU9yaWdpbmFs T3BlbkZpbGVMaW1pdCgpOwogCWZmbHVzaChOVUxMKTsKIAlwZ3N0YXRfcmVwb3J0X3dhaXRfc3Rh cnQoV0FJVF9FVkVOVF9BUkNISVZFX0NPTU1BTkQpOwogCXJjID0gc3lzdGVtKHhsb2dhcmNoY21k KTsKIAlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CisJUmVzdG9yZUN1c3RvbU9wZW5GaWxlTGlt aXQoKTsKIAogCWlmIChyYyAhPSAwKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvZmlsZS9mZC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKaW5kZXggZTQ1NGRi NGMwMjAuLjA0ZmI5M2JlNTZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUv ZmQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYwpAQCAtMTU3LDYgKzE1Nywx MiBAQCBpbnQJCQltYXhfZmlsZXNfcGVyX3Byb2Nlc3MgPSAxMDAwOwogICovCiBpbnQJCQltYXhf c2FmZV9mZHMgPSBGRF9NSU5GUkVFOwkvKiBkZWZhdWx0IGlmIG5vdCBjaGFuZ2VkICovCiAKKyNp ZmRlZiBIQVZFX0dFVFJMSU1JVAorc3RhdGljIHN0cnVjdCBybGltaXQgb3JpZ2luYWxfbWF4X29w ZW5fZmlsZXM7CitzdGF0aWMgc3RydWN0IHJsaW1pdCBjdXN0b21fbWF4X29wZW5fZmlsZXM7Cisj ZW5kaWYKKworCiAvKiBXaGV0aGVyIGl0IGlzIHNhZmUgdG8gY29udGludWUgcnVubmluZyBhZnRl ciBmc3luYygpIGZhaWxzLiAqLwogYm9vbAkJZGF0YV9zeW5jX3JldHJ5ID0gZmFsc2U7CiAKQEAg LTk0NSw2ICs5NTEsODIgQEAgSW5pdFRlbXBvcmFyeUZpbGVBY2Nlc3Modm9pZCkKICNlbmRpZgog fQogCisjaWZkZWYgSEFWRV9HRVRSTElNSVQKKy8qCisgKiBJbmNyZWFzZXMgdGhlIG9wZW4gZmls ZSBsaW1pdCAoUkxJTUlUX05PRklMRSkgYnkgdGhlIHJlcXVlc3RlZCBhbW91bnQuCisgKiBSZXR1 cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9v bAorSW5jcmVhc2VPcGVuRmlsZUxpbWl0KGludCBleHRyYV9maWxlcykKK3sKKwlzdHJ1Y3Qgcmxp bWl0IHJsaW0gPSBjdXN0b21fbWF4X29wZW5fZmlsZXM7CisKKwkvKiBJZiB3ZSdyZSBhbHJlYWR5 IGF0IHRoZSBtYXggd2UgcmVhY2hlZCBvdXIgbGltaXQgKi8KKwlpZiAocmxpbS5ybGltX2N1ciA9 PSBvcmlnaW5hbF9tYXhfb3Blbl9maWxlcy5ybGltX21heCkKKwkJcmV0dXJuIGZhbHNlOworCisJ LyogT3RoZXJ3aXNlIHRyeSB0byBpbmNyZWFzZSB0aGUgc29mdCBsaW1pdCB0byB3aGF0IHdlIG5l ZWQgKi8KKwlybGltLnJsaW1fY3VyID0gTWluKHJsaW0ucmxpbV9jdXIgKyBleHRyYV9maWxlcywg cmxpbS5ybGltX21heCk7CisKKwlpZiAoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybGltKSAh PSAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLCAoZXJybXNnKCJzZXRybGltaXQgZmFpbGVkOiAl bSIpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwljdXN0b21fbWF4X29wZW5fZmlsZXMgPSBy bGltOworCisJZWxvZyhMT0csICJpbmNyZWFzZWQgb3BlbiBmaWxlIGxpbWl0IHRvICVsZCIsIChs b25nKSBybGltLnJsaW1fY3VyKTsKKworCXJldHVybiB0cnVlOworfQorI2VuZGlmCisKKy8qCisg KiBSZXN0b3JlT3JpZ2luYWxPcGVuRmlsZUxpbWl0IC0tLSBSZXN0b3JlIHRoZSBvcmlnaW5hbCBv cGVuIGZpbGUgbGltaXQgdGhhdAorICogCQl3YXMgcHJlc2VudCBhdCBwb3N0bWFzdGVyIHN0YXJ0 LgorICoKKyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgc3Bhd25pbmcgc3VicHJvY2Vz c2VzIHRoYXQgbWlnaHQgdXNlIHNlbGVjdCgyKQorICogd2hpY2ggY2FuIG9ubHkgaGFuZGxlIGZp bGUgZGVzY3JpcHRvcnMgdXAgdG8gMTAyNC4KKyAqLwordm9pZAorUmVzdG9yZU9yaWdpbmFsT3Bl bkZpbGVMaW1pdCh2b2lkKQoreworI2lmZGVmIEhBVkVfR0VUUkxJTUlUCisJaWYgKGN1c3RvbV9t YXhfb3Blbl9maWxlcy5ybGltX2N1ciA9PSBvcmlnaW5hbF9tYXhfb3Blbl9maWxlcy5ybGltX2N1 cikKKwl7CisJCS8qIE5vdCBjaGFuZ2VkLCBzbyBubyBuZWVkIHRvIGNhbGwgc2V0cmxpbWl0IGF0 IGFsbCAqLworCQlyZXR1cm47CisJfQorCisJaWYgKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAm b3JpZ2luYWxfbWF4X29wZW5fZmlsZXMpICE9IDApCisJeworCQllcmVwb3J0KFdBUk5JTkcsIChl cnJtc2coInNldHJsaW1pdCBmYWlsZWQ6ICVtIikpKTsKKwl9CisjZW5kaWYKK30KKworLyoKKyAq IFJlc3RvcmVDdXN0b21PcGVuRmlsZUxpbWl0IC0tLSBSZXN0b3JlcyBvdXIgY3VzdG9tIG9wZW4g ZmlsZSBsaW1pdCBhZnRlciBhCisgKiAJCXByZXZpb3VzIGNhbGwgdG8gUmVzdG9yZU9yaWdpbmFs T3BlbkZpbGVMaW1pdC4KKyAqLwordm9pZAorUmVzdG9yZUN1c3RvbU9wZW5GaWxlTGltaXQodm9p ZCkKK3sKKyNpZmRlZiBIQVZFX0dFVFJMSU1JVAorCWlmIChjdXN0b21fbWF4X29wZW5fZmlsZXMu cmxpbV9jdXIgPT0gb3JpZ2luYWxfbWF4X29wZW5fZmlsZXMucmxpbV9jdXIpCisJeworCQkvKiBO b3QgY2hhbmdlZCwgc28gbm8gbmVlZCB0byBjYWxsIHNldHJsaW1pdCBhdCBhbGwgKi8KKwkJcmV0 dXJuOworCX0KKworCWlmIChzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJmN1c3RvbV9tYXhfb3Bl bl9maWxlcykgIT0gMCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywgKGVycm1zZygic2V0cmxpbWl0 IGZhaWxlZDogJW0iKSkpOworCX0KKyNlbmRpZgorfQorCiAvKgogICogY291bnRfdXNhYmxlX2Zk cyAtLS0gY291bnQgaG93IG1hbnkgRkRzIHRoZSBzeXN0ZW0gd2lsbCBsZXQgdXMgb3BlbiwKICAq CQlhbmQgZXN0aW1hdGUgaG93IG1hbnkgYXJlIGFscmVhZHkgb3Blbi4KQEAgLTk2OSw3ICsxMDUx LDYgQEAgY291bnRfdXNhYmxlX2ZkcyhpbnQgbWF4X3RvX3Byb2JlLCBpbnQgKnVzYWJsZV9mZHMs IGludCAqYWxyZWFkeV9vcGVuKQogCWludAkJCWo7CiAKICNpZmRlZiBIQVZFX0dFVFJMSU1JVAot CXN0cnVjdCBybGltaXQgcmxpbTsKIAlpbnQJCQlnZXRybGltaXRfc3RhdHVzOwogI2VuZGlmCiAK QEAgLTk3Nyw5ICsxMDU4LDExIEBAIGNvdW50X3VzYWJsZV9mZHMoaW50IG1heF90b19wcm9iZSwg aW50ICp1c2FibGVfZmRzLCBpbnQgKmFscmVhZHlfb3BlbikKIAlmZCA9IChpbnQgKikgcGFsbG9j KHNpemUgKiBzaXplb2YoaW50KSk7CiAKICNpZmRlZiBIQVZFX0dFVFJMSU1JVAotCWdldHJsaW1p dF9zdGF0dXMgPSBnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsaW0pOworCWdldHJsaW1pdF9z dGF0dXMgPSBnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJm9yaWdpbmFsX21heF9vcGVuX2ZpbGVz KTsKIAlpZiAoZ2V0cmxpbWl0X3N0YXR1cyAhPSAwKQogCQllcmVwb3J0KFdBUk5JTkcsIChlcnJt c2coImdldHJsaW1pdCBmYWlsZWQ6ICVtIikpKTsKKwllbHNlCisJCWN1c3RvbV9tYXhfb3Blbl9m aWxlcyA9IG9yaWdpbmFsX21heF9vcGVuX2ZpbGVzOwogI2VuZGlmCQkJCQkJCS8qIEhBVkVfR0VU UkxJTUlUICovCiAKIAkvKiBkdXAgdW50aWwgZmFpbHVyZSBvciBwcm9iZSBsaW1pdCByZWFjaGVk ICovCkBAIC05OTMsMTMgKzEwNzYsMjEgQEAgY291bnRfdXNhYmxlX2ZkcyhpbnQgbWF4X3RvX3By b2JlLCBpbnQgKnVzYWJsZV9mZHMsIGludCAqYWxyZWFkeV9vcGVuKQogCQkgKiBkb24ndCBnbyBi ZXlvbmQgUkxJTUlUX05PRklMRTsgY2F1c2VzIGlycml0YXRpbmcga2VybmVsIGxvZ3Mgb24KIAkJ ICogc29tZSBwbGF0Zm9ybXMKIAkJICovCi0JCWlmIChnZXRybGltaXRfc3RhdHVzID09IDAgJiYg aGlnaGVzdGZkID49IHJsaW0ucmxpbV9jdXIgLSAxKQotCQkJYnJlYWs7CisJCWlmIChnZXRybGlt aXRfc3RhdHVzID09IDAgJiYgaGlnaGVzdGZkID49IGN1c3RvbV9tYXhfb3Blbl9maWxlcy5ybGlt X2N1ciAtIDEpCisJCXsKKwkJCWlmICghSW5jcmVhc2VPcGVuRmlsZUxpbWl0KG1heF90b19wcm9i ZSAtIHVzZWQpKQorCQkJCWJyZWFrOworCQl9CiAjZW5kaWYKIAogCQl0aGlzZmQgPSBkdXAoMik7 CiAJCWlmICh0aGlzZmQgPCAwKQogCQl7CisjaWZkZWYgSEFWRV9HRVRSTElNSVQKKwkJCWlmIChl cnJubyA9PSBFTkZJTEUgJiYgSW5jcmVhc2VPcGVuRmlsZUxpbWl0KG1heF90b19wcm9iZSAtIHVz ZWQpKQorCQkJCWNvbnRpbnVlOworI2VuZGlmCisKIAkJCS8qIEV4cGVjdCBFTUZJTEUgb3IgRU5G SUxFLCBlbHNlIGl0J3MgZmlzaHkgKi8KIAkJCWlmIChlcnJubyAhPSBFTUZJTEUgJiYgZXJybm8g IT0gRU5GSUxFKQogCQkJCWVsb2coV0FSTklORywgImR1cGxpY2F0aW5nIHN0ZGVyciBmaWxlIGRl c2NyaXB0b3IgZmFpbGVkIGFmdGVyICVkIHN1Y2Nlc3NlczogJW0iLCB1c2VkKTsKQEAgLTEwNTMs MTUgKzExNDQsMTAgQEAgc2V0X21heF9zYWZlX2Zkcyh2b2lkKQogCSAqIG9yIHRoZSBleHBlcmlt ZW50YWxseS1kZXRlcm1pbmVkIEVNRklMRSBsaW1pdC4KIAkgKi0tLS0tLS0tLS0KIAkgKi8KLQlj b3VudF91c2FibGVfZmRzKG1heF9maWxlc19wZXJfcHJvY2VzcywKKwljb3VudF91c2FibGVfZmRz KG1heF9maWxlc19wZXJfcHJvY2VzcyArIE5VTV9SRVNFUlZFRF9GRFMsCiAJCQkJCSAmdXNhYmxl X2ZkcywgJmFscmVhZHlfb3Blbik7CiAKLQltYXhfc2FmZV9mZHMgPSBNaW4odXNhYmxlX2Zkcywg bWF4X2ZpbGVzX3Blcl9wcm9jZXNzIC0gYWxyZWFkeV9vcGVuKTsKLQotCS8qCi0JICogVGFrZSBv ZmYgdGhlIEZEcyByZXNlcnZlZCBmb3Igc3lzdGVtKCkgZXRjLgotCSAqLwotCW1heF9zYWZlX2Zk cyAtPSBOVU1fUkVTRVJWRURfRkRTOworCW1heF9zYWZlX2ZkcyA9IE1pbih1c2FibGVfZmRzIC0g TlVNX1JFU0VSVkVEX0ZEUywgbWF4X2ZpbGVzX3Blcl9wcm9jZXNzKTsKIAogCS8qCiAJICogTWFr ZSBzdXJlIHdlIHN0aWxsIGhhdmUgZW5vdWdoIHRvIGdldCBieS4KQEAgLTEwNzgsNiArMTE2NCw3 IEBAIHNldF9tYXhfc2FmZV9mZHModm9pZCkKIAkJIG1heF9zYWZlX2ZkcywgdXNhYmxlX2Zkcywg YWxyZWFkeV9vcGVuKTsKIH0KIAorCiAvKgogICogT3BlbiBhIGZpbGUgd2l0aCBCYXNpY09wZW5G aWxlUGVybSgpIGFuZCBwYXNzIGRlZmF1bHQgZmlsZSBtb2RlIGZvciB0aGUKICAqIGZpbGVNb2Rl IHBhcmFtZXRlci4KQEAgLTI3MjQsNiArMjgxMSw3IEBAIE9wZW5QaXBlU3RyZWFtKGNvbnN0IGNo YXIgKmNvbW1hbmQsIGNvbnN0IGNoYXIgKm1vZGUpCiAJUmVsZWFzZUxydUZpbGVzKCk7CiAKIFRy eUFnYWluOgorCVJlc3RvcmVPcmlnaW5hbE9wZW5GaWxlTGltaXQoKTsKIAlmZmx1c2goTlVMTCk7 CiAJcHFzaWduYWwoU0lHUElQRSwgU0lHX0RGTCk7CiAJZXJybm8gPSAwOwpAQCAtMjczMSw2ICsy ODE5LDcgQEAgVHJ5QWdhaW46CiAJc2F2ZV9lcnJubyA9IGVycm5vOwogCXBxc2lnbmFsKFNJR1BJ UEUsIFNJR19JR04pOwogCWVycm5vID0gc2F2ZV9lcnJubzsKKwlSZXN0b3JlQ3VzdG9tT3BlbkZp bGVMaW1pdCgpOwogCWlmIChmaWxlICE9IE5VTEwpCiAJewogCQlBbGxvY2F0ZURlc2MgKmRlc2Mg PSAmYWxsb2NhdGVkRGVzY3NbbnVtQWxsb2NhdGVkRGVzY3NdOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9mZC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCmluZGV4IGUzMDY3 YWI2NTk3Li5kMjRlN2YxYzhkZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaApAQCAtMTc3LDYgKzE3Nyw4IEBAIGV4dGVy biB2b2lkIFJlbW92ZVBnVGVtcEZpbGVzKHZvaWQpOwogZXh0ZXJuIHZvaWQgUmVtb3ZlUGdUZW1w RmlsZXNJbkRpcihjb25zdCBjaGFyICp0bXBkaXJuYW1lLCBib29sIG1pc3Npbmdfb2ssCiAJCQkJ CQkJCSAgIGJvb2wgdW5saW5rX2FsbCk7CiBleHRlcm4gYm9vbCBsb29rc19saWtlX3RlbXBfcmVs X25hbWUoY29uc3QgY2hhciAqbmFtZSk7CitleHRlcm4gdm9pZCBSZXN0b3JlT3JpZ2luYWxPcGVu RmlsZUxpbWl0KHZvaWQpOworZXh0ZXJuIHZvaWQgUmVzdG9yZUN1c3RvbU9wZW5GaWxlTGltaXQo dm9pZCk7CiAKIGV4dGVybiBpbnQJcGdfZnN5bmMoaW50IGZkKTsKIGV4dGVybiBpbnQJcGdfZnN5 bmNfbm9fd3JpdGV0aHJvdWdoKGludCBmZCk7Ci0tIAoyLjQzLjAKCg== --000000000000467bab062e5c5473 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-Bump-pgbench-soft-open-file-limit-RLIMIT_NOFILE-t.patch" Content-Disposition: attachment; filename="v3-0001-Bump-pgbench-soft-open-file-limit-RLIMIT_NOFILE-t.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m79i69pt0 RnJvbSBmZTExZTc1ZDkxM2FjMzIwZjExYWMyMjUwYzk0ZmE1OGIxMThiMmUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8Z2l0aHViLXRlY2hAamVsdGVm Lm5sPgpEYXRlOiBUdWUsIDExIEZlYiAyMDI1IDIyOjA0OjQ0ICswMTAwClN1YmplY3Q6IFtQQVRD SCB2MyAxLzNdIEJ1bXAgcGdiZW5jaCBzb2Z0IG9wZW4gZmlsZSBsaW1pdCAoUkxJTUlUX05PRklM RSkgdG8KIGhhcmQgbGltaXQKClRoZSBkZWZhdWx0IG9wZW4gZmlsZSBsaW1pdCBvZiAxMDI0IGlz IGV4dHJlbWVseSBsb3csIGdpdmVuIG1vZGVybgpyZXNvdXJjZXMgYW5kIGtlcm5lbCBhcmNoaXRl Y3R1cmVzLiBUaGUgcmVhc29uIHRoYXQgdGhpcyBoYXNuJ3QgY2hhbmdlZAppcyBiZWNhdXNlIGRv aW5nIHNvIHdvdWxkIGJyZWFrIGxlZ2FjeSBwcm9ncmFtcyB0aGF0IHVzZSB0aGUgc2VsZWN0KDIp CnN5c3RlbSBjYWxsIGluIGhhcmQgdG8gZGVidWcgd2F5cy4gU28gaW5zdGVhZCBwcm9ncmFtcyB0 aGF0IHdhbnQgdG8Kb3B0LWluIHRvIGEgaGlnaGVyIG9wZW4gZmlsZSBsaW1pdCBhcmUgZXhwZWN0 ZWQgdG8gYnVtcCB0aGVpciBzb2Z0IGxpbWl0CnRvIHRoZWlyIGhhcmQgbGltaXQgb24gc3RhcnR1 cC4gRGV0YWlscyBvbiB0aGlzIGFyZSB2ZXJ5IHdlbGwgZXhwbGFpbmVkCmluIGEgYmxvZ3Bvc3Qg YnkgdGhlIHN5c3RlbWQgYXV0aG9yWzFdLgoKVGhpcyBzdGFydHMgYnVtcGluZyBwZ2JlbmNoIGl0 cyBzb2Z0IG9wZW4gZmlsZSBsaW1pdCB0byB0aGUgaGFyZCBvcGVuCmZpbGUgbGltaXQuIFRoaXMg bWFrZXMgc3VyZSB1c2VycyBhcmUgbm90IHRvbGQgdG8gY2hhbmdlIHRoZWlyIHVsaW1pdCwKYW5k IHRoZW4gcmV0cnkuIEluc3RlYWQgd2Ugbm93IGRvIHRoYXQgZm9yIHRoZW0gYXV0b21hdGljYWxs eS4KClsxXTogaHR0cHM6Ly8wcG9pbnRlci5uZXQvYmxvZy9maWxlLWRlc2NyaXB0b3ItbGltaXRz Lmh0bWwKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMTcgKysrKysrKysrKysrKysr LS0KIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCmluZGV4IDVlMWZjZjU5YzYxLi44ZjUzYmY1MGFiMSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC02 ODE1LDEzICs2ODE1LDI2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogI2lmZGVmIEhB VkVfR0VUUkxJTUlUCiAJCQkJaWYgKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmxpbSkgPT0g LTEpCiAJCQkJCXBnX2ZhdGFsKCJnZXRybGltaXQgZmFpbGVkOiAlbSIpOwotCQkJCWlmIChybGlt LnJsaW1fY3VyIDwgbmNsaWVudHMgKyAzKQorCisJCQkJaWYgKHJsaW0ucmxpbV9tYXggPCBuY2xp ZW50cyArIDMpCiAJCQkJewogCQkJCQlwZ19sb2dfZXJyb3IoIm5lZWQgYXQgbGVhc3QgJWQgb3Bl biBmaWxlcywgYnV0IHN5c3RlbSBsaW1pdCBpcyAlbGQiLAotCQkJCQkJCQkgbmNsaWVudHMgKyAz LCAobG9uZykgcmxpbS5ybGltX2N1cik7CisJCQkJCQkJCSBuY2xpZW50cyArIDMsIChsb25nKSBy bGltLnJsaW1fbWF4KTsKIAkJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlJlZHVjZSBudW1iZXIgb2Yg Y2xpZW50cywgb3IgdXNlIGxpbWl0L3VsaW1pdCB0byBpbmNyZWFzZSB0aGUgc3lzdGVtIGxpbWl0 LiIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KKworCQkJCWlmIChybGltLnJsaW1fY3VyIDwgbmNs aWVudHMgKyAzKQorCQkJCXsKKwkJCQkJcmxpbS5ybGltX2N1ciA9IG5jbGllbnRzICsgMzsKKwkJ CQkJaWYgKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmxpbSkgPT0gLTEpCisJCQkJCXsKKwkJ CQkJCXBnX2xvZ19lcnJvcigibmVlZCBhdCBsZWFzdCAlZCBvcGVuIGZpbGVzLCBidXQgY291bGRu J3QgcmFpc2UgdGhlIGxpbWl0IiwKKwkJCQkJCQkJCSBuY2xpZW50cyArIDMpOworCQkJCQkJcGdf bG9nX2Vycm9yX2hpbnQoIlJlZHVjZSBudW1iZXIgb2YgY2xpZW50cywgb3IgdXNlIGxpbWl0L3Vs aW1pdCB0byBpbmNyZWFzZSB0aGUgc3lzdGVtIGxpbWl0LiIpOworCQkJCQkJZXhpdCgxKTsKKwkJ CQkJfQorCQkJCX0KICNlbmRpZgkJCQkJCQkvKiBIQVZFX0dFVFJMSU1JVCAqLwogCQkJCWJyZWFr OwogCQkJY2FzZSAnQyc6CgpiYXNlLWNvbW1pdDogYzQwN2Q1NDI2Yjg3N2I0MWJlODdmOWU2Nzll MzIxYmIyYzQyZTQ3ZAotLSAKMi40My4wCgo= --000000000000467bab062e5c5473--