Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pQ4L9-00022o-4Z for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Feb 2023 10:39:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pQ4L7-00081o-7Y for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Feb 2023 10:39:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pQ4L6-00081e-IY for pgsql-hackers@lists.postgresql.org; Thu, 09 Feb 2023 10:39:40 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pQ4L3-0000r3-El for pgsql-hackers@lists.postgresql.org; Thu, 09 Feb 2023 10:39:39 +0000 Received: by mail-wm1-x32b.google.com with SMTP id hn2-20020a05600ca38200b003dc5cb96d46so3525488wmb.4 for ; Thu, 09 Feb 2023 02:39:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=1kNEpopgY5oyZot5IoltoeYJhzZU/0GeqvAfcVB5qDk=; b=AqL28IP2loo0uWcMnkeyqFDCknH5A8JxNxrCgEl9PaWUg3lsYkRGs2Lfj5WmmDeDRY XSUoGAKi9ABSZyJLtnp0wJuqXsOhL6jTbE8c0MLtc+Fe4OQo1hDENbAE561MmhYxP75F i41PJJnysWSiJnoVkLAy79w/oer48P2717VEJ5+KM4H8GlfWNjgOVv5hWSuNsKmtzUAJ BV4Jp6jyYSjZdb2s06LIVVm3vK8ZGrTefraaogQf2iv+8mmCAlhO7vp81W8WcwNNmue3 eqJvwqI2Fg7R7sThwT5ZWnWSg8uHgeAb+kUpWYljeqsnVF7GmK59lOZkvUePS0ltwt0k PEwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1kNEpopgY5oyZot5IoltoeYJhzZU/0GeqvAfcVB5qDk=; b=da87VMsIO/fMJB9GrsmB1vKEjZWi7YTHNjvmXBmtjyhpALyRRe/FrPapArDYD+rG8k KIkgh0Tqour+ggRGLkvJIrvQBn9MGxeHabBUpJ/T4gbCNRX8LvswtX6qgLUaIM6ve3UZ NixEpSH8e1SmKEixPr/W3gxi0HlrAfMH4ezTsFMZmskaGDsk13hCQ/Fnh6eF/q29I+p9 OR1roJpkmV2V0DZuYrrQHQLRs+kXgd2slxkhskrWkhU9ecG5ZLsDBuCcMd3qf4G6wXmC RWx7ZPaBVletZoJuXRZ0r9R5/wt6TvE3dnKLG/2SFVpaGCcqhY8VZs0QP4OcLYfnE07h nhHA== X-Gm-Message-State: AO0yUKV4JDqnkSXMhEYApDz+dq8EmG+YtuQt6nheyqgYYEAvlJXB13LS oAtpQmlWLgGb/r6af8RB9gRI3yH4NSGk0w== X-Google-Smtp-Source: AK7set+iub3DH3+tBlIz5NjJjgmm3Ggthm6itSpZ2OJU5ZUF5KBakyHgQ8LvwidShPHOIlNYn8o4JA== X-Received: by 2002:a05:600c:a697:b0:3e0:1ab:cf2a with SMTP id ip23-20020a05600ca69700b003e001abcf2amr9332565wmb.39.1675939175280; Thu, 09 Feb 2023 02:39:35 -0800 (PST) Received: from [192.168.25.237] ([54.239.6.184]) by smtp.gmail.com with ESMTPSA id t15-20020a05600c198f00b003ddc781b1d4sm1566164wmq.33.2023.02.09.02.39.34 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Feb 2023 02:39:34 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Owc0N5CAkKDc00utRZBOzi0j" Message-ID: Date: Thu, 9 Feb 2023 11:38:18 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Content-Language: en-US From: "Drouvot, Bertrand" Subject: Reconcile stats in find_tabstat_entry() and get rid of PgStat_BackendFunctionEntry To: PostgreSQL Hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Owc0N5CAkKDc00utRZBOzi0j Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi hackers, Please find attached a patch proposal for $SUBJECT. The idea has been raised in [1] by Andres: it would allow to simplify even more the work done to generate pg_stat_get_xact*() functions with Macros. Indeed, with the reconciliation done in find_tabstat_entry() then all the pg_stat_get_xact*() functions (making use of find_tabstat_entry()) now "look the same" (should they take into account live subtransactions or not). Looking forward to your feedback, Regards -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com [1]: https://www.postgresql.org/message-id/20230111225907.6el6c5j3hukizqxc%40awork3.anarazel.de --------------Owc0N5CAkKDc00utRZBOzi0j Content-Type: text/plain; charset=UTF-8; name="v1-0001-find_tabstat_entry_recon_get_rid_PgStat_BackendFunctionEntry.patch" Content-Disposition: attachment; filename*0="v1-0001-find_tabstat_entry_recon_get_rid_PgStat_BackendFunct"; filename*1="ionEntry.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKaW5kZXggMGZhNTM3MGJjZC4uYTA4 YTJjOGU2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKQEAgLTI5MSw3 ICsyOTEsNyBAQCBzdGF0aWMgY29uc3QgUGdTdGF0X0tpbmRJbmZvIHBnc3RhdF9raW5kX2lu Zm9zW1BHU1RBVF9OVU1fS0lORFNdID0gewogCQkuc2hhcmVkX3NpemUgPSBzaXplb2YoUGdT dGF0U2hhcmVkX0Z1bmN0aW9uKSwKIAkJLnNoYXJlZF9kYXRhX29mZiA9IG9mZnNldG9mKFBn U3RhdFNoYXJlZF9GdW5jdGlvbiwgc3RhdHMpLAogCQkuc2hhcmVkX2RhdGFfbGVuID0gc2l6 ZW9mKCgoUGdTdGF0U2hhcmVkX0Z1bmN0aW9uICopIDApLT5zdGF0cyksCi0JCS5wZW5kaW5n X3NpemUgPSBzaXplb2YoUGdTdGF0X0JhY2tlbmRGdW5jdGlvbkVudHJ5KSwKKwkJLnBlbmRp bmdfc2l6ZSA9IHNpemVvZihQZ1N0YXRfRnVuY3Rpb25Db3VudHMpLAogCiAJCS5mbHVzaF9w ZW5kaW5nX2NiID0gcGdzdGF0X2Z1bmN0aW9uX2ZsdXNoX2NiLAogCX0sCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZnVuY3Rpb24uYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9mdW5jdGlvbi5jCmluZGV4IDYxMzlhMjdm ZWUuLjBmZGNlZmI3ODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdF9mdW5jdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9mdW5jdGlvbi5jCkBAIC03Myw3ICs3Myw3IEBAIHBnc3RhdF9pbml0X2Z1bmN0aW9u X3VzYWdlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJICAgUGdTdGF0X0Z1bmN0 aW9uQ2FsbFVzYWdlICpmY3UpCiB7CiAJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWY7Ci0J UGdTdGF0X0JhY2tlbmRGdW5jdGlvbkVudHJ5ICpwZW5kaW5nOworCVBnU3RhdF9GdW5jdGlv bkNvdW50cyAqcGVuZGluZzsKIAlib29sCQljcmVhdGVkX2VudHJ5OwogCiAJaWYgKHBnc3Rh dF90cmFja19mdW5jdGlvbnMgPD0gZmNpbmZvLT5mbGluZm8tPmZuX3N0YXRzKQpAQCAtMTIx LDEwICsxMjEsMTAgQEAgcGdzdGF0X2luaXRfZnVuY3Rpb25fdXNhZ2UoRnVuY3Rpb25DYWxs SW5mbyBmY2luZm8sCiAKIAlwZW5kaW5nID0gZW50cnlfcmVmLT5wZW5kaW5nOwogCi0JZmN1 LT5mcyA9ICZwZW5kaW5nLT5mX2NvdW50czsKKwlmY3UtPmZzID0gcGVuZGluZzsKIAogCS8q IHNhdmUgc3RhdHMgZm9yIHRoaXMgZnVuY3Rpb24sIGxhdGVyIHVzZWQgdG8gY29tcGVuc2F0 ZSBmb3IgcmVjdXJzaW9uICovCi0JZmN1LT5zYXZlX2ZfdG90YWxfdGltZSA9IHBlbmRpbmct PmZfY291bnRzLmZfdG90YWxfdGltZTsKKwlmY3UtPnNhdmVfZl90b3RhbF90aW1lID0gcGVu ZGluZy0+Zl90b3RhbF90aW1lOwogCiAJLyogc2F2ZSBjdXJyZW50IGJhY2tlbmQtd2lkZSB0 b3RhbCB0aW1lICovCiAJZmN1LT5zYXZlX3RvdGFsID0gdG90YWxfZnVuY190aW1lOwpAQCAt MTkyLDEwICsxOTIsMTAgQEAgcGdzdGF0X2VuZF9mdW5jdGlvbl91c2FnZShQZ1N0YXRfRnVu Y3Rpb25DYWxsVXNhZ2UgKmZjdSwgYm9vbCBmaW5hbGl6ZSkKIGJvb2wKIHBnc3RhdF9mdW5j dGlvbl9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQp CiB7Ci0JUGdTdGF0X0JhY2tlbmRGdW5jdGlvbkVudHJ5ICpsb2NhbGVudDsKKwlQZ1N0YXRf RnVuY3Rpb25Db3VudHMgKmxvY2FsZW50OwogCVBnU3RhdFNoYXJlZF9GdW5jdGlvbiAqc2hm dW5jZW50OwogCi0JbG9jYWxlbnQgPSAoUGdTdGF0X0JhY2tlbmRGdW5jdGlvbkVudHJ5ICop IGVudHJ5X3JlZi0+cGVuZGluZzsKKwlsb2NhbGVudCA9IChQZ1N0YXRfRnVuY3Rpb25Db3Vu dHMgKikgZW50cnlfcmVmLT5wZW5kaW5nOwogCXNoZnVuY2VudCA9IChQZ1N0YXRTaGFyZWRf RnVuY3Rpb24gKikgZW50cnlfcmVmLT5zaGFyZWRfc3RhdHM7CiAKIAkvKiBsb2NhbGVudCBh bHdheXMgaGFzIG5vbi16ZXJvIGNvbnRlbnQgKi8KQEAgLTIwMywxMSArMjAzLDExIEBAIHBn c3RhdF9mdW5jdGlvbl9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9v bCBub3dhaXQpCiAJaWYgKCFwZ3N0YXRfbG9ja19lbnRyeShlbnRyeV9yZWYsIG5vd2FpdCkp CiAJCXJldHVybiBmYWxzZTsKIAotCXNoZnVuY2VudC0+c3RhdHMuZl9udW1jYWxscyArPSBs b2NhbGVudC0+Zl9jb3VudHMuZl9udW1jYWxsczsKKwlzaGZ1bmNlbnQtPnN0YXRzLmZfbnVt Y2FsbHMgKz0gbG9jYWxlbnQtPmZfbnVtY2FsbHM7CiAJc2hmdW5jZW50LT5zdGF0cy5mX3Rv dGFsX3RpbWUgKz0KLQkJSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMobG9jYWxlbnQtPmZfY291 bnRzLmZfdG90YWxfdGltZSk7CisJCUlOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGxvY2FsZW50 LT5mX3RvdGFsX3RpbWUpOwogCXNoZnVuY2VudC0+c3RhdHMuZl9zZWxmX3RpbWUgKz0KLQkJ SU5TVFJfVElNRV9HRVRfTUlDUk9TRUMobG9jYWxlbnQtPmZfY291bnRzLmZfc2VsZl90aW1l KTsKKwkJSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMobG9jYWxlbnQtPmZfc2VsZl90aW1lKTsK IAogCXBnc3RhdF91bmxvY2tfZW50cnkoZW50cnlfcmVmKTsKIApAQCAtMjE1LDExICsyMTUs MTEgQEAgcGdzdGF0X2Z1bmN0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlf cmVmLCBib29sIG5vd2FpdCkKIH0KIAogLyoKLSAqIGZpbmQgYW55IGV4aXN0aW5nIFBnU3Rh dF9CYWNrZW5kRnVuY3Rpb25FbnRyeSBlbnRyeSBmb3Igc3BlY2lmaWVkIGZ1bmN0aW9uCisg KiBmaW5kIGFueSBleGlzdGluZyBQZ1N0YXRfRnVuY3Rpb25Db3VudHMgZW50cnkgZm9yIHNw ZWNpZmllZCBmdW5jdGlvbgogICoKICAqIElmIG5vIGVudHJ5LCByZXR1cm4gTlVMTCwgZG9u J3QgY3JlYXRlIGEgbmV3IG9uZQogICovCi1QZ1N0YXRfQmFja2VuZEZ1bmN0aW9uRW50cnkg KgorUGdTdGF0X0Z1bmN0aW9uQ291bnRzICoKIGZpbmRfZnVuY3N0YXRfZW50cnkoT2lkIGZ1 bmNfaWQpCiB7CiAJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWY7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IDJlMjBiOTNjMjAu LmIzMzk2NWM1ODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCkBAIC00NjYsMTQgKzQ2NiwzMCBAQCBQZ1N0YXRfVGFibGVTdGF0dXMg KgogZmluZF90YWJzdGF0X2VudHJ5KE9pZCByZWxfaWQpCiB7CiAJUGdTdGF0X0VudHJ5UmVm ICplbnRyeV9yZWY7CisJUGdTdGF0X1RhYmxlU3RhdHVzICp0YWJsZXN0YXR1cyA9IE5VTEw7 CiAKIAllbnRyeV9yZWYgPSBwZ3N0YXRfZmV0Y2hfcGVuZGluZ19lbnRyeShQR1NUQVRfS0lO RF9SRUxBVElPTiwgTXlEYXRhYmFzZUlkLCByZWxfaWQpOwogCWlmICghZW50cnlfcmVmKQog CQllbnRyeV9yZWYgPSBwZ3N0YXRfZmV0Y2hfcGVuZGluZ19lbnRyeShQR1NUQVRfS0lORF9S RUxBVElPTiwgSW52YWxpZE9pZCwgcmVsX2lkKTsKIAogCWlmIChlbnRyeV9yZWYpCi0JCXJl dHVybiBlbnRyeV9yZWYtPnBlbmRpbmc7Ci0JcmV0dXJuIE5VTEw7CisJeworCQlQZ1N0YXRf VGFibGVTdGF0dXMgKnRhYmVudHJ5ID0gKFBnU3RhdF9UYWJsZVN0YXR1cyAqKSBlbnRyeV9y ZWYtPnBlbmRpbmc7CisJCVBnU3RhdF9UYWJsZVhhY3RTdGF0dXMgKnRyYW5zOworCisJCXRh Ymxlc3RhdHVzICA9IHBhbGxvYyhzaXplb2YoUGdTdGF0X1RhYmxlU3RhdHVzKSk7CisJCW1l bWNweSh0YWJsZXN0YXR1cywgdGFiZW50cnksIHNpemVvZihQZ1N0YXRfVGFibGVTdGF0dXMp KTsKKworCQkvKiBsaXZlIHN1YnRyYW5zYWN0aW9ucycgY291bnRzIGFyZW4ndCBpbiB0X2Nv dW50cyB5ZXQgKi8KKwkJZm9yICh0cmFucyA9IHRhYmVudHJ5LT50cmFuczsgdHJhbnMgIT0g TlVMTDsgdHJhbnMgPSB0cmFucy0+dXBwZXIpCisJCXsKKwkJCXRhYmxlc3RhdHVzLT50X2Nv dW50cy50X3R1cGxlc19pbnNlcnRlZCArPSB0cmFucy0+dHVwbGVzX2luc2VydGVkOworCQkJ dGFibGVzdGF0dXMtPnRfY291bnRzLnRfdHVwbGVzX3VwZGF0ZWQgKz0gdHJhbnMtPnR1cGxl c191cGRhdGVkOworCQkJdGFibGVzdGF0dXMtPnRfY291bnRzLnRfdHVwbGVzX2RlbGV0ZWQg Kz0gdHJhbnMtPnR1cGxlc19kZWxldGVkOworCQl9CisJfQorCisJcmV0dXJuIHRhYmxlc3Rh dHVzOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCA2 NzM3NDkzNDAyLi40MGE2ZmJmODcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVu Y3MuYwpAQCAtMTM2Niw3ICsxMzY2LDEwIEBAIHBnX3N0YXRfZ2V0X3hhY3RfbnVtc2NhbnMo UEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoKHRhYmVudHJ5ID0gZmluZF90YWJzdGF0X2VudHJ5 KHJlbGlkKSkgPT0gTlVMTCkKIAkJcmVzdWx0ID0gMDsKIAllbHNlCisJewogCQlyZXN1bHQg PSAoaW50NjQpICh0YWJlbnRyeS0+dF9jb3VudHMudF9udW1zY2Fucyk7CisJCXBmcmVlKHRh YmVudHJ5KTsKKwl9CiAKIAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KQEAgLTEzODEs NyArMTM4NCwxMCBAQCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19yZXR1cm5lZChQR19GVU5D VElPTl9BUkdTKQogCWlmICgodGFiZW50cnkgPSBmaW5kX3RhYnN0YXRfZW50cnkocmVsaWQp KSA9PSBOVUxMKQogCQlyZXN1bHQgPSAwOwogCWVsc2UKKwl7CiAJCXJlc3VsdCA9IChpbnQ2 NCkgKHRhYmVudHJ5LT50X2NvdW50cy50X3R1cGxlc19yZXR1cm5lZCk7CisJCXBmcmVlKHRh YmVudHJ5KTsKKwl9CiAKIAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KQEAgLTEzOTYs NyArMTQwMiwxMCBAQCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19mZXRjaGVkKFBHX0ZVTkNU SU9OX0FSR1MpCiAJaWYgKCh0YWJlbnRyeSA9IGZpbmRfdGFic3RhdF9lbnRyeShyZWxpZCkp ID09IE5VTEwpCiAJCXJlc3VsdCA9IDA7CiAJZWxzZQorCXsKIAkJcmVzdWx0ID0gKGludDY0 KSAodGFiZW50cnktPnRfY291bnRzLnRfdHVwbGVzX2ZldGNoZWQpOworCQlwZnJlZSh0YWJl bnRyeSk7CisJfQogCiAJUEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7CiB9CkBAIC0xNDA3LDE2 ICsxNDE2LDEzIEBAIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2luc2VydGVkKFBHX0ZVTkNU SU9OX0FSR1MpCiAJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOwogCWludDY0CQly ZXN1bHQ7CiAJUGdTdGF0X1RhYmxlU3RhdHVzICp0YWJlbnRyeTsKLQlQZ1N0YXRfVGFibGVY YWN0U3RhdHVzICp0cmFuczsKIAogCWlmICgodGFiZW50cnkgPSBmaW5kX3RhYnN0YXRfZW50 cnkocmVsaWQpKSA9PSBOVUxMKQogCQlyZXN1bHQgPSAwOwogCWVsc2UKIAl7Ci0JCXJlc3Vs dCA9IHRhYmVudHJ5LT50X2NvdW50cy50X3R1cGxlc19pbnNlcnRlZDsKLQkJLyogbGl2ZSBz dWJ0cmFuc2FjdGlvbnMnIGNvdW50cyBhcmVuJ3QgaW4gdF90dXBsZXNfaW5zZXJ0ZWQgeWV0 ICovCi0JCWZvciAodHJhbnMgPSB0YWJlbnRyeS0+dHJhbnM7IHRyYW5zICE9IE5VTEw7IHRy YW5zID0gdHJhbnMtPnVwcGVyKQotCQkJcmVzdWx0ICs9IHRyYW5zLT50dXBsZXNfaW5zZXJ0 ZWQ7CisJCXJlc3VsdCA9IChpbnQ2NCkgKHRhYmVudHJ5LT50X2NvdW50cy50X3R1cGxlc19p bnNlcnRlZCk7CisJCXBmcmVlKHRhYmVudHJ5KTsKIAl9CiAKIAlQR19SRVRVUk5fSU5UNjQo cmVzdWx0KTsKQEAgLTE0MjgsMTYgKzE0MzQsMTMgQEAgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfdXBkYXRlZChQR19GVU5DVElPTl9BUkdTKQogCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJH X09JRCgwKTsKIAlpbnQ2NAkJcmVzdWx0OwogCVBnU3RhdF9UYWJsZVN0YXR1cyAqdGFiZW50 cnk7Ci0JUGdTdGF0X1RhYmxlWGFjdFN0YXR1cyAqdHJhbnM7CiAKIAlpZiAoKHRhYmVudHJ5 ID0gZmluZF90YWJzdGF0X2VudHJ5KHJlbGlkKSkgPT0gTlVMTCkKIAkJcmVzdWx0ID0gMDsK IAllbHNlCiAJewotCQlyZXN1bHQgPSB0YWJlbnRyeS0+dF9jb3VudHMudF90dXBsZXNfdXBk YXRlZDsKLQkJLyogbGl2ZSBzdWJ0cmFuc2FjdGlvbnMnIGNvdW50cyBhcmVuJ3QgaW4gdF90 dXBsZXNfdXBkYXRlZCB5ZXQgKi8KLQkJZm9yICh0cmFucyA9IHRhYmVudHJ5LT50cmFuczsg dHJhbnMgIT0gTlVMTDsgdHJhbnMgPSB0cmFucy0+dXBwZXIpCi0JCQlyZXN1bHQgKz0gdHJh bnMtPnR1cGxlc191cGRhdGVkOworCQlyZXN1bHQgPSAoaW50NjQpICh0YWJlbnRyeS0+dF9j b3VudHMudF90dXBsZXNfdXBkYXRlZCk7CisJCXBmcmVlKHRhYmVudHJ5KTsKIAl9CiAKIAlQ R19SRVRVUk5fSU5UNjQocmVzdWx0KTsKQEAgLTE0NDksMTYgKzE0NTIsMTMgQEAgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfZGVsZXRlZChQR19GVU5DVElPTl9BUkdTKQogCU9pZAkJCXJl bGlkID0gUEdfR0VUQVJHX09JRCgwKTsKIAlpbnQ2NAkJcmVzdWx0OwogCVBnU3RhdF9UYWJs ZVN0YXR1cyAqdGFiZW50cnk7Ci0JUGdTdGF0X1RhYmxlWGFjdFN0YXR1cyAqdHJhbnM7CiAK IAlpZiAoKHRhYmVudHJ5ID0gZmluZF90YWJzdGF0X2VudHJ5KHJlbGlkKSkgPT0gTlVMTCkK IAkJcmVzdWx0ID0gMDsKIAllbHNlCiAJewotCQlyZXN1bHQgPSB0YWJlbnRyeS0+dF9jb3Vu dHMudF90dXBsZXNfZGVsZXRlZDsKLQkJLyogbGl2ZSBzdWJ0cmFuc2FjdGlvbnMnIGNvdW50 cyBhcmVuJ3QgaW4gdF90dXBsZXNfZGVsZXRlZCB5ZXQgKi8KLQkJZm9yICh0cmFucyA9IHRh YmVudHJ5LT50cmFuczsgdHJhbnMgIT0gTlVMTDsgdHJhbnMgPSB0cmFucy0+dXBwZXIpCi0J CQlyZXN1bHQgKz0gdHJhbnMtPnR1cGxlc19kZWxldGVkOworCQlyZXN1bHQgPSAoaW50NjQp ICh0YWJlbnRyeS0+dF9jb3VudHMudF90dXBsZXNfZGVsZXRlZCk7CisJCXBmcmVlKHRhYmVu dHJ5KTsKIAl9CiAKIAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKQEAgLTE0NzQsNyArMTQ3 NCwxMCBAQCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChQR19GVU5DVElP Tl9BUkdTKQogCWlmICgodGFiZW50cnkgPSBmaW5kX3RhYnN0YXRfZW50cnkocmVsaWQpKSA9 PSBOVUxMKQogCQlyZXN1bHQgPSAwOwogCWVsc2UKKwl7CiAJCXJlc3VsdCA9IChpbnQ2NCkg KHRhYmVudHJ5LT50X2NvdW50cy50X3R1cGxlc19ob3RfdXBkYXRlZCk7CisJCXBmcmVlKHRh YmVudHJ5KTsKKwl9CiAKIAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KQEAgLTE0ODks NyArMTQ5MiwxMCBAQCBwZ19zdGF0X2dldF94YWN0X2Jsb2Nrc19mZXRjaGVkKFBHX0ZVTkNU SU9OX0FSR1MpCiAJaWYgKCh0YWJlbnRyeSA9IGZpbmRfdGFic3RhdF9lbnRyeShyZWxpZCkp ID09IE5VTEwpCiAJCXJlc3VsdCA9IDA7CiAJZWxzZQorCXsKIAkJcmVzdWx0ID0gKGludDY0 KSAodGFiZW50cnktPnRfY291bnRzLnRfYmxvY2tzX2ZldGNoZWQpOworCQlwZnJlZSh0YWJl bnRyeSk7CisJfQogCiAJUEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7CiB9CkBAIC0xNTA0LDcg KzE1MTAsMTAgQEAgcGdfc3RhdF9nZXRfeGFjdF9ibG9ja3NfaGl0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJaWYgKCh0YWJlbnRyeSA9IGZpbmRfdGFic3RhdF9lbnRyeShyZWxpZCkpID09IE5V TEwpCiAJCXJlc3VsdCA9IDA7CiAJZWxzZQorCXsKIAkJcmVzdWx0ID0gKGludDY0KSAodGFi ZW50cnktPnRfY291bnRzLnRfYmxvY2tzX2hpdCk7CisJCXBmcmVlKHRhYmVudHJ5KTsKKwl9 CiAKIAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KQEAgLTE1MTMsMzMgKzE1MjIsMzMg QEAgRGF0dW0KIHBnX3N0YXRfZ2V0X3hhY3RfZnVuY3Rpb25fY2FsbHMoUEdfRlVOQ1RJT05f QVJHUykKIHsKIAlPaWQJCQlmdW5jaWQgPSBQR19HRVRBUkdfT0lEKDApOwotCVBnU3RhdF9C YWNrZW5kRnVuY3Rpb25FbnRyeSAqZnVuY2VudHJ5OworCVBnU3RhdF9GdW5jdGlvbkNvdW50 cyAqZnVuY2VudHJ5OwogCiAJaWYgKChmdW5jZW50cnkgPSBmaW5kX2Z1bmNzdGF0X2VudHJ5 KGZ1bmNpZCkpID09IE5VTEwpCiAJCVBHX1JFVFVSTl9OVUxMKCk7Ci0JUEdfUkVUVVJOX0lO VDY0KGZ1bmNlbnRyeS0+Zl9jb3VudHMuZl9udW1jYWxscyk7CisJUEdfUkVUVVJOX0lOVDY0 KGZ1bmNlbnRyeS0+Zl9udW1jYWxscyk7CiB9CiAKIERhdHVtCiBwZ19zdGF0X2dldF94YWN0 X2Z1bmN0aW9uX3RvdGFsX3RpbWUoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlPaWQJCQlmdW5j aWQgPSBQR19HRVRBUkdfT0lEKDApOwotCVBnU3RhdF9CYWNrZW5kRnVuY3Rpb25FbnRyeSAq ZnVuY2VudHJ5OworCVBnU3RhdF9GdW5jdGlvbkNvdW50cyAqZnVuY2VudHJ5OwogCiAJaWYg KChmdW5jZW50cnkgPSBmaW5kX2Z1bmNzdGF0X2VudHJ5KGZ1bmNpZCkpID09IE5VTEwpCiAJ CVBHX1JFVFVSTl9OVUxMKCk7Ci0JUEdfUkVUVVJOX0ZMT0FUOChJTlNUUl9USU1FX0dFVF9N SUxMSVNFQyhmdW5jZW50cnktPmZfY291bnRzLmZfdG90YWxfdGltZSkpOworCVBHX1JFVFVS Tl9GTE9BVDgoSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoZnVuY2VudHJ5LT5mX3RvdGFsX3Rp bWUpKTsKIH0KIAogRGF0dW0KIHBnX3N0YXRfZ2V0X3hhY3RfZnVuY3Rpb25fc2VsZl90aW1l KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJT2lkCQkJZnVuY2lkID0gUEdfR0VUQVJHX09JRCgw KTsKLQlQZ1N0YXRfQmFja2VuZEZ1bmN0aW9uRW50cnkgKmZ1bmNlbnRyeTsKKwlQZ1N0YXRf RnVuY3Rpb25Db3VudHMgKmZ1bmNlbnRyeTsKIAogCWlmICgoZnVuY2VudHJ5ID0gZmluZF9m dW5jc3RhdF9lbnRyeShmdW5jaWQpKSA9PSBOVUxMKQogCQlQR19SRVRVUk5fTlVMTCgpOwot CVBHX1JFVFVSTl9GTE9BVDgoSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoZnVuY2VudHJ5LT5m X2NvdW50cy5mX3NlbGZfdGltZSkpOworCVBHX1JFVFVSTl9GTE9BVDgoSU5TVFJfVElNRV9H RVRfTUlMTElTRUMoZnVuY2VudHJ5LT5mX3NlbGZfdGltZSkpOwogfQogCiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXgg NWUzMzI2YTNiOS4uYjk0YWU3ZjcwZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTExMCwxNSArMTEwLDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X0Z1bmN0aW9uQ291bnRzCiAJaW5zdHJfdGltZQlmX3NlbGZf dGltZTsKIH0gUGdTdGF0X0Z1bmN0aW9uQ291bnRzOwogCi0vKiAtLS0tLS0tLS0tCi0gKiBQ Z1N0YXRfQmFja2VuZEZ1bmN0aW9uRW50cnkJTm9uLWZsdXNoZWQgZnVuY3Rpb24gc3RhdHMu Ci0gKiAtLS0tLS0tLS0tCi0gKi8KLXR5cGVkZWYgc3RydWN0IFBnU3RhdF9CYWNrZW5kRnVu Y3Rpb25FbnRyeQotewotCVBnU3RhdF9GdW5jdGlvbkNvdW50cyBmX2NvdW50czsKLX0gUGdT dGF0X0JhY2tlbmRGdW5jdGlvbkVudHJ5OwotCiAvKgogICogV29ya2luZyBzdGF0ZSBuZWVk ZWQgdG8gYWNjdW11bGF0ZSBwZXItZnVuY3Rpb24tY2FsbCB0aW1pbmcgc3RhdGlzdGljcy4K ICAqLwpAQCAtNDkxLDcgKzQ4Miw3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF9lbmRfZnVuY3Rp b25fdXNhZ2UoUGdTdGF0X0Z1bmN0aW9uQ2FsbFVzYWdlICpmY3UsCiAJCQkJCQkJCQkgIGJv b2wgZmluYWxpemUpOwogCiBleHRlcm4gUGdTdGF0X1N0YXRGdW5jRW50cnkgKnBnc3RhdF9m ZXRjaF9zdGF0X2Z1bmNlbnRyeShPaWQgZnVuY19pZCk7Ci1leHRlcm4gUGdTdGF0X0JhY2tl bmRGdW5jdGlvbkVudHJ5ICpmaW5kX2Z1bmNzdGF0X2VudHJ5KE9pZCBmdW5jX2lkKTsKK2V4 dGVybiBQZ1N0YXRfRnVuY3Rpb25Db3VudHMgKmZpbmRfZnVuY3N0YXRfZW50cnkoT2lkIGZ1 bmNfaWQpOwogCiAKIC8qCg== --------------Owc0N5CAkKDc00utRZBOzi0j--