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 1wcLO1-003HGa-0r for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 11:03:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcLMz-000Rql-1n for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 11:02:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcLMz-000Rqc-0T for pgsql-hackers@lists.postgresql.org; Wed, 24 Jun 2026 11:02:13 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wcLMw-000000000t1-1BHp for pgsql-hackers@lists.postgresql.org; Wed, 24 Jun 2026 11:02:12 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-37d55e8d3e3so532725a91.0 for ; Wed, 24 Jun 2026 04:02:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782298927; cv=none; d=google.com; s=arc-20260327; b=eikd1B2fHRPjx2ZZQfyx2n30H5sgNQ78cyrxJZZWsszOoP4+QQBJznF7jn3OEnJtQk 6SmSmU4HJmw/Ie34NHW/P5yhvut2lrw+zI66Zo/GzJVN3uG9g5Wby9jziaDKXeofRYiY qY2PFo/FVAEE1i4TbNcgNsQgpEWSD5iHDoexJVz4PbkL3qBZ4ZiapSwlVMgc/6Z+Txkm LvY2uOavmy/kJ35GHAUzfKHXjNyfJ7mnNXKtyhRDIQBd7qA9ouNSMNEwYA7w7sKNZsjT ho+Tu7dizH6XdJTXJhNwdPe1lMB1vyY0RVYmaCpdEVBZofqBh7XpwZ7vP+RgyFd3oiWy PnOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=HLYOOdFqmBRFB7bEiljJpO5kfi4aISU+7HDjGAIP7gQ=; fh=mjlu1lZDcg4lhFT9/WgBDd4GRvaLt5A31E6fnW3wbhM=; b=LVP7pOFMj/DL7o9PTSqrYNNvpzPmcreLAMaN5M6Z1q2k6tf0EHn5pMFEJpsWjlQTMK XpUdwdySJ9e5jDwWqvj0ABP+g3bKI9a9z3qiXHz83SyG+zw+Zf9ickon4EgK2zcTgZbC vnJEgkwM+mMRthnXoZKFUaNlQk4weLzBiRqzfyhD2cs0RUhZNumXaZo7TeTbu0X1BAEK yTYPlZpKaExMYOOOeNWIG5UfvZPM0KbfJvZK3S1rITktkaNIQvBtl5u45AMuul3GDWXw pbNItedixJ7Jxi5O3y6wJGET83xbyh4GqAkUojyoZ99FNv7ZnMDIOya+NlvlPdnNhzGt 0JNA==; 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=1782298927; x=1782903727; 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=HLYOOdFqmBRFB7bEiljJpO5kfi4aISU+7HDjGAIP7gQ=; b=J0KrKdKWd16TeN7NKFDMBh5OWlCukA28zZA9AYwmA0k7c9U8sNuzAY9E7G9SOehIWd 8SIgOnluy8+umNUFT6rGUSfhapO4Ncz+hS7HFjY5d7ie586aAuSaBQYi0VRhxHmXn6nX ygPsWb25VpBfIuQq0XRvFnDRcy0bpd0B+wYyCStivw0mwclflY1s4AS4cVTYqpOM4zdq rEclHabuqcvL+pGZvvfd8xu/aRKELaI/NcupeKPqgVtiwyW9pujjgx+MWTMtE8ekHNb1 Pgk0hjIs+vQsUbQaHtHuhlT4pjSJY5bt2auC+V8+4TGX2GnRB9CvbGeq4kwoGprN/NkK UB7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782298927; x=1782903727; 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=HLYOOdFqmBRFB7bEiljJpO5kfi4aISU+7HDjGAIP7gQ=; b=RZcOC28SN9EkpVhmesqQkQZuLbYRZdNSTg8hYfbECVbdp6noEQh/iCZHWZl/qDb46s zwmz1wFTpDfrNWMz1h4T8fKxbJ37OivV71QS8emhS4XNvKhxjyKV0DnUIQ2Oqz9EDQZC 7z+IS3dfpAnTfJ3oBTt6A5uPaPBc57bJ88EglJbsFYDVJ0dwRRRZH8iefGuCPwjpOTNi Z3QW/um84mIAjT58Ynu4BnrHZjmDOH+SvUBS7hNxsD9JflReopcjFanxIoUN4yRRj9C3 uL9DV7dGU9WJTt5BirloCv2PW++o+htsNPDOlTgAtTmtaZwtrBJA992kWpme6W4qxb/Q 0kPg== X-Forwarded-Encrypted: i=1; AHgh+RrbkF5/g7sdPKsEqbNVGJgoNGhmiHMXClW8MH2mscNLN93TEMnZs0L2VCiuZEYStaLJKWCq9MdJroW2PsTr@lists.postgresql.org X-Gm-Message-State: AOJu0YzyQ+7afVXfG2bmtMCT6vu8LE/GHa/dlpkOfMdu73PQGyeFM878 0ms5LdJY3noVmoJoSShmVzJla4C0CGisJjS2G8YOK4nyOWRqwe+XF+io5CA5f+OYjgUXhmmWBLQ HJUFZyEPdW64Sd0+/20GajRqbsXVkl7s= X-Gm-Gg: AfdE7cnX4TGjDeNTXwOXClI4BNVm3D1dNoK/5rmuwECsGcP+OvdUusM2yDz6Jqj/i2I 3DL9EqroDcKA0OhZKzTcX5/EgHSq3DFhQmsMGYPJf5kS8Slj3UcY4+RdmADVBDNMdTMLwof8SbZ o8LeUCn5XNwtGoLeap2NlsN5E3o2oUj15VwGBYSNaVpAtjRMQvx12eMJMMvSamaimvlbOZtK/D2 EtxC0Bm0qEkLJ5KGGVOMDNVR2ZF2+jwbwVChsQOHTOWCX7SWtzQBSsF7kzbAckBdivrBiPv7Xec c54gNnAKTFPtXQ2ObTvXL9i2y/1fE8NEkzIlBZUMxa270dtQEpre6IDrcwiDnKaKoVakNLWc/g= = X-Received: by 2002:a17:90b:1b07:b0:36a:8519:a4e9 with SMTP id 98e67ed59e1d1-37dcd792db9mr6931361a91.18.1782298927327; Wed, 24 Jun 2026 04:02:07 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Kapila Date: Wed, 24 Jun 2026 16:31:54 +0530 X-Gm-Features: AVVi8Ce8gxYPjwLQakBLlIpibDtFNXOkcULRcOsn8LI1WiF0WD32O1e7xg1AK0g Message-ID: Subject: Re: Proposal: Conflict log history table for Logical Replication To: Dilip Kumar Cc: vignesh C , Nisha Moond , shveta malik , Peter Smith , Masahiko Sawada , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000072881f0654fdce26" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000072881f0654fdce26 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 24, 2026 at 12:53=E2=80=AFPM Dilip Kumar wrote: > > On Tue, Jun 23, 2026 at 2:22=E2=80=AFPM vignesh C w= rote: > > > > Few comments: > > 1) Currently we are storing these in shared memory. Looking at the > > implementation, these fields are purely worker-private state used to > > ferry data across the error boundary from prepare_conflict_log_tuple() > > (inside the PG_TRY block) to ProcessPendingConflictLogTuple() (inside > > the PG_CATCH block). Good point. If it is not required by another process, should > > it be moved out of shared memory. > > + /* A conflict log tuple that is prepared but not yet inserted. = */ > > + HeapTuple conflict_log_tuple; > > + > > + /* > > + * Error-context string describing the conflict above, used to > > annotate any > > + * error raised while inserting conflict_log_tuple into the con= flict log > > + * table. Allocated, like conflict_log_tuple, in ApplyContext. > > + */ > > + char *conflict_log_errcontext; > > Yeah there is no need for them to be in shared memory, but do we have > any other data sturcture where these fits naturally, or we can make > them global variables? > Or we can have a file local struct PendingConflictLogData similar to FlushPosition. See the attached top-up patch. As the comment ("Allocated, like conflict_log_tuple, in ApplyContext") says it is allocated in process-local Apply context, it is not safe to keep them in shared memory. > > > 4) Is the condition remote_commit_ts > 0 done intentionally? > > + if (remote_commit_ts > 0) > > + values[attno++] =3D TimestampTzGetDatum(remote_commit_t= s); > > + else > > + nulls[attno++] =3D true; > > > > As I had seen some negative values for certain timestamps. Shouldn't > > the check be !=3D 0? > > SELECT extract(epoch FROM '1969-12-31 23:59:59+00'::timestamptz); > > extract > > ----------- > > -1.000000 > > (1 row) > > I think the 0 can also be generated for timestamptz, but since we are > initializing `timestamptz` with 0, checking it seems correct.=3D 0, but > I need to put more thought into this. > I think either way (>0 or !=3D0) are fine as both will serve the desired purpose but I think !=3D0 will be more robust because we are using 0 as sentinel value for remote_commit_ts. --=20 With Regards, Amit Kapila. --00000000000072881f0654fdce26 Content-Type: text/plain; charset="US-ASCII"; name="v1_amit-0001-Move-pending-conflict-log-state-out-of-share.txt" Content-Disposition: attachment; filename="v1_amit-0001-Move-pending-conflict-log-state-out-of-share.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqryfwd80 RnJvbSA3NzM2NzFmMDZiZjNjMmU1NzdkMGFkOTlkNDBhMjNiODRjYWU5MjU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogV2VkLCAyNCBKdW4gMjAyNiAxNjowODoxOCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjFf YW1pdF0gTW92ZSBwZW5kaW5nIGNvbmZsaWN0IGxvZyBzdGF0ZSBvdXQgb2Ygc2hhcmVkIG1lbW9y eQoKVGhlIHByZXBhcmVkIGNvbmZsaWN0IHR1cGxlIGFuZCBpdHMgZXJyb3ItY29udGV4dCBzdHJp bmcgYXJlIHB1cmVseQp3b3JrZXItcHJpdmF0ZSBkYXRhIGZlcnJpZWQgYWNyb3NzIHRoZSBhcHBs eSBlcnJvciBib3VuZGFyeSwgc28ga2VlcCB0aGVtIGluIGEKcHJvY2Vzcy1sb2NhbCBzdGF0aWMg c3RydWN0IGluIGNvbmZsaWN0LmMgaW5zdGVhZCBvZiB0aGUgc2hhcmVkIExvZ2ljYWxSZXBXb3Jr ZXIuCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jIHwgNjcg KysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s YXVuY2hlci5jIHwgIDEgLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmggIHwgMTAgLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAzNSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Nv bmZsaWN0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMKaW5k ZXggOTgzY2RmOTRjZjAuLmU5MjdjMTUyMDI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9jb25mbGljdC5jCkBAIC0xMDEsNiArMTAxLDI1IEBAIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBDb25mbGljdFR5cGVOYW1lc1tdID0gewogCVtDVF9NVUxUSVBMRV9VTklRVUVfQ09O RkxJQ1RTXSA9ICJtdWx0aXBsZV91bmlxdWVfY29uZmxpY3RzIgogfTsKIAorLyoKKyAqIFdvcmtl ci1wcml2YXRlIHN0YXRlIGZvciBhIGNvbmZsaWN0IHRoYXQgaGFzIGJlZW4gcHJlcGFyZWQgZm9y IHRoZSBjb25mbGljdAorICogbG9nIHRhYmxlIGJ1dCBub3QgeWV0IGluc2VydGVkLiAgSXQgY2Fy cmllcyB0aGUgcHJlcGFyZWQgdHVwbGUsIGFuZCBhCisgKiBkZXNjcmlwdGlvbiBvZiB0aGUgY29u ZmxpY3QgdXNlZCBmb3IgZXJyb3IgY29udGV4dCwgZnJvbQorICogcHJlcGFyZV9jb25mbGljdF9s b2dfdHVwbGUoKSBhY3Jvc3MgdGhlIGFwcGx5IGVycm9yIGJvdW5kYXJ5IHRvCisgKiBQcm9jZXNz UGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUoKS9JbnNlcnRDb25mbGljdExvZ1R1cGxlKCkuICBCb3Ro IHBvaW50ZXJzCisgKiByZWZlcmVuY2UgbWVtb3J5IGFsbG9jYXRlZCBpbiBBcHBseUNvbnRleHQu CisgKgorICogVGhpcyBpcyBwdXJlbHkgcHJvY2Vzcy1sb2NhbCBzdGF0ZSwgc28gaXQgbGl2ZXMg aGVyZSByYXRoZXIgdGhhbiBpbiB0aGUKKyAqIHNoYXJlZCBMb2dpY2FsUmVwV29ya2VyIHN0cnVj dC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGVuZGluZ0NvbmZsaWN0TG9nRGF0YQoreworCUhlYXBU dXBsZQl0dXBsZTsJCQkvKiBwcmVwYXJlZCwgbm90LXlldC1pbnNlcnRlZCBjb25mbGljdCB0dXBs ZSAqLworCWNoYXIJICAgKmVycmNvbnRleHRfc3RyOwkvKiBjb25mbGljdCBkZXNjcmlwdGlvbiBm b3IgZXJyb3IgY29udGV4dCAqLworfSBQZW5kaW5nQ29uZmxpY3RMb2c7CisKK3N0YXRpYyBQZW5k aW5nQ29uZmxpY3RMb2cgcGVuZGluZ19jb25mbGljdF9sb2cgPSB7MH07CisKIHN0YXRpYyBpbnQJ ZXJyY29kZV9hcHBseV9jb25mbGljdChDb25mbGljdFR5cGUgdHlwZSk7CiBzdGF0aWMgdm9pZCBl cnJkZXRhaWxfYXBwbHlfY29uZmxpY3QoRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkgUmVzdWx0 UmVsSW5mbyAqcmVsaW5mbywKQEAgLTQyNywxNSArNDQ2LDE1IEBAIFJlcG9ydEFwcGx5Q29uZmxp Y3QoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sIGludCBlbGV2ZWwsCiAJ CQkJICogaW5zZXJ0aW9uIHBhdGggKFByb2Nlc3NQZW5kaW5nQ29uZmxpY3RMb2dUdXBsZSkgZG9l cyBub3QgcmV0cnkKIAkJCQkgKiB0aGlzIHNhbWUgZmFpbGluZyBpbnNlcnQuCiAJCQkJICovCi0J CQkJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlICE9IE5VTEwpCisJ CQkJaWYgKHBlbmRpbmdfY29uZmxpY3RfbG9nLnR1cGxlICE9IE5VTEwpCiAJCQkJewotCQkJCQlo ZWFwX2ZyZWV0dXBsZShNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ190dXBsZSk7Ci0J CQkJCU15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlID0gTlVMTDsKKwkJCQkJ aGVhcF9mcmVldHVwbGUocGVuZGluZ19jb25mbGljdF9sb2cudHVwbGUpOworCQkJCQlwZW5kaW5n X2NvbmZsaWN0X2xvZy50dXBsZSA9IE5VTEw7CiAJCQkJfQotCQkJCWlmIChNeUxvZ2ljYWxSZXBX b3JrZXItPmNvbmZsaWN0X2xvZ19lcnJjb250ZXh0ICE9IE5VTEwpCisJCQkJaWYgKHBlbmRpbmdf Y29uZmxpY3RfbG9nLmVycmNvbnRleHRfc3RyICE9IE5VTEwpCiAJCQkJewotCQkJCQlwZnJlZShN eUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ19lcnJjb250ZXh0KTsKLQkJCQkJTXlMb2dp Y2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfZXJyY29udGV4dCA9IE5VTEw7CisJCQkJCXBmcmVl KHBlbmRpbmdfY29uZmxpY3RfbG9nLmVycmNvbnRleHRfc3RyKTsKKwkJCQkJcGVuZGluZ19jb25m bGljdF9sb2cuZXJyY29udGV4dF9zdHIgPSBOVUxMOwogCQkJCX0KIAkJCQlQR19SRV9USFJPVygp OwogCQkJfQpAQCAtNDY4LDcgKzQ4Nyw3IEBAIFByb2Nlc3NQZW5kaW5nQ29uZmxpY3RMb2dUdXBs ZSh2b2lkKQogCVJlbGF0aW9uCWNvbmZsaWN0bG9ncmVsOwogCiAJLyogTm90aGluZyB0byBkbyAq LwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ190dXBsZSA9PSBOVUxMKQor CWlmIChwZW5kaW5nX2NvbmZsaWN0X2xvZy50dXBsZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAkv KgpAQCAtNDk5LDEyICs1MTgsMTIgQEAgUHJvY2Vzc1BlbmRpbmdDb25mbGljdExvZ1R1cGxlKHZv aWQpCiAJCSAqIFJlcG9ydEFwcGx5Q29uZmxpY3QoKS4gIE5vdGhpbmcgbW9yZSB0byBkbzsganVz dCBkaXNjYXJkIHRoZSBwcmVwYXJlZAogCQkgKiB0dXBsZSBhbmQgaXRzIGNvbnRleHQgc3RyaW5n LgogCQkgKi8KLQkJaGVhcF9mcmVldHVwbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9s b2dfdHVwbGUpOwotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ190dXBsZSA9IE5V TEw7Ci0JCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ19lcnJjb250ZXh0KQor CQloZWFwX2ZyZWV0dXBsZShwZW5kaW5nX2NvbmZsaWN0X2xvZy50dXBsZSk7CisJCXBlbmRpbmdf Y29uZmxpY3RfbG9nLnR1cGxlID0gTlVMTDsKKwkJaWYgKHBlbmRpbmdfY29uZmxpY3RfbG9nLmVy cmNvbnRleHRfc3RyKQogCQl7Ci0JCQlwZnJlZShNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0 X2xvZ19lcnJjb250ZXh0KTsKLQkJCU15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX2Vy cmNvbnRleHQgPSBOVUxMOworCQkJcGZyZWUocGVuZGluZ19jb25mbGljdF9sb2cuZXJyY29udGV4 dF9zdHIpOworCQkJcGVuZGluZ19jb25mbGljdF9sb2cuZXJyY29udGV4dF9zdHIgPSBOVUxMOwog CQl9CiAJfQogCkBAIC02MzQsNyArNjUzLDcgQEAgSW5zZXJ0Q29uZmxpY3RMb2dUdXBsZShSZWxh dGlvbiBjb25mbGljdGxvZ3JlbCkKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsK IAogCS8qIEEgdmFsaWQgdHVwbGUgbXVzdCBiZSBwcmVwYXJlZCBhbmQgc3RvcmVkIGluIE15TG9n aWNhbFJlcFdvcmtlci4gKi8KLQlBc3NlcnQoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9s b2dfdHVwbGUgIT0gTlVMTCk7CisJQXNzZXJ0KHBlbmRpbmdfY29uZmxpY3RfbG9nLnR1cGxlICE9 IE5VTEwpOwogCiAJLyoKIAkgKiBTZXQgdXAgYW4gZXJyb3IgY29udGV4dCBzbyB0aGF0IGEgZmFp bHVyZSB0byBpbnNlcnQgKGUuZy4gdGhlIGNvbmZsaWN0CkBAIC02NDIsMjIgKzY2MSwyMiBAQCBJ bnNlcnRDb25mbGljdExvZ1R1cGxlKFJlbGF0aW9uIGNvbmZsaWN0bG9ncmVsKQogCSAqIGlkZW50 aWZ5aW5nIHRoZSBjb25mbGljdCB3ZSB3ZXJlIHRyeWluZyB0byBsb2cuCiAJICovCiAJZXJyY2Fs bGJhY2suY2FsbGJhY2sgPSBjb25mbGljdF9sb2dfaW5zZXJ0X2VycmNvbnRleHQ7Ci0JZXJyY2Fs bGJhY2suYXJnID0gTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfZXJyY29udGV4dDsK KwllcnJjYWxsYmFjay5hcmcgPSBwZW5kaW5nX2NvbmZsaWN0X2xvZy5lcnJjb250ZXh0X3N0cjsK IAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29u dGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKIAotCWhlYXBfaW5zZXJ0KGNvbmZsaWN0bG9ncmVs LCBNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ190dXBsZSwKKwloZWFwX2luc2VydChj b25mbGljdGxvZ3JlbCwgcGVuZGluZ19jb25mbGljdF9sb2cudHVwbGUsCiAJCQkJR2V0Q3VycmVu dENvbW1hbmRJZCh0cnVlKSwgSEVBUF9JTlNFUlRfTk9fTE9HSUNBTCwgTlVMTCk7CiAKIAllcnJv cl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CiAKIAkvKiBGcmVlIHRoZSBj b25mbGljdCBsb2cgdHVwbGUgYW5kIGl0cyBjb250ZXh0IHN0cmluZy4gKi8KLQloZWFwX2ZyZWV0 dXBsZShNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ190dXBsZSk7Ci0JTXlMb2dpY2Fs UmVwV29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUgPSBOVUxMOwotCWlmIChNeUxvZ2ljYWxSZXBX b3JrZXItPmNvbmZsaWN0X2xvZ19lcnJjb250ZXh0KQorCWhlYXBfZnJlZXR1cGxlKHBlbmRpbmdf Y29uZmxpY3RfbG9nLnR1cGxlKTsKKwlwZW5kaW5nX2NvbmZsaWN0X2xvZy50dXBsZSA9IE5VTEw7 CisJaWYgKHBlbmRpbmdfY29uZmxpY3RfbG9nLmVycmNvbnRleHRfc3RyKQogCXsKLQkJcGZyZWUo TXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfZXJyY29udGV4dCk7Ci0JCU15TG9naWNh bFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX2VycmNvbnRleHQgPSBOVUxMOworCQlwZnJlZShwZW5k aW5nX2NvbmZsaWN0X2xvZy5lcnJjb250ZXh0X3N0cik7CisJCXBlbmRpbmdfY29uZmxpY3RfbG9n LmVycmNvbnRleHRfc3RyID0gTlVMTDsKIAl9CiB9CiAKQEAgLTEzOTQsNyArMTQxMyw3IEBAIGJ1 aWxkX2xvY2FsX2NvbmZsaWN0c19qc29uX2FycmF5KEVTdGF0ZSAqZXN0YXRlLCBSZWxhdGlvbiBy ZWwsCiAgKgogICogVGhpcyByb3V0aW5lIHByZXBhcmVzIGEgdHVwbGUgZGV0YWlsaW5nIGEgY29u ZmxpY3QgZW5jb3VudGVyZWQgZHVyaW5nCiAgKiBsb2dpY2FsIHJlcGxpY2F0aW9uLiBUaGUgcHJl cGFyZWQgdHVwbGUgd2lsbCBiZSBzdG9yZWQgaW4KLSAqIE15TG9naWNhbFJlcFdvcmtlci0+Y29u ZmxpY3RfbG9nX3R1cGxlIHdoaWNoIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZQorICogcGVu ZGluZ19jb25mbGljdF9sb2cudHVwbGUgd2hpY2ggc2hvdWxkIGJlIGluc2VydGVkIGludG8gdGhl CiAgKiBjb25mbGljdCBsb2cgdGFibGUgYnkgY2FsbGluZyBJbnNlcnRDb25mbGljdExvZ1R1cGxl LgogICovCiBzdGF0aWMgdm9pZApAQCAtMTQxMSw3ICsxNDMwLDcgQEAgcHJlcGFyZV9jb25mbGlj dF9sb2dfdHVwbGUoRVN0YXRlICplc3RhdGUsIFJlbGF0aW9uIHJlbCwKIAljaGFyCSAgICpyZW1v dGVfb3JpZ2luID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0CW9sZGN0eDsKIAotCUFzc2VydChNeUxv Z2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ190dXBsZSA9PSBOVUxMKTsKKwlBc3NlcnQocGVu ZGluZ19jb25mbGljdF9sb2cudHVwbGUgPT0gTlVMTCk7CiAKIAkvKiBQb3B1bGF0ZSB0aGUgdmFs dWVzIGFuZCBudWxscyBhcnJheXMuICovCiAJYXR0bm8gPSAwOwpAQCAtMTQ3NSw3ICsxNDk0LDcg QEAgcHJlcGFyZV9jb25mbGljdF9sb2dfdHVwbGUoRVN0YXRlICplc3RhdGUsIFJlbGF0aW9uIHJl bCwKIAlBc3NlcnQoYXR0bm8gKyAxID09IE5VTV9DT05GTElDVF9BVFRSUyk7CiAKIAlvbGRjdHgg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKLQlNeUxvZ2ljYWxSZXBXb3Jr ZXItPmNvbmZsaWN0X2xvZ190dXBsZSA9CisJcGVuZGluZ19jb25mbGljdF9sb2cudHVwbGUgPQog CQloZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihjb25mbGljdGxvZ3JlbCksIHZhbHVl cywgbnVsbHMpOwogCiAJLyoKQEAgLTE0ODMsNyArMTUwMiw3IEBAIHByZXBhcmVfY29uZmxpY3Rf bG9nX3R1cGxlKEVTdGF0ZSAqZXN0YXRlLCBSZWxhdGlvbiByZWwsCiAJICogdGhlIHR1cGxlIGlu dG8gdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBmYWlscywgdGhlIHJlc3VsdGluZyBlcnJvciBjYXJy aWVzCiAJICogZW5vdWdoIGNvbnRleHQgdG8gaWRlbnRpZnkgdGhlIGNvbmZsaWN0IChzZWUgSW5z ZXJ0Q29uZmxpY3RMb2dUdXBsZSkuCiAJICovCi0JTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGlj dF9sb2dfZXJyY29udGV4dCA9CisJcGVuZGluZ19jb25mbGljdF9sb2cuZXJyY29udGV4dF9zdHIg PQogCQlwc3ByaW50Zigid2hpbGUgbG9nZ2luZyBjb25mbGljdCBcIiVzXCIgZGV0ZWN0ZWQgb24g cmVsYXRpb24gXCIlc1wiIiwKIAkJCQkgQ29uZmxpY3RUeXBlTmFtZXNbY29uZmxpY3RfdHlwZV0s CiAJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDA1YTMwMzQyZjY5Li4zMTNlMzFmZjJlMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNDg3LDcg KzQ4Nyw2IEBAIHJldHJ5OgogCXdvcmtlci0+b2xkZXN0X25vbnJlbW92YWJsZV94aWQgPSByZXRh aW5fZGVhZF90dXBsZXMKIAkJPyBNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluCiAJCTogSW52 YWxpZFRyYW5zYWN0aW9uSWQ7Ci0Jd29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUgPSBOVUxMOwog CXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJ Tih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxh c3RfcmVjdl90aW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgK aW5kZXggNzljOTBkZGRkODkuLjAwYWQwZDg2YTc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMTAwLDE2ICsxMDAsNiBAQCB0eXBlZGVmIHN0cnVjdCBM b2dpY2FsUmVwV29ya2VyCiAJICovCiAJVHJhbnNhY3Rpb25JZCBvbGRlc3Rfbm9ucmVtb3ZhYmxl X3hpZDsKIAotCS8qIEEgY29uZmxpY3QgbG9nIHR1cGxlIHRoYXQgaXMgcHJlcGFyZWQgYnV0IG5v dCB5ZXQgaW5zZXJ0ZWQuICovCi0JSGVhcFR1cGxlCWNvbmZsaWN0X2xvZ190dXBsZTsKLQotCS8q Ci0JICogRXJyb3ItY29udGV4dCBzdHJpbmcgZGVzY3JpYmluZyB0aGUgY29uZmxpY3QgYWJvdmUs IHVzZWQgdG8gYW5ub3RhdGUgYW55Ci0JICogZXJyb3IgcmFpc2VkIHdoaWxlIGluc2VydGluZyBj b25mbGljdF9sb2dfdHVwbGUgaW50byB0aGUgY29uZmxpY3QgbG9nCi0JICogdGFibGUuICBBbGxv Y2F0ZWQsIGxpa2UgY29uZmxpY3RfbG9nX3R1cGxlLCBpbiBBcHBseUNvbnRleHQuCi0JICovCi0J Y2hhcgkgICAqY29uZmxpY3RfbG9nX2VycmNvbnRleHQ7Ci0KIAkvKiBTdGF0cy4gKi8KIAlYTG9n UmVjUHRyCWxhc3RfbHNuOwogCVRpbWVzdGFtcFR6IGxhc3Rfc2VuZF90aW1lOwotLSAKMi41NC4w Cgo= --00000000000072881f0654fdce26--