Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pbofZ-0006Z0-Jg for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Mar 2023 20:21:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pbofY-0003eg-I3 for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Mar 2023 20:21:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pbofY-0003eX-4x for pgsql-hackers@lists.postgresql.org; Mon, 13 Mar 2023 20:21:20 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pbofU-00037c-BN for pgsql-hackers@lists.postgresql.org; Mon, 13 Mar 2023 20:21:19 +0000 Received: by mail-ed1-x52d.google.com with SMTP id fd5so19771576edb.7 for ; Mon, 13 Mar 2023 13:21:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1678738874; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=psonmvbfvRVbBcCanzMkLJ6D/zAGc54K3PAbGd8gK3U=; b=b+538XJwWawqcRJJrXdbhDfK7P6AGar45gQxjWsOLsUlfL0JCIeTwgEJJttp17QSRQ ZgCP8DO0Awx++1to0+qmHgimHR1844+0fycqOed+nGAnYDaoBUXs8kuene+QqbK8HzOJ wwuDt5kCJ3mGKNSn1CHAVab8oPVvwFxhFxXT4AE/VbxzLfWYMgjikaefXvAs4aAthCpx m9jfn45Hf0UBCn+SbGY2ZeVZi1kI18gsv4J0cPyCDBLj3LEZ4Jba8WCmeHCiwnHiNgUD 8NFzxNpL+Smmc3BEMqCleYgN3+QlQdj8SUQki4zZN+SFpcZzqK+jG3jZ18zEFEdoDQn8 K0Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678738874; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=psonmvbfvRVbBcCanzMkLJ6D/zAGc54K3PAbGd8gK3U=; b=uQr5Qe5WB92Lwc0KkUoMmHLVm1tShTtNcnL5TzsS8r7TIVEfTYHV2z7kx11WTBKkKW sdf/LDPDObvngzMTPHPtF0xZV0i0Akyun/Zi6b1i9djOJgzHnjhAnaVUPuDSp/1MiCoc 3dgdcXCqwBPNSMx8tbiO6qslXrPu4OyZ9x2BOBv/HZM+pi4LQucA4YEkl1abVXxxq9H3 AB0+BJKZZBm7v6w4PlZAuu91296T220sLRsPXKcOPieQ/VqlvlQDxE2Kwn54Pamp0nm+ BnyRyh7lie5V/TToE5JiO4EdtGvoUuIgH96RtXBnNwgG7PDUjqboGpILaQeHNd6vDXCc oKUA== X-Gm-Message-State: AO0yUKW6mrodZNQOkcJTiiouJbbODXVMpzubr3G2Feh3GkXJ5SA8O1Iv NE31ePI8sWrjb2CwQPxZE0bWC1c1zpDLBAKKNuNO9vMT3MNuhV4CxhO1XSCyt3Uxidt/RlH9KCi 4wkcnZmEEn08y6WgyuebXyAde8gQMqvDN1RgZpHE82bgjO2IafeYJ1WdFed8Vk7pOgxr2eUpPqF w1Uy2BfFYsq+nf2w1SJgrRlPD6+dpLgtp1M+7GnygArhMEv1LAdngf X-Google-Smtp-Source: AK7set8lkRKY3ffP+8995RNinRyUJNC5vqQP8bf29ypbAmVEveBEc5BpLgLTpD11GpiuxHN8A7k2cQ== X-Received: by 2002:a17:906:cccf:b0:8ae:f73e:233f with SMTP id ot15-20020a170906cccf00b008aef73e233fmr37402847ejb.32.1678738874350; Mon, 13 Mar 2023 13:21:14 -0700 (PDT) Received: from [10.137.0.17] (ip-86-49-228-162.bb.vodafone.cz. [86.49.228.162]) by smtp.gmail.com with ESMTPSA id v12-20020a17090651cc00b008e938e98046sm183795ejk.223.2023.03.13.13.21.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Mar 2023 13:21:13 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------ipHAa2xSeYR6q2ScLJsvoudn" Message-ID: <3da84c90-7e12-75ee-a582-025bc68dd098@enterprisedb.com> Date: Mon, 13 Mar 2023 21:21:11 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: Add LZ4 compression in pg_dump Content-Language: en-US To: gkokolatos@pm.me, Alexander Lakhin Cc: "shiy.fnst@fujitsu.com" , Michael Paquier , Justin Pryzby , "pgsql-hackers@lists.postgresql.org" , Rachel Heaton References: <7zu6GYFi72jByVk2SEe_nd8r1DHhwA35vSntAE9sAfiMX9Lfk6bwimkwmu7GDgYaEvL27SE4qF1uK4_LHWQM4H-SXOwkMAI-GV8PKGmED_E=@pm.me> <535565cd-b69f-c064-a845-15c0fc44db4a@enterprisedb.com> <22cb80ed-ec87-54c7-fd5b-cdcf79766bb1@enterprisedb.com> <8421f53d-c9f7-c02e-3278-9f9522a8e8f3@enterprisedb.com> <33496f7c-3449-1426-d568-63f6bca2ac1f@gmail.com> <1aBKUlb8BGVUUTkRJwEmU3ud1NyeHVCoC7bpOKAuRYlHHJ7hRiDVXYgad-wmjx1K3pykd_ctyY4Lqy9xA7JGLXOm1Eul-imdZ_7TVr5LY8U=@pm.me> From: Tomas Vondra In-Reply-To: <1aBKUlb8BGVUUTkRJwEmU3ud1NyeHVCoC7bpOKAuRYlHHJ7hRiDVXYgad-wmjx1K3pykd_ctyY4Lqy9xA7JGLXOm1Eul-imdZ_7TVr5LY8U=@pm.me> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------ipHAa2xSeYR6q2ScLJsvoudn Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 3/11/23 11:50, gkokolatos@pm.me wrote: > ------- Original Message ------- > On Saturday, March 11th, 2023 at 7:00 AM, Alexander Lakhin wrote: > >> Hello, >> 23.02.2023 23:24, Tomas Vondra wrote: >> >>> On 2/23/23 16:26, Tomas Vondra wrote: >>> >>>> Thanks for v30 with the updated commit messages. I've pushed 0001 after >>>> fixing a comment typo and removing (I think) an unnecessary change in an >>>> error message. >>>> >>>> I'll give the buildfarm a bit of time before pushing 0002 and 0003. >>> >>> I've now pushed 0002 and 0003, after minor tweaks (a couple typos etc.), >>> and marked the CF entry as committed. Thanks for the patch! >>> >>> I wonder how difficult would it be to add the zstd compression, so that >>> we don't have the annoying "unsupported" cases. >> >> >> With the patch 0003 committed, a single warning -Wtype-limits appeared in the >> master branch: >> $ CPPFLAGS="-Og -Wtype-limits" ./configure --with-lz4 -q && make -s -j8 >> compress_lz4.c: In function ‘LZ4File_gets’: >> compress_lz4.c:492:19: warning: comparison of unsigned expression in ‘< 0’ is >> always false [-Wtype-limits] >> 492 | if (dsize < 0) >> | > > Thank you Alexander. Please find attached an attempt to address it. > >> (I wonder, is it accidental that there no other places that triggers >> the warning, or some buildfarm animals had this check enabled before?) > > I can not answer about the buildfarms. Do you think that adding an explicit > check for this warning in meson would help? I am a bit uncertain as I think > that type-limits are included in extra. > > @@ -1748,6 +1748,7 @@ common_warning_flags = [ > '-Wshadow=compatible-local', > # This was included in -Wall/-Wformat in older GCC versions > '-Wformat-security', > + '-Wtype-limits', > ] > >> >> It is not a false positive as can be proved by the 002_pg_dump.pl modified as >> follows: >> - program => $ENV{'LZ4'}, >> >> + program => 'mv', >> >> args => [ >> >> - '-z', '-f', '--rm', >> "$tempdir/compression_lz4_dir/blobs.toc", >> "$tempdir/compression_lz4_dir/blobs.toc.lz4", >> ], >> }, > > Correct, it is not a false positive. The existing testing framework provides > limited support for exercising error branches. Especially so when those are > dependent on generated output. > >> A diagnostic logging added shows: >> LZ4File_gets() after LZ4File_read_internal; dsize: 18446744073709551615 >> >> and pg_restore fails with: >> error: invalid line in large object TOC file >> ".../src/bin/pg_dump/tmp_check/tmp_test_22ri/compression_lz4_dir/blobs.toc": "????" > > It is a good thing that the restore fails with bad input. Yet it should > have failed earlier. The attached makes certain it does fail earlier. > Thanks for the patch. I did look if there are other places that might have the same issue, and I think there are - see attached 0002. For example LZ4File_write is declared to return size_t, but then it also does if (LZ4F_isError(status)) { fs->errcode = status; return -1; } That won't work :-( And these issues may not be restricted to lz4 code - Gzip_write is declared to return size_t, but it does return gzwrite(gzfp, ptr, size); and gzwrite returns int. Although, maybe that's correct, because gzwrite() is "0 on error" so maybe this is fine ... However, Gzip_read assigns gzread() to size_t, and that does not seem great. It probably will still trigger the following pg_fatal() because it'd be very lucky to match the expected 'size', but it's confusing. I wonder whether CompressorState should use int or size_t for the read_func/write_func callbacks. I guess no option is perfect, i.e. no data type will work for all compression libraries we might use (lz4 uses int while lz4f uses size_t, to there's that). It's a bit weird the "open" functions return int and the read/write size_t. Maybe we should stick to int, which is what the old functions (cfwrite etc.) did. But I think the actual problem here is that the API does not clearly define how errors are communicated. I mean, it's nice to return the value returned by the library function without "mangling" it by conversion to size_t, but what if the libraries communicate errors in different way? Some may return "0" while others may return "-1". I think the right approach is to handle all library errors and not just let them through. So Gzip_write() needs to check the return value, and either call pg_fatal() or translate it to an error defined by the API. For example we might say "returns 0 on error" and then translate all library-specific errors to that. While looking at the code I realized a couple function comments don't say what's returned in case of error, etc. So 0004 adds those. 0003 is a couple minor assorted comments/questions: - Should we move ZLIB_OUT_SIZE/ZLIB_IN_SIZE to compress_gzip.c? - Why are LZ4 buffer sizes different (ZLIB has both 4kB)? - I wonder if we actually need LZ4F_HEADER_SIZE_MAX? Is it even possible for LZ4F_compressBound to return value this small (especially for 16kB input buffer)? regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------ipHAa2xSeYR6q2ScLJsvoudn Content-Type: text/x-patch; charset=UTF-8; name="0004-comment-improvements.patch" Content-Disposition: attachment; filename="0004-comment-improvements.patch" Content-Transfer-Encoding: base64 RnJvbSA3MmNiNzEwYzA4YzQ2MTdmYTQ5MWZlNDgyNGM0Zjk5ZDNkMzQwMmZiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogTW9uLCAxMyBNYXIgMjAyMyAyMDo0MjozMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggNC80XSBjb21tZW50IGltcHJvdmVtZW50cwoKLS0tCiBzcmMvYmluL3BnX2R1bXAv Y29tcHJlc3NfbHo0LmMgfCAyMiArKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJl c3NfbHo0LmMKaW5kZXggOTRmMjhkNjgwNi4uMTlhOWNmMmRmMiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21w cmVzc19sejQuYwpAQCAtMTkwLDEwICsxOTAsMTUgQEAgTFo0RmlsZV9nZXRfZXJyb3IoQ29t cHJlc3NGaWxlSGFuZGxlICpDRkgpCiB9CiAKIC8qCi0gKiBQcmVwYXJlIGFuIGFscmVhZHkg YWxsb2MnZWQgTFo0RmlsZSBzdHJ1Y3QgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCisgKiBQcmVw YXJlIGFuIGFscmVhZHkgYWxsb2MnZWQgTFo0RmlsZSBzdHJ1Y3QgZm9yIHN1YnNlcXVlbnQg Y2FsbHMgKGVpdGhlcgorICogY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbikuCiAgKgot ICogSXQgY3JlYXRlcyB0aGUgbmVjZXNzYXJ5IGNvbnRleHRzIGZvciB0aGUgb3BlcmF0aW9u cy4gV2hlbiBjb21wcmVzc2luZywKLSAqIGl0IGFkZGl0aW9uYWxseSB3cml0ZXMgdGhlIExa NCBoZWFkZXIgaW4gdGhlIG91dHB1dCBzdHJlYW0uCisgKiBJdCBjcmVhdGVzIHRoZSBuZWNl c3NhcnkgY29udGV4dHMgZm9yIHRoZSBvcGVyYXRpb25zLiBXaGVuIGNvbXByZXNzaW5nIGRh dGEKKyAqIChpbmRpY2F0ZWQgYnkgY29tcHJlc3Npbmc9dHJ1ZSksIGl0IGFkZGl0aW9uYWxs eSB3cml0ZXMgdGhlIExaNCBoZWFkZXIgaW4gdGhlCisgKiBvdXRwdXQgc3RyZWFtLgorICoK KyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLiBJbiBjYXNlIG9mIGEgZmFpbHVyZSByZXR1cm5z IDEsIGFuZCBzdG9yZXMgdGhlIGVycm9yCisgKiBjb2RlIGluIGZzLT5lcnJjb2RlLgogICov CiBzdGF0aWMgaW50CiBMWjRGaWxlX2luaXQoTFo0RmlsZSAqZnMsIGludCBzaXplLCBib29s IGNvbXByZXNzaW5nKQpAQCAtMjA2LDYgKzIxMSw3IEBAIExaNEZpbGVfaW5pdChMWjRGaWxl ICpmcywgaW50IHNpemUsIGJvb2wgY29tcHJlc3NpbmcpCiAJZnMtPmNvbXByZXNzaW5nID0g Y29tcHJlc3Npbmc7CiAJZnMtPmluaXRlZCA9IHRydWU7CiAKKwkvKiBXaGVuIGNvbXByZXNz aW5nLCB3cml0ZSBMWjQgaGVhZGVyIHRvIHRoZSBvdXRwdXQgc3RyZWFtLiAqLwogCWlmIChm cy0+Y29tcHJlc3NpbmcpCiAJewogCQlmcy0+YnVmbGVuID0gTFo0Rl9jb21wcmVzc0JvdW5k KExaNF9JTl9TSVpFLCAmZnMtPnByZWZzKTsKQEAgLTI0OCw3ICsyNTQsNyBAQCBMWjRGaWxl X2luaXQoTFo0RmlsZSAqZnMsIGludCBzaXplLCBib29sIGNvbXByZXNzaW5nKQogCQkJcmV0 dXJuIDE7CiAJCX0KIAotCQlmcy0+YnVmbGVuID0gc2l6ZSA+IExaNF9PVVRfU0laRSA/IHNp emUgOiBMWjRfT1VUX1NJWkU7CisJCWZzLT5idWZsZW4gPSAoc2l6ZSA+IExaNF9PVVRfU0la RSkgPyBzaXplIDogTFo0X09VVF9TSVpFOwogCQlmcy0+YnVmZmVyID0gcGdfbWFsbG9jKGZz LT5idWZsZW4pOwogCiAJCWZzLT5vdmVyZmxvd2FsbG9jbGVuID0gZnMtPmJ1ZmxlbjsKQEAg LTI2Miw3ICsyNjgsMTAgQEAgTFo0RmlsZV9pbml0KExaNEZpbGUgKmZzLCBpbnQgc2l6ZSwg Ym9vbCBjb21wcmVzc2luZykKIC8qCiAgKiBSZWFkIGFscmVhZHkgZGVjb21wcmVzc2VkIGNv bnRlbnQgZnJvbSB0aGUgb3ZlcmZsb3cgYnVmZmVyIGludG8gJ3B0cicgdXAgdG8KICAqICdz aXplJyBieXRlcywgaWYgYXZhaWxhYmxlLiBJZiB0aGUgZW9sX2ZsYWcgaXMgc2V0LCB0aGVu IHN0b3AgYXQgdGhlIGZpcnN0Ci0gKiBvY2N1cnJlbmNlIG9mIHRoZSBuZXcgbGluZSBjaGFy IHByaW9yIHRvICdzaXplJyBieXRlcy4KKyAqIG9jY3VycmVuY2Ugb2YgdGhlIG5ld2xpbmUg Y2hhciBwcmlvciB0byAnc2l6ZScgYnl0ZXMuCisgKgorICogUmV0dXJucyB0aGUgbnVtYmVy IG9mIGJ5dGVzIHJlYWQgZnJvbSB0aGUgb3ZlcmZsb3cgYnVmZmVyIChhbmQgY29waWVkIGlu dG8KKyAqIHRoZSAncHRyJyBidWZmZXIpLCBvciAwIGlmIHRoZSBvdmVyZmxvdyBidWZmZXIg aXMgZW1wdHkuCiAgKgogICogQW55IHVucmVhZCBjb250ZW50IGluIHRoZSBvdmVyZmxvdyBi dWZmZXIgaXMgbW92ZWQgdG8gdGhlIGJlZ2lubmluZy4KICAqLwpAQCAtMzA0LDYgKzMxMyw5 IEBAIExaNEZpbGVfcmVhZF9vdmVyZmxvdyhMWjRGaWxlICpmcywgdm9pZCAqcHRyLCBpbnQg c2l6ZSwgYm9vbCBlb2xfZmxhZykKICAqIGF0IGFuIG92ZXJmbG93IGJ1ZmZlciB3aXRoaW4g TFo0RmlsZS4gT2YgY291cnNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcwogICogY2FsbGVkLCBp dCB3aWxsIGZpcnN0IHRyeSB0byBjb25zdW1lIGFueSBkZWNvbXByZXNzZWQgY29udGVudCBh bHJlYWR5CiAgKiBwcmVzZW50IGluIHRoZSBvdmVyZmxvdyBidWZmZXIsIGJlZm9yZSBkZWNv bXByZXNzaW5nIG5ldyBjb250ZW50LgorICoKKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBi eXRlcyBvZiBkZWNvbXByZXNzZWQgZGF0YSBjb3BpZWQgaW50byB0aGUgcHRyCisgKiBidWZm ZXIsIG9yIC0xIGluIGNhc2Ugb2YgZXJyb3IuCiAgKi8KIHN0YXRpYyBpbnQKIExaNEZpbGVf cmVhZF9pbnRlcm5hbChMWjRGaWxlICpmcywgdm9pZCAqcHRyLCBpbnQgcHRyc2l6ZSwgYm9v bCBlb2xfZmxhZykKLS0gCjIuMzkuMgoK --------------ipHAa2xSeYR6q2ScLJsvoudn Content-Type: text/x-patch; charset=UTF-8; name="0003-questions.patch" Content-Disposition: attachment; filename="0003-questions.patch" Content-Transfer-Encoding: base64 RnJvbSBlOWQxZTRkY2JmMTcyMDBmMzRjZGI4NTdjNzk2MWZiMGRmMWU4NDM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogTW9uLCAxMyBNYXIgMjAyMyAyMDo0MjoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMy80XSBxdWVzdGlvbnMKCi0tLQogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lv LmggIHwgMSArCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMgfCA2ICsrKysrKwog MiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvY29tcHJlc3NfaW8uaCBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5o CmluZGV4IGNkYjE1OTUxZWEuLmFlMzJhNGRlMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9jb21wcmVzc19pby5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5o CkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAicGdfYmFja3VwX2FyY2hpdmVyLmgiCiAK IC8qIEluaXRpYWwgYnVmZmVyIHNpemVzIHVzZWQgaW4gemxpYiBjb21wcmVzc2lvbi4gKi8K Ky8qIFhYWCBzaG91bGRuJ3QgdGhpcyBiZSBtb3ZlZCB0byBjb21wcmVzc19nemlwLmM/ICov CiAjZGVmaW5lIFpMSUJfT1VUX1NJWkUJNDA5NgogI2RlZmluZSBaTElCX0lOX1NJWkUJNDA5 NgogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMgYi9zcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMKaW5kZXggOWFiNTdjZWZmMy4uOTRmMjhkNjgw NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQuYwpAQCAtMjAsNiArMjAsOCBAQAogI2luY2x1 ZGUgPGx6NC5oPgogI2luY2x1ZGUgPGx6NGZyYW1lLmg+CiAKKy8qIEluaXRpYWwgYnVmZmVy IHNpemVzIHVzZWQgaW4gemxpYiBjb21wcmVzc2lvbi4gKi8KKy8qIFhYWCBXaHkgaXMgdGhp cyBkaWZmZXJlbnQgZnJvbSBHWklQIHZhbHVlcz8gVGhhdCB1c2VzIDRrQiBmb3IgYm90aC4g Ki8KICNkZWZpbmUgTFo0X09VVF9TSVpFCSg0ICogMTAyNCkKICNkZWZpbmUgTFo0X0lOX1NJ WkUJCSgxNiAqIDEwMjQpCiAKQEAgLTIwNyw2ICsyMDksMTAgQEAgTFo0RmlsZV9pbml0KExa NEZpbGUgKmZzLCBpbnQgc2l6ZSwgYm9vbCBjb21wcmVzc2luZykKIAlpZiAoZnMtPmNvbXBy ZXNzaW5nKQogCXsKIAkJZnMtPmJ1ZmxlbiA9IExaNEZfY29tcHJlc3NCb3VuZChMWjRfSU5f U0laRSwgJmZzLT5wcmVmcyk7CisJCS8qCisJCSAqIFhYWCBEb2VzIHRoaXMgYWN0dWFsbHkg ZG8gc29tZXRoaW5nIG1lYW5pbmdmdWw/IFdpdGggTFo0X0lOX1NJWkU9MTZrQgorCQkgKiBJ IGdldCBidWZsZW49MTQzNjAwIChyb3VnaGx5KSwgc28gY2FuIGl0IGV2ZXIgYmUgc21hbGxl ciB0aGFuIDIyPworCQkgKi8KIAkJaWYgKGZzLT5idWZsZW4gPCBMWjRGX0hFQURFUl9TSVpF X01BWCkKIAkJCWZzLT5idWZsZW4gPSBMWjRGX0hFQURFUl9TSVpFX01BWDsKIAotLSAKMi4z OS4yCgo= --------------ipHAa2xSeYR6q2ScLJsvoudn Content-Type: text/x-patch; charset=UTF-8; name="0002-more-size_t-places.patch" Content-Disposition: attachment; filename="0002-more-size_t-places.patch" Content-Transfer-Encoding: base64 RnJvbSBjZDM2MWY0YmM2MzFhMzNlYjczNzRiZjhiMjkyOTc2YWFmMDc3OTliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogTW9uLCAxMyBNYXIgMjAyMyAyMDo0MTozOCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMi80XSBtb3JlIHNpemVfdCBwbGFjZXMKCi0tLQogc3JjL2Jpbi9wZ19kdW1wL2Nv bXByZXNzX2d6aXAuYyB8IDYgKysrKy0tCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0 LmMgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuYyBi L3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlwLmMKaW5kZXggMGFmNjVhZmViNC4uNmIw NDJjYWI1YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuYwor KysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfZ3ppcC5jCkBAIC0yMzMsMTIgKzIzMywx MyBAQCBJbml0Q29tcHJlc3Nvckd6aXAoQ29tcHJlc3NvclN0YXRlICpjcywKICAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICovCiAKLXN0YXRpYyBzaXplX3QKK3N0YXRpYyBzaXplX3QJ LyogWFhYIGlzc3VlIHNpemVfdCB2cy4gaW50PyAqLwogR3ppcF9yZWFkKHZvaWQgKnB0ciwg c2l6ZV90IHNpemUsIENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZIKQogewogCWd6RmlsZQkJZ3pm cCA9IChnekZpbGUpIENGSC0+cHJpdmF0ZV9kYXRhOwogCXNpemVfdAkJcmV0OwogCisJLyog WFhYIHRoaXMgaXMgcHJvYmFibHkgd3JvbmcgYmVjYXVzZSBnenJlYWQgaXMgIi0xIGZvciBl cnJvciIgYnV0IHRoaXMgYnJlYWtzIHRoYXQuICovCiAJcmV0ID0gZ3pyZWFkKGd6ZnAsIHB0 ciwgc2l6ZSk7CiAJaWYgKHJldCAhPSBzaXplICYmICFnemVvZihnemZwKSkKIAl7CkBAIC0y NTIsMTEgKzI1MywxMiBAQCBHemlwX3JlYWQodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgQ29t cHJlc3NGaWxlSGFuZGxlICpDRkgpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHNpemVf dAorc3RhdGljIHNpemVfdAkvKiBYWFggaXNzdWUgc2l6ZV90IHZzLiBpbnQ/ICovCiBHemlw X3dyaXRlKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIENvbXByZXNzRmlsZUhhbmRs ZSAqQ0ZIKQogewogCWd6RmlsZQkJZ3pmcCA9IChnekZpbGUpIENGSC0+cHJpdmF0ZV9kYXRh OwogCisJLyogWFhYIHRoaXMgaXMgcHJvYmFibHkgT0ssIGJlY2F1c2UgZ3p3cml0ZSBpcyAi b3IgMCBpbiBjYXNlIG9mIGVycm9yIiBwZXIgaHR0cHM6Ly96bGliLm5ldC9tYW51YWwuaHRt bCNCYXNpYyAqLwogCXJldHVybiBnendyaXRlKGd6ZnAsIHB0ciwgc2l6ZSk7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQuYyBiL3NyYy9iaW4vcGdf ZHVtcC9jb21wcmVzc19sejQuYwppbmRleCBjYzAzOWYwYjQ3Li45YWI1N2NlZmYzIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL2NvbXByZXNzX2x6NC5jCkBAIC00MzAsNyArNDMwLDcgQEAgTFo0RmlsZV93cml0 ZShjb25zdCB2b2lkICpwdHIsIHNpemVfdCBzaXplLCBDb21wcmVzc0ZpbGVIYW5kbGUgKkNG SCkKIAkJaWYgKExaNEZfaXNFcnJvcihzdGF0dXMpKQogCQl7CiAJCQlmcy0+ZXJyY29kZSA9 IHN0YXR1czsKLQkJCXJldHVybiAtMTsKKwkJCXJldHVybiAtMTsJLyogRklYTUUgc2l6ZV90 ICovCiAJCX0KIAogCQlpZiAoZndyaXRlKGZzLT5idWZmZXIsIDEsIHN0YXR1cywgZnMtPmZw KSAhPSBzdGF0dXMpCi0tIAoyLjM5LjIKCg== --------------ipHAa2xSeYR6q2ScLJsvoudn Content-Type: text/x-patch; charset=UTF-8; name="0001-Respect-return-type-of-LZ4File_read_internal.patch" Content-Disposition: attachment; filename="0001-Respect-return-type-of-LZ4File_read_internal.patch" Content-Transfer-Encoding: base64 RnJvbSA3OTg2MGE5NjAwZjRlNjc3ZjEwYmUzOWRiNTA3ZjM4YzcxMTgxMmNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogTW9uLCAxMyBNYXIgMjAyMyAyMDozOTozNyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMS80XSBSZXNwZWN0IHJldHVybiB0eXBlIG9mIExaNEZpbGVfcmVhZF9pbnRlcm5h bAoKVGhlIGZ1bmN0aW9uIExaNEZpbGVfZ2V0cygpIHdhcyBzdG9yaW5nIHRoZSByZXR1cm4g dmFsdWUgb2YKTFo0RmlsZV9yZWFkX2ludGVybmFsIGluIGEgdmFyaWFibGUgb2YgdGhlIHdy b25nIHR5cGUsIGRpc3JlZ2FyZGluZyBzaWduLWVzLgpBcyBhIGNvbnNlcXVlbmNlLCBMWjRG aWxlX2dldHMoKSB3b3VsZCBub3QgdGFrZSB0aGUgZXJyb3IgcGF0aCB3aGVuIGl0IHNob3Vs ZC4KCkluIGFuIGF0dGVtcHQgdG8gaW1wcm92ZSByZWFkYWJpbGl0eSwgc3BlbGwgb3V0IHRo ZSBzaWduaWZpY2FuY2Ugb2YgYSBuZWdhdGl2ZQpyZXR1cm4gdmFsdWUgb2YgTFo0RmlsZV9y ZWFkX2ludGVybmFsKCkgaW4gTFo0RmlsZV9yZWFkKCkuCgpSZXBvcnRlZC1ieTogQWxleGFu ZGVyIExha2hpbiA8ZXhjbHVzaW9uQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmluL3BnX2R1bXAv Y29tcHJlc3NfbHo0LmMgfCAxMCArKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9jb21wcmVzc19sejQuYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQuYwppbmRl eCA2M2U3OTRjZGM2Li5jYzAzOWYwYjQ3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv Y29tcHJlc3NfbHo0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jCkBA IC00NTMsNyArNDUzLDcgQEAgTFo0RmlsZV9yZWFkKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUs IENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZIKQogCWludAkJCXJldDsKIAogCXJldCA9IExaNEZp bGVfcmVhZF9pbnRlcm5hbChmcywgcHRyLCBzaXplLCBmYWxzZSk7Ci0JaWYgKHJldCAhPSBz aXplICYmICFMWjRGaWxlX2VvZihDRkgpKQorCWlmIChyZXQgPCAwIHx8IChyZXQgIT0gc2l6 ZSAmJiAhTFo0RmlsZV9lb2YoQ0ZIKSkpCiAJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBm cm9tIGlucHV0IGZpbGU6ICVzIiwgTFo0RmlsZV9nZXRfZXJyb3IoQ0ZIKSk7CiAKIAlyZXR1 cm4gcmV0OwpAQCAtNDg2LDE0ICs0ODYsMTQgQEAgc3RhdGljIGNoYXIgKgogTFo0RmlsZV9n ZXRzKGNoYXIgKnB0ciwgaW50IHNpemUsIENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZIKQogewog CUxaNEZpbGUgICAgKmZzID0gKExaNEZpbGUgKikgQ0ZILT5wcml2YXRlX2RhdGE7Ci0Jc2l6 ZV90CQlkc2l6ZTsKKwlpbnQJCQlyZXQ7CiAKLQlkc2l6ZSA9IExaNEZpbGVfcmVhZF9pbnRl cm5hbChmcywgcHRyLCBzaXplLCB0cnVlKTsKLQlpZiAoZHNpemUgPCAwKQorCXJldCA9IExa NEZpbGVfcmVhZF9pbnRlcm5hbChmcywgcHRyLCBzaXplLCB0cnVlKTsKKwlpZiAocmV0IDwg MCkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXMiLCBM WjRGaWxlX2dldF9lcnJvcihDRkgpKTsKIAogCS8qIERvbmUgcmVhZGluZyAqLwotCWlmIChk c2l6ZSA9PSAwKQorCWlmIChyZXQgPT0gMCkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4g cHRyOwotLSAKMi4zOS4yCgo= --------------ipHAa2xSeYR6q2ScLJsvoudn--