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 1rpNKE-006PUI-0m for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Mar 2024 07:03:54 +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 1rpNKC-00BDqE-RC for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Mar 2024 07:03:52 +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 1rpNKC-00BDq6-7S for pgsql-hackers@lists.postgresql.org; Wed, 27 Mar 2024 07:03:52 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rpNK7-006f8P-R3 for pgsql-hackers@lists.postgresql.org; Wed, 27 Mar 2024 07:03:50 +0000 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-56bc5a3aeb9so8336131a12.3 for ; Wed, 27 Mar 2024 00:03:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711523027; x=1712127827; 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=tS8rQ0IHPt2e9n5DrbzrKB4FnYfzec/QLtk4/JItroI=; b=b3Ta5R4EbU1NCDYV2hy7a0qJAEduHZhXpqnT/mfSz2dO1iTDOo5BRAZBjNM/vjrc8W UxZDMd5ojLcIqwcSyjrBwOsrvqhVlXOfW5IFhP28TlV6nbtufaCxYJTNb2e7a7ITaW+g 0vVYCmLmg4LGDZV8RFz3OO4NLHYAoB1jHv2r/w9Ub7fi0hnEf4wTsP2gu7hpEt3gyaGd L4nx2b9EOLOJglaV4Q2sHxeKDhodSzcSf94V3+zd2k3+DwcmiShWQQlWl+N7uOj2rAtg xwLNWvXz+2Sk7ZoojiHe/LZu73ybHfnqEPXNPFYOHUA4hW3D5yJmFDV3xFUd/NtQJiF2 +rHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711523027; x=1712127827; 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=tS8rQ0IHPt2e9n5DrbzrKB4FnYfzec/QLtk4/JItroI=; b=YupxCdeONr6INlRUuoci+DK4kMiDpZm0CDFhW1EQ1jg7bFI5c8vAw/UQm4ex3OMFRo xNe7E97rYOQp1J4y0Iulb4HMiwCc/UPQ4AceeG0hYrbjxKS6RDX/GXv+96jNLjzERgQN agC+FI/eYDnocyalBuyhhaIKvsn95cZQ1mhvFAJlS8Zhz37Dc3yq5TaXh6Ug31GJLV8F XdPCGu/heI2cAJXs8U5/xUYVTEzRhYaugK8OKpStk2021RZDYqqmu3aGg8K7clyx74Z8 /EW3Ji3hJg2Um08rEwdi82ckZBdYgmYr5+BpexxxR7/lzNSgZ2w0y2tri9sFHWptuvQR EgXg== X-Forwarded-Encrypted: i=1; AJvYcCXrfAsP8Io4KFzMQyeJz7JY7K/KOZ7H7kO0j461rEX1TW9/oQNZ4UpasuLgg5qPDhJNq6dqqPgoB/gp85IfxMUiJyzkgmGsXq3BeXAYA/i2c3r6 X-Gm-Message-State: AOJu0YymuVD6fY9N0giOJqgcg54ID1pWpUHMAlouGAIMwEdpJJO++pj9 pCnv4svtG5Tdb13eA51Ef5FqtpEo/3SQLst7V8M/0BYKlf5vkDxDrkPJDi9qwth6o3tQWtT4puz cQp/ZGL12DpsL7a/Pj23gOMX6AGA= X-Google-Smtp-Source: AGHT+IF03ftMuMj7x6DCAvZmXRo0IPmpDZToRdVgVQcHHdTxije8YaO+A/tLkUVwXG1TgW2MQHBJU4GpVK3UFl9ajZ0= X-Received: by 2002:a17:907:78d0:b0:a47:3b6a:a29b with SMTP id kv16-20020a17090778d000b00a473b6aa29bmr1208741ejc.13.1711523027119; Wed, 27 Mar 2024 00:03:47 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Donghang Lin Date: Wed, 27 Mar 2024 00:03:08 -0700 Message-ID: Subject: Re: Parallel Bitmap Heap Scan reports per-worker stats in EXPLAIN ANALYZE To: Melanie Plageman Cc: Tomas Vondra , Dilip Kumar , David Geier , PostgreSQL Developers , hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="0000000000000e9f9d06149f0236" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000e9f9d06149f0236 Content-Type: multipart/alternative; boundary="0000000000000e9f9c06149f0234" --0000000000000e9f9c06149f0234 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 25, 2024 at 2:11=E2=80=AFPM Melanie Plageman wrote: > As for whether or not per-worker stats should be displayed by default > or only with VERBOSE, it sounds like there are two different > precedents. I don't have a strong feeling one way or the other. > Whichever is most consistent. > Donghang, could you list again which plan nodes and explain options > always print per-worker stats and which only do with the VERBOSE > option? I took a look at explain.c where workers info is printed out. These works for every parallel aware nodes: Buffers stats print for workers with VERBOSE and BUFFERS WAL stats print for workers with VERBOSE and WAL JIT stats print for workers with VERBOSE and COSTS Timing print for workers with VERBOSE and TIMING Rows and loops print for workers with VERBOSE Some specific nodes: Sort / Incremental Sort / Hash / HashAggregate / Memorize and Bitmap Heap Scan (this patch) nodes always print their specific stats for workers. > I did some logging and I do see workers with > counts of lossy/exact not making it into the final count. I haven't > had time to debug more, but it is worth looking into. Indeed, rescan overrides previous scan stats in workers. Attach v5 with v4 plus the fix to aggregate the counts. Regards, Donghang Lin (ServiceNow) --0000000000000e9f9c06149f0234 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, Mar 25, 2024 at 2:11=E2=80=AFPM M= elanie Plageman <melaniepla= geman@gmail.com> wrote:
> As for whethe= r or not per-worker stats should be displayed by default
> or only wi= th VERBOSE, it sounds like there are two different
> precedents. I do= n't have a strong feeling one way or the other.
> Whichever is mo= st consistent.
> Donghang, could you list again which plan nodes and = explain options
> always print per-worker stats and which only do wit= h the VERBOSE
> option?

I took a look at explain.c where worke= rs info is printed out.

These works for every parallel aware nodes:=
Buffers stats print for workers with VERBOSE and BUFFERS
WAL stats = print for workers with VERBOSE and WAL
JIT stats print for workers with = VERBOSE and COSTS
Timing print for workers with VERBOSE and TIMING
Ro= ws and loops print for workers with VERBOSE

Some specific nodes:Sort / Incremental Sort / Hash / HashAggregate / Memorize and Bitmap Heap = Scan (this patch) nodes
always print their specific stats for workers. = =C2=A0

> I did some logging and I do see workers with
> cou= nts of lossy/exact not making it into the final count. I haven't
>= ; had time to debug more, but it is worth looking into.

Indeed, resc= an overrides previous scan stats in workers. =C2=A0
Attach v5 with v4 pl= us the fix to aggregate the counts. =C2=A0

Regards,
Donghang Lin<= br>(ServiceNow)
--0000000000000e9f9c06149f0234-- --0000000000000e9f9d06149f0236 Content-Type: application/octet-stream; name="v5-0001-Parallel-Bitmap-Heap-Scan-reports-per-worker-stat.patch" Content-Disposition: attachment; filename="v5-0001-Parallel-Bitmap-Heap-Scan-reports-per-worker-stat.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu9gkvu60 RnJvbSA5ODk0Y2M1MDA2ZmM3ZGJiMmU4MGExOWJlZDJjN2Q5ODg1YjI0MDAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCA4IE5vdiAyMDIyIDE5OjQwOjMxICswMTAwClN1YmplY3Q6IFtQQVRDSCB2NV0gUGFy YWxsZWwgQml0bWFwIEhlYXAgU2NhbiByZXBvcnRzIHBlci13b3JrZXIgc3RhdHMKClNpbWlsYXJs eSB0byBvdGhlciBub2RlcyAoZS5nLiBoYXNoIGpvaW4sIHNvcnQsIG1lbW9pemUpLApCaXRtYXAg SGVhcCBTY2FuIG5vdyByZXBvcnRzIHBlci13b3JrZXIgc3RhdHMgaW4gdGhlIEVYUExBSU4KQU5B TFlaRSBvdXRwdXQuIFByZXZpb3VzbHkgb25seSB0aGUgaGVhcCBibG9ja3Mgc3RhdHMgZm9yIHRo ZQpsZWFkZXIgd2VyZSByZXBvcnRlZCB3aGljaCB3YXMgaW5jb21wbGV0ZSBpbiBwYXJhbGxlbCBz Y2Fucy4KCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv ZmxhdC9iM2Q4MDk2MS1jMmU1LTM4Y2MtNmEzMi02MTg4NmNkZjc2NmQlNDBnbWFpbC5jb20KLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICB8IDQ1ICsrKysrKysr Ky0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICB8ICAzICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIHwgOTUgKysrKysrKysrKysr KysrKysrKystLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5oIHwg IDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgfCAzMyArKysr KysrLQogNSBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDkyNmQ3MGFmYWYuLjAyMjUxOTk0YzYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKQEAgLTM0NjcsMjYgKzM0NjcsNTcgQEAgc2hvd19oYXNoYWdnX2lu Zm8oQWdnU3RhdGUgKmFnZ3N0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogc3RhdGljIHZvaWQKIHNo b3dfdGlkYml0bWFwX2luZm8oQml0bWFwSGVhcFNjYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWlu U3RhdGUgKmVzKQogeworCUFzc2VydChlcy0+YW5hbHl6ZSk7CisKIAlpZiAoZXMtPmZvcm1hdCAh PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCXsKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiRXhh Y3QgSGVhcCBCbG9ja3MiLCBOVUxMLAotCQkJCQkJCSAgIHBsYW5zdGF0ZS0+ZXhhY3RfcGFnZXMs IGVzKTsKKwkJCQkJCQkgICBwbGFuc3RhdGUtPnN0YXRzLmV4YWN0X3BhZ2VzLCBlcyk7CiAJCUV4 cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkxvc3N5IEhlYXAgQmxvY2tzIiwgTlVMTCwKLQkJCQkJCQkg ICBwbGFuc3RhdGUtPmxvc3N5X3BhZ2VzLCBlcyk7CisJCQkJCQkJICAgcGxhbnN0YXRlLT5zdGF0 cy5sb3NzeV9wYWdlcywgZXMpOwogCX0KIAllbHNlCiAJewotCQlpZiAocGxhbnN0YXRlLT5leGFj dF9wYWdlcyA+IDAgfHwgcGxhbnN0YXRlLT5sb3NzeV9wYWdlcyA+IDApCisJCWlmIChwbGFuc3Rh dGUtPnN0YXRzLmV4YWN0X3BhZ2VzID4gMCB8fCBwbGFuc3RhdGUtPnN0YXRzLmxvc3N5X3BhZ2Vz ID4gMCkKIAkJewogCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOwogCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhlcy0+c3RyLCAiSGVhcCBCbG9ja3M6Iik7Ci0JCQlpZiAocGxhbnN0YXRlLT5leGFj dF9wYWdlcyA+IDApCi0JCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiIGV4YWN0PSVsZCIs IHBsYW5zdGF0ZS0+ZXhhY3RfcGFnZXMpOwotCQkJaWYgKHBsYW5zdGF0ZS0+bG9zc3lfcGFnZXMg PiAwKQotCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiBsb3NzeT0lbGQiLCBwbGFuc3Rh dGUtPmxvc3N5X3BhZ2VzKTsKKwkJCWlmIChwbGFuc3RhdGUtPnN0YXRzLmV4YWN0X3BhZ2VzID4g MCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgZXhhY3Q9JWxkIiwgcGxhbnN0YXRl LT5zdGF0cy5leGFjdF9wYWdlcyk7CisJCQlpZiAocGxhbnN0YXRlLT5zdGF0cy5sb3NzeV9wYWdl cyA+IDApCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiIGxvc3N5PSVsZCIsIHBsYW5z dGF0ZS0+c3RhdHMubG9zc3lfcGFnZXMpOwogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZXMtPnN0 ciwgJ1xuJyk7CiAJCX0KIAl9CisKKwlpZiAocGxhbnN0YXRlLT5wc3RhdGUgIT0gTlVMTCkKKwl7 CisJCWZvciAoaW50IG4gPSAwOyBuIDwgcGxhbnN0YXRlLT5zaW5zdHJ1bWVudC0+bnVtX3dvcmtl cnM7IG4rKykKKwkJeworCQkJQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24gKnNpID0gJnBs YW5zdGF0ZS0+c2luc3RydW1lbnQtPnNpbnN0cnVtZW50W25dOworCisJCQlpZiAoc2ktPmV4YWN0 X3BhZ2VzID09IDAgJiYgc2ktPmxvc3N5X3BhZ2VzID09IDApCisJCQkJY29udGludWU7CisKKwkJ CWlmIChlcy0+d29ya2Vyc19zdGF0ZSkKKwkJCQlFeHBsYWluT3BlbldvcmtlcihuLCBlcyk7CisK KwkJCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCisJCQl7CisJCQkJRXhw bGFpbkluZGVudFRleHQoZXMpOworCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIkhlYXAg QmxvY2tzOiBleGFjdD0lbGQgbG9zc3k9JWxkXG4iLAorCQkJCQkJIHNpLT5leGFjdF9wYWdlcywg c2ktPmxvc3N5X3BhZ2VzKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlFeHBsYWluUHJvcGVy dHlJbnRlZ2VyKCJFeGFjdCBIZWFwIEJsb2NrcyIsIE5VTEwsIHNpLT5leGFjdF9wYWdlcywgZXMp OworCQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkxvc3N5IEhlYXAgQmxvY2tzIiwgTlVMTCwg c2ktPmxvc3N5X3BhZ2VzLCBlcyk7CisJCQl9CisKKwkJCWlmIChlcy0+d29ya2Vyc19zdGF0ZSkK KwkJCQlFeHBsYWluQ2xvc2VXb3JrZXIobiwgZXMpOworCQl9CisJfQogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCA4YzUzZDE4MzRlLi5iZmIzNDE5ZWZiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTA3Niw2ICsxMDc2LDkgQEAgRXhlY1Bh cmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCWNh c2UgVF9NZW1vaXplU3RhdGU6CiAJCQlFeGVjTWVtb2l6ZVJldHJpZXZlSW5zdHJ1bWVudGF0aW9u KChNZW1vaXplU3RhdGUgKikgcGxhbnN0YXRlKTsKIAkJCWJyZWFrOworCQljYXNlIFRfQml0bWFw SGVhcFNjYW5TdGF0ZToKKwkJCUV4ZWNCaXRtYXBIZWFwUmV0cmlldmVJbnN0cnVtZW50YXRpb24o KEJpdG1hcEhlYXBTY2FuU3RhdGUgKikgcGxhbnN0YXRlKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0 OgogCQkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YwppbmRleCBjZWU3ZjQ1YWFiLi42OGI3MWQ4MmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtMjA1LDkgKzIwNSw5IEBAIEJpdG1hcEhlYXBOZXh0KEJp dG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJCQlCaXRtYXBBZGp1c3RQcmVmZXRjaEl0ZXJhdG9y KG5vZGUsIHRibXJlcyk7CiAKIAkJCWlmICh0Ym1yZXMtPm50dXBsZXMgPj0gMCkKLQkJCQlub2Rl LT5leGFjdF9wYWdlcysrOworCQkJCW5vZGUtPnN0YXRzLmV4YWN0X3BhZ2VzKys7CiAJCQllbHNl Ci0JCQkJbm9kZS0+bG9zc3lfcGFnZXMrKzsKKwkJCQlub2RlLT5zdGF0cy5sb3NzeV9wYWdlcysr OwogCiAJCQkvKgogCQkJICogV2UgY2FuIHNraXAgZmV0Y2hpbmcgdGhlIGhlYXAgcGFnZSBpZiB3 ZSBkb24ndCBuZWVkIGFueSBmaWVsZHMKQEAgLTY0Nyw2ICs2NDcsMTkgQEAgRXhlY0VuZEJpdG1h cEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCiB7CiAJVGFibGVTY2FuRGVzYyBz Y2FuRGVzYzsKIAorCS8qCisJICogV2hlbiBlbmRpbmcgYSBwYXJhbGxlbCB3b3JrZXIsIGNvcHkg dGhlIHN0YXRpc3RpY3MgZ2F0aGVyZWQgYnkgdGhlCisJICogd29ya2VyIGJhY2sgaW50byBzaGFy ZWQgbWVtb3J5IHNvIHRoYXQgaXQgY2FuIGJlIHBpY2tlZCB1cCBieSB0aGUgbWFpbgorCSAqIHBy b2Nlc3MgdG8gcmVwb3J0IGluIEVYUExBSU4gQU5BTFlaRS4KKwkgKi8KKwlpZiAobm9kZS0+c2lu c3RydW1lbnQgIT0gTlVMTCAmJiBJc1BhcmFsbGVsV29ya2VyKCkpCisJeworCQlBc3NlcnQoUGFy YWxsZWxXb3JrZXJOdW1iZXIgPD0gbm9kZS0+c2luc3RydW1lbnQtPm51bV93b3JrZXJzKTsKKwkJ Qml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24gKnNpID0gJm5vZGUtPnNpbnN0cnVtZW50LT5z aW5zdHJ1bWVudFtQYXJhbGxlbFdvcmtlck51bWJlcl07CisJCXNpLT5leGFjdF9wYWdlcyArPSBu b2RlLT5zdGF0cy5leGFjdF9wYWdlczsKKwkJc2ktPmxvc3N5X3BhZ2VzICs9IG5vZGUtPnN0YXRz Lmxvc3N5X3BhZ2VzOworCX0KKwogCS8qCiAJICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRo ZSBub2RlCiAJICovCkBAIC03MTYsOCArNzI5LDggQEAgRXhlY0luaXRCaXRtYXBIZWFwU2NhbihC aXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJc2NhbnN0 YXRlLT5yZXR1cm5fZW1wdHlfdHVwbGVzID0gMDsKIAlzY2Fuc3RhdGUtPnZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKIAlzY2Fuc3RhdGUtPnB2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0Jc2Nh bnN0YXRlLT5leGFjdF9wYWdlcyA9IDA7Ci0Jc2NhbnN0YXRlLT5sb3NzeV9wYWdlcyA9IDA7CisJ c2NhbnN0YXRlLT5zdGF0cy5leGFjdF9wYWdlcyA9IDA7CisJc2NhbnN0YXRlLT5zdGF0cy5sb3Nz eV9wYWdlcyA9IDA7CiAJc2NhbnN0YXRlLT5wcmVmZXRjaF9pdGVyYXRvciA9IE5VTEw7CiAJc2Nh bnN0YXRlLT5wcmVmZXRjaF9wYWdlcyA9IDA7CiAJc2NhbnN0YXRlLT5wcmVmZXRjaF90YXJnZXQg PSAwOwpAQCAtODQwLDcgKzg1MywyMiBAQCB2b2lkCiBFeGVjQml0bWFwSGVhcEVzdGltYXRlKEJp dG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCSAgIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkK IHsKLQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHNpemVvZihQYXJh bGxlbEJpdG1hcEhlYXBTdGF0ZSkpOworCVNpemUJCXNpemU7CisKKwkvKgorCSAqIFdlIHN0b3Jl IFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlIGZvbGxvd2VkIGJ5CisJICogU2hhcmVkQml0bWFwSGVh cEluc3RydW1lbnRhdGlvbkluZm8gaW4gdGhlIHNhbWUgc2htZW0gY2h1bmsuCisJICovCisJc2l6 ZSA9IE1BWEFMSUdOKHNpemVvZihQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZSkpOworCisJLyogZG9u J3QgbmVlZCB0aGlzIGlmIG5vdCBpbnN0cnVtZW50aW5nIG9yIG5vIHdvcmtlcnMgKi8KKwlpZiAo bm9kZS0+c3MucHMuaW5zdHJ1bWVudCAmJiBwY3h0LT5ud29ya2VycyA+IDApCisJeworCQlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgb2Zmc2V0b2YoU2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlv biwgc2luc3RydW1lbnQpKTsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKHBjeHQt Pm53b3JrZXJzLCBzaXplb2YoQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24pKSk7CisJfQor CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBzaXplKTsKIAlzaG1f dG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiB9CiAKQEAgLTg1NSwxMyAr ODgzLDI3IEBAIEV4ZWNCaXRtYXBIZWFwSW5pdGlhbGl6ZURTTShCaXRtYXBIZWFwU2NhblN0YXRl ICpub2RlLAogCQkJCQkJCVBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIHsKIAlQYXJhbGxlbEJpdG1h cEhlYXBTdGF0ZSAqcHN0YXRlOworCVNoYXJlZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb24gKnNp bnN0cnVtZW50ID0gTlVMTDsKIAlkc2FfYXJlYSAgICpkc2EgPSBub2RlLT5zcy5wcy5zdGF0ZS0+ ZXNfcXVlcnlfZHNhOworCWNoYXIJICAgKnB0cjsKKwlTaXplCQlzaXplOwogCiAJLyogSWYgdGhl cmUncyBubyBEU0EsIHRoZXJlIGFyZSBubyB3b3JrZXJzOyBpbml0aWFsaXplIG5vdGhpbmcuICov CiAJaWYgKGRzYSA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQlwc3RhdGUgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywgc2l6ZW9mKFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlKSk7CisJc2l6ZSA9 IE1BWEFMSUdOKHNpemVvZihQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZSkpOworCWlmIChub2RlLT5z cy5wcy5pbnN0cnVtZW50ICYmIHBjeHQtPm53b3JrZXJzID4gMCkKKwl7CisJCXNpemUgPSBhZGRf c2l6ZShzaXplLCBvZmZzZXRvZihTaGFyZWRCaXRtYXBIZWFwSW5zdHJ1bWVudGF0aW9uLCBzaW5z dHJ1bWVudCkpOworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUocGN4dC0+bndvcmtl cnMsIHNpemVvZihCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbikpKTsKKwl9CisKKwlwdHIg PSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgc2l6ZSk7CisJcHN0YXRlID0gKFBhcmFsbGVs Qml0bWFwSGVhcFN0YXRlICopIHB0cjsKKwlwdHIgKz0gTUFYQUxJR04oc2l6ZW9mKFBhcmFsbGVs Qml0bWFwSGVhcFN0YXRlKSk7CisJaWYgKG5vZGUtPnNzLnBzLmluc3RydW1lbnQgJiYgcGN4dC0+ bndvcmtlcnMgPiAwKQorCQlzaW5zdHJ1bWVudCA9IChTaGFyZWRCaXRtYXBIZWFwSW5zdHJ1bWVu dGF0aW9uICopIHB0cjsKIAogCXBzdGF0ZS0+dGJtaXRlcmF0b3IgPSAwOwogCXBzdGF0ZS0+cHJl ZmV0Y2hfaXRlcmF0b3IgPSAwOwpAQCAtODc0LDggKzkxNiwxNiBAQCBFeGVjQml0bWFwSGVhcElu aXRpYWxpemVEU00oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSwKIAogCUNvbmRpdGlvblZhcmlh YmxlSW5pdCgmcHN0YXRlLT5jdik7CiAKKwkvKiBlbnN1cmUgYW55IHVuZmlsbGVkIHNsb3RzIHdp bGwgY29udGFpbiB6ZXJvZXMgKi8KKwlpZiAoc2luc3RydW1lbnQpCisJeworCQlzaW5zdHJ1bWVu dC0+bnVtX3dvcmtlcnMgPSBwY3h0LT5ud29ya2VyczsKKwkJbWVtc2V0KHNpbnN0cnVtZW50LT5z aW5zdHJ1bWVudCwgMCwgcGN4dC0+bndvcmtlcnMgKiBzaXplb2YoQml0bWFwSGVhcFNjYW5JbnN0 cnVtZW50YXRpb24pKTsKKwl9CisKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNz LnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHN0YXRlKTsKIAlub2RlLT5wc3RhdGUgPSBwc3RhdGU7 CisJbm9kZS0+c2luc3RydW1lbnQgPSBzaW5zdHJ1bWVudDsKIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt OTE3LDEwICs5NjcsMzcgQEAgdm9pZAogRXhlY0JpdG1hcEhlYXBJbml0aWFsaXplV29ya2VyKEJp dG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJICAgUGFyYWxsZWxXb3JrZXJDb250ZXh0 ICpwd2N4dCkKIHsKLQlQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZSAqcHN0YXRlOworCWNoYXIJICAg KnB0cjsKIAogCUFzc2VydChub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfcXVlcnlfZHNhICE9IE5VTEwp OwogCi0JcHN0YXRlID0gc2htX3RvY19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+c3MucHMucGxh bi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7Ci0Jbm9kZS0+cHN0YXRlID0gcHN0YXRlOworCXB0ciA9 IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9p ZCwgZmFsc2UpOworCisJbm9kZS0+cHN0YXRlID0gKFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlICop IHB0cjsKKwlwdHIgKz0gTUFYQUxJR04oc2l6ZW9mKFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlKSk7 CisKKwlpZiAobm9kZS0+c3MucHMuaW5zdHJ1bWVudCkKKwkJbm9kZS0+c2luc3RydW1lbnQgPSAo U2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlvbiAqKSBwdHI7Cit9CisKKy8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCQlFeGVjQml0bWFwSGVhcFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uCisgKgorICoJCVRyYW5z ZmVyIGJpdG1hcCBoZWFwIHNjYW4gc3RhdGlzdGljcyBmcm9tIERTTSB0byBwcml2YXRlIG1lbW9y eS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorRXhlY0JpdG1hcEhlYXBSZXRyaWV2ZUluc3RydW1l bnRhdGlvbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQoreworCVNoYXJlZEJpdG1hcEhlYXBJ bnN0cnVtZW50YXRpb24gKnNpbnN0cnVtZW50ID0gbm9kZS0+c2luc3RydW1lbnQ7CisJU2l6ZQkJ c2l6ZTsKKworCWlmIChzaW5zdHJ1bWVudCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlzaXplID0g b2Zmc2V0b2YoU2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlvbiwgc2luc3RydW1lbnQpCisJ CSsgc2luc3RydW1lbnQtPm51bV93b3JrZXJzICogc2l6ZW9mKEJpdG1hcEhlYXBTY2FuSW5zdHJ1 bWVudGF0aW9uKTsKKworCW5vZGUtPnNpbnN0cnVtZW50ID0gcGFsbG9jKHNpemUpOworCW1lbWNw eShub2RlLT5zaW5zdHJ1bWVudCwgc2luc3RydW1lbnQsIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uaAppbmRleCBlYTAwM2E5Y2FhLi40NDZhNjY0NTkw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uaApAQCAtMjgsNSAr MjgsNiBAQCBleHRlcm4gdm9pZCBFeGVjQml0bWFwSGVhcFJlSW5pdGlhbGl6ZURTTShCaXRtYXBI ZWFwU2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsK IGV4dGVybiB2b2lkIEV4ZWNCaXRtYXBIZWFwSW5pdGlhbGl6ZVdvcmtlcihCaXRtYXBIZWFwU2Nh blN0YXRlICpub2RlLAogCQkJCQkJCQkJCSAgIFBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQp OworZXh0ZXJuIHZvaWQgRXhlY0JpdG1hcEhlYXBSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihCaXRt YXBIZWFwU2NhblN0YXRlICpub2RlKTsKIAogI2VuZGlmCQkJCQkJCS8qIE5PREVCSVRNQVBIRUFQ U0NBTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDE3NzRjNTZhZTMuLjgzMDZlMGM0N2Ig MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xNzM1LDYgKzE3MzUsMTIgQEAgdHlwZWRlZiBzdHJ1 Y3QgQml0bWFwSW5kZXhTY2FuU3RhdGUKIAlzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEgKmJpc3Nf U2NhbkRlc2M7CiB9IEJpdG1hcEluZGV4U2NhblN0YXRlOwogCit0eXBlZGVmIHN0cnVjdCBCaXRt YXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbgoreworCWxvbmcgbG9zc3lfcGFnZXM7CisJbG9uZyBl eGFjdF9wYWdlczsKK30gQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb247CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0KICAqCSBTaGFyZWRCaXRtYXBTdGF0ZSBpbmZvcm1hdGlvbgogICoKQEAgLTE3 NzgsNiArMTc4NCwyMCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZQog CUNvbmRpdGlvblZhcmlhYmxlIGN2OwogfSBQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZTsKIAorLyog LS0tLS0tLS0tLS0tLS0tLQorICoJIEluc3RydW1lbnRhdGlvbiBkYXRhIGZvciBhIHBhcmFsbGVs IGJpdG1hcCBoZWFwIHNjYW4uCisgKgorICogRHVyaW5nIGEgcGFyYWxsZWwgYml0bWFwIGhlYXAg c2NhbiwgdGhpcyBsaXZlcyBpbiBzaGFyZWQgbWVtb3J5LiAgQXQgdGhlCisgKiBlbmQsIGVhY2gg d29ya2VyIGNvcGllcyB0aGVpciBvd24gc3RhdHMgdG8gdGhlIHJpZ2h0IHNsb3QuICBGaW5hbGx5 LCB0aGUKKyAqIGxlYWRlciBjb3BpZXMgdGhlIGRhdGEgdG8gaXRzIGxvY2FsIG1lbW9yeQorICAq IC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2hhcmVkQml0bWFwSGVhcElu c3RydW1lbnRhdGlvbgoreworCWludAkJCW51bV93b3JrZXJzOworCUJpdG1hcEhlYXBTY2FuSW5z dHJ1bWVudGF0aW9uIHNpbnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Cit9IFNoYXJl ZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb247CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCSBC aXRtYXBIZWFwU2NhblN0YXRlIGluZm9ybWF0aW9uCiAgKgpAQCAtMTgxMiw4ICsxODMyLDYgQEAg dHlwZWRlZiBzdHJ1Y3QgQml0bWFwSGVhcFNjYW5TdGF0ZQogCWludAkJCXJldHVybl9lbXB0eV90 dXBsZXM7CiAJQnVmZmVyCQl2bWJ1ZmZlcjsKIAlCdWZmZXIJCXB2bWJ1ZmZlcjsKLQlsb25nCQll eGFjdF9wYWdlczsKLQlsb25nCQlsb3NzeV9wYWdlczsKIAlUQk1JdGVyYXRvciAqcHJlZmV0Y2hf aXRlcmF0b3I7CiAJaW50CQkJcHJlZmV0Y2hfcGFnZXM7CiAJaW50CQkJcHJlZmV0Y2hfdGFyZ2V0 OwpAQCAtMTgyMiw2ICsxODQwLDE3IEBAIHR5cGVkZWYgc3RydWN0IEJpdG1hcEhlYXBTY2FuU3Rh dGUKIAlUQk1TaGFyZWRJdGVyYXRvciAqc2hhcmVkX3RibWl0ZXJhdG9yOwogCVRCTVNoYXJlZEl0 ZXJhdG9yICpzaGFyZWRfcHJlZmV0Y2hfaXRlcmF0b3I7CiAJUGFyYWxsZWxCaXRtYXBIZWFwU3Rh dGUgKnBzdGF0ZTsKKworCS8qCisJICogSW4gYSBwYXJhbGxlbGl6ZWQgYml0bWFwIGhlYXAgc2Nh biwgZWFjaCB3b3JrZXIgc2V0cyB0aGVpcgorCSAqIGluc3RydW1lbnRhdG9uIGRhdGEgaW4gcHN0 YXRlLT5zaW5zdHJ1bWVudCBhdCB0aGUgZW5kLiAgVGhlIGxlYWRlcgorCSAqIGNvcGllcyB0aGUg c2hhcmVkLW1lbW9yeSBpbmZvIGJhY2sgdG8gbG9jYWwgc3RvcmFnZSBiZWZvcmUgRFNNCisJICog c2h1dGRvd24sIGFuZCBzdG9yZXMgaXQgaGVyZSBpbiAnaW5zdHJ1bWVudCcuICBJdCByZW1haW5z IE5VTEwgaW4KKwkgKiB3b3JrZXJzIGFuZCBpbiBub24tcGFyYWxsZWwgc2NhbnMuCisJICovCisJ U2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlvbiAqc2luc3RydW1lbnQ7CisKKwlCaXRtYXBI ZWFwU2Nhbkluc3RydW1lbnRhdGlvbiBzdGF0czsKIH0gQml0bWFwSGVhcFNjYW5TdGF0ZTsKIAog LyogLS0tLS0tLS0tLS0tLS0tLQotLSAKMi40MC4xCgo= --0000000000000e9f9d06149f0236--