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 1w9SCk-001Rpn-2o for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 18:28:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9SCj-004HEH-0w for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 18:28:13 +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 1w9SCi-004HE8-2o for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 18:28:13 +0000 Received: from mail-ed1-x52f.google.com ([2a00:1450:4864:20::52f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9SCh-00000000iYM-0RoK for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 18:28:12 +0000 Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-66d65646c65so3075393a12.1 for ; Sun, 05 Apr 2026 11:28:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775413688; cv=none; d=google.com; s=arc-20240605; b=ker6+EujK6hhXtvOudoL56w46HOPeebRDs3oynrkZ0TKvmi1qs187ZaDrrf1raYMAV WqtHELReNdzCNnZlllTA6VcxJRFlDAXFOrmq2qWdqKpGxfgACNSJ5Mm96z/qgt3/5oqE WBFzoggQVZip/BA0Pen840oD/ZWd8w5bNApUaSBVrnYrgWdNnkZvQuMq/lLHzutnglwq A1MmiJ7dYZ0j3GAuYYQEZyekYIEZOVxoi6YT82Vw5iLTTNzgtnmafX82M1ixo11ecjw6 T+DJfN2l/K5fRaV3SrLcESLFMjc6Is4tZMclBU9XpkrFWRu8v6v8PefrTj8h6nemnSy0 rK4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=D/gXT14/bsq8iXHxY4L8j0iuzxKJcZJRnqvMeKf8M5E=; fh=X+c8Kt6Vk5GedEpgBlZTrc5oGSMEyTiYOLkNbmFNtuw=; b=gXU9O+TDnLUNeikvgJYS+yg1HN3jHKEODBVv2ook+zpDsDvEiZiNLo/bwvamcbKt8u Q5JH7LsQWN9uRYPc1RHu7QuFItMhkBm4hgjkzsB9w1zbo1d9AgIEBV5XPN2nxQf4ihwG /qL064PWwwcmsUV7rB7s3wxaM+H/GnCA208wuavcs/+vEGBh0dv7oo9dmHdBG40KijPb XeS8SeC2eYcPJY5UWP0DQpytHedUFHTrnjxc/yBTNg5NJmj4hSZkOvXXC+iopLW5OLVS uKExuGNZQt8CtjqM/DswtA6/l1NNkMalatd7uTAzImXlxIX3zQvW5Ju14qkd+7vG32dp rVZA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775413688; x=1776018488; 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=D/gXT14/bsq8iXHxY4L8j0iuzxKJcZJRnqvMeKf8M5E=; b=GFEsTdkaw5iebG94417RgJWWeHq0n0CPv7QvoREffTpI7KEqKdyuljIlwiqbGjHWYx 7FhgJD8k3lxB2K0Zf/tBMrv/mPErR/fCmz0a50XjgiyFxAbl6p6I39q3358C/0l3ge0x Iqoi4DOAqlXhFIZum8w2X5lKdooUPTu27BtKeQaH5LNuMldKvB4LmfrcBWx1yiRIpS2d 5u8GUzNBWxPOs20JQy17+KCRW0Dx3fZpzAD9wfUsOb0aO6VQM5anYXJgRnhz6M7RjM1A hhqUS57I0BiYIKUYO39/A9T/skuy8T+E9qIcmEPafNvz2xcKcweNM0jrZfoibanLpxxf xykA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775413688; x=1776018488; 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=D/gXT14/bsq8iXHxY4L8j0iuzxKJcZJRnqvMeKf8M5E=; b=buTPy010cSjAjG2qikBTILDm9ZqEKwbGyGiW/3RWso37ybQ1LmZRjn7yDJKSPiuBaP jBNkPv26AF8Dl9UZNwIU1N9Kc2G2CCABqVxWmAzboU40hac6juXX31gCv0sG0FHi54iY cVPH1leh6or01dH+7CW7sML2Y+QoLDAPkI2DnO+M21cCXPCtklEMnDexdV2CHNd2dapr 83hSbXvrYsDb2Q0K/F1otV7zye+1LuTNh6BmD8pp5cqN+s4vhiiSotWH92hhL9A+eBbN ywA832mU1oQAToew4x8zCtq1S57E0Oa5854CAq9y8CtHmp28Q5iL2OWZMSsxxqbo+nKx LnDg== X-Forwarded-Encrypted: i=1; AJvYcCV8/a6WlirASxGM2bhbN3+U3ldcEKcYpUFFrOGWGtcmij+SfreI418drUqRvmHF0YosQ0KB2OAnarFa6faw@lists.postgresql.org X-Gm-Message-State: AOJu0YzF7RTAGme2dVNyIfc7kQBXK3ddFv2O0WvAgGUeucV+zujyoWkO wYALjTSsdFS5GOaI/aZ20ivYBL0xFT3Y0NsSuHUSXPXVAFLyMGRaJxTsZhACpOG/GL14ovOXD0o O21UmGVNDwOcKUmQaC1xHVzz1P+FtFKw= X-Gm-Gg: AeBDiesc8yyaRD+to8e1rM64OoABUfjTzCjdx2MMa5QRzR1wTrQo19MSQrOz0P70DRP eWcdV9F684O+6NLoI9T27ikvE176eCMZIQgt4a2t8ogZSc/64psd4ZzXDRhtryKkQ53/9Xzc9To amvULwpgF4OWZ0JMxBOYTW4OXxDT9S0vFdpbpXVVhYiGJViCGfh9V9t2bC1Nvita3K/U3jQop8s jRnIh8tsueKGFGH2ohBxrWE1Ri+SoSxRSf8/IqptpQYtf5edJs4vA3RGb8u44343gupcX/e+hst /wRTD1PCLHe+wtV2GW65UZtD/T+vrUfkqzPKDcBFlw9yE6QpNrd4xgancR0qaiMpWVt4soL1Wig taNDGcynZ X-Received: by 2002:a05:6402:3055:20b0:66a:6f5f:d77e with SMTP id 4fb4d7f45d1cf-66e07c404f4mr4424542a12.14.1775413688028; Sun, 05 Apr 2026 11:28:08 -0700 (PDT) MIME-Version: 1.0 References: <13bd913f-94b6-43cf-b849-4d762e5297d8@yandex.ru> In-Reply-To: From: Melanie Plageman Date: Sun, 5 Apr 2026 14:27:54 -0400 X-Gm-Features: AQROBzAjY-Oxsr4QZk2ORZg3WuGZcDDB_yHk13Yw6DB-VG8qs5AmbgZLPoByEYA Message-ID: Subject: Re: Parallel Bitmap Heap Scan reports per-worker stats in EXPLAIN ANALYZE To: Tomas Vondra Cc: David Rowley , Masahiro.Ikeda@nttdata.com, lena.ribackina@yandex.ru, donghanglin@gmail.com, geidav.pg@gmail.com, tomas.vondra@enterprisedb.com, dilipbalaut@gmail.com, pgsql-hackers@lists.postgresql.org, hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="000000000000349a99064ebab654" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000349a99064ebab654 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 3, 2026 at 3:20=E2=80=AFPM Tomas Vondra wrote= : > > I'm working on adding information about prefetching for scans [1], which > includes BitmapHeapScan. I realized the instrumentation added by this > thread may not be quite right, resulting in missing instrumentation for > non-parallel-aware scans in a parallel query. > > A better description / explanation of the issue is posted here [2]. I've > posted a proposed fix in the following message [3], in a patch: > > v8-0002-Show-Bitmap-Heap-Scan-stats-for-non-parallel-awar.patch > > I wonder if someone from this thread could review my analysis, and > confirm this is not intentional. I don't see it discussed in the thread, > so I assume no one noticed this behavior. I'd also appreciate a review > of the proposed fix, or suggestions for alternative fixes. I can't imagine this was intentional. I reviewed your approach and suggest we aim for even lower impact by always allocating the ParallelBitmapHeapState. That means the DSM layout won't differ such that pcxt->toc has to point to the instrumentation in the parallel-oblivious case and the pstate in the parallel-aware case. Attached is a patch that does this. - Melanie --000000000000349a99064ebab654 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Allow-non-parallel-aware-bitmap-table-scans-to-share.patch" Content-Disposition: attachment; filename="0001-Allow-non-parallel-aware-bitmap-table-scans-to-share.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnm3gjwj0 RnJvbSA2OTUyMTVkNGFkYTI5N2NhMzEwMzRjM2MxM2Y0ZDQ5MWYwYzI1YTlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTdW4sIDUgQXByIDIwMjYgMTQ6MTA6MzMgLTA0MDAKU3ViamVjdDogW1BB VENIXSBBbGxvdyBub24tcGFyYWxsZWwtYXdhcmUgYml0bWFwIHRhYmxlIHNjYW5zIHRvIHNoYXJl CiBpbnN0cnVtZW50YXRpb24gaW4gdGhlIERTTQoKRVhQTEFJTiBBTkFMWVpFIGZvciBub24tcGFy YWxsZWwtYXdhcmUgYml0bWFwIHRhYmxlIHNjYW5zIGRpZCBub3Qgc2hvdwpleGFjdC9sb3NzeSBw YWdlcyBiZWNhdXNlIHRoZSBEU00gd2hlcmUgdGhlIHN0YXRzIHdvdWxkIGJlIHJlYWQgZnJvbQp3 YXNuJ3QgaW5pdGlhbGl6ZWQuIFRoaXMgYWZmZWN0ZWQgcXVlcmllcyBsaWtlIGJpdG1hcCB0YWJs ZSBzY2FucyBvbiB0aGUKb3V0ZXIgc2lkZSBvZiBhIHBhcmFsbGVsIGpvaW4gb3IgYml0bWFwIHRh YmxlIHNjYW5zIHdpdGgKZGVidWdfcGFyYWxsZWxfcXVlcnk9cmVncmVzcy4gRml4IGl0IGJ5IHNl dHRpbmcgdXAgdGhlIERTTSBpZgppbnN0cnVtZW50YXRpb24gaXMgbmVlZGVkIGV2ZW4gaWYgdGhl IG5vZGUgaXMgbm90IHBhcmFsbGVsIGF3YXJlLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jICAgICAgIHwgMTggKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jIHwgNTAgKysrKysrKysrKysrKysrLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdl ZCwgNDMgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CmluZGV4IGU0YjcwMTY2YjBlLi44Mjc1YmIyYWY2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpA QCAtMzk0OSw3ICszOTQ5LDcgQEAgc2hvd190aWRiaXRtYXBfaW5mbyhCaXRtYXBIZWFwU2NhblN0 YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJfQogCiAJLyogRGlzcGxheSBzdGF0 cyBmb3IgZWFjaCBwYXJhbGxlbCB3b3JrZXIgKi8KLQlpZiAocGxhbnN0YXRlLT5wc3RhdGUgIT0g TlVMTCkKKwlpZiAocGxhbnN0YXRlLT5zaW5zdHJ1bWVudCAhPSBOVUxMKQogCXsKIAkJZm9yIChp bnQgbiA9IDA7IG4gPCBwbGFuc3RhdGUtPnNpbnN0cnVtZW50LT5udW1fd29ya2VyczsgbisrKQog CQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IDc1NTE5MWI1MWVmLi5jZTM3 N2E3NzRmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTI5MCw5ICsyOTAs OSBAQCBFeGVjUGFyYWxsZWxFc3RpbWF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRXhlY1BhcmFs bGVsRXN0aW1hdGVDb250ZXh0ICplKQogCQkJCQkJCQkJICAgZS0+cGN4dCk7CiAJCQlicmVhazsK IAkJY2FzZSBUX0JpdG1hcEhlYXBTY2FuU3RhdGU6Ci0JCQlpZiAocGxhbnN0YXRlLT5wbGFuLT5w YXJhbGxlbF9hd2FyZSkKLQkJCQlFeGVjQml0bWFwSGVhcEVzdGltYXRlKChCaXRtYXBIZWFwU2Nh blN0YXRlICopIHBsYW5zdGF0ZSwKLQkJCQkJCQkJCSAgIGUtPnBjeHQpOworCQkJLyogZXZlbiB3 aGVuIG5vdCBwYXJhbGxlbC1hd2FyZSwgZm9yIEVYUExBSU4gQU5BTFlaRSAqLworCQkJRXhlY0Jp dG1hcEhlYXBFc3RpbWF0ZSgoQml0bWFwSGVhcFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUsCisJCQkJ CQkJCSAgIGUtPnBjeHQpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9IYXNoSm9pblN0YXRlOgogCQkJ aWYgKHBsYW5zdGF0ZS0+cGxhbi0+cGFyYWxsZWxfYXdhcmUpCkBAIC01MjIsOSArNTIyLDkgQEAg RXhlY1BhcmFsbGVsSW5pdGlhbGl6ZURTTShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJ CQkJZC0+cGN4dCk7CiAJCQlicmVhazsKIAkJY2FzZSBUX0JpdG1hcEhlYXBTY2FuU3RhdGU6Ci0J CQlpZiAocGxhbnN0YXRlLT5wbGFuLT5wYXJhbGxlbF9hd2FyZSkKLQkJCQlFeGVjQml0bWFwSGVh cEluaXRpYWxpemVEU00oKEJpdG1hcEhlYXBTY2FuU3RhdGUgKikgcGxhbnN0YXRlLAotCQkJCQkJ CQkJCQlkLT5wY3h0KTsKKwkJCS8qIGV2ZW4gd2hlbiBub3QgcGFyYWxsZWwtYXdhcmUsIGZvciBF WFBMQUlOIEFOQUxZWkUgKi8KKwkJCUV4ZWNCaXRtYXBIZWFwSW5pdGlhbGl6ZURTTSgoQml0bWFw SGVhcFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUsCisJCQkJCQkJCQkJZC0+cGN4dCk7CiAJCQlicmVh azsKIAkJY2FzZSBUX0hhc2hKb2luU3RhdGU6CiAJCQlpZiAocGxhbnN0YXRlLT5wbGFuLT5wYXJh bGxlbF9hd2FyZSkKQEAgLTE0MDAsOSArMTQwMCw5IEBAIEV4ZWNQYXJhbGxlbEluaXRpYWxpemVX b3JrZXIoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQp CiAJCQkJCQkJCQkJCSAgIHB3Y3h0KTsKIAkJCWJyZWFrOwogCQljYXNlIFRfQml0bWFwSGVhcFNj YW5TdGF0ZToKLQkJCWlmIChwbGFuc3RhdGUtPnBsYW4tPnBhcmFsbGVsX2F3YXJlKQotCQkJCUV4 ZWNCaXRtYXBIZWFwSW5pdGlhbGl6ZVdvcmtlcigoQml0bWFwSGVhcFNjYW5TdGF0ZSAqKSBwbGFu c3RhdGUsCi0JCQkJCQkJCQkJCSAgIHB3Y3h0KTsKKwkJCS8qIGV2ZW4gd2hlbiBub3QgcGFyYWxs ZWwtYXdhcmUsIGZvciBFWFBMQUlOIEFOQUxZWkUgKi8KKwkJCUV4ZWNCaXRtYXBIZWFwSW5pdGlh bGl6ZVdvcmtlcigoQml0bWFwSGVhcFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUsCisJCQkJCQkJCQkJ ICAgcHdjeHQpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9IYXNoSm9pblN0YXRlOgogCQkJaWYgKHBs YW5zdGF0ZS0+cGxhbi0+cGFyYWxsZWxfYXdhcmUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jCmluZGV4IDczODMxYWVkNDUxLi43YWUzNDhlZjFmMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTEwMyw5ICsxMDMsOSBAQCBC aXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogewogCVRCTUl0 ZXJhdG9yIHRibWl0ZXJhdG9yID0gezB9OwogCVBhcmFsbGVsQml0bWFwSGVhcFN0YXRlICpwc3Rh dGUgPSBub2RlLT5wc3RhdGU7Ci0JZHNhX2FyZWEgICAqZHNhID0gbm9kZS0+c3MucHMuc3RhdGUt PmVzX3F1ZXJ5X2RzYTsKKwlib29sCQlwYXJhbGxlbF9hd2FyZSA9IG5vZGUtPnNzLnBzLnBsYW4t PnBhcmFsbGVsX2F3YXJlOwogCi0JaWYgKCFwc3RhdGUpCisJaWYgKCFwYXJhbGxlbF9hd2FyZSkK IAl7CiAJCW5vZGUtPnRibSA9IChUSURCaXRtYXAgKikgTXVsdGlFeGVjUHJvY05vZGUob3V0ZXJQ bGFuU3RhdGUobm9kZSkpOwogCkBAIC0xMzMsOCArMTMzLDkgQEAgQml0bWFwVGFibGVTY2FuU2V0 dXAoQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkJQml0bWFwRG9uZUluaXRpYWxpemluZ1No YXJlZFN0YXRlKHBzdGF0ZSk7CiAJfQogCi0JdGJtaXRlcmF0b3IgPSB0Ym1fYmVnaW5faXRlcmF0 ZShub2RlLT50Ym0sIGRzYSwKLQkJCQkJCQkJCXBzdGF0ZSA/CisJdGJtaXRlcmF0b3IgPSB0Ym1f YmVnaW5faXRlcmF0ZShub2RlLT50Ym0sCisJCQkJCQkJCQlub2RlLT5zcy5wcy5zdGF0ZS0+ZXNf cXVlcnlfZHNhLAorCQkJCQkJCQkJcGFyYWxsZWxfYXdhcmUgPwogCQkJCQkJCQkJcHN0YXRlLT50 Ym1pdGVyYXRvciA6CiAJCQkJCQkJCQlJbnZhbGlkRHNhUG9pbnRlcik7CiAKQEAgLTQ5Nyw2ICs0 OTgsMTIgQEAgRXhlY0JpdG1hcEhlYXBFc3RpbWF0ZShCaXRtYXBIZWFwU2NhblN0YXRlICpub2Rl LAogewogCVNpemUJCXNpemU7CiAKKwlpZiAoIW5vZGUtPnNzLnBzLmluc3RydW1lbnQgJiYgIW5v ZGUtPnNzLnBzLnBsYW4tPnBhcmFsbGVsX2F3YXJlKQorCXsKKwkJLyogTm8gRFNNIHJlcXVpcmVk IGJ5IHRoZSBzY2FuICovCisJCXJldHVybjsKKwl9CisKIAlzaXplID0gTUFYQUxJR04oc2l6ZW9m KFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlKSk7CiAKIAkvKiBhY2NvdW50IGZvciBpbnN0cnVtZW50 YXRpb24sIGlmIHJlcXVpcmVkICovCkBAIC01MjIsMTMgKzUyOSwxNCBAQCBFeGVjQml0bWFwSGVh cEluaXRpYWxpemVEU00oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlQYXJhbGxlbEJp dG1hcEhlYXBTdGF0ZSAqcHN0YXRlOwogCVNoYXJlZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb24g KnNpbnN0cnVtZW50ID0gTlVMTDsKLQlkc2FfYXJlYSAgICpkc2EgPSBub2RlLT5zcy5wcy5zdGF0 ZS0+ZXNfcXVlcnlfZHNhOwogCWNoYXIJICAgKnB0cjsKIAlTaXplCQlzaXplOwogCi0JLyogSWYg dGhlcmUncyBubyBEU0EsIHRoZXJlIGFyZSBubyB3b3JrZXJzOyBpbml0aWFsaXplIG5vdGhpbmcu ICovCi0JaWYgKGRzYSA9PSBOVUxMKQorCWlmICghbm9kZS0+c3MucHMuaW5zdHJ1bWVudCAmJiAh bm9kZS0+c3MucHMucGxhbi0+cGFyYWxsZWxfYXdhcmUpCisJeworCQkvKiBObyBEU00gcmVxdWly ZWQgYnkgdGhlIHNjYW4gKi8KIAkJcmV0dXJuOworCX0KIAogCXNpemUgPSBNQVhBTElHTihzaXpl b2YoUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUpKTsKIAlpZiAobm9kZS0+c3MucHMuaW5zdHJ1bWVu dCAmJiBwY3h0LT5ud29ya2VycyA+IDApCkBAIC01NDMsMTMgKzU1MSwxOCBAQCBFeGVjQml0bWFw SGVhcEluaXRpYWxpemVEU00oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSwKIAlpZiAobm9kZS0+ c3MucHMuaW5zdHJ1bWVudCAmJiBwY3h0LT5ud29ya2VycyA+IDApCiAJCXNpbnN0cnVtZW50ID0g KFNoYXJlZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb24gKikgcHRyOwogCi0JcHN0YXRlLT50Ym1p dGVyYXRvciA9IDA7Ci0KLQkvKiBJbml0aWFsaXplIHRoZSBtdXRleCAqLwotCVNwaW5Mb2NrSW5p dCgmcHN0YXRlLT5tdXRleCk7Ci0JcHN0YXRlLT5zdGF0ZSA9IEJNX0lOSVRJQUw7CisJcHN0YXRl LT50Ym1pdGVyYXRvciA9IEludmFsaWREc2FQb2ludGVyOwogCi0JQ29uZGl0aW9uVmFyaWFibGVJ bml0KCZwc3RhdGUtPmN2KTsKKwkvKgorCSAqIE9ubHkgaW5pdGlhbGl6ZSB0aGVzZSBmaWVsZHMg d2hlbiBwYXJhbGxlbC1hd2FyZSBhcyB0aGV5IGFyZSB1c2VkIHRvCisJICogY29vcmRpbmF0ZSBU Qk0gaXRlcmF0aW9uIGFtb25nc3QgcGFyYWxsZWwgd29ya2Vycy4KKwkgKi8KKwlpZiAobm9kZS0+ c3MucHMucGxhbi0+cGFyYWxsZWxfYXdhcmUpCisJeworCQlTcGluTG9ja0luaXQoJnBzdGF0ZS0+ bXV0ZXgpOworCQlwc3RhdGUtPnN0YXRlID0gQk1fSU5JVElBTDsKKwkJQ29uZGl0aW9uVmFyaWFi bGVJbml0KCZwc3RhdGUtPmN2KTsKKwl9CiAKIAlpZiAoc2luc3RydW1lbnQpCiAJewpAQCAtNTc4 LDkgKzU5MSw4IEBAIEV4ZWNCaXRtYXBIZWFwUmVJbml0aWFsaXplRFNNKEJpdG1hcEhlYXBTY2Fu U3RhdGUgKm5vZGUsCiAJUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUgKnBzdGF0ZSA9IG5vZGUtPnBz dGF0ZTsKIAlkc2FfYXJlYSAgICpkc2EgPSBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfcXVlcnlfZHNh OwogCi0JLyogSWYgdGhlcmUncyBubyBEU0EsIHRoZXJlIGFyZSBubyB3b3JrZXJzOyBkbyBub3Ro aW5nLiAqLwotCWlmIChkc2EgPT0gTlVMTCkKLQkJcmV0dXJuOworCUFzc2VydChub2RlLT5zcy5w cy5wbGFuLT5wYXJhbGxlbF9hd2FyZSk7CisJQXNzZXJ0KGRzYSAhPSBOVUxMKTsKIAogCXBzdGF0 ZS0+c3RhdGUgPSBCTV9JTklUSUFMOwogCkBAIC02MDIsNyArNjE0LDExIEBAIEV4ZWNCaXRtYXBI ZWFwSW5pdGlhbGl6ZVdvcmtlcihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlLAogewogCWNoYXIJ ICAgKnB0cjsKIAotCUFzc2VydChub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfcXVlcnlfZHNhICE9IE5V TEwpOworCWlmICghbm9kZS0+c3MucHMuaW5zdHJ1bWVudCAmJiAhbm9kZS0+c3MucHMucGxhbi0+ cGFyYWxsZWxfYXdhcmUpCisJeworCQkvKiBObyBEU00gcmVxdWlyZWQgYnkgdGhlIHNjYW4gKi8K KwkJcmV0dXJuOworCX0KIAogCXB0ciA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUt PnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCi0tIAoyLjQzLjAKCg== --000000000000349a99064ebab654--