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 1rfkJ3-001yt9-I1 for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Feb 2024 17:34:55 +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 1rfkJ0-006Th6-RT for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Feb 2024 17:34:51 +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 1rfkJ0-006Tgy-58 for pgsql-hackers@lists.postgresql.org; Thu, 29 Feb 2024 17:34:51 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rfkIv-002Bue-Fi for pgsql-hackers@lists.postgresql.org; Thu, 29 Feb 2024 17:34:49 +0000 Received: from sogo.postgrespro.ru (unknown [192.168.2.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix/587) with ESMTPS id 746E5E21146 for ; Thu, 29 Feb 2024 20:34:42 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1709228082; bh=8nzoaYVpoNUgDfodbEBWo0g7W7mC6li/djhvftVrC/I=; h=From:In-Reply-To:References:Date:To:Message-ID:Subject:User-Agent: From; b=XEecUSkNTEsUPabK1yw+S94ZZjU7EgCtae2p4MV7rAVsMfL1lY6UYLdmqmons0lAa KSFnMVmtkd9hAhaNlduzn32nJjuMO1CF9Xv2j0VJEj+FkmBD6PKa85QvAhA9rVZcTs a5odKirs/L03MNIhBf5ROugbSAmQU74CMR+RH3VfuDd3conF5YYIRLSgfWdo+aw34O t8xM7mki07+bT3gyoSNH3OtPWROvi54AcWa0nQbYQiwNWUwGZCISI6hqTq6Z20e1aW 6tot+LqVktYA+7mItTaBbQNjRrfUqi1zwZNtVemyCePdwp8hwjy74LI/V+uSiiWXDT dudyvCWlO4L3w== From: =?utf-8?q?=D0=94=D0=B0=D0=B2=D1=8B=D0=B4=D0=BE=D0=B2_=D0=92=D0=B8=D1=82=D0=B0=D0=BB=D0=B8=D0=B9?= Content-Type: multipart/mixed; boundary="----=_=-_OpenGroupware_org_NGMime-847294-1709228082.301447-1------" In-Reply-To: X-Forward: 93.174.131.141 References: <8fab8-65d74c80-1-2f28e880@39088166> <99df2-65d8d200-1-63c26880@172687752> Date: Thu, 29 Feb 2024 20:34:42 +0300 To: pgsql-hackers@lists.postgresql.org MIME-Version: 1.0 Message-ID: Subject: =?utf-8?q?Re=3A?= Slow catchup of 2PC (twophase) transactions on replica in LR User-Agent: SOGoMail 5.9.1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------=_=-_OpenGroupware_org_NGMime-847294-1709228082.301447-1------ Content-Type: multipart/alternative; boundary="----=_=-_OpenGroupware_org_NGMime-847294-1709228082.301320-0------" ------=_=-_OpenGroupware_org_NGMime-847294-1709228082.301320-0------ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 707 Dear All, Consider, please, my patch for async commit for twophase transactions. = It can be applicable when catchup performance is not enought with publi= cation parameter twophase =3D on. The key changes are: * Use=C2=A0XLogSetAsyncXactLSN instead of XLogFlush as it is for usual= transactions. * In case of async commit only, save 2PC state in the pg= =5Ftwophase file (but not fsync it)=C2=A0in addition to saving in=C2=A0= the WAL. The file is used as an alternative to storing 2pc state in the= memory. * On recovery, reject pg=5Ftwophase files with future xids.Pro= bably, 2PC async commit should be enabled by a GUC (not implemented in = the patch). With best regards, Vitaly =C2=A0 ------=_=-_OpenGroupware_org_NGMime-847294-1709228082.301320-0------ Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 801 Dear All,

Consider, please, my patch for async commit = for twophase transactions. It can be applicable when catchup performanc= e is not enought with publication parameter twophase =3D on.

The key changes are:
  • Use XLogSetAsyncXactLSN instead of XL= ogFlush as it is for usual transactions.
  • In case of async commi= t only, save 2PC state in the pg=5Ftwophase file (but not fsync it)&nbs= p;in addition to saving in the WAL. The file is used as an alterna= tive to storing 2pc state in the memory.
  • On recovery, reject pg= =5Ftwophase files with future xids.
Probably, 2PC async commit= should be enabled by a GUC (not implemented in the patch).

= With best regards,
Vitaly


  ------=_=-_OpenGroupware_org_NGMime-847294-1709228082.301320-0-------- ------=_=-_OpenGroupware_org_NGMime-847294-1709228082.301447-1------ Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Async-commit-support-for-twophase-transactions.patch" Content-Length: 16100 RnJvbSBjYmFhYTcyNzBkNzcxZjljY2Q2ZGVmMDhmMGYwMmNlNjFkYzE1ZmY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaXRhbHkgRGF2eWRvdiA8di5kYXZ5ZG92QHBvc3Rn cmVzcHJvLnJ1PgpEYXRlOiBUaHUsIDI5IEZlYiAyMDI0IDE4OjU4OjEzICswMzAwClN1Ympl Y3Q6IFtQQVRDSF0gQXN5bmMgY29tbWl0IHN1cHBvcnQgZm9yIHR3b3BoYXNlIHRyYW5zYWN0 aW9ucwoKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jIHwgMTcx ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTM4IGluc2Vy dGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90 d29waGFzZS5jCmluZGV4IDIzNGM4ZDA4ZWIuLjM1MjI2NmJlMTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwpAQCAtMTA5LDYgKzEwOSw4IEBACiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAor I2RlZmluZSBQT1NUR1JFU1FMX1RXT1BIQVNFX1NVUFBPUlRfQVNZTkNfQ09NTUlUCisKIC8q CiAgKiBEaXJlY3Rvcnkgd2hlcmUgVHdvLXBoYXNlIGNvbW1pdCBmaWxlcyByZXNpZGUgd2l0 aGluIFBHREFUQQogICovCkBAIC0xNjksNiArMTcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgR2xv YmFsVHJhbnNhY3Rpb25EYXRhCiAJQmFja2VuZElkCWxvY2tpbmdfYmFja2VuZDsJLyogYmFj a2VuZCBjdXJyZW50bHkgd29ya2luZyBvbiB0aGUgeGFjdCAqLwogCWJvb2wJCXZhbGlkOwkJ CS8qIHRydWUgaWYgUEdQUk9DIGVudHJ5IGlzIGluIHByb2MgYXJyYXkgKi8KIAlib29sCQlv bmRpc2s7CQkJLyogdHJ1ZSBpZiBwcmVwYXJlIHN0YXRlIGZpbGUgaXMgb24gZGlzayAqLwor CWJvb2wJCWluZmlsZTsJCQkvKiB0cnVlIGlmIHByZXBhcmVkIHN0YXRlIHNhdmVkIGluIGZp bGUgKGJ1dCBub3QgZnN5bmMtZWQpICovCiAJYm9vbAkJaW5yZWRvOwkJCS8qIHRydWUgaWYg ZW50cnkgd2FzIGFkZGVkIHZpYSB4bG9nX3JlZG8gKi8KIAljaGFyCQlnaWRbR0lEU0laRV07 CS8qIFRoZSBHSUQgYXNzaWduZWQgdG8gdGhlIHByZXBhcmVkIHhhY3QgKi8KIH0JCQlHbG9i YWxUcmFuc2FjdGlvbkRhdGE7CkBAIC0yMjcsMTIgKzIzMCwxNCBAQCBzdGF0aWMgdm9pZCBS ZW1vdmVHWGFjdChHbG9iYWxUcmFuc2FjdGlvbiBneGFjdCk7CiBzdGF0aWMgdm9pZCBYbG9n UmVhZFR3b1BoYXNlRGF0YShYTG9nUmVjUHRyIGxzbiwgY2hhciAqKmJ1ZiwgaW50ICpsZW4p Owogc3RhdGljIGNoYXIgKlByb2Nlc3NUd29QaGFzZUJ1ZmZlcihUcmFuc2FjdGlvbklkIHhp ZCwKIAkJCQkJCQkJICAgWExvZ1JlY1B0ciBwcmVwYXJlX3N0YXJ0X2xzbiwKLQkJCQkJCQkJ ICAgYm9vbCBmcm9tZGlzaywgYm9vbCBzZXRQYXJlbnQsIGJvb2wgc2V0TmV4dFhpZCk7CisJ CQkJCQkJCSAgIGJvb2wgZnJvbWRpc2ssIGJvb2wgc2V0UGFyZW50LCBib29sIHNldE5leHRY aWQsCisJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIHN0YXRpYyB2b2lkIE1h cmtBc1ByZXBhcmluZ0d1dHMoR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QsIFRyYW5zYWN0aW9u SWQgeGlkLAogCQkJCQkJCQljb25zdCBjaGFyICpnaWQsIFRpbWVzdGFtcFR6IHByZXBhcmVk X2F0LCBPaWQgb3duZXIsCiAJCQkJCQkJCU9pZCBkYXRhYmFzZWlkKTsKIHN0YXRpYyB2b2lk IFJlbW92ZVR3b1BoYXNlRmlsZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBnaXZlV2Fybmlu Zyk7Ci1zdGF0aWMgdm9pZCBSZWNyZWF0ZVR3b1BoYXNlRmlsZShUcmFuc2FjdGlvbklkIHhp ZCwgdm9pZCAqY29udGVudCwgaW50IGxlbik7CitzdGF0aWMgdm9pZCBSZW1vdmVUd29QaGFz ZUZpbGVCeU5hbWUoY29uc3QgY2hhciAqZmlsZW5hbWUsIGJvb2wgZ2l2ZVdhcm5pbmcpOwor c3RhdGljIHZvaWQgUmVjcmVhdGVUd29QaGFzZUZpbGUoVHJhbnNhY3Rpb25JZCB4aWQsIHZv aWQgKmNvbnRlbnQsIGludCBsZW4sIGJvb2wgZG9zeW5jKTsKIAogLyoKICAqIEluaXRpYWxp emF0aW9uIG9mIHNoYXJlZCBtZW1vcnkKQEAgLTQyNyw2ICs0MzIsNyBAQCBNYXJrQXNQcmVw YXJpbmcoVHJhbnNhY3Rpb25JZCB4aWQsIGNvbnN0IGNoYXIgKmdpZCwKIAogCU1hcmtBc1By ZXBhcmluZ0d1dHMoZ3hhY3QsIHhpZCwgZ2lkLCBwcmVwYXJlZF9hdCwgb3duZXIsIGRhdGFi YXNlaWQpOwogCisJZ3hhY3QtPmluZmlsZSA9IGZhbHNlOwogCWd4YWN0LT5vbmRpc2sgPSBm YWxzZTsKIAogCS8qIEFuZCBpbnNlcnQgaXQgaW50byB0aGUgYWN0aXZlIGFycmF5ICovCkBA IC0xMjA0LDYgKzEyMTAsMzcgQEAgRW5kUHJlcGFyZShHbG9iYWxUcmFuc2FjdGlvbiBneGFj dCkKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAogCQkJ CSBlcnJtc2coInR3by1waGFzZSBzdGF0ZSBmaWxlIG1heGltdW0gbGVuZ3RoIGV4Y2VlZGVk IikpKTsKIAorI2lmZGVmIFBPU1RHUkVTUUxfVFdPUEhBU0VfU1VQUE9SVF9BU1lOQ19DT01N SVQKKworCUFzc2VydChneGFjdC0+aW5maWxlID09IGZhbHNlKTsKKworCWlmIChzeW5jaHJv bm91c19jb21taXQgPT0gU1lOQ0hST05PVVNfQ09NTUlUX09GRikKKwl7CisJCWNoYXIJCSAg ICpidWY7CisJCXNpemVfdAkJCWxlbiA9IDA7CisJCXNpemVfdAkJCW9mZnNldCA9IDA7CisK KwkJZm9yIChyZWNvcmQgPSByZWNvcmRzLmhlYWQ7IHJlY29yZCAhPSBOVUxMOyByZWNvcmQg PSByZWNvcmQtPm5leHQpCisJCQlsZW4gKz0gcmVjb3JkLT5sZW47CisKKwkJaWYgKGxlbiA+ IDApCisJCXsKKwkJCWJ1ZiA9IHBhbGxvYyhsZW4pOworCisJCQlmb3IgKHJlY29yZCA9IHJl Y29yZHMuaGVhZDsgcmVjb3JkICE9IE5VTEw7IHJlY29yZCA9IHJlY29yZC0+bmV4dCkKKwkJ CXsKKwkJCQltZW1jcHkoYnVmICsgb2Zmc2V0LCByZWNvcmQtPmRhdGEsIHJlY29yZC0+bGVu KTsKKwkJCQlvZmZzZXQgKz0gcmVjb3JkLT5sZW47CisJCQl9CisKKwkJCVJlY3JlYXRlVHdv UGhhc2VGaWxlKGd4YWN0LT54aWQsIGJ1ZiwgbGVuLCBmYWxzZSk7CisJCQlwZnJlZShidWYp OworCQkJZ3hhY3QtPmluZmlsZSA9IHRydWU7CisJCX0KKwl9CisKKyNlbmRpZgorCiAJLyoK IAkgKiBOb3cgd3JpdGluZyAyUEMgc3RhdGUgZGF0YSB0byBXQUwuIFdlIGxldCB0aGUgV0FM J3MgQ1JDIHByb3RlY3Rpb24KIAkgKiBjb3ZlciB1cywgc28gbm8gbmVlZCB0byBjYWxjdWxh dGUgYSBzZXBhcmF0ZSBDUkMuCkBAIC0xMjM5LDggKzEyNzYsMjQgQEAgRW5kUHJlcGFyZShH bG9iYWxUcmFuc2FjdGlvbiBneGFjdCkKIAkJCQkJCQkJICAgZ3hhY3QtPnByZXBhcmVfZW5k X2xzbik7CiAJfQogCisjaWYgIWRlZmluZWQoUE9TVEdSRVNRTF9UV09QSEFTRV9TVVBQT1JU X0FTWU5DX0NPTU1JVCkKKwogCVhMb2dGbHVzaChneGFjdC0+cHJlcGFyZV9lbmRfbHNuKTsK IAorI2Vsc2UKKworCWlmIChzeW5jaHJvbm91c19jb21taXQgPiBTWU5DSFJPTk9VU19DT01N SVRfT0ZGKQorCXsKKwkJLyogRmx1c2ggWExPRyB0byBkaXNrICovCisJCVhMb2dGbHVzaChn eGFjdC0+cHJlcGFyZV9lbmRfbHNuKTsKKwl9CisJZWxzZQorCXsKKwkJWExvZ1NldEFzeW5j WGFjdExTTihneGFjdC0+cHJlcGFyZV9lbmRfbHNuKTsKKwl9CisKKyNlbmRpZgorCiAJLyog SWYgd2UgY3Jhc2ggbm93LCB3ZSBoYXZlIHByZXBhcmVkOiBXQUwgcmVwbGF5IHdpbGwgZml4 IHRoaW5ncyAqLwogCiAJLyogU3RvcmUgcmVjb3JkJ3Mgc3RhcnQgbG9jYXRpb24gdG8gcmVh ZCB0aGF0IGxhdGVyIG9uIENvbW1pdCAqLwpAQCAtMTU0NiwxMiArMTU5OSwxMSBAQCBGaW5p c2hQcmVwYXJlZFRyYW5zYWN0aW9uKGNvbnN0IGNoYXIgKmdpZCwgYm9vbCBpc0NvbW1pdCkK IAkgKiBpbiBXQUwgZmlsZXMgaWYgdGhlIExTTiBpcyBhZnRlciB0aGUgbGFzdCBjaGVja3Bv aW50IHJlY29yZCwgb3IgbW92ZWQKIAkgKiB0byBkaXNrIGlmIGZvciBzb21lIHJlYXNvbiB0 aGV5IGhhdmUgbGl2ZWQgZm9yIGEgbG9uZyB0aW1lLgogCSAqLwotCWlmIChneGFjdC0+b25k aXNrKQorCWlmIChneGFjdC0+aW5maWxlIHx8IGd4YWN0LT5vbmRpc2spCiAJCWJ1ZiA9IFJl YWRUd29QaGFzZUZpbGUoeGlkLCBmYWxzZSk7CiAJZWxzZQogCQlYbG9nUmVhZFR3b1BoYXNl RGF0YShneGFjdC0+cHJlcGFyZV9zdGFydF9sc24sICZidWYsIE5VTEwpOwogCi0KIAkvKgog CSAqIERpc2Fzc2VtYmxlIHRoZSBoZWFkZXIgYXJlYQogCSAqLwpAQCAtMTY4Nyw3ICsxNzM5 LDcgQEAgRmluaXNoUHJlcGFyZWRUcmFuc2FjdGlvbihjb25zdCBjaGFyICpnaWQsIGJvb2wg aXNDb21taXQpCiAJLyoKIAkgKiBBbmQgbm93IHdlIGNhbiBjbGVhbiB1cCBhbnkgZmlsZXMg d2UgbWF5IGhhdmUgbGVmdC4KIAkgKi8KLQlpZiAoZ3hhY3QtPm9uZGlzaykKKwlpZiAoZ3hh Y3QtPmluZmlsZSB8fCBneGFjdC0+b25kaXNrKQogCQlSZW1vdmVUd29QaGFzZUZpbGUoeGlk LCB0cnVlKTsKIAogCU15TG9ja2VkR3hhY3QgPSBOVUxMOwpAQCAtMTc0MSw2ICsxNzkzLDIw IEBAIFJlbW92ZVR3b1BoYXNlRmlsZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBnaXZlV2Fy bmluZykKIAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjogJW0i LCBwYXRoKSkpOwogfQogCitzdGF0aWMgdm9pZAorUmVtb3ZlVHdvUGhhc2VGaWxlQnlOYW1l KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBib29sIGdpdmVXYXJuaW5nKQoreworCWNoYXIJCXBh dGhbTUFYUEdQQVRIXTsKKworCXNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgVFdPUEhBU0Vf RElSICIvJXMiLCBmaWxlbmFtZSk7CisKKwlpZiAodW5saW5rKHBhdGgpKQorCQlpZiAoZXJy bm8gIT0gRU5PRU5UIHx8IGdpdmVXYXJuaW5nKQorCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkJIGVycm1zZygiY291bGQgbm90 IHJlbW92ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKSkpOworfQorCiAvKgogICogUmVjcmVh dGVzIGEgc3RhdGUgZmlsZS4gVGhpcyBpcyB1c2VkIGluIFdBTCByZXBsYXkgYW5kIGR1cmlu ZwogICogY2hlY2twb2ludCBjcmVhdGlvbi4KQEAgLTE3NDgsNyArMTgxNCw3IEBAIFJlbW92 ZVR3b1BoYXNlRmlsZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBnaXZlV2FybmluZykKICAq IE5vdGU6IGNvbnRlbnQgYW5kIGxlbiBkb24ndCBpbmNsdWRlIENSQy4KICAqLwogc3RhdGlj IHZvaWQKLVJlY3JlYXRlVHdvUGhhc2VGaWxlKFRyYW5zYWN0aW9uSWQgeGlkLCB2b2lkICpj b250ZW50LCBpbnQgbGVuKQorUmVjcmVhdGVUd29QaGFzZUZpbGUoVHJhbnNhY3Rpb25JZCB4 aWQsIHZvaWQgKmNvbnRlbnQsIGludCBsZW4sIGJvb2wgZG9zeW5jKQogewogCWNoYXIJCXBh dGhbTUFYUEdQQVRIXTsKIAlwZ19jcmMzMmMJc3RhdGVmaWxlX2NyYzsKQEAgLTE3OTEsMTYg KzE4NTcsMTkgQEAgUmVjcmVhdGVUd29QaGFzZUZpbGUoVHJhbnNhY3Rpb25JZCB4aWQsIHZv aWQgKmNvbnRlbnQsIGludCBsZW4pCiAJfQogCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsK IAotCS8qCi0JICogV2UgbXVzdCBmc3luYyB0aGUgZmlsZSBiZWNhdXNlIHRoZSBlbmQtb2Yt cmVwbGF5IGNoZWNrcG9pbnQgd2lsbCBub3QgZG8KLQkgKiBzbywgdGhlcmUgYmVpbmcgbm8g R1hBQ1QgaW4gc2hhcmVkIG1lbW9yeSB5ZXQgdG8gdGVsbCBpdCB0by4KLQkgKi8KLQlwZ3N0 YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9FVkVOVF9UV09QSEFTRV9GSUxFX1NZTkMpOwot CWlmIChwZ19mc3luYyhmZCkgIT0gMCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29k ZV9mb3JfZmlsZV9hY2Nlc3MoKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZnN5bmMgZmls ZSBcIiVzXCI6ICVtIiwgcGF0aCkpKTsKLQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKCk7CisJ aWYgKGRvc3luYykKKwl7CisJCS8qCisJCSogV2UgbXVzdCBmc3luYyB0aGUgZmlsZSBiZWNh dXNlIHRoZSBlbmQtb2YtcmVwbGF5IGNoZWNrcG9pbnQgd2lsbCBub3QgZG8KKwkJKiBzbywg dGhlcmUgYmVpbmcgbm8gR1hBQ1QgaW4gc2hhcmVkIG1lbW9yeSB5ZXQgdG8gdGVsbCBpdCB0 by4KKwkJKi8KKwkJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfVFdPUEhB U0VfRklMRV9TWU5DKTsKKwkJaWYgKHBnX2ZzeW5jKGZkKSAhPSAwKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCWVycm1zZygi Y291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpKSk7CisJCXBnc3RhdF9y ZXBvcnRfd2FpdF9lbmQoKTsKKwl9CiAKIAlpZiAoQ2xvc2VUcmFuc2llbnRGaWxlKGZkKSAh PSAwKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTg3MSw3ICsxOTQwLDggQEAgQ2hlY2tQb2lu dFR3b1BoYXNlKFhMb2dSZWNQdHIgcmVkb19ob3Jpem9uKQogCQkJaW50CQkJbGVuOwogCiAJ CQlYbG9nUmVhZFR3b1BoYXNlRGF0YShneGFjdC0+cHJlcGFyZV9zdGFydF9sc24sICZidWYs ICZsZW4pOwotCQkJUmVjcmVhdGVUd29QaGFzZUZpbGUoZ3hhY3QtPnhpZCwgYnVmLCBsZW4p OworCQkJUmVjcmVhdGVUd29QaGFzZUZpbGUoZ3hhY3QtPnhpZCwgYnVmLCBsZW4sIHRydWUp OworCQkJZ3hhY3QtPmluZmlsZSA9IHRydWU7CiAJCQlneGFjdC0+b25kaXNrID0gdHJ1ZTsK IAkJCWd4YWN0LT5wcmVwYXJlX3N0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCQkJ Z3hhY3QtPnByZXBhcmVfZW5kX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwpAQCAtMTkzMCw3 ICsyMDAwLDggQEAgcmVzdG9yZVR3b1BoYXNlRGF0YSh2b2lkKQogCQkJeGlkID0gWGlkRnJv bUZ1bGxUcmFuc2FjdGlvbklkKGZ4aWQpOwogCiAJCQlidWYgPSBQcm9jZXNzVHdvUGhhc2VC dWZmZXIoeGlkLCBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCQl0cnVlLCBmYWxzZSwg ZmFsc2UpOworCQkJCQkJCQkJCXRydWUsIGZhbHNlLCBmYWxzZSwKKwkJCQkJCQkJCQljbGRl LT5kX25hbWUpOwogCQkJaWYgKGJ1ZiA9PSBOVUxMKQogCQkJCWNvbnRpbnVlOwogCkBAIC0x OTk3LDcgKzIwNjgsOCBAQCBQcmVzY2FuUHJlcGFyZWRUcmFuc2FjdGlvbnMoVHJhbnNhY3Rp b25JZCAqKnhpZHNfcCwgaW50ICpueGlkc19wKQogCiAJCWJ1ZiA9IFByb2Nlc3NUd29QaGFz ZUJ1ZmZlcih4aWQsCiAJCQkJCQkJCQlneGFjdC0+cHJlcGFyZV9zdGFydF9sc24sCi0JCQkJ CQkJCQlneGFjdC0+b25kaXNrLCBmYWxzZSwgdHJ1ZSk7CisJCQkJCQkJCQlneGFjdC0+b25k aXNrLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJCQkJCU5VTEwpOwogCiAJCWlmIChidWYgPT0gTlVM TCkKIAkJCWNvbnRpbnVlOwpAQCAtMjA3Miw3ICsyMTQ0LDggQEAgU3RhbmRieVJlY292ZXJQ cmVwYXJlZFRyYW5zYWN0aW9ucyh2b2lkKQogCiAJCWJ1ZiA9IFByb2Nlc3NUd29QaGFzZUJ1 ZmZlcih4aWQsCiAJCQkJCQkJCQlneGFjdC0+cHJlcGFyZV9zdGFydF9sc24sCi0JCQkJCQkJ CQlneGFjdC0+b25kaXNrLCBmYWxzZSwgZmFsc2UpOworCQkJCQkJCQkJZ3hhY3QtPm9uZGlz aywgZmFsc2UsIGZhbHNlLAorCQkJCQkJCQkJTlVMTCk7CiAJCWlmIChidWYgIT0gTlVMTCkK IAkJCXBmcmVlKGJ1Zik7CiAJfQpAQCAtMjEyNCw3ICsyMTk3LDggQEAgUmVjb3ZlclByZXBh cmVkVHJhbnNhY3Rpb25zKHZvaWQpCiAJCSAqLwogCQlidWYgPSBQcm9jZXNzVHdvUGhhc2VC dWZmZXIoeGlkLAogCQkJCQkJCQkJZ3hhY3QtPnByZXBhcmVfc3RhcnRfbHNuLAotCQkJCQkJ CQkJZ3hhY3QtPm9uZGlzaywgdHJ1ZSwgZmFsc2UpOworCQkJCQkJCQkJZ3hhY3QtPm9uZGlz aywgdHJ1ZSwgZmFsc2UsCisJCQkJCQkJCQlOVUxMKTsKIAkJaWYgKGJ1ZiA9PSBOVUxMKQog CQkJY29udGludWU7CiAKQEAgLTIyMDIsNyArMjI3Niw4IEBAIHN0YXRpYyBjaGFyICoKIFBy b2Nlc3NUd29QaGFzZUJ1ZmZlcihUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJICBYTG9nUmVj UHRyIHByZXBhcmVfc3RhcnRfbHNuLAogCQkJCQkgIGJvb2wgZnJvbWRpc2ssCi0JCQkJCSAg Ym9vbCBzZXRQYXJlbnQsIGJvb2wgc2V0TmV4dFhpZCkKKwkJCQkJICBib29sIHNldFBhcmVu dCwgYm9vbCBzZXROZXh0WGlkLAorCQkJCQkgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewog CUZ1bGxUcmFuc2FjdGlvbklkIG5leHRYaWQgPSBUcmFuc2FtVmFyaWFibGVzLT5uZXh0WGlk OwogCVRyYW5zYWN0aW9uSWQgb3JpZ05leHRYaWQgPSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9u SWQobmV4dFhpZCk7CkBAIC0yMjE2LDQwICsyMjkxLDQzIEBAIFByb2Nlc3NUd29QaGFzZUJ1 ZmZlcihUcmFuc2FjdGlvbklkIHhpZCwKIAlpZiAoIWZyb21kaXNrKQogCQlBc3NlcnQocHJl cGFyZV9zdGFydF9sc24gIT0gSW52YWxpZFhMb2dSZWNQdHIpOwogCi0JLyogQWxyZWFkeSBw cm9jZXNzZWQ/ICovCi0JaWYgKFRyYW5zYWN0aW9uSWREaWRDb21taXQoeGlkKSB8fCBUcmFu c2FjdGlvbklkRGlkQWJvcnQoeGlkKSkKKwkvKiBSZWplY3QgWElEIGlmIHRvbyBuZXcgKi8K KwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyh4aWQsIG9yaWdOZXh0WGlkKSkK IAl7CiAJCWlmIChmcm9tZGlzaykKIAkJewogCQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCQko ZXJybXNnKCJyZW1vdmluZyBzdGFsZSB0d28tcGhhc2Ugc3RhdGUgZmlsZSBmb3IgdHJhbnNh Y3Rpb24gJXUiLAorCQkJCQkoZXJybXNnKCJyZW1vdmluZyBmdXR1cmUgdHdvLXBoYXNlIHN0 YXRlIGZpbGUgZm9yIHRyYW5zYWN0aW9uICV1IiwKIAkJCQkJCQl4aWQpKSk7Ci0JCQlSZW1v dmVUd29QaGFzZUZpbGUoeGlkLCB0cnVlKTsKKwkJCWlmIChmaWxlbmFtZSkKKwkJCQlSZW1v dmVUd29QaGFzZUZpbGVCeU5hbWUoZmlsZW5hbWUsIHRydWUpOworCQkJZWxzZQorCQkJCVJl bW92ZVR3b1BoYXNlRmlsZSh4aWQsIHRydWUpOwogCQl9CiAJCWVsc2UKIAkJewogCQkJZXJl cG9ydChXQVJOSU5HLAotCQkJCQkoZXJybXNnKCJyZW1vdmluZyBzdGFsZSB0d28tcGhhc2Ug c3RhdGUgZnJvbSBtZW1vcnkgZm9yIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJKGVycm1zZygi cmVtb3ZpbmcgZnV0dXJlIHR3by1waGFzZSBzdGF0ZSBmcm9tIG1lbW9yeSBmb3IgdHJhbnNh Y3Rpb24gJXUiLAogCQkJCQkJCXhpZCkpKTsKIAkJCVByZXBhcmVSZWRvUmVtb3ZlKHhpZCwg dHJ1ZSk7CiAJCX0KIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0JLyogUmVqZWN0IFhJRCBpZiB0 b28gbmV3ICovCi0JaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoeGlkLCBvcmln TmV4dFhpZCkpCisJLyogQWxyZWFkeSBwcm9jZXNzZWQ/ICovCisJaWYgKFRyYW5zYWN0aW9u SWREaWRDb21taXQoeGlkKSB8fCBUcmFuc2FjdGlvbklkRGlkQWJvcnQoeGlkKSkKIAl7CiAJ CWlmIChmcm9tZGlzaykKIAkJewogCQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCQkoZXJybXNn KCJyZW1vdmluZyBmdXR1cmUgdHdvLXBoYXNlIHN0YXRlIGZpbGUgZm9yIHRyYW5zYWN0aW9u ICV1IiwKKwkJCQkJKGVycm1zZygicmVtb3Zpbmcgc3RhbGUgdHdvLXBoYXNlIHN0YXRlIGZp bGUgZm9yIHRyYW5zYWN0aW9uICV1IiwKIAkJCQkJCQl4aWQpKSk7CiAJCQlSZW1vdmVUd29Q aGFzZUZpbGUoeGlkLCB0cnVlKTsKIAkJfQogCQllbHNlCiAJCXsKIAkJCWVyZXBvcnQoV0FS TklORywKLQkJCQkJKGVycm1zZygicmVtb3ZpbmcgZnV0dXJlIHR3by1waGFzZSBzdGF0ZSBm cm9tIG1lbW9yeSBmb3IgdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkoZXJybXNnKCJyZW1vdmlu ZyBzdGFsZSB0d28tcGhhc2Ugc3RhdGUgZnJvbSBtZW1vcnkgZm9yIHRyYW5zYWN0aW9uICV1 IiwKIAkJCQkJCQl4aWQpKSk7CiAJCQlQcmVwYXJlUmVkb1JlbW92ZSh4aWQsIHRydWUpOwog CQl9CkBAIC0yMzg4LDEyICsyNDY2LDM4IEBAIFJlY29yZFRyYW5zYWN0aW9uQ29tbWl0UHJl cGFyZWQoVHJhbnNhY3Rpb25JZCB4aWQsCiAJICogYSBjb250cmFkaWN0aW9uKQogCSAqLwog CisjaWYgIWRlZmluZWQoUE9TVEdSRVNRTF9UV09QSEFTRV9TVVBQT1JUX0FTWU5DX0NPTU1J VCkKKwogCS8qIEZsdXNoIFhMT0cgdG8gZGlzayAqLwogCVhMb2dGbHVzaChyZWNwdHIpOwog CiAJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gY29tbWl0dGVkIGluIHBnX3hhY3QgKi8KIAlU cmFuc2FjdGlvbklkQ29tbWl0VHJlZSh4aWQsIG5jaGlsZHJlbiwgY2hpbGRyZW4pOwogCisj ZWxzZQorCisJaWYgKHN5bmNocm9ub3VzX2NvbW1pdCA+IFNZTkNIUk9OT1VTX0NPTU1JVF9P RkYpCisJeworCQkvKiBGbHVzaCBYTE9HIHRvIGRpc2sgKi8KKwkJWExvZ0ZsdXNoKHJlY3B0 cik7CisKKwkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gY29tbWl0dGVkIGluIHBnX3hhY3Qg Ki8KKwkJVHJhbnNhY3Rpb25JZENvbW1pdFRyZWUoeGlkLCBuY2hpbGRyZW4sIGNoaWxkcmVu KTsKKwl9CisJZWxzZQorCXsKKwkJWExvZ1NldEFzeW5jWGFjdExTTihyZWNwdHIpOworCisJ CS8qCisJCSAqIFdlIG11c3Qgbm90IGltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgQ0xPRywgc2lu Y2Ugd2UgZGlkbid0IGZsdXNoIHRoZQorCQkgKiBYTE9HLiBJbnN0ZWFkLCB3ZSBzdG9yZSB0 aGUgTFNOIHVwIHRvIHdoaWNoIHRoZSBYTE9HIG11c3QgYmUKKwkJICogZmx1c2hlZCBiZWZv cmUgdGhlIENMT0cgbWF5IGJlIHVwZGF0ZWQuCisJCSAqLworCQlUcmFuc2FjdGlvbklkQXN5 bmNDb21taXRUcmVlKHhpZCwgbmNoaWxkcmVuLCBjaGlsZHJlbiwgcmVjcHRyKTsKKwl9CisK KyNlbmRpZgorCiAJLyogQ2hlY2twb2ludCBjYW4gcHJvY2VlZCBub3cgKi8KIAlNeVByb2Mt PmRlbGF5Q2hrcHRGbGFncyAmPSB+REVMQVlfQ0hLUFRfU1RBUlQ7CiAKQEAgLTI1NjcsNiAr MjY3MSw3IEBAIFByZXBhcmVSZWRvQWRkKGNoYXIgKmJ1ZiwgWExvZ1JlY1B0ciBzdGFydF9s c24sCiAJZ3hhY3QtPmxvY2tpbmdfYmFja2VuZCA9IEludmFsaWRCYWNrZW5kSWQ7CiAJZ3hh Y3QtPnZhbGlkID0gZmFsc2U7CiAJZ3hhY3QtPm9uZGlzayA9IFhMb2dSZWNQdHJJc0ludmFs aWQoc3RhcnRfbHNuKTsKKwlneGFjdC0+aW5maWxlID0gZ3hhY3QtPm9uZGlzazsKIAlneGFj dC0+aW5yZWRvID0gdHJ1ZTsJCS8qIHllcywgYWRkZWQgaW4gcmVkbyAqLwogCXN0cmNweShn eGFjdC0+Z2lkLCBnaWQpOwogCkBAIC0yNjI1LDcgKzI3MzAsNyBAQCBQcmVwYXJlUmVkb1Jl bW92ZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBnaXZlV2FybmluZykKIAkgKiBBbmQgbm93 IHdlIGNhbiBjbGVhbiB1cCBhbnkgZmlsZXMgd2UgbWF5IGhhdmUgbGVmdC4KIAkgKi8KIAll bG9nKERFQlVHMiwgInJlbW92aW5nIDJQQyBkYXRhIGZvciB0cmFuc2FjdGlvbiAldSIsIHhp ZCk7Ci0JaWYgKGd4YWN0LT5vbmRpc2spCisJaWYgKGd4YWN0LT5pbmZpbGUgfHwgZ3hhY3Qt Pm9uZGlzaykKIAkJUmVtb3ZlVHdvUGhhc2VGaWxlKHhpZCwgZ2l2ZVdhcm5pbmcpOwogCVJl bW92ZUdYYWN0KGd4YWN0KTsKIH0KQEAgLTI2NzMsNyArMjc3OCw3IEBAIExvb2t1cEdYYWN0 KGNvbnN0IGNoYXIgKmdpZCwgWExvZ1JlY1B0ciBwcmVwYXJlX2VuZF9sc24sCiAJCQkgKiBk byB0aGlzIG9wdGltaXphdGlvbiBpZiB3ZSBlbmNvdW50ZXIgbWFueSBjb2xsaXNpb25zIGlu IEdJRAogCQkJICogYmV0d2VlbiBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIuCiAJCQkgKi8K LQkJCWlmIChneGFjdC0+b25kaXNrKQorCQkJaWYgKGd4YWN0LT5pbmZpbGUgfHwgZ3hhY3Qt Pm9uZGlzaykKIAkJCQlidWYgPSBSZWFkVHdvUGhhc2VGaWxlKGd4YWN0LT54aWQsIGZhbHNl KTsKIAkJCWVsc2UKIAkJCXsKLS0gCjIuMzQuMQoK ------=_=-_OpenGroupware_org_NGMime-847294-1709228082.301447-1--------