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 1sPMzy-004GME-GY for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jul 2024 13:59:46 +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 1sPMzv-0003Eo-MR for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jul 2024 13:59:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sPMzv-0003Dv-2t for pgsql-hackers@lists.postgresql.org; Thu, 04 Jul 2024 13:59:44 +0000 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sPMzt-000NV7-1d for pgsql-hackers@lists.postgresql.org; Thu, 04 Jul 2024 13:59:42 +0000 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-52db11b1d31so1015896e87.0 for ; Thu, 04 Jul 2024 06:59:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720101579; x=1720706379; 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=oz2H+n4T64wELi1s8ugrdV+/ZpxHsotWBNQsd7Gk3bY=; b=nAXhrupGs9++4QMaYKIgDyu4RWOrAf/nuinKydg0W0xPWtAjyWItb5xe351Q7XiECW 7fO/o4NBCRv81etAPl2jaA0BZvqNTicsiQQdCeoAwkK0B6Xz/ibDLZFvy9MjPYYR5F4W q6IBMtIKCEXDGtIbCoSLLlVqyqGXpRgZsxrsk47yICzcpqNuJpbo4oqJKiGCM+mjqlHO chX7yn3AalnYIOKOBDkwx3PywgPC+h4Aonf0BomdGRpvzbvglNAK79DDnQUdgju3zIr3 Xt6eKEhD1vG2tTHg9n3R4v8ciMRx9mZnYTkmaXGHZfbDXgO4KkhmU5B6TtZx+6Klgz7b PwKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720101579; x=1720706379; 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=oz2H+n4T64wELi1s8ugrdV+/ZpxHsotWBNQsd7Gk3bY=; b=ssAiZ4TxBwDc3gqJ/s9MQyrXhzXLSuA3HVv2iMkn+LKHxHW29ocYW/+z3T2ymgM2Vd 19WmJfS4ZqPDe+nlTMXGxuSROAmF9sunz5f6jmp4YQZdnjghBpxmfuuDIPVwrgBdHV0e wYIWvum0kLOR5XeBCbcXGsfI3VprTJHqseBS5Adgh82OuUkoJG4+E1kTRxHftFL2JOC/ 1nEqSLMgwxSkgUUb83ObL5AL7AsnYOp2ZHDh8lAYikqyIxcvktnY5Luezlrh1frJd1mF ZyLnA/L9Z+WMcwLO1iXJhAEZ7egumcvsogfw7mteP9syGXgoD7HRAzeP07abRTzDIBW/ 9mvg== X-Forwarded-Encrypted: i=1; AJvYcCWvqyDvh6wimBvk9qpS7h7l4Fl8+d4jyqP8PfFPH4zSm2H6S/9UzAGzF6Y2IJBqtNBZNeaczEGpbgb+mgEt9wt3BScqJCV4LXegKpzDCyLsmKSK X-Gm-Message-State: AOJu0Yw8uLnKnf48Wjwr/nh5lXFKBA3Ze/ShU8NP66VK506qAySORCcv lG/hugHwM1lZJoQ/vTdPqUPgV6D7UuF62gcwDtQ/kc5N7/XWtihdo1Ikhhu4N1QSPMdi4ZAdXok otMafLaAtkxsKaKpVQ2rWE938o5k= X-Google-Smtp-Source: AGHT+IF4mr+zqpfuGMcw9kSx6XOlxmJ0o4MxbgTRoqnUbSGhgSQQ93IXzABk6gpXEMA6HScqgGD5+opkAN9FWHtDu/A= X-Received: by 2002:ac2:53a9:0:b0:52b:839c:78dc with SMTP id 2adb3069b0e04-52ea0638f4dmr1284275e87.29.1720101579057; Thu, 04 Jul 2024 06:59:39 -0700 (PDT) MIME-Version: 1.0 References: <13bd913f-94b6-43cf-b849-4d762e5297d8@yandex.ru> In-Reply-To: From: David Rowley Date: Fri, 5 Jul 2024 01:59:26 +1200 Message-ID: Subject: Re: Parallel Bitmap Heap Scan reports per-worker stats in EXPLAIN ANALYZE To: Masahiro.Ikeda@nttdata.com Cc: lena.ribackina@yandex.ru, donghanglin@gmail.com, geidav.pg@gmail.com, melanieplageman@gmail.com, tomas.vondra@enterprisedb.com, dilipbalaut@gmail.com, pgsql-hackers@lists.postgresql.org, hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="000000000000990de7061c6c5bab" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000990de7061c6c5bab Content-Type: text/plain; charset="UTF-8" On Wed, 26 Jun 2024 at 22:22, wrote: > 1) Unify the print format of leader and worker > > In show_tidbitmap_info(), the number of exact/loosy blocks of the leader and workers > are printed. I think the printed format should be same. Currently, the leader does not > print the blocks of exact/lossy with a value of 0, but the workers could even if it is 0. I agree with this. The two should match. I've fixed that in the attached. I also made a pass over the patch, and I also changed: 1. Fixed up a few outdated comments in execnodes.h. 2. Added a comment in ExecEndBitmapHeapScan() to explain why we += the stats rather than memcpy the BitmapHeapScanInstrumentation. 3. A bunch of other comments. 4. updated typedefs.list and ran pgindent. For #2, I was surprised at this. I think there's probably a bug in the Memoize stats code for the same reason. I've not looked into that yet. I find it a little bit strange that we're showing stats for Worker N when that worker could have been made up from possibly hundreds of different parallel workers in the case where the Gather/GatherMerge node is rescanned and the worker gets shut down at the end of each Gather and fresh ones started up on rescan. I do agree that we need to accumulate the totals from previous scans as that's what the non-parallel version does. Many people have been hacking on this and I'm wondering who should be listed as authors. I plan to put David Geier first. Should anyone else be listed there? I've attached the rebased v5 patch with part of Alena's changes from the diff.diff.no-cfbot file. I left the following one off as it looks wrong. - ptr += MAXALIGN(sizeof(ParallelBitmapHeapState)); + ptr += size; That would make ptr point to the end of the allocation. I'd like to commit this patch soon, so if anyone wants to give it a final look, can they do so before next week? David --000000000000990de7061c6c5bab Content-Type: application/octet-stream; name="v7-0001-Parallel-Bitmap-Heap-Scan-reports-per-worker-stat.patch" Content-Disposition: attachment; filename="v7-0001-Parallel-Bitmap-Heap-Scan-reports-per-worker-stat.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly7br30b0 RnJvbSAxNWY5M2E0OWU1MTllZTRlOWVhMTJkOTJlMjkxNzdlNDEzMjZiYWIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCA4IE5vdiAyMDIyIDE5OjQwOjMxICswMTAwClN1YmplY3Q6IFtQQVRDSCB2NyAxLzJd IFBhcmFsbGVsIEJpdG1hcCBIZWFwIFNjYW4gcmVwb3J0cyBwZXItd29ya2VyIHN0YXRzCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgIHwgNDUgKysrKysrKysr LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgIHwgIDMgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgfCA5NSArKysrKysrKysrKysr KysrKysrKy0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmggfCAg MSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICB8IDMzICsrKysr KystCiA1IGZpbGVzIGNoYW5nZWQsIDE1OSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggOTQ1MTFhNWEwMi4uZDZmNjZkYzVlMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwpAQCAtMzU5MCwyNiArMzU5MCw1NyBAQCBzaG93X2hhc2hhZ2dfaW5m byhBZ2dTdGF0ZSAqYWdnc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpCiBzdGF0aWMgdm9pZAogc2hv d190aWRiaXRtYXBfaW5mbyhCaXRtYXBIZWFwU2NhblN0YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5T dGF0ZSAqZXMpCiB7CisJQXNzZXJ0KGVzLT5hbmFseXplKTsKKwogCWlmIChlcy0+Zm9ybWF0ICE9 IEVYUExBSU5fRk9STUFUX1RFWFQpCiAJewogCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJFeGFj dCBIZWFwIEJsb2NrcyIsIE5VTEwsCi0JCQkJCQkJICAgcGxhbnN0YXRlLT5leGFjdF9wYWdlcywg ZXMpOworCQkJCQkJCSAgIHBsYW5zdGF0ZS0+c3RhdHMuZXhhY3RfcGFnZXMsIGVzKTsKIAkJRXhw bGFpblByb3BlcnR5SW50ZWdlcigiTG9zc3kgSGVhcCBCbG9ja3MiLCBOVUxMLAotCQkJCQkJCSAg IHBsYW5zdGF0ZS0+bG9zc3lfcGFnZXMsIGVzKTsKKwkJCQkJCQkgICBwbGFuc3RhdGUtPnN0YXRz Lmxvc3N5X3BhZ2VzLCBlcyk7CiAJfQogCWVsc2UKIAl7Ci0JCWlmIChwbGFuc3RhdGUtPmV4YWN0 X3BhZ2VzID4gMCB8fCBwbGFuc3RhdGUtPmxvc3N5X3BhZ2VzID4gMCkKKwkJaWYgKHBsYW5zdGF0 ZS0+c3RhdHMuZXhhY3RfcGFnZXMgPiAwIHx8IHBsYW5zdGF0ZS0+c3RhdHMubG9zc3lfcGFnZXMg PiAwKQogCQl7CiAJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CiAJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGVzLT5zdHIsICJIZWFwIEJsb2NrczoiKTsKLQkJCWlmIChwbGFuc3RhdGUtPmV4YWN0 X3BhZ2VzID4gMCkKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgZXhhY3Q9JWxkIiwg cGxhbnN0YXRlLT5leGFjdF9wYWdlcyk7Ci0JCQlpZiAocGxhbnN0YXRlLT5sb3NzeV9wYWdlcyA+ IDApCi0JCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiIGxvc3N5PSVsZCIsIHBsYW5zdGF0 ZS0+bG9zc3lfcGFnZXMpOworCQkJaWYgKHBsYW5zdGF0ZS0+c3RhdHMuZXhhY3RfcGFnZXMgPiAw KQorCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiBleGFjdD0lbGQiLCBwbGFuc3RhdGUt PnN0YXRzLmV4YWN0X3BhZ2VzKTsKKwkJCWlmIChwbGFuc3RhdGUtPnN0YXRzLmxvc3N5X3BhZ2Vz ID4gMCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgbG9zc3k9JWxkIiwgcGxhbnN0 YXRlLT5zdGF0cy5sb3NzeV9wYWdlcyk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihlcy0+c3Ry LCAnXG4nKTsKIAkJfQogCX0KKworCWlmIChwbGFuc3RhdGUtPnBzdGF0ZSAhPSBOVUxMKQorCXsK KwkJZm9yIChpbnQgbiA9IDA7IG4gPCBwbGFuc3RhdGUtPnNpbnN0cnVtZW50LT5udW1fd29ya2Vy czsgbisrKQorCQl7CisJCQlCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbiAqc2kgPSAmcGxh bnN0YXRlLT5zaW5zdHJ1bWVudC0+c2luc3RydW1lbnRbbl07CisKKwkJCWlmIChzaS0+ZXhhY3Rf cGFnZXMgPT0gMCAmJiBzaS0+bG9zc3lfcGFnZXMgPT0gMCkKKwkJCQljb250aW51ZTsKKworCQkJ aWYgKGVzLT53b3JrZXJzX3N0YXRlKQorCQkJCUV4cGxhaW5PcGVuV29ya2VyKG4sIGVzKTsKKwor CQkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJCXsKKwkJCQlFeHBs YWluSW5kZW50VGV4dChlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiSGVhcCBC bG9ja3M6IGV4YWN0PSVsZCBsb3NzeT0lbGRcbiIsCisJCQkJCQkgc2ktPmV4YWN0X3BhZ2VzLCBz aS0+bG9zc3lfcGFnZXMpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCUV4cGxhaW5Qcm9wZXJ0 eUludGVnZXIoIkV4YWN0IEhlYXAgQmxvY2tzIiwgTlVMTCwgc2ktPmV4YWN0X3BhZ2VzLCBlcyk7 CisJCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTG9zc3kgSGVhcCBCbG9ja3MiLCBOVUxMLCBz aS0+bG9zc3lfcGFnZXMsIGVzKTsKKwkJCX0KKworCQkJaWYgKGVzLT53b3JrZXJzX3N0YXRlKQor CQkJCUV4cGxhaW5DbG9zZVdvcmtlcihuLCBlcyk7CisJCX0KKwl9CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IDhjNTNkMTgzNGUuLmJmYjM0MTllZmIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xMDc2LDYgKzEwNzYsOSBAQCBFeGVjUGFy YWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJY2Fz ZSBUX01lbW9pemVTdGF0ZToKIAkJCUV4ZWNNZW1vaXplUmV0cmlldmVJbnN0cnVtZW50YXRpb24o KE1lbW9pemVTdGF0ZSAqKSBwbGFuc3RhdGUpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9CaXRtYXBI ZWFwU2NhblN0YXRlOgorCQkJRXhlY0JpdG1hcEhlYXBSZXRyaWV2ZUluc3RydW1lbnRhdGlvbigo Qml0bWFwSGVhcFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j CmluZGV4IDZiNDhhNmQ4MzUuLjk3M2JmNTYwMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0yMzYsOSArMjM2LDkgQEAgQml0bWFwSGVhcE5leHQoQml0 bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkJCXZhbGlkX2Jsb2NrID0gdGFibGVfc2Nhbl9iaXRt YXBfbmV4dF9ibG9jayhzY2FuLCB0Ym1yZXMpOwogCiAJCQlpZiAodGJtcmVzLT5udHVwbGVzID49 IDApCi0JCQkJbm9kZS0+ZXhhY3RfcGFnZXMrKzsKKwkJCQlub2RlLT5zdGF0cy5leGFjdF9wYWdl cysrOwogCQkJZWxzZQotCQkJCW5vZGUtPmxvc3N5X3BhZ2VzKys7CisJCQkJbm9kZS0+c3RhdHMu bG9zc3lfcGFnZXMrKzsKIAogCQkJaWYgKCF2YWxpZF9ibG9jaykKIAkJCXsKQEAgLTYyNyw2ICs2 MjcsMTkgQEAgRXhlY0VuZEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUp CiB7CiAJVGFibGVTY2FuRGVzYyBzY2FuRGVzYzsKIAorCS8qCisJICogV2hlbiBlbmRpbmcgYSBw YXJhbGxlbCB3b3JrZXIsIGNvcHkgdGhlIHN0YXRpc3RpY3MgZ2F0aGVyZWQgYnkgdGhlCisJICog d29ya2VyIGJhY2sgaW50byBzaGFyZWQgbWVtb3J5IHNvIHRoYXQgaXQgY2FuIGJlIHBpY2tlZCB1 cCBieSB0aGUgbWFpbgorCSAqIHByb2Nlc3MgdG8gcmVwb3J0IGluIEVYUExBSU4gQU5BTFlaRS4K KwkgKi8KKwlpZiAobm9kZS0+c2luc3RydW1lbnQgIT0gTlVMTCAmJiBJc1BhcmFsbGVsV29ya2Vy KCkpCisJeworCQlBc3NlcnQoUGFyYWxsZWxXb3JrZXJOdW1iZXIgPD0gbm9kZS0+c2luc3RydW1l bnQtPm51bV93b3JrZXJzKTsKKwkJQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24gKnNpID0g Jm5vZGUtPnNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudFtQYXJhbGxlbFdvcmtlck51bWJlcl07CisJ CXNpLT5leGFjdF9wYWdlcyArPSBub2RlLT5zdGF0cy5leGFjdF9wYWdlczsKKwkJc2ktPmxvc3N5 X3BhZ2VzICs9IG5vZGUtPnN0YXRzLmxvc3N5X3BhZ2VzOworCX0KKwogCS8qCiAJICogZXh0cmFj dCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCiAJICovCkBAIC02OTQsOCArNzA3LDggQEAgRXhl Y0luaXRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJc2NhbnN0YXRlLT50Ym1pdGVyYXRvciA9IE5VTEw7CiAJc2NhbnN0YXRl LT50Ym1yZXMgPSBOVUxMOwogCXNjYW5zdGF0ZS0+cHZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsK LQlzY2Fuc3RhdGUtPmV4YWN0X3BhZ2VzID0gMDsKLQlzY2Fuc3RhdGUtPmxvc3N5X3BhZ2VzID0g MDsKKwlzY2Fuc3RhdGUtPnN0YXRzLmV4YWN0X3BhZ2VzID0gMDsKKwlzY2Fuc3RhdGUtPnN0YXRz Lmxvc3N5X3BhZ2VzID0gMDsKIAlzY2Fuc3RhdGUtPnByZWZldGNoX2l0ZXJhdG9yID0gTlVMTDsK IAlzY2Fuc3RhdGUtPnByZWZldGNoX3BhZ2VzID0gMDsKIAlzY2Fuc3RhdGUtPnByZWZldGNoX3Rh cmdldCA9IDA7CkBAIC04MDMsNyArODE2LDIyIEBAIHZvaWQKIEV4ZWNCaXRtYXBIZWFwRXN0aW1h dGUoQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSwKIAkJCQkJICAgUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogewotCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc2l6ZW9m KFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlKSk7CisJU2l6ZQkJc2l6ZTsKKworCS8qCisJICogV2Ug c3RvcmUgUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUgZm9sbG93ZWQgYnkKKwkgKiBTaGFyZWRCaXRt YXBIZWFwSW5zdHJ1bWVudGF0aW9uSW5mbyBpbiB0aGUgc2FtZSBzaG1lbSBjaHVuay4KKwkgKi8K KwlzaXplID0gTUFYQUxJR04oc2l6ZW9mKFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlKSk7CisKKwkv KiBkb24ndCBuZWVkIHRoaXMgaWYgbm90IGluc3RydW1lbnRpbmcgb3Igbm8gd29ya2VycyAqLwor CWlmIChub2RlLT5zcy5wcy5pbnN0cnVtZW50ICYmIHBjeHQtPm53b3JrZXJzID4gMCkKKwl7CisJ CXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihTaGFyZWRCaXRtYXBIZWFwSW5zdHJ1bWVu dGF0aW9uLCBzaW5zdHJ1bWVudCkpOworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUo cGN4dC0+bndvcmtlcnMsIHNpemVvZihCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbikpKTsK Kwl9CisKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHNpemUpOwog CXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIH0KIApAQCAtODE4 LDEzICs4NDYsMjcgQEAgRXhlY0JpdG1hcEhlYXBJbml0aWFsaXplRFNNKEJpdG1hcEhlYXBTY2Fu U3RhdGUgKm5vZGUsCiAJCQkJCQkJUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogewogCVBhcmFsbGVs Qml0bWFwSGVhcFN0YXRlICpwc3RhdGU7CisJU2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlv biAqc2luc3RydW1lbnQgPSBOVUxMOwogCWRzYV9hcmVhICAgKmRzYSA9IG5vZGUtPnNzLnBzLnN0 YXRlLT5lc19xdWVyeV9kc2E7CisJY2hhcgkgICAqcHRyOworCVNpemUJCXNpemU7CiAKIAkvKiBJ ZiB0aGVyZSdzIG5vIERTQSwgdGhlcmUgYXJlIG5vIHdvcmtlcnM7IGluaXRpYWxpemUgbm90aGlu Zy4gKi8KIAlpZiAoZHNhID09IE5VTEwpCiAJCXJldHVybjsKIAotCXBzdGF0ZSA9IHNobV90b2Nf YWxsb2NhdGUocGN4dC0+dG9jLCBzaXplb2YoUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUpKTsKKwlz aXplID0gTUFYQUxJR04oc2l6ZW9mKFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlKSk7CisJaWYgKG5v ZGUtPnNzLnBzLmluc3RydW1lbnQgJiYgcGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKFNoYXJlZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb24s IHNpbnN0cnVtZW50KSk7CisJCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShwY3h0LT5u d29ya2Vycywgc2l6ZW9mKEJpdG1hcEhlYXBTY2FuSW5zdHJ1bWVudGF0aW9uKSkpOworCX0KKwor CXB0ciA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBzaXplKTsKKwlwc3RhdGUgPSAoUGFy YWxsZWxCaXRtYXBIZWFwU3RhdGUgKikgcHRyOworCXB0ciArPSBNQVhBTElHTihzaXplb2YoUGFy YWxsZWxCaXRtYXBIZWFwU3RhdGUpKTsKKwlpZiAobm9kZS0+c3MucHMuaW5zdHJ1bWVudCAmJiBw Y3h0LT5ud29ya2VycyA+IDApCisJCXNpbnN0cnVtZW50ID0gKFNoYXJlZEJpdG1hcEhlYXBJbnN0 cnVtZW50YXRpb24gKikgcHRyOwogCiAJcHN0YXRlLT50Ym1pdGVyYXRvciA9IDA7CiAJcHN0YXRl LT5wcmVmZXRjaF9pdGVyYXRvciA9IDA7CkBAIC04MzcsOCArODc5LDE2IEBAIEV4ZWNCaXRtYXBI ZWFwSW5pdGlhbGl6ZURTTShCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlLAogCiAJQ29uZGl0aW9u VmFyaWFibGVJbml0KCZwc3RhdGUtPmN2KTsKIAorCS8qIGVuc3VyZSBhbnkgdW5maWxsZWQgc2xv dHMgd2lsbCBjb250YWluIHplcm9lcyAqLworCWlmIChzaW5zdHJ1bWVudCkKKwl7CisJCXNpbnN0 cnVtZW50LT5udW1fd29ya2VycyA9IHBjeHQtPm53b3JrZXJzOworCQltZW1zZXQoc2luc3RydW1l bnQtPnNpbnN0cnVtZW50LCAwLCBwY3h0LT5ud29ya2VycyAqIHNpemVvZihCaXRtYXBIZWFwU2Nh bkluc3RydW1lbnRhdGlvbikpOworCX0KKwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9k ZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc3RhdGUpOwogCW5vZGUtPnBzdGF0ZSA9IHBz dGF0ZTsKKwlub2RlLT5zaW5zdHJ1bWVudCA9IHNpbnN0cnVtZW50OwogfQogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC04ODAsMTAgKzkzMCwzNyBAQCB2b2lkCiBFeGVjQml0bWFwSGVhcEluaXRpYWxpemVXb3Jr ZXIoQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSwKIAkJCQkJCQkgICBQYXJhbGxlbFdvcmtlckNv bnRleHQgKnB3Y3h0KQogewotCVBhcmFsbGVsQml0bWFwSGVhcFN0YXRlICpwc3RhdGU7CisJY2hh cgkgICAqcHRyOwogCiAJQXNzZXJ0KG5vZGUtPnNzLnBzLnN0YXRlLT5lc19xdWVyeV9kc2EgIT0g TlVMTCk7CiAKLQlwc3RhdGUgPSBzaG1fdG9jX2xvb2t1cChwd2N4dC0+dG9jLCBub2RlLT5zcy5w cy5wbGFuLT5wbGFuX25vZGVfaWQsIGZhbHNlKTsKLQlub2RlLT5wc3RhdGUgPSBwc3RhdGU7CisJ cHRyID0gc2htX3RvY19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9u b2RlX2lkLCBmYWxzZSk7CisKKwlub2RlLT5wc3RhdGUgPSAoUGFyYWxsZWxCaXRtYXBIZWFwU3Rh dGUgKikgcHRyOworCXB0ciArPSBNQVhBTElHTihzaXplb2YoUGFyYWxsZWxCaXRtYXBIZWFwU3Rh dGUpKTsKKworCWlmIChub2RlLT5zcy5wcy5pbnN0cnVtZW50KQorCQlub2RlLT5zaW5zdHJ1bWVu dCA9IChTaGFyZWRCaXRtYXBIZWFwSW5zdHJ1bWVudGF0aW9uICopIHB0cjsKK30KKworLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoJCUV4ZWNCaXRtYXBIZWFwUmV0cmlldmVJbnN0cnVtZW50YXRpb24KKyAqCisgKgkJ VHJhbnNmZXIgYml0bWFwIGhlYXAgc2NhbiBzdGF0aXN0aWNzIGZyb20gRFNNIHRvIHByaXZhdGUg bWVtb3J5LgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCitFeGVjQml0bWFwSGVhcFJldHJpZXZlSW5z dHJ1bWVudGF0aW9uKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCit7CisJU2hhcmVkQml0bWFw SGVhcEluc3RydW1lbnRhdGlvbiAqc2luc3RydW1lbnQgPSBub2RlLT5zaW5zdHJ1bWVudDsKKwlT aXplCQlzaXplOworCisJaWYgKHNpbnN0cnVtZW50ID09IE5VTEwpCisJCXJldHVybjsKKworCXNp emUgPSBvZmZzZXRvZihTaGFyZWRCaXRtYXBIZWFwSW5zdHJ1bWVudGF0aW9uLCBzaW5zdHJ1bWVu dCkKKwkJKyBzaW5zdHJ1bWVudC0+bnVtX3dvcmtlcnMgKiBzaXplb2YoQml0bWFwSGVhcFNjYW5J bnN0cnVtZW50YXRpb24pOworCisJbm9kZS0+c2luc3RydW1lbnQgPSBwYWxsb2Moc2l6ZSk7CisJ bWVtY3B5KG5vZGUtPnNpbnN0cnVtZW50LCBzaW5zdHJ1bWVudCwgc2l6ZSk7CiB9CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5oCmluZGV4IGVhMDAzYTljYWEuLjQ0NmE2 NjQ1OTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5oCkBAIC0y OCw1ICsyOCw2IEBAIGV4dGVybiB2b2lkIEV4ZWNCaXRtYXBIZWFwUmVJbml0aWFsaXplRFNNKEJp dG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCQkJICBQYXJhbGxlbENvbnRleHQgKnBj eHQpOwogZXh0ZXJuIHZvaWQgRXhlY0JpdG1hcEhlYXBJbml0aWFsaXplV29ya2VyKEJpdG1hcEhl YXBTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCQkJICAgUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpw d2N4dCk7CitleHRlcm4gdm9pZCBFeGVjQml0bWFwSGVhcFJldHJpZXZlSW5zdHJ1bWVudGF0aW9u KEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpOwogCiAjZW5kaWYJCQkJCQkJLyogTk9ERUJJVE1B UEhFQVBTQ0FOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggYjYyYzk2ZjIwNi4uZjhhNjk1 NmVlOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE3NDYsNiArMTc0NiwxMiBAQCB0eXBlZGVm IHN0cnVjdCBCaXRtYXBJbmRleFNjYW5TdGF0ZQogCXN0cnVjdCBJbmRleFNjYW5EZXNjRGF0YSAq Ymlzc19TY2FuRGVzYzsKIH0gQml0bWFwSW5kZXhTY2FuU3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0 IEJpdG1hcEhlYXBTY2FuSW5zdHJ1bWVudGF0aW9uCit7CisJbG9uZyBsb3NzeV9wYWdlczsKKwls b25nIGV4YWN0X3BhZ2VzOworfSBCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbjsKKwogLyog LS0tLS0tLS0tLS0tLS0tLQogICoJIFNoYXJlZEJpdG1hcFN0YXRlIGluZm9ybWF0aW9uCiAgKgpA QCAtMTc4OSw2ICsxNzk1LDIwIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQml0bWFwSGVhcFN0 YXRlCiAJQ29uZGl0aW9uVmFyaWFibGUgY3Y7CiB9IFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlOwog CisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkgSW5zdHJ1bWVudGF0aW9uIGRhdGEgZm9yIGEgcGFy YWxsZWwgYml0bWFwIGhlYXAgc2Nhbi4KKyAqCisgKiBEdXJpbmcgYSBwYXJhbGxlbCBiaXRtYXAg aGVhcCBzY2FuLCB0aGlzIGxpdmVzIGluIHNoYXJlZCBtZW1vcnkuICBBdCB0aGUKKyAqIGVuZCwg ZWFjaCB3b3JrZXIgY29waWVzIHRoZWlyIG93biBzdGF0cyB0byB0aGUgcmlnaHQgc2xvdC4gIEZp bmFsbHksIHRoZQorICogbGVhZGVyIGNvcGllcyB0aGUgZGF0YSB0byBpdHMgbG9jYWwgbWVtb3J5 CisgICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBTaGFyZWRCaXRtYXBI ZWFwSW5zdHJ1bWVudGF0aW9uCit7CisJaW50CQkJbnVtX3dvcmtlcnM7CisJQml0bWFwSGVhcFNj YW5JbnN0cnVtZW50YXRpb24gc2luc3RydW1lbnRbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30g U2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlvbjsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQog ICoJIEJpdG1hcEhlYXBTY2FuU3RhdGUgaW5mb3JtYXRpb24KICAqCkBAIC0xODE3LDggKzE4Mzcs NiBAQCB0eXBlZGVmIHN0cnVjdCBCaXRtYXBIZWFwU2NhblN0YXRlCiAJVEJNSXRlcmF0b3IgKnRi bWl0ZXJhdG9yOwogCVRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlczsKIAlCdWZmZXIJCXB2bWJ1ZmZl cjsKLQlsb25nCQlleGFjdF9wYWdlczsKLQlsb25nCQlsb3NzeV9wYWdlczsKIAlUQk1JdGVyYXRv ciAqcHJlZmV0Y2hfaXRlcmF0b3I7CiAJaW50CQkJcHJlZmV0Y2hfcGFnZXM7CiAJaW50CQkJcHJl ZmV0Y2hfdGFyZ2V0OwpAQCAtMTgyNyw2ICsxODQ1LDE3IEBAIHR5cGVkZWYgc3RydWN0IEJpdG1h cEhlYXBTY2FuU3RhdGUKIAlUQk1TaGFyZWRJdGVyYXRvciAqc2hhcmVkX3RibWl0ZXJhdG9yOwog CVRCTVNoYXJlZEl0ZXJhdG9yICpzaGFyZWRfcHJlZmV0Y2hfaXRlcmF0b3I7CiAJUGFyYWxsZWxC aXRtYXBIZWFwU3RhdGUgKnBzdGF0ZTsKKworCS8qCisJICogSW4gYSBwYXJhbGxlbGl6ZWQgYml0 bWFwIGhlYXAgc2NhbiwgZWFjaCB3b3JrZXIgc2V0cyB0aGVpcgorCSAqIGluc3RydW1lbnRhdG9u IGRhdGEgaW4gcHN0YXRlLT5zaW5zdHJ1bWVudCBhdCB0aGUgZW5kLiAgVGhlIGxlYWRlcgorCSAq IGNvcGllcyB0aGUgc2hhcmVkLW1lbW9yeSBpbmZvIGJhY2sgdG8gbG9jYWwgc3RvcmFnZSBiZWZv cmUgRFNNCisJICogc2h1dGRvd24sIGFuZCBzdG9yZXMgaXQgaGVyZSBpbiAnaW5zdHJ1bWVudCcu ICBJdCByZW1haW5zIE5VTEwgaW4KKwkgKiB3b3JrZXJzIGFuZCBpbiBub24tcGFyYWxsZWwgc2Nh bnMuCisJICovCisJU2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlvbiAqc2luc3RydW1lbnQ7 CisKKwlCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbiBzdGF0czsKIH0gQml0bWFwSGVhcFNj YW5TdGF0ZTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQotLSAKMi4zNC4xCgo= --000000000000990de7061c6c5bab Content-Type: application/octet-stream; name="v7-0002-fixup-Parallel-Bitmap-Heap-Scan-reports-per-worke.patch" Content-Disposition: attachment; filename="v7-0002-fixup-Parallel-Bitmap-Heap-Scan-reports-per-worke.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly7br67n1 RnJvbSA2YjY3NzZjODk1ZDNkZGI0YTlhYTA0MjNjNDFmYjcxZDI2ZjI2NjFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCA1IEp1bCAyMDI0IDAxOjMzOjQ3ICsxMjAwClN1YmplY3Q6IFtQQVRDSCB2NyAyLzJd IGZpeHVwISBQYXJhbGxlbCBCaXRtYXAgSGVhcCBTY2FuIHJlcG9ydHMgcGVyLXdvcmtlcgogc3Rh dHMKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgfCAgOCAr KysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIHwgMzAgKysr KysrKysrKysrKy0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAg ICAgIHwgMzQgKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0ICAgICAgICAgIHwgIDIgKysKIDQgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9u cygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGQ2ZjY2ZGM1 ZTEuLmY1NjM0ZDNjMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTM2MjgsOCArMzYyOCwx MiBAQCBzaG93X3RpZGJpdG1hcF9pbmZvKEJpdG1hcEhlYXBTY2FuU3RhdGUgKnBsYW5zdGF0ZSwg RXhwbGFpblN0YXRlICplcykKIAkJCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RF WFQpCiAJCQl7CiAJCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOwotCQkJCWFwcGVuZFN0cmluZ0lu Zm8oZXMtPnN0ciwgIkhlYXAgQmxvY2tzOiBleGFjdD0lbGQgbG9zc3k9JWxkXG4iLAotCQkJCQkJ IHNpLT5leGFjdF9wYWdlcywgc2ktPmxvc3N5X3BhZ2VzKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGVzLT5zdHIsICJIZWFwIEJsb2NrczoiKTsKKwkJCQlpZiAoc2ktPmV4YWN0X3BhZ2Vz ID4gMCkKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiIGV4YWN0PSVsZCIsIHNpLT5l eGFjdF9wYWdlcyk7CisJCQkJaWYgKHNpLT5sb3NzeV9wYWdlcyA+IDApCisJCQkJCWFwcGVuZFN0 cmluZ0luZm8oZXMtPnN0ciwgIiBsb3NzeT0lbGQiLCBzaS0+bG9zc3lfcGFnZXMpOworCQkJCWFw cGVuZFN0cmluZ0luZm9DaGFyKGVzLT5zdHIsICdcbicpOwogCQkJfQogCQkJZWxzZQogCQkJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCA5NzNiZjU2MDIy Li4zYzYzYmRkOTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YwpAQCAtNjM0LDggKzYzNCwxOCBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNj YW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c2luc3RydW1lbnQgIT0gTlVMTCAmJiBJ c1BhcmFsbGVsV29ya2VyKCkpCiAJeworCQlCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbiAq c2k7CisKIAkJQXNzZXJ0KFBhcmFsbGVsV29ya2VyTnVtYmVyIDw9IG5vZGUtPnNpbnN0cnVtZW50 LT5udW1fd29ya2Vycyk7Ci0JCUJpdG1hcEhlYXBTY2FuSW5zdHJ1bWVudGF0aW9uICpzaSA9ICZu b2RlLT5zaW5zdHJ1bWVudC0+c2luc3RydW1lbnRbUGFyYWxsZWxXb3JrZXJOdW1iZXJdOworCQlz aSA9ICZub2RlLT5zaW5zdHJ1bWVudC0+c2luc3RydW1lbnRbUGFyYWxsZWxXb3JrZXJOdW1iZXJd OworCisJCS8qCisJCSAqIEhlcmUgd2UgYWNjdW11bGF0ZSB0aGUgc3RhdHMgcmF0aGVyIHRoYW4g cGVyZm9ybWluZyBtZW1jcHkgb24KKwkJICogbm9kZS0+c3RhdHMgaW50byBzaS4gIFdoZW4gYSBH YXRoZXIvR2F0aGVyTWVyZ2Ugbm9kZSBmaW5pc2hlcyBpdAorCQkgKiB3aWxsIHBlcmZvcm0gcGxh bm5lciBzaHV0ZG93biBvbiB0aGUgd29ya2Vycy4gIE9uIHJlc2NhbiBpdCB3aWxsCisJCSAqIHNw aW4gdXAgbmV3IHdvcmtlcnMgd2hpY2ggd2lsbCBoYXZlIGEgbmV3IEJpdG1hcEhlYXBTY2FuU3Rh dGUgYW5kCisJCSAqIHplcm9lZCBzdGF0cy4KKwkJICovCiAJCXNpLT5leGFjdF9wYWdlcyArPSBu b2RlLT5zdGF0cy5leGFjdF9wYWdlczsKIAkJc2ktPmxvc3N5X3BhZ2VzICs9IG5vZGUtPnN0YXRz Lmxvc3N5X3BhZ2VzOwogCX0KQEAgLTcwNyw4ICs3MTcsMTAgQEAgRXhlY0luaXRCaXRtYXBIZWFw U2NhbihCaXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ c2NhbnN0YXRlLT50Ym1pdGVyYXRvciA9IE5VTEw7CiAJc2NhbnN0YXRlLT50Ym1yZXMgPSBOVUxM OwogCXNjYW5zdGF0ZS0+cHZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlzY2Fuc3RhdGUtPnN0 YXRzLmV4YWN0X3BhZ2VzID0gMDsKLQlzY2Fuc3RhdGUtPnN0YXRzLmxvc3N5X3BhZ2VzID0gMDsK KworCS8qIFplcm8gdGhlIHN0YXRpc3RpY3MgY291bnRlcnMgKi8KKwltZW1zZXQoJnNjYW5zdGF0 ZS0+c3RhdHMsIDAsIHNpemVvZihCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbikpOworCiAJ c2NhbnN0YXRlLT5wcmVmZXRjaF9pdGVyYXRvciA9IE5VTEw7CiAJc2NhbnN0YXRlLT5wcmVmZXRj aF9wYWdlcyA9IDA7CiAJc2NhbnN0YXRlLT5wcmVmZXRjaF90YXJnZXQgPSAwOwpAQCAtODE4LDEz ICs4MzAsOSBAQCBFeGVjQml0bWFwSGVhcEVzdGltYXRlKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5v ZGUsCiB7CiAJU2l6ZQkJc2l6ZTsKIAotCS8qCi0JICogV2Ugc3RvcmUgUGFyYWxsZWxCaXRtYXBI ZWFwU3RhdGUgZm9sbG93ZWQgYnkKLQkgKiBTaGFyZWRCaXRtYXBIZWFwSW5zdHJ1bWVudGF0aW9u SW5mbyBpbiB0aGUgc2FtZSBzaG1lbSBjaHVuay4KLQkgKi8KIAlzaXplID0gTUFYQUxJR04oc2l6 ZW9mKFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlKSk7CiAKLQkvKiBkb24ndCBuZWVkIHRoaXMgaWYg bm90IGluc3RydW1lbnRpbmcgb3Igbm8gd29ya2VycyAqLworCS8qIGFjY291bnQgZm9yIGluc3Ry dW1lbnRhdGlvbiwgaWYgcmVxdWlyZWQgKi8KIAlpZiAobm9kZS0+c3MucHMuaW5zdHJ1bWVudCAm JiBwY3h0LT5ud29ya2VycyA+IDApCiAJewogCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgb2Zmc2V0 b2YoU2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlvbiwgc2luc3RydW1lbnQpKTsKQEAgLTg3 OSwxMSArODg3LDEzIEBAIEV4ZWNCaXRtYXBIZWFwSW5pdGlhbGl6ZURTTShCaXRtYXBIZWFwU2Nh blN0YXRlICpub2RlLAogCiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZwc3RhdGUtPmN2KTsKIAot CS8qIGVuc3VyZSBhbnkgdW5maWxsZWQgc2xvdHMgd2lsbCBjb250YWluIHplcm9lcyAqLwogCWlm IChzaW5zdHJ1bWVudCkKIAl7CiAJCXNpbnN0cnVtZW50LT5udW1fd29ya2VycyA9IHBjeHQtPm53 b3JrZXJzOwotCQltZW1zZXQoc2luc3RydW1lbnQtPnNpbnN0cnVtZW50LCAwLCBwY3h0LT5ud29y a2VycyAqIHNpemVvZihCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbikpOworCisJCS8qIGVu c3VyZSBhbnkgdW5maWxsZWQgc2xvdHMgd2lsbCBjb250YWluIHplcm9lcyAqLworCQltZW1zZXQo c2luc3RydW1lbnQtPnNpbnN0cnVtZW50LCAwLAorCQkJICAgcGN4dC0+bndvcmtlcnMgKiBzaXpl b2YoQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24pKTsKIAl9CiAKIAlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHN0YXRlKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKaW5kZXggZjhhNjk1NmVlOC4uOGIxMjM5ZmY0ZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTE3NDYsMTAgKzE3NDYsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgQml0bWFwSW5k ZXhTY2FuU3RhdGUKIAlzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEgKmJpc3NfU2NhbkRlc2M7CiB9 IEJpdG1hcEluZGV4U2NhblN0YXRlOwogCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkgQml0bWFw SGVhcFNjYW5JbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24KKyAqCisgKgkJZXhhY3RfcGFnZXMJ CSAgIHRvdGFsIG51bWJlciBvZiBleGFjdCBwYWdlcyByZXRyaWV2ZWQKKyAqCQlsb3NzeV9wYWdl cwkJICAgdG90YWwgbnVtYmVyIG9mIGxvc3N5IHBhZ2VzIHJldHJpZXZlZAorICogLS0tLS0tLS0t LS0tLS0tLQorICovCiB0eXBlZGVmIHN0cnVjdCBCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlv bgogewotCWxvbmcgbG9zc3lfcGFnZXM7Ci0JbG9uZyBleGFjdF9wYWdlczsKKwlsb25nCQlleGFj dF9wYWdlczsKKwlsb25nCQlsb3NzeV9wYWdlczsKIH0gQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50 YXRpb247CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3OTgsMTAgKzE4MDUsMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUKIC8qIC0tLS0tLS0tLS0tLS0tLS0K ICAqCSBJbnN0cnVtZW50YXRpb24gZGF0YSBmb3IgYSBwYXJhbGxlbCBiaXRtYXAgaGVhcCBzY2Fu LgogICoKLSAqIER1cmluZyBhIHBhcmFsbGVsIGJpdG1hcCBoZWFwIHNjYW4sIHRoaXMgbGl2ZXMg aW4gc2hhcmVkIG1lbW9yeS4gIEF0IHRoZQotICogZW5kLCBlYWNoIHdvcmtlciBjb3BpZXMgdGhl aXIgb3duIHN0YXRzIHRvIHRoZSByaWdodCBzbG90LiAgRmluYWxseSwgdGhlCi0gKiBsZWFkZXIg Y29waWVzIHRoZSBkYXRhIHRvIGl0cyBsb2NhbCBtZW1vcnkKLSAgKiAtLS0tLS0tLS0tLS0tLS0t CisgKiBBIHNoYXJlZCBtZW1vcnkgc3RydWN0IHRoYXQgZWFjaCBwYXJhbGxlbCB3b3JrZXIgY29w aWVzIGl0cworICogQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gaW50 byBhdCBleGVjdXRvciBzaHV0ZG93biB0bworICogYWxsb3cgdGhlIGxlYWRlciB0byBkaXNwbGF5 IHRoZSBpbmZvcm1hdGlvbiBpbiBFWFBMQUlOIEFOQUxZWkUuCisgKiAtLS0tLS0tLS0tLS0tLS0t CiAgKi8KIHR5cGVkZWYgc3RydWN0IFNoYXJlZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb24KIHsK QEAgLTE4MTcsOCArMTgyNCw3IEBAIHR5cGVkZWYgc3RydWN0IFNoYXJlZEJpdG1hcEhlYXBJbnN0 cnVtZW50YXRpb24KICAqCQl0Ym1pdGVyYXRvcgkJICAgaXRlcmF0b3IgZm9yIHNjYW5uaW5nIGN1 cnJlbnQgcGFnZXMKICAqCQl0Ym1yZXMJCQkgICBjdXJyZW50LXBhZ2UgZGF0YQogICoJCXB2bWJ1 ZmZlcgkJICAgYnVmZmVyIGZvciB2aXNpYmlsaXR5LW1hcCBsb29rdXBzIG9mIHByZWZldGNoZWQg cGFnZXMKLSAqCQlleGFjdF9wYWdlcwkJICAgdG90YWwgbnVtYmVyIG9mIGV4YWN0IHBhZ2VzIHJl dHJpZXZlZAotICoJCWxvc3N5X3BhZ2VzCQkgICB0b3RhbCBudW1iZXIgb2YgbG9zc3kgcGFnZXMg cmV0cmlldmVkCisgKgkJc3RhdHMJCQkgICBleGVjdXRpb24gc3RhdGlzdGljcwogICoJCXByZWZl dGNoX2l0ZXJhdG9yICBpdGVyYXRvciBmb3IgcHJlZmV0Y2hpbmcgYWhlYWQgb2YgY3VycmVudCBw YWdlCiAgKgkJcHJlZmV0Y2hfcGFnZXMJICAgIyBwYWdlcyBwcmVmZXRjaCBpdGVyYXRvciBpcyBh aGVhZCBvZiBjdXJyZW50CiAgKgkJcHJlZmV0Y2hfdGFyZ2V0ICAgIGN1cnJlbnQgdGFyZ2V0IHBy ZWZldGNoIGRpc3RhbmNlCkBAIC0xODI3LDYgKzE4MzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBTaGFy ZWRCaXRtYXBIZWFwSW5zdHJ1bWVudGF0aW9uCiAgKgkJc2hhcmVkX3RibWl0ZXJhdG9yCSAgIHNo YXJlZCBpdGVyYXRvcgogICoJCXNoYXJlZF9wcmVmZXRjaF9pdGVyYXRvciBzaGFyZWQgaXRlcmF0 b3IgZm9yIHByZWZldGNoaW5nCiAgKgkJcHN0YXRlCQkJICAgc2hhcmVkIHN0YXRlIGZvciBwYXJh bGxlbCBiaXRtYXAgc2NhbgorICoJCXNpbnN0cnVtZW50CQkgICBzdGF0aXN0aWNzIGZvciBwYXJh bGxlbCB3b3JrZXJzCiAgKiAtLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHR5cGVkZWYgc3RydWN0IEJp dG1hcEhlYXBTY2FuU3RhdGUKQEAgLTE4MzcsNiArMTg0NCw3IEBAIHR5cGVkZWYgc3RydWN0IEJp dG1hcEhlYXBTY2FuU3RhdGUKIAlUQk1JdGVyYXRvciAqdGJtaXRlcmF0b3I7CiAJVEJNSXRlcmF0 ZVJlc3VsdCAqdGJtcmVzOwogCUJ1ZmZlcgkJcHZtYnVmZmVyOworCUJpdG1hcEhlYXBTY2FuSW5z dHJ1bWVudGF0aW9uIHN0YXRzOwogCVRCTUl0ZXJhdG9yICpwcmVmZXRjaF9pdGVyYXRvcjsKIAlp bnQJCQlwcmVmZXRjaF9wYWdlczsKIAlpbnQJCQlwcmVmZXRjaF90YXJnZXQ7CkBAIC0xODQ1LDE3 ICsxODUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQml0bWFwSGVhcFNjYW5TdGF0ZQogCVRCTVNoYXJl ZEl0ZXJhdG9yICpzaGFyZWRfdGJtaXRlcmF0b3I7CiAJVEJNU2hhcmVkSXRlcmF0b3IgKnNoYXJl ZF9wcmVmZXRjaF9pdGVyYXRvcjsKIAlQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZSAqcHN0YXRlOwot Ci0JLyoKLQkgKiBJbiBhIHBhcmFsbGVsaXplZCBiaXRtYXAgaGVhcCBzY2FuLCBlYWNoIHdvcmtl ciBzZXRzIHRoZWlyCi0JICogaW5zdHJ1bWVudGF0b24gZGF0YSBpbiBwc3RhdGUtPnNpbnN0cnVt ZW50IGF0IHRoZSBlbmQuICBUaGUgbGVhZGVyCi0JICogY29waWVzIHRoZSBzaGFyZWQtbWVtb3J5 IGluZm8gYmFjayB0byBsb2NhbCBzdG9yYWdlIGJlZm9yZSBEU00KLQkgKiBzaHV0ZG93biwgYW5k IHN0b3JlcyBpdCBoZXJlIGluICdpbnN0cnVtZW50Jy4gIEl0IHJlbWFpbnMgTlVMTCBpbgotCSAq IHdvcmtlcnMgYW5kIGluIG5vbi1wYXJhbGxlbCBzY2Fucy4KLQkgKi8KIAlTaGFyZWRCaXRtYXBI ZWFwSW5zdHJ1bWVudGF0aW9uICpzaW5zdHJ1bWVudDsKLQotCUJpdG1hcEhlYXBTY2FuSW5zdHJ1 bWVudGF0aW9uIHN0YXRzOwogfSBCaXRtYXBIZWFwU2NhblN0YXRlOwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGU3MTBmYTQ4ZTUuLjNhZDE1NDg1 ZTkgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNjIsNiArMjYyLDcgQEAgQml0bWFw QW5kUGF0aAogQml0bWFwQW5kU3RhdGUKIEJpdG1hcEhlYXBQYXRoCiBCaXRtYXBIZWFwU2Nhbgor Qml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24KIEJpdG1hcEhlYXBTY2FuU3RhdGUKIEJpdG1h cEluZGV4U2NhbgogQml0bWFwSW5kZXhTY2FuU3RhdGUKQEAgLTI2MDMsNiArMjYwNCw3IEBAIFNl dFRvRGVmYXVsdAogU2V0dXBXb3JrZXJQdHJUeXBlCiBTaERlcGVuZE9iamVjdEluZm8KIFNoYXJl ZEFnZ0luZm8KK1NoYXJlZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb24KIFNoYXJlZEJpdG1hcFN0 YXRlCiBTaGFyZWREZXBlbmRlbmN5T2JqZWN0VHlwZQogU2hhcmVkRGVwZW5kZW5jeVR5cGUKLS0g CjIuMzQuMQoK --000000000000990de7061c6c5bab--