Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vZpE4-000AIv-0U for pgsql-hackers@arkaria.postgresql.org; Sun, 28 Dec 2025 11:46:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vZpE2-00D6Ei-0H for pgsql-hackers@arkaria.postgresql.org; Sun, 28 Dec 2025 11:46:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vZpE1-00D6Ea-1Z for pgsql-hackers@lists.postgresql.org; Sun, 28 Dec 2025 11:46:18 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vZpE0-0030ic-2K for pgsql-hackers@lists.postgresql.org; Sun, 28 Dec 2025 11:46:17 +0000 Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-64b8e5d1611so10355968a12.3 for ; Sun, 28 Dec 2025 03:46:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766922373; x=1767527173; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6e33dr1AUAONmTW9ymjExZfPxHeS08Ezd9rxgH6PAlQ=; b=e2N3Y3jfkQN9sUwsC8u0V1i/XIYCGN5i//9rhLmQH9hct0KBPepmNzuSxsuS/rAXT+ NURWcMB8+A7rIIlIhXMITEO17OpyZOLqSQpF3dR6zWv8oyNy0T7GaGKqh5nxnEE3gEMG gkjEV3bFXWCNCxZxm86ajb4GQ+qOTolQgr7LmYKK0D8dxk/wVPoxVOU+lT70krz0RFb3 7FatkY3S4WE4BSUxakFhuEpYcWB8Aaof9HiDf7X9RQc9xsLK7AwzstYCQmrekVO61XCW wdxXKWJ25/V9LB9/HmvlR9VuFXb/wal5Y0eJyj4TtCZLJiZYCuLh2IPESW9XxKAPOzyF C5iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766922373; x=1767527173; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6e33dr1AUAONmTW9ymjExZfPxHeS08Ezd9rxgH6PAlQ=; b=Ru+b25OZs19YtwstIdZTSQls2RhiuYsl6CUUhuSBRI8Kjc0QoQL+68HCTGB/MkRELQ 4AVVPK93N6DhWf4xHQTYh+JbISWHNuMwR/tIWfWukPWMHm01cnznx4bepefmIJ5G8+MH kZ9tERlcWRXQr1DbdsWVlhDvX1CjCYl2rfcappxT6YZ8RFql2Q8uJj1wovfktXzJ9VpH 4XG7zYv0pn6YRYyaARdciLj4NzBDeBoaEW9nHSfh6U1rFFphhYtzvnq1HJjOaOetts0m s8EBrW8AEsT8ZBp2pft7AMOsRWgWLdz9zHbYpbw4qPza/9JEWgIbfOBDRCNo8Ss2s5c1 9fzA== X-Gm-Message-State: AOJu0YxrW2eAfZy9ZA/UWutPNf53fhCZKr1XOI57nX9RMluV5K0H84ff eqFOfJzsGzDvNbIg8YLgBjjRnVnLFlqjxHQPJgO8SdjpQqRUYkJhxJpl18aiP71474S+E9CU6t5 IGu1vfUhsfStbvZIU7f07J4cm6kVQaEgC5zR8 X-Gm-Gg: AY/fxX7Mzhd4i4nAmG4R+rxjYp+5y/kR6VwCp5HhrQp9w5HKS6MQMAGAcyCMgLwzh3k yUq9wTyAqdFZYaaTiAHjii/z/DAIdnjHrgsIFgUvblzvqQJdfXoqKy+4cfeWA/o2n/OLpAIF0Y2 0oOPAKRkJxSVCzyAdoBxoLMHat3UPD6BZLadWNpnDgb57D+cSF/aJLKn86BOwRifr5+a7iLdI1j xpfgr2Sy4uSNNm8tNeTpFaAHzj5oTMx7WtW0S+ZcNz6eQAmabj0IWJrMlRgnZL/2I8jlnxgeDrT yep0EitABDPj6ocZ5lV2R8+/3pOdPh2qRj1Yk64eaUhRvRVyRNDB+y+Ca9wrRB2MDlaAfGs= X-Google-Smtp-Source: AGHT+IHbhrC2KRAVK3nIIziySG/qd6+JgTsTvn3oVWOxlUwp/FObLLmPVYUo3RRkKUHs7knhRMYtTli7bVul2jZ9pPQ= X-Received: by 2002:a17:906:c104:b0:b73:8d2e:2d38 with SMTP id a640c23a62f3a-b8037222776mr3050978866b.50.1766922372964; Sun, 28 Dec 2025 03:46:12 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Sun, 28 Dec 2025 19:45:59 +0800 X-Gm-Features: AQt7F2q-WeefBQ9tWm-nsnHBWFR0vSvRKo6W8nfZgvQOAEeJSSwUw-tR8d401v4 Message-ID: Subject: Re: Streamify more code paths To: Nazir Bilal Yavuz Cc: pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000633459064701acb2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000633459064701acb2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Sun, Dec 28, 2025 at 7:41=E2=80=AFPM Xuneng Zhou = wrote: > > Hi, > > On Sat, Dec 27, 2025 at 12:41=E2=80=AFAM Xuneng Zhou wrote: > > > > Hi Bilal, > > > > Thanks for your review! > > > > On Fri, Dec 26, 2025 at 6:59=E2=80=AFPM Nazir Bilal Yavuz wrote: > > > > > > Hi, > > > > > > Thank you for working on this! > > > > > > On Thu, 25 Dec 2025 at 09:34, Xuneng Zhou wrot= e: > > > > > > > > Hi, > > > > > > > > On Thu, Dec 25, 2025 at 1:51=E2=80=AFPM Xuneng Zhou wrote: > > > > > > > > > > Hi Hackers, > > > > > > > > > > I noticed several additional paths in contrib modules, beyond [1]= , > > > > > that are potentially suitable for streamification: > > > > > > > > > > 1) pgstattuple =E2=80=94 pgstatapprox.c and parts of pgstattuple_= approx_internal > > > > > 2) Bloom =E2=80=94 scan paths in blgetbitmap() and maintenance pa= ths in blbulkdelete() > > > > > > > > > > The following patches streamify those code paths. No benchmarks h= ave > > > > > been run yet. > > > > > > > > > > [1] https://www.postgresql.org/message-id/flat/CABPTF7UeN2o-trr9r= 7K76rZExnO2M4SLfvTfbUY2CwQjCekgnQ%40mail.gmail.com > > > > > > > > > > Feedbacks welcome. > > > > > > > > > > > > > One more in ginvacuumcleanup(). > > > > > > 0001, 0002 and 0004 LGTM. > > > > > > 0003: > > > > > > + buf =3D read_stream_next_buffer(stream, NULL); > > > + if (buf =3D=3D InvalidBuffer) > > > + break; > > > > > > I think we are loosening the check here. We were sure that there were > > > no InvalidBuffers until the nblocks. Streamified version does not hav= e > > > this check, it exits from the loop the first time it sees an > > > InvalidBuffer, which may be wrong. You might want to add > > > 'Assert(p.current_blocknum =3D=3D nblocks);' before read_stream_end()= to > > > have a similar check. > > > > > > > Agree. The check has been added in v2 per your suggestion. > > > > Two more to go: > patch 5: Streamify log_newpage_range() WAL logging path > patch 6: Streamify hash index VACUUM primary bucket page reads > > Benchmarks will be conducted soon. > v6 in the last message has a problem and has not been updated. Attach the right one again. Sorry for the noise. --=20 Best, Xuneng --000000000000633459064701acb2 Content-Type: application/octet-stream; name="v2-0002-Streamify-Bloom-VACUUM-paths-Use-streaming-re.patch" Content-Disposition: attachment; filename="v2-0002-Streamify-Bloom-VACUUM-paths-Use-streaming-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjpnuw431 RnJvbSBhYWZkZmEwODUxYWI2MTc3N2U4ODc3Y2ZiNTBlM2IzNGJmNTRiOWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODo0OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMi80XSBT dHJlYW1pZnkgQmxvb20gVkFDVVVNIHBhdGhzLiBVc2Ugc3RyZWFtaW5nIHJlYWRzCiBpbiBibGJ1 bGtkZWxldGUoKSBhbmQgYmx2YWN1dW1jbGVhbnVwKCkgdG8gaXRlcmF0ZSBpbmRleCBwYWdlcyB3 aXRob3V0CiByZXBlYXRlZCBSZWFkQnVmZmVyIGNhbGxzLCBpbXByb3ZpbmcgVkFDVVVNIHBlcmZv cm1hbmNlIGFuZCByZWR1Y2luZyBidWZmZXIKIG1hbmFnZXIgb3ZlcmhlYWQgZHVyaW5nIG1haW50 ZW5hbmNlIG9wZXJhdGlvbnMuCgotLS0KIGNvbnRyaWIvYmxvb20vYmx2YWN1dW0uYyB8IDU1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA1 MSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxv b20vYmx2YWN1dW0uYyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwppbmRleCBlNjhhOTAwOGY1 Ni4uNzQ1MjMwMmYwMjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYworKysg Yi9jb250cmliL2Jsb29tL2JsdmFjdXVtLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJj b21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvaW5kZXhmc20uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAK IAogLyoKQEAgLTQwLDYgKzQxLDggQEAgYmxidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5m bywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAlQYWdlCQlwYWdlOwogCUJsb29tTWV0 YVBhZ2VEYXRhICptZXRhRGF0YTsKIAlHZW5lcmljWExvZ1N0YXRlICpneGxvZ1N0YXRlOworCUJs b2NrUmFuZ2VSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0gKnN0cmVhbTsKIAogCWlm IChzdGF0cyA9PSBOVUxMKQogCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCk7CkBAIC01MSw2ICs1NCwyNSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCSAqIHRoZXkgY2FuJ3QgY29u dGFpbiB0dXBsZXMgdG8gZGVsZXRlLgogCSAqLwogCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVy T2ZCbG9ja3MoaW5kZXgpOworCisJLyogU2NhbiBhbGwgYmxvY2tzIGV4Y2VwdCB0aGUgbWV0YXBh Z2UgdXNpbmcgc3RyZWFtaW5nIHJlYWRzICovCisJcC5jdXJyZW50X2Jsb2NrbnVtID0gQkxPT01f SEVBRF9CTEtOTzsKKwlwLmxhc3RfZXhjbHVzaXZlID0gbnBhZ2VzOworCisJLyoKKwkgKiBJdCBp cyBzYWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IgdGFr ZXMgbm8KKwkgKiBsb2Nrcy4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxh dGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fRlVM TCB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAorCQkJCQkJCQkJCWluZm8t PnN0cmF0ZWd5LAorCQkJCQkJCQkJCWluZGV4LAorCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKKwkJ CQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkmcCwKKwkJCQkJ CQkJCQkwKTsKKwogCWZvciAoYmxrbm8gPSBCTE9PTV9IRUFEX0JMS05POyBibGtubyA8IG5wYWdl czsgYmxrbm8rKykKIAl7CiAJCUJsb29tVHVwbGUgKml0dXAsCkBAIC01OSw4ICs4MSw3IEBAIGJs YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMsCiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKIAotCQlidWZmZXIgPSBSZWFk QnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJCQlSQk1f Tk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZmZlciA9IHJlYWRfc3RyZWFtX25leHRfYnVm ZmVyKHN0cmVhbSwgTlVMTCk7CiAKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VY Q0xVU0lWRSk7CiAJCWd4bG9nU3RhdGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKQEAgLTEz Myw2ICsxNTQsOSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJ fQogCisJQXNzZXJ0KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52 YWxpZEJ1ZmZlcik7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAkvKgogCSAqIFVwZGF0 ZSB0aGUgbWV0YXBhZ2UncyBub3RGdWxsUGFnZSBsaXN0IHdpdGggd2hhdGV2ZXIgd2UgZm91bmQu ICBPdXIKIAkgKiBpbmZvIGNvdWxkIGFscmVhZHkgYmUgb3V0IG9mIGRhdGUgYXQgdGhpcyBwb2lu dCwgYnV0IGJsaW5zZXJ0KCkgd2lsbApAQCAtMTY2LDYgKzE5MCw4IEBAIGJsdmFjdXVtY2xlYW51 cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJ UmVsYXRpb24JaW5kZXggPSBpbmZvLT5pbmRleDsKIAlCbG9ja051bWJlciBucGFnZXMsCiAJCQkJ Ymxrbm87CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CisJUmVhZFN0cmVhbSAqc3Ry ZWFtOwogCiAJaWYgKGluZm8tPmFuYWx5emVfb25seSkKIAkJcmV0dXJuIHN0YXRzOwpAQCAtMTgx LDYgKzIwNywyNSBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCXN0YXRzLT5udW1fcGFnZXMgPSBucGFnZXM7CiAJ c3RhdHMtPnBhZ2VzX2ZyZWUgPSAwOwogCXN0YXRzLT5udW1faW5kZXhfdHVwbGVzID0gMDsKKwor CS8qIFNjYW4gYWxsIGJsb2NrcyBleGNlcHQgdGhlIG1ldGFwYWdlIHVzaW5nIHN0cmVhbWluZyBy ZWFkcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEJMT09NX0hFQURfQkxLTk87CisJcC5sYXN0 X2V4Y2x1c2l2ZSA9IG5wYWdlczsKKworCS8qCisJICogSXQgaXMgc2FmZSB0byB1c2UgYmF0Y2ht b2RlIGFzIGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiIHRha2VzIG5vCisJICogbG9ja3MuCisJ ICovCisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJ TlRFTkFOQ0UgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURf U1RSRUFNX1VTRV9CQVRDSElORywKKwkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKKwkJCQkJCQkJ CQlpbmRleCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2Vf cmVhZF9zdHJlYW1fY2IsCisJCQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJs a25vID0gQkxPT01fSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlC dWZmZXIJCWJ1ZmZlcjsKQEAgLTE4OCw4ICsyMzMsNyBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhW YWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJCXZhY3V1 bV9kZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGlu ZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3Ry YXRlZ3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwp OwogCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC0yMDYsNiArMjUwLDkgQEAgYmx2YWN1dW1jbGVhbnVw KEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCX0KIAorCUFzc2VydChyZWFkX3N0cmVhbV9u ZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpID09IEludmFsaWRCdWZmZXIpOworCXJlYWRfc3RyZWFt X2VuZChzdHJlYW0pOworCiAJSW5kZXhGcmVlU3BhY2VNYXBWYWN1dW0oaW5mby0+aW5kZXgpOwog CiAJcmV0dXJuIHN0YXRzOwotLSAKMi41MS4wCgo= --000000000000633459064701acb2 Content-Type: application/octet-stream; name="v2-0001-Switch-Bloom-scan-paths-to-streaming-read.patch" Content-Disposition: attachment; filename="v2-0001-Switch-Bloom-scan-paths-to-streaming-read.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjpnuw3w0 RnJvbSAzMTRmOWNkZjZkOGE2MmNjODUyM2IzNzdiOGNmMTlkZjY0NmI5OTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODoxMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMS80XSBT d2l0Y2ggQmxvb20gc2NhbiBwYXRocyB0byBzdHJlYW1pbmcgcmVhZC4gUmVwbGFjZQogcGVyLXBh Z2UgUmVhZEJ1ZmZlciBsb29wcyBpbiBibGdldGJpdG1hcCgpIHdpdGggcmVhZF9zdHJlYW1fYmVn aW5fcmVsYXRpb24oKQogYW5kIHNlcXVlbnRpYWwgYnVmZmVyIGl0ZXJhdGlvbiwgcmVkdWNpbmcg YnVmZmVyIGNodXJuIGFuZCBpbXByb3Zpbmcgc2NhbgogZWZmaWNpZW5jeSBvbiBsYXJnZSBCbG9v bSBpbmRleGVzLgoKLS0tCiBjb250cmliL2Jsb29tL2Jsc2Nhbi5jIHwgMjkgKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMgYi9jb250cmli L2Jsb29tL2Jsc2Nhbi5jCmluZGV4IDBkNzFlZGJlOTFjLi5iMWZkYWJhYWI3NCAxMDA2NDQKLS0t IGEvY29udHJpYi9ibG9vbS9ibHNjYW4uYworKysgYi9jb250cmliL2Jsb29tL2Jsc2Nhbi5jCkBA IC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRf c3RyZWFtLmgiCiAKIC8qCiAgKiBCZWdpbiBzY2FuIG9mIGJsb29tIGluZGV4LgpAQCAtNzUsMTEg Kzc2LDEzIEBAIGludDY0CiBibGdldGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4sIFRJREJpdG1h cCAqdGJtKQogewogCWludDY0CQludGlkcyA9IDA7Ci0JQmxvY2tOdW1iZXIgYmxrbm8gPSBCTE9P TV9IRUFEX0JMS05PLAorCUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCW5wYWdlczsKIAlpbnQJCQlp OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJhczsKIAlCbG9vbVNjYW5PcGFxdWUgc28gPSAoQmxv b21TY2FuT3BhcXVlKSBzY2FuLT5vcGFxdWU7CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRl IHA7CisJUmVhZFN0cmVhbSAqc3RyZWFtOwogCiAJaWYgKHNvLT5zaWduID09IE5VTEwpCiAJewpA QCAtMTE5LDE0ICsxMjIsMjkgQEAgYmxnZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUSURC aXRtYXAgKnRibSkKIAlpZiAoc2Nhbi0+aW5zdHJ1bWVudCkKIAkJc2Nhbi0+aW5zdHJ1bWVudC0+ bnNlYXJjaGVzKys7CiAKKwkvKiBTY2FuIGFsbCBibG9ja3MgZXhjZXB0IHRoZSBtZXRhcGFnZSB1 c2luZyBzdHJlYW1pbmcgcmVhZHMgKi8KKwlwLmN1cnJlbnRfYmxvY2tudW0gPSBCTE9PTV9IRUFE X0JMS05POworCXAubGFzdF9leGNsdXNpdmUgPSBucGFnZXM7CisKKwkvKgorCSAqIEl0IGlzIHNh ZmUgdG8gdXNlIGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBu bworCSAqIGxvY2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9u KFJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywK KwkJCQkJCQkJCQliYXMsCisJCQkJCQkJCQkJc2Nhbi0+aW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJ CQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IsCisJ CQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJsa25vID0gQkxPT01fSEVBRF9C TEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlCdWZmZXIJCWJ1ZmZlcjsKIAkJ UGFnZQkJcGFnZTsKIAotCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc2Nhbi0+aW5kZXhS ZWxhdGlvbiwgTUFJTl9GT1JLTlVNLAotCQkJCQkJCQkJYmxrbm8sIFJCTV9OT1JNQUwsIGJhcyk7 Ci0KKwkJYnVmZmVyID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsKIAkJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJcGFnZSA9IEJ1ZmZlckdl dFBhZ2UoYnVmZmVyKTsKIApAQCAtMTYyLDYgKzE4MCw5IEBAIGJsZ2V0Yml0bWFwKEluZGV4U2Nh bkRlc2Mgc2NhbiwgVElEQml0bWFwICp0Ym0pCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVy KTsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CisKKwlBc3NlcnQocmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZhbGlkQnVmZmVyKTsKKwlyZWFkX3N0cmVh bV9lbmQoc3RyZWFtKTsKIAlGcmVlQWNjZXNzU3RyYXRlZ3koYmFzKTsKIAogCXJldHVybiBudGlk czsKLS0gCjIuNTEuMAoK --000000000000633459064701acb2 Content-Type: application/octet-stream; name="v2-0004-Replace-synchronous-ReadBufferExtended-loop-with.patch" Content-Disposition: attachment; filename="v2-0004-Replace-synchronous-ReadBufferExtended-loop-with.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjpnuw493 RnJvbSBkNjI4ZjNhNWNhYjc1MmQ1NzMzMjg2NWMzMjM0Nzk3OTU2MjlmYjI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgNC80XSBS ZXBsYWNlIHN5bmNocm9ub3VzIFJlYWRCdWZmZXJFeHRlbmRlZCgpIGxvb3Agd2l0aCB0aGUKIHN0 cmVhbWluZyByZWFkIGluIGdpbnZhY3V1bWNsZWFudXAoKSB0byBpbXByb3ZlIEkvTyBlZmZpY2ll bmN5IGR1cmluZyBHSU4KIGluZGV4IHZhY3V1bSBjbGVhbnVwIG9wZXJhdGlvbnMKCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYyB8IDI4ICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCmluZGV4IGQ3YmFmN2M4NDdjLi41OGUwNWM3 MTI1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCkBAIC0yMiw2ICsyMiw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9pbmRleGZzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0 cmVhbS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIHN0cnVjdCBHaW5WYWN1dW1T dGF0ZQpAQCAtNjkzLDYgKzY5NCw4IEBAIGdpbnZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCUJsb2NrTnVtYmVyIHRvdEZy ZWVQYWdlczsKIAlHaW5TdGF0ZQlnaW5zdGF0ZTsKIAlHaW5TdGF0c0RhdGEgaWR4U3RhdDsKKwlC bG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgcDsKKwlSZWFkU3RyZWFtICpzdHJlYW07CiAKIAkv KgogCSAqIEluIGFuIGF1dG92YWN1dW0gYW5hbHl6ZSwgd2Ugd2FudCB0byBjbGVhbiB1cCBwZW5k aW5nIGluc2VydGlvbnMuCkBAIC03NDMsNiArNzQ2LDI0IEBAIGdpbnZhY3V1bWNsZWFudXAoSW5k ZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJdG90 RnJlZVBhZ2VzID0gMDsKIAorCS8qIFNjYW4gYWxsIGJsb2NrcyBzdGFydGluZyBmcm9tIHRoZSBy b290IHVzaW5nIHN0cmVhbWluZyByZWFkcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEdJTl9S T09UX0JMS05POworCXAubGFzdF9leGNsdXNpdmUgPSBucGFnZXM7CisKKwkvKgorCSAqIEl0IGlz IHNhZmUgdG8gdXNlIGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtl cyBubworCSAqIGxvY2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0 aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9GVUxM IHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJCQkJCQkJCQkJaW5mby0+ c3RyYXRlZ3ksCisJCQkJCQkJCQkJaW5kZXgsCisJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAorCQkJ CQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiLAorCQkJCQkJCQkJCSZwLAorCQkJCQkJ CQkJCTApOworCiAJZm9yIChibGtubyA9IEdJTl9ST09UX0JMS05POyBibGtubyA8IG5wYWdlczsg Ymxrbm8rKykKIAl7CiAJCUJ1ZmZlcgkJYnVmZmVyOwpAQCAtNzUwLDggKzc3MSw4IEBAIGdpbnZh Y3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzKQogCiAJCXZhY3V1bV9kZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVh ZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJN X05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1 ZmZlcihzdHJlYW0sIE5VTEwpOworCiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBHSU5fU0hBUkUpOwog CQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC03NzYsNiArNzk3LDkgQEAgZ2lu dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqc3RhdHMpCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAl9CiAKKwlBc3NlcnQo cmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZhbGlkQnVmZmVyKTsK KwlyZWFkX3N0cmVhbV9lbmQoc3RyZWFtKTsKKwogCS8qIFVwZGF0ZSB0aGUgbWV0YXBhZ2Ugd2l0 aCBhY2N1cmF0ZSBwYWdlIGFuZCBlbnRyeSBjb3VudHMgKi8KIAlpZHhTdGF0Lm5Ub3RhbFBhZ2Vz ID0gbnBhZ2VzOwogCWdpblVwZGF0ZVN0YXRzKGluZm8tPmluZGV4LCAmaWR4U3RhdCwgZmFsc2Up OwotLSAKMi41MS4wCgo= --000000000000633459064701acb2 Content-Type: application/octet-stream; name="v2-0003-Streamify-heap-bloat-estimation-scan-Introduc.patch" Content-Disposition: attachment; filename="v2-0003-Streamify-heap-bloat-estimation-scan-Introduc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjpnuw462 RnJvbSA3YTNmY2VjMGNmNDRjZDZkOTg0OGM5MzBlMGQ3ZjYyMGNkMTkzNjk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMy80XSBT dHJlYW1pZnkgaGVhcCBibG9hdCBlc3RpbWF0aW9uIHNjYW4uIEludHJvZHVjZSBhCiByZWFkLXN0 cmVhbSBjYWxsYmFjayB0byBza2lwIGFsbC12aXNpYmxlIHBhZ2VzIHZpYSBWTS9GU00gbG9va3Vw IGFuZAogc3RyZWFtLXJlYWQgdGhlIHJlc3QsIHJlZHVjaW5nIHBhZ2UgcmVhZHMgYW5kIGltcHJv dmluZyBwZ3N0YXR0dXBsZV9hcHByb3gKIGV4ZWN1dGlvbiB0aW1lIG9uIGxhcmdlIHJlbGF0aW9u cy4KCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyB8IDEyNiArKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyks IDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0 YXBwcm94LmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCmluZGV4IGE1OWZm NGU5ZDRmLi5jYjA1YjUzMGNhOCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXRhcHByb3guYworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCkBAIC0y Myw2ICsyMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZyZWVzcGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgogCiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1 cGxlX2FwcHJveCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJveF92MV81 KTsKQEAgLTQ1LDYgKzQ2LDYxIEBAIHR5cGVkZWYgc3RydWN0IG91dHB1dF90eXBlCiAKICNkZWZp bmUgTlVNX09VVFBVVF9DT0xVTU5TIDEwCiAKKy8qCisgKiBTdHJ1Y3QgZm9yIHN0YXRhcHByb3hf aGVhcCByZWFkIHN0cmVhbSBjYWxsYmFjay4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhdEFwcHJv eFJlYWRTdHJlYW1Qcml2YXRlCit7CisJUmVsYXRpb24JcmVsOworCW91dHB1dF90eXBlICpzdGF0 OworCUJsb2NrTnVtYmVyIGN1cnJlbnRfYmxvY2tudW07CisJQmxvY2tOdW1iZXIgbmJsb2NrczsK KwlCbG9ja051bWJlciBzY2FubmVkOwkJLyogY291bnQgb2YgcGFnZXMgYWN0dWFsbHkgcmVhZCAq LworCUJ1ZmZlcgkJdm1idWZmZXI7CQkvKiBmb3IgVk0gbG9va3VwcyAqLworfQkJCVN0YXRBcHBy b3hSZWFkU3RyZWFtUHJpdmF0ZTsKKworLyoKKyAqIFJlYWQgc3RyZWFtIGNhbGxiYWNrIGZvciBz dGF0YXBwcm94X2hlYXAuCisgKgorICogVGhpcyBjYWxsYmFjayBjaGVja3MgdGhlIHZpc2liaWxp dHkgbWFwIGZvciBlYWNoIGJsb2NrLiBJZiB0aGUgYmxvY2sgaXMKKyAqIGFsbC12aXNpYmxlLCB3 ZSBjYW4gZ2V0IHRoZSBmcmVlIHNwYWNlIGZyb20gdGhlIEZTTSB3aXRob3V0IHJlYWRpbmcgdGhl CisgKiBhY3R1YWwgcGFnZSwgYW5kIHNraXAgdG8gdGhlIG5leHQgYmxvY2suIE9ubHkgYmxvY2tz IHRoYXQgYXJlIG5vdAorICogYWxsLXZpc2libGUgYXJlIHJldHVybmVkIGZvciBhY3R1YWwgcmVh ZGluZy4KKyAqLworc3RhdGljIEJsb2NrTnVtYmVyCitzdGF0YXBwcm94X2hlYXBfcmVhZF9zdHJl YW1fbmV4dChSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCSB2b2lkICpjYWxsYmFja19wcml2 YXRlX2RhdGEsCisJCQkJCQkJCSB2b2lkICpwZXJfYnVmZmVyX2RhdGEpCit7CisJU3RhdEFwcHJv eFJlYWRTdHJlYW1Qcml2YXRlICpwID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCisJd2hpbGUg KHAtPmN1cnJlbnRfYmxvY2tudW0gPCBwLT5uYmxvY2tzKQorCXsKKwkJQmxvY2tOdW1iZXIgYmxr bm8gPSBwLT5jdXJyZW50X2Jsb2NrbnVtKys7CisJCVNpemUJCWZyZWVzcGFjZTsKKworCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZp c2libGUgdHVwbGVzLCB0aGVuIHdlIGNhbiBmaW5kIG91dCB0aGUgZnJlZQorCQkgKiBzcGFjZSBm cm9tIHRoZSBGU00gYW5kIG1vdmUgb24gd2l0aG91dCByZWFkaW5nIHRoZSBwYWdlLgorCQkgKi8K KwkJaWYgKFZNX0FMTF9WSVNJQkxFKHAtPnJlbCwgYmxrbm8sICZwLT52bWJ1ZmZlcikpCisJCXsK KwkJCWZyZWVzcGFjZSA9IEdldFJlY29yZGVkRnJlZVNwYWNlKHAtPnJlbCwgYmxrbm8pOworCQkJ cC0+c3RhdC0+dHVwbGVfbGVuICs9IEJMQ0tTWiAtIGZyZWVzcGFjZTsKKwkJCXAtPnN0YXQtPmZy ZWVfc3BhY2UgKz0gZnJlZXNwYWNlOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBUaGlzIGJs b2NrIG5lZWRzIHRvIGJlIHJlYWQgKi8KKwkJcC0+c2Nhbm5lZCsrOworCQlyZXR1cm4gYmxrbm87 CisJfQorCisJcmV0dXJuIEludmFsaWRCbG9ja051bWJlcjsKK30KKwogLyoKICAqIFRoaXMgZnVu Y3Rpb24gdGFrZXMgYW4gYWxyZWFkeSBvcGVuIHJlbGF0aW9uIGFuZCBzY2FucyBpdHMgcGFnZXMs CiAgKiBza2lwcGluZyB0aG9zZSB0aGF0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0 eSBtYXAgYml0IHNldC4KQEAgLTU4LDUzICsxMTQsNTggQEAgdHlwZWRlZiBzdHJ1Y3Qgb3V0cHV0 X3R5cGUKIHN0YXRpYyB2b2lkCiBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVsLCBvdXRwdXRf dHlwZSAqc3RhdCkKIHsKLQlCbG9ja051bWJlciBzY2FubmVkLAotCQkJCW5ibG9ja3MsCi0JCQkJ Ymxrbm87Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJQmxvY2tOdW1iZXIg bmJsb2NrczsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CiAJVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluOworCVN0YXRBcHByb3hSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJl YW0gKnN0cmVhbTsKIAogCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKHJlbCk7CiAJYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFE KTsKIAogCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7Ci0Jc2Nhbm5l ZCA9IDA7CiAKLQlmb3IgKGJsa25vID0gMDsgYmxrbm8gPCBuYmxvY2tzOyBibGtubysrKQorCS8q IEluaXRpYWxpemUgcmVhZCBzdHJlYW0gcHJpdmF0ZSBkYXRhICovCisJcC5yZWwgPSByZWw7CisJ cC5zdGF0ID0gc3RhdDsKKwlwLmN1cnJlbnRfYmxvY2tudW0gPSAwOworCXAubmJsb2NrcyA9IG5i bG9ja3M7CisJcC5zY2FubmVkID0gMDsKKwlwLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwor CS8qCisJICogQ3JlYXRlIHRoZSByZWFkIHN0cmVhbS4gV2UgZG9uJ3QgdXNlIFJFQURfU1RSRUFN X1VTRV9CQVRDSElORyBiZWNhdXNlCisJICogdGhlIGNhbGxiYWNrIGFjY2Vzc2VzIHRoZSB2aXNp YmlsaXR5IG1hcCB3aGljaCBtYXkgbmVlZCB0byByZWFkIFZNCisJICogcGFnZXMuIFdoaWxlIHRo aXMgc2hvdWxkbid0IGNhdXNlIGRlYWRsb2Nrcywgd2UgZXJyIG9uIHRoZSBzaWRlIG9mCisJICog Y2F1dGlvbi4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFE X1NUUkVBTV9GVUxMLAorCQkJCQkJCQkJCWJzdHJhdGVneSwKKwkJCQkJCQkJCQlyZWwsCisJCQkJ CQkJCQkJTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCXN0YXRhcHByb3hfaGVhcF9yZWFkX3N0cmVh bV9uZXh0LAorCQkJCQkJCQkJCSZwLAorCQkJCQkJCQkJCTApOworCisJZm9yICg7OykKIAl7CiAJ CUJ1ZmZlcgkJYnVmOwogCQlQYWdlCQlwYWdlOwogCQlPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQkJ CQltYXhvZmY7Ci0JCVNpemUJCWZyZWVzcGFjZTsKLQotCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2libGUgdHVwbGVzLCB0aGVu IHdlIGNhbiBmaW5kIG91dCB0aGUgZnJlZQotCQkgKiBzcGFjZSBmcm9tIHRoZSBGU00gYW5kIG1v dmUgb24uCi0JCSAqLwotCQlpZiAoVk1fQUxMX1ZJU0lCTEUocmVsLCBibGtubywgJnZtYnVmZmVy KSkKLQkJewotCQkJZnJlZXNwYWNlID0gR2V0UmVjb3JkZWRGcmVlU3BhY2UocmVsLCBibGtubyk7 Ci0JCQlzdGF0LT50dXBsZV9sZW4gKz0gQkxDS1NaIC0gZnJlZXNwYWNlOwotCQkJc3RhdC0+ZnJl ZV9zcGFjZSArPSBmcmVlc3BhY2U7Ci0JCQljb250aW51ZTsKLQkJfQorCQlCbG9ja051bWJlciBi bGtubzsKIAotCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJs a25vLAotCQkJCQkJCQkgUkJNX05PUk1BTCwgYnN0cmF0ZWd5KTsKKwkJYnVmID0gcmVhZF9zdHJl YW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsKKwkJaWYgKGJ1ZiA9PSBJbnZhbGlkQnVmZmVy KQorCQkJYnJlYWs7CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAog CQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOworCQlibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVt YmVyKGJ1Zik7CiAKIAkJc3RhdC0+ZnJlZV9zcGFjZSArPSBQYWdlR2V0RXhhY3RGcmVlU3BhY2Uo cGFnZSk7CiAKLQkJLyogV2UgbWF5IGNvdW50IHRoZSBwYWdlIGFzIHNjYW5uZWQgZXZlbiBpZiBp dCdzIG5ldy9lbXB0eSAqLwotCQlzY2FubmVkKys7Ci0KIAkJaWYgKFBhZ2VJc05ldyhwYWdlKSB8 fCBQYWdlSXNFbXB0eShwYWdlKSkKIAkJewogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOwpA QCAtMTY5LDYgKzIzMCw5IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90 eXBlICpzdGF0KQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CiAJfQogCisJQXNzZXJ0KHAu Y3VycmVudF9ibG9ja251bSA9PSBuYmxvY2tzKTsKKwlyZWFkX3N0cmVhbV9lbmQoc3RyZWFtKTsK KwogCXN0YXQtPnRhYmxlX2xlbiA9ICh1aW50NjQpIG5ibG9ja3MgKiBCTENLU1o7CiAKIAkvKgpA QCAtMTc5LDcgKzI0Myw3IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90 eXBlICpzdGF0KQogCSAqIHR1cGxlcyBpbiBhbGwtdmlzaWJsZSBwYWdlcywgc28gbm8gY29ycmVj dGlvbiBpcyBuZWVkZWQgZm9yIHRoYXQsIGFuZAogCSAqIHdlIGFscmVhZHkgYWNjb3VudGVkIGZv ciB0aGUgc3BhY2UgaW4gdGhvc2UgcGFnZXMsIHRvby4KIAkgKi8KLQlzdGF0LT50dXBsZV9jb3Vu dCA9IHZhY19lc3RpbWF0ZV9yZWx0dXBsZXMocmVsLCBuYmxvY2tzLCBzY2FubmVkLAorCXN0YXQt PnR1cGxlX2NvdW50ID0gdmFjX2VzdGltYXRlX3JlbHR1cGxlcyhyZWwsIG5ibG9ja3MsIHAuc2Nh bm5lZCwKIAkJCQkJCQkJCQkJICAgc3RhdC0+dHVwbGVfY291bnQpOwogCiAJLyogSXQncyBub3Qg Y2xlYXIgaWYgd2UgY291bGQgZ2V0IC0xIGhlcmUsIGJ1dCBiZSBzYWZlLiAqLwpAQCAtMTkwLDE2 ICsyNTQsMTYgQEAgc3RhdGFwcHJveF9oZWFwKFJlbGF0aW9uIHJlbCwgb3V0cHV0X3R5cGUgKnN0 YXQpCiAJICovCiAJaWYgKG5ibG9ja3MgIT0gMCkKIAl7Ci0JCXN0YXQtPnNjYW5uZWRfcGVyY2Vu dCA9IDEwMC4wICogc2Nhbm5lZCAvIG5ibG9ja3M7CisJCXN0YXQtPnNjYW5uZWRfcGVyY2VudCA9 IDEwMC4wICogcC5zY2FubmVkIC8gbmJsb2NrczsKIAkJc3RhdC0+dHVwbGVfcGVyY2VudCA9IDEw MC4wICogc3RhdC0+dHVwbGVfbGVuIC8gc3RhdC0+dGFibGVfbGVuOwogCQlzdGF0LT5kZWFkX3R1 cGxlX3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQtPmRlYWRfdHVwbGVfbGVuIC8gc3RhdC0+dGFibGVf bGVuOwogCQlzdGF0LT5mcmVlX3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQtPmZyZWVfc3BhY2UgLyBz dGF0LT50YWJsZV9sZW47CiAJfQogCi0JaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCWlm IChCdWZmZXJJc1ZhbGlkKHAudm1idWZmZXIpKQogCXsKLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZl cik7Ci0JCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwkJUmVsZWFzZUJ1ZmZlcihwLnZtYnVm ZmVyKTsKKwkJcC52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJfQogfQogCi0tIAoyLjUxLjAK Cg== --000000000000633459064701acb2 Content-Type: application/octet-stream; name="v2-0005-Streamify-log_newpage_range-WAL-logging-path.patch" Content-Disposition: attachment; filename="v2-0005-Streamify-log_newpage_range-WAL-logging-path.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjpnva9a4 RnJvbSBkNzE5Y2JjMjBjMjg2MzRmMDcxMDZlODliNWRlMGM4OWNmMDk4YThlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U3VuLCAyOCBEZWMgMjAyNSAxODoyOTowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgNS82XSBT dHJlYW1pZnkgbG9nX25ld3BhZ2VfcmFuZ2UoKSBXQUwgbG9nZ2luZyBwYXRoCgpSZWZhY3RvciBs b2dfbmV3cGFnZV9yYW5nZSgpIHRvIHVzZSB0aGUgUmVhZCBTdHJlYW0uIFRoaXMgYWxsb3dzCnBy ZWZldGNoaW5nIG9mIHVwY29taW5nIHJlbGF0aW9uIGJsb2NrcyBkdXJpbmcgYnVsayBXQUwgbG9n Z2luZwpwZXJhdGlvbnMsIG92ZXJsYXBwaW5nIEkvTyB3aXRoIENQVS1pbnRlbnNpdmUgWExvZ0lu c2VydCBhbmQKV0FMLXdyaXRpbmcgd29yay4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9naW5zZXJ0LmMgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hh bmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9naW5zZXJ0LmMKaW5kZXggYTU2ZDVhNTUyODIuLjA0YzFhNDYxNDNhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jCkBAIC0zOSw2ICszOSw3IEBACiAj aW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3Iu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3Ry ZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ3N0 YXRfaW50ZXJuYWwuaCIKIApAQCAtMTI5NSw2ICsxMjk2LDggQEAgbG9nX25ld3BhZ2VfcmFuZ2Uo UmVsYXRpb24gcmVsLCBGb3JrTnVtYmVyIGZvcmtudW0sCiB7CiAJaW50CQkJZmxhZ3M7CiAJQmxv Y2tOdW1iZXIgYmxrbm87CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CisJUmVhZFN0 cmVhbSAqc3RyZWFtOwogCiAJZmxhZ3MgPSBSRUdCVUZfRk9SQ0VfSU1BR0U7CiAJaWYgKHBhZ2Vf c3RkKQpAQCAtMTMwNyw2ICsxMzEwLDIzIEBAIGxvZ19uZXdwYWdlX3JhbmdlKFJlbGF0aW9uIHJl bCwgRm9ya051bWJlciBmb3JrbnVtLAogCSAqLwogCVhMb2dFbnN1cmVSZWNvcmRTcGFjZShYTFJf TUFYX0JMT0NLX0lEIC0gMSwgMCk7CiAKKwkvKiBTZXQgdXAgYSBzdHJlYW1pbmcgcmVhZCBmb3Ig dGhlIHJhbmdlIG9mIGJsb2NrcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IHN0YXJ0YmxrOwor CXAubGFzdF9leGNsdXNpdmUgPSBlbmRibGs7CisKKwkvKgorCSAqIEl0IGlzIHNhZmUgdG8gdXNl IGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBubworCSAqIGxv Y2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RS RUFNX01BSU5URU5BTkNFIHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJ CQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQlyZWwsCisJCQkJCQkJCQkJZm9ya251bSwKKwkJCQkJ CQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkmcCwKKwkJCQkJCQkJ CQkwKTsKKwogCWJsa25vID0gc3RhcnRibGs7CiAJd2hpbGUgKGJsa25vIDwgZW5kYmxrKQogCXsK QEAgLTEzMjEsOCArMTM0MSwxMCBAQCBsb2dfbmV3cGFnZV9yYW5nZShSZWxhdGlvbiByZWwsIEZv cmtOdW1iZXIgZm9ya251bSwKIAkJbmJ1ZnMgPSAwOwogCQl3aGlsZSAobmJ1ZnMgPCBYTFJfTUFY X0JMT0NLX0lEICYmIGJsa25vIDwgZW5kYmxrKQogCQl7Ci0JCQlCdWZmZXIJCWJ1ZiA9IFJlYWRC dWZmZXJFeHRlbmRlZChyZWwsIGZvcmtudW0sIGJsa25vLAotCQkJCQkJCQkJCQkJIFJCTV9OT1JN QUwsIE5VTEwpOworCQkJQnVmZmVyCQlidWYgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJl YW0sIE5VTEwpOworCisJCQlpZiAoIUJ1ZmZlcklzVmFsaWQoYnVmKSkKKwkJCQlicmVhazsKIAog CQkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAKQEAgLTEzNjEsNiAr MTM4Myw4IEBAIGxvZ19uZXdwYWdlX3JhbmdlKFJlbGF0aW9uIHJlbCwgRm9ya051bWJlciBmb3Jr bnVtLAogCQl9CiAJCUVORF9DUklUX1NFQ1RJT04oKTsKIAl9CisKKwlyZWFkX3N0cmVhbV9lbmQo c3RyZWFtKTsKIH0KIAogLyoKLS0gCjIuNTEuMAoK --000000000000633459064701acb2 Content-Type: application/octet-stream; name="v2-0006-Streamify-hash-index-VACUUM-primary-bucket-page-r.patch" Content-Disposition: attachment; filename="v2-0006-Streamify-hash-index-VACUUM-primary-bucket-page-r.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjpnva9e5 RnJvbSA2NDYxYmM2ODBmM2IyYWY3OGEwMTM1MDNiMDMxMjFiMGIwMmIyY2M0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U3VuLCAyOCBEZWMgMjAyNSAxODoyOToyOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgNi82XSBT dHJlYW1pZnkgaGFzaCBpbmRleCBWQUNVVU0gcHJpbWFyeSBidWNrZXQgcGFnZSByZWFkcwoKUmVm YWN0b3IgaGFzaGJ1bGtkZWxldGUoKSB0byB1c2UgdGhlIFJlYWQgU3RyZWFtICBmb3IgcHJpbWFy eSBidWNrZXQKcGFnZXMuIFRoaXMgZW5hYmxlcyBwcmVmZXRjaGluZyBvZiB1cGNvbWluZyBidWNr ZXRzIHdoaWxlIHRoZSBjdXJyZW50Cm9uZSBpcyBiZWluZyBwcm9jZXNzZWQsIGltcHJvdmluZyBJ L08gZWZmaWNpZW5jeSBkdXJpbmcgaGFzaCBpbmRleAp2YWN1dW0gb3BlcmF0aW9ucy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgfCA3OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYwppbmRleCBlMzg4MjUyYWZkYy4uOWViZGMyZDQ5MzEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJub2Rl cy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbmNhdC5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1 dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCIKICNp bmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTQyLDEyICs0MywyMyBAQCB0eXBlZGVmIHN0cnVjdAog CVJlbGF0aW9uCWhlYXBSZWw7CQkvKiBoZWFwIHJlbGF0aW9uIGRlc2NyaXB0b3IgKi8KIH0gSGFz aEJ1aWxkU3RhdGU7CiAKKy8qIFdvcmtpbmcgc3RhdGUgZm9yIHN0cmVhbWluZyByZWFkcyBpbiBo YXNoYnVsa2RlbGV0ZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlIYXNoTWV0YVBhZ2UgbWV0YXA7 CQkJLyogY2FjaGVkIG1ldGFwYWdlIGZvciBCVUNLRVRfVE9fQkxLTk8gKi8KKwlCdWNrZXQJCW5l eHRfYnVja2V0OwkvKiBuZXh0IGJ1Y2tldCB0byBwcmVmZXRjaCAqLworCUJ1Y2tldAkJbWF4X2J1 Y2tldDsJCS8qIHN0b3Agd2hlbiBuZXh0X2J1Y2tldCA+IG1heF9idWNrZXQgKi8KK30JCQlIYXNo QnVsa0RlbGV0ZVN0cmVhbVByaXZhdGU7CisKIHN0YXRpYyB2b2lkIGhhc2hidWlsZENhbGxiYWNr KFJlbGF0aW9uIGluZGV4LAogCQkJCQkJCSAgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCSAgRGF0 dW0gKnZhbHVlcywKIAkJCQkJCQkgIGJvb2wgKmlzbnVsbCwKIAkJCQkJCQkgIGJvb2wgdHVwbGVJ c0FsaXZlLAogCQkJCQkJCSAgdm9pZCAqc3RhdGUpOworc3RhdGljIEJsb2NrTnVtYmVyIGhhc2hf YnVsa2RlbGV0ZV9yZWFkX3N0cmVhbV9jYihSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCQkJ CQkgIHZvaWQgKmNhbGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCQkJCQkJCSAgdm9pZCAqcGVy X2J1ZmZlcl9kYXRhKTsKIAogCiAvKgpAQCAtNDUwLDYgKzQ2MiwyNyBAQCBoYXNoZW5kc2NhbihJ bmRleFNjYW5EZXNjIHNjYW4pCiAJc2Nhbi0+b3BhcXVlID0gTlVMTDsKIH0KIAorLyoKKyAqIFJl YWQgc3RyZWFtIGNhbGxiYWNrIGZvciBoYXNoYnVsa2RlbGV0ZS4KKyAqCisgKiBSZXR1cm5zIHRo ZSBibG9jayBudW1iZXIgb2YgdGhlIHByaW1hcnkgcGFnZSBmb3IgdGhlIG5leHQgYnVja2V0IHRv CisgKiB2YWN1dW0sIHVzaW5nIHRoZSBCVUNLRVRfVE9fQkxLTk8gbWFwcGluZyBmcm9tIHRoZSBj YWNoZWQgbWV0YXBhZ2UuCisgKi8KK3N0YXRpYyBCbG9ja051bWJlcgoraGFzaF9idWxrZGVsZXRl X3JlYWRfc3RyZWFtX2NiKFJlYWRTdHJlYW0gKnN0cmVhbSwKKwkJCQkJCQkgICB2b2lkICpjYWxs YmFja19wcml2YXRlX2RhdGEsCisJCQkJCQkJICAgdm9pZCAqcGVyX2J1ZmZlcl9kYXRhKQorewor CUhhc2hCdWxrRGVsZXRlU3RyZWFtUHJpdmF0ZSAqcCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsK KwlCdWNrZXQJCWJ1Y2tldDsKKworCWlmIChwLT5uZXh0X2J1Y2tldCA+IHAtPm1heF9idWNrZXQp CisJCXJldHVybiBJbnZhbGlkQmxvY2tOdW1iZXI7CisKKwlidWNrZXQgPSBwLT5uZXh0X2J1Y2tl dCsrOworCXJldHVybiBCVUNLRVRfVE9fQkxLTk8ocC0+bWV0YXAsIGJ1Y2tldCk7Cit9CisKIC8q CiAgKiBCdWxrIGRlbGV0aW9uIG9mIGFsbCBpbmRleCBlbnRyaWVzIHBvaW50aW5nIHRvIGEgc2V0 IG9mIGhlYXAgdHVwbGVzLgogICogVGhlIHNldCBvZiB0YXJnZXQgdHVwbGVzIGlzIHNwZWNpZmll ZCB2aWEgYSBjYWxsYmFjayByb3V0aW5lIHRoYXQgdGVsbHMKQEAgLTQ3NCw2ICs1MDcsOCBAQCBo YXNoYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqc3RhdHMsCiAJQnVmZmVyCQltZXRhYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAlIYXNoTWV0YVBh Z2UgbWV0YXA7CiAJSGFzaE1ldGFQYWdlIGNhY2hlZG1ldGFwOworCUhhc2hCdWxrRGVsZXRlU3Ry ZWFtUHJpdmF0ZSBzdHJlYW1fcHJpdmF0ZTsKKwlSZWFkU3RyZWFtICpzdHJlYW0gPSBOVUxMOwog CiAJdHVwbGVzX3JlbW92ZWQgPSAwOwogCW51bV9pbmRleF90dXBsZXMgPSAwOwpAQCAtNDk1LDYg KzUzMCwyNCBAQCBoYXNoYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJY3VyX21heGJ1Y2tldCA9IG9yaWdfbWF4YnVja2V0Owog CiBsb29wX3RvcDoKKwkvKiBTZXQgdXAgc3RyZWFtaW5nIHJlYWQgZm9yIHByaW1hcnkgYnVja2V0 IHBhZ2VzICovCisJc3RyZWFtX3ByaXZhdGUubWV0YXAgPSBjYWNoZWRtZXRhcDsKKwlzdHJlYW1f cHJpdmF0ZS5uZXh0X2J1Y2tldCA9IGN1cl9idWNrZXQ7CisJc3RyZWFtX3ByaXZhdGUubWF4X2J1 Y2tldCA9IGN1cl9tYXhidWNrZXQ7CisKKwkvKgorCSAqIEl0IGlzIHNhZmUgdG8gdXNlIGJhdGNo bW9kZSBhcyBoYXNoX2J1bGtkZWxldGVfcmVhZF9zdHJlYW1fY2IgdGFrZXMgbm8KKwkgKiBsb2Nr cy4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVB TV9NQUlOVEVOQU5DRSB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAorCQkJ CQkJCQkJCWluZm8tPnN0cmF0ZWd5LAorCQkJCQkJCQkJCXJlbCwKKwkJCQkJCQkJCQlNQUlOX0ZP UktOVU0sCisJCQkJCQkJCQkJaGFzaF9idWxrZGVsZXRlX3JlYWRfc3RyZWFtX2NiLAorCQkJCQkJ CQkJCSZzdHJlYW1fcHJpdmF0ZSwKKwkJCQkJCQkJCQkwKTsKKwogCXdoaWxlIChjdXJfYnVja2V0 IDw9IGN1cl9tYXhidWNrZXQpCiAJewogCQlCbG9ja051bWJlciBidWNrZXRfYmxrbm87CkBAIC01 MTQsNyArNTY3LDggQEAgbG9vcF90b3A6CiAJCSAqIFdlIG5lZWQgdG8gYWNxdWlyZSBhIGNsZWFu dXAgbG9jayBvbiB0aGUgcHJpbWFyeSBidWNrZXQgcGFnZSB0byBvdXQKIAkJICogd2FpdCBjb25j dXJyZW50IHNjYW5zIGJlZm9yZSBkZWxldGluZyB0aGUgZGVhZCB0dXBsZXMuCiAJCSAqLwotCQli dWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25vLCBSQk1fTk9S TUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0 cmVhbSwgTlVMTCk7CisJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGJ1ZikpOwogCQlMb2NrQnVmZmVy Rm9yQ2xlYW51cChidWYpOwogCQlfaGFzaF9jaGVja3BhZ2UocmVsLCBidWYsIExIX0JVQ0tFVF9Q QUdFKTsKIApAQCAtNTQ1LDYgKzU5OSwyNCBAQCBsb29wX3RvcDoKIAkJCXsKIAkJCQljYWNoZWRt ZXRhcCA9IF9oYXNoX2dldGNhY2hlZG1ldGFwKHJlbCwgJm1ldGFidWYsIHRydWUpOwogCQkJCUFz c2VydChjYWNoZWRtZXRhcCAhPSBOVUxMKTsKKworCQkJCS8qCisJCQkJICogUmVzZXQgc3RyZWFt IHdpdGggdXBkYXRlZCBtZXRhZGF0YSBmb3IgcmVtYWluaW5nIGJ1Y2tldHMuCisJCQkJICogVGhl IEJVQ0tFVF9UT19CTEtOTyBtYXBwaW5nIGRlcGVuZHMgb24gaGFzaG1fc3BhcmVzW10sCisJCQkJ ICogd2hpY2ggbWF5IGhhdmUgY2hhbmdlZC4KKwkJCQkgKi8KKwkJCQlyZWFkX3N0cmVhbV9lbmQo c3RyZWFtKTsKKwkJCQlzdHJlYW1fcHJpdmF0ZS5tZXRhcCA9IGNhY2hlZG1ldGFwOworCQkJCXN0 cmVhbV9wcml2YXRlLm5leHRfYnVja2V0ID0gY3VyX2J1Y2tldCArIDE7CisJCQkJc3RyZWFtX3By aXZhdGUubWF4X2J1Y2tldCA9IGN1cl9tYXhidWNrZXQ7CisJCQkJc3RyZWFtID0gcmVhZF9zdHJl YW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAorCQkJCQkJCQkJCQkJ CVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKKwkJCQkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwK KwkJCQkJCQkJCQkJCQlyZWwsCisJCQkJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJ CQkJCWhhc2hfYnVsa2RlbGV0ZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkJCQkmc3RyZWFt X3ByaXZhdGUsCisJCQkJCQkJCQkJCQkJMCk7CiAJCQl9CiAJCX0KIApAQCAtNTc3LDkgKzY0OSwx NCBAQCBsb29wX3RvcDoKIAkJY2FjaGVkbWV0YXAgPSBfaGFzaF9nZXRjYWNoZWRtZXRhcChyZWws ICZtZXRhYnVmLCB0cnVlKTsKIAkJQXNzZXJ0KGNhY2hlZG1ldGFwICE9IE5VTEwpOwogCQljdXJf bWF4YnVja2V0ID0gY2FjaGVkbWV0YXAtPmhhc2htX21heGJ1Y2tldDsKKwkJcmVhZF9zdHJlYW1f ZW5kKHN0cmVhbSk7CiAJCWdvdG8gbG9vcF90b3A7CiAJfQogCisJLyogU3RyZWFtIHNob3VsZCBi ZSBleGhhdXN0ZWQgc2luY2Ugd2UgcHJvY2Vzc2VkIGFsbCBidWNrZXRzICovCisJQXNzZXJ0KHJl YWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52YWxpZEJ1ZmZlcik7CisJ cmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAkvKiBPa2F5LCB3ZSdyZSByZWFsbHkgZG9uZS4g IFVwZGF0ZSB0dXBsZSBjb3VudCBpbiBtZXRhcGFnZS4gKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04o KTsKIAotLSAKMi41MS4wCgo= --000000000000633459064701acb2--