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 1pfM5J-0000NM-7h for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Mar 2023 14:38:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pfM5H-0005Hs-1G for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Mar 2023 14:38:31 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pfM5G-0005Hi-Jm for pgsql-hackers@lists.postgresql.org; Thu, 23 Mar 2023 14:38:30 +0000 Received: from mail-yw1-x112c.google.com ([2607:f8b0:4864:20::112c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pfM5D-0004De-Ob for pgsql-hackers@postgresql.org; Thu, 23 Mar 2023 14:38:29 +0000 Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-544f7c176easo254086067b3.9 for ; Thu, 23 Mar 2023 07:38:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679582306; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Cx+GcrEDqjRPkv5aisXjjBSTV80JuMBr8NRDo5GbFho=; b=TBbFhXd/UuEJkQ5iEQq8l9WMCXLzLH31a6KTyftwYRxRWicLCtLLOjtoGxLEujFrFK fTUUY/9lDC56r2z2oy6AegfdiR5FUhWYNiCzVq+PaEHBAed3hYT421doFgfU77wEXb8U Ik5GQpDgSniuTBp5VkE6pPXyRXFUiB6M1vZYU3/76trx3YgeAZcmr/A8iplqmlKwMHKI Kv5w4eHcB9jzGv8grl9JJkH8isvdvMzsJHUpQ/JP+hsVhx4MxvOuYFwDJBMAiLZXgHg/ jXW9qhPNO3qpY2v70/iZusOWb7pt55Z9a/r/vDnBkyWVK1dqqH97x5AwyJ9F2TWSt/Py J3yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679582306; h=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=Cx+GcrEDqjRPkv5aisXjjBSTV80JuMBr8NRDo5GbFho=; b=mal3pkTM+co5zsLqJzWzXUwRhYOYi2PSzC0RkLrtj1qXc/eDsrAKLRqf/cohxVXD96 6ZtFs/NzvM7KcEJ9os6phDm7jTjJ1AN2h1qPc030ivQiK4eUmgzDe72o+y9o5WhvheSW 5tKyhy3HILaQMXUCkfzKz0TyqvdPr1lKm/7frKfaxmWVdApmp/2j5WGTuJZ3K/ekzDnN pE6/zzgVVdJoxFiRJV3Z4L8DMl5CB3cV9tANQqPx0GIA8n294cUfOiMbz9TK/tkfBQAS BXpuJ2SR6EgygJYKSbXJWZo2AYct0MY2LnnnofvBac2HRbSftfbAnWGnnjl7+GAHBPPC Wrnw== X-Gm-Message-State: AAQBX9c8DNC9TVLNtQkLStCx7g5XQwZYJu9LTx+5rmNlcXvRusgy9kXN 8Rb7PzDDYXG0OtD/Mun7gX1stBWVJj6QRbU7GyY= X-Google-Smtp-Source: AKy350a/Rd73nq0AM78IJ/DY4WpAHqH4R+xQGp0BNtTDSNOf76HPyk6jTotkGqepMnXUgH3xk1wdd2gnIlJCufsgJZo= X-Received: by 2002:a81:b186:0:b0:544:b8d8:339e with SMTP id p128-20020a81b186000000b00544b8d8339emr1960248ywh.5.1679582305806; Thu, 23 Mar 2023 07:38:25 -0700 (PDT) MIME-Version: 1.0 References: <9a8f5783-c001-43ae-4287-63776a08f1bd@gmail.com> <20230220.120114.2218814506773492965.horikyota.ntt@gmail.com> <20230222.115019.1791643689188271652.horikyota.ntt@gmail.com> <20230316230243.ngq7rd2t45lqcxyi@liskov> In-Reply-To: <20230316230243.ngq7rd2t45lqcxyi@liskov> From: Nazir Bilal Yavuz Date: Thu, 23 Mar 2023 17:38:14 +0300 Message-ID: Subject: Re: Refactor calculations to use instr_time To: Nazir Bilal Yavuz , Kyotaro Horiguchi , andres@anarazel.de, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000b5c79905f7923a26" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b5c79905f7923a26 Content-Type: text/plain; charset="UTF-8" Hi, Thanks for the review. On Fri, 17 Mar 2023 at 02:02, Melanie Plageman wrote: > I think you want one less L here? > WALLSTAT_ACC_INSTR_TIME_TYPE -> WALSTAT_ACC_INSTR_TIME_TYPE Done. > Also, I don't quite understand why TYPE is at the end of the name. I > think it would still be clear without it. Done. > I might find it clearer if the WALSTAT_ACC_INSTR_TIME_TYPE macro was > defined before using it for those fields instead of defining it right > after defining WALSTAT_ACC. Since it is undefined together with WALSTAT_ACC, defining them together makes sense to me. > > + * This struct stores wal-related durations as instr_time, which makes it > > + * easier to accumulate them without requiring type conversions. Then, > > + * during stats flush, they will be moved into shared stats with type > > + * conversions. > > + */ > > +typedef struct PgStat_PendingWalStats > > +{ > > + PgStat_Counter wal_buffers_full; > > + PgStat_Counter wal_write; > > + PgStat_Counter wal_sync; > > + instr_time wal_write_time; > > + instr_time wal_sync_time; > > +} PgStat_PendingWalStats; > > + > > So, I am not a fan of having this second struct (PgStat_PendingWalStats) > which only has a subset of the members of PgStat_WalStats. It is pretty > confusing. > > It is okay to have two structs -- one that is basically "in-memory" and > one that is a format that can be on disk, but these two structs with > different members are confusing and don't convey why we have the two > structs. > > I would either put WalUsage into PgStat_PendingWalStats (so that it has > all the same members as PgStat_WalStats), or figure out a way to > maintain WalUsage separately from PgStat_WalStats or something else. > Worst case, add more comments to the struct definitions to explain why > they have the members they have and how WalUsage relates to them. Yes, but like Andres said this could be better done as a separate patch. v6 is attached. Regards, Nazir Bilal Yavuz Microsoft --000000000000b5c79905f7923a26 Content-Type: application/x-patch; name="v6-0001-Refactor-instr_time-calculations.patch" Content-Disposition: attachment; filename="v6-0001-Refactor-instr_time-calculations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfkys7bi0 RnJvbSAwMmYxYjU0MjZhZDkzOTRhNjczYzI4YTZkZjUzZmM1NmZmNmZmYTg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXppciBCaWxhbCBZYXZ1eiA8YnlhdnV6ODFAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE1OjI1OjQ0ICswMzAwClN1YmplY3Q6IFtQQVRDSCB2 Nl0gUmVmYWN0b3IgaW5zdHJfdGltZSBjYWxjdWxhdGlvbnMKCkluIGluc3RyX3RpbWUuaCBpdCBp cyBzdGF0ZWQgdGhhdDoKCiogV2hlbiBzdW1taW5nIG11bHRpcGxlIG1lYXN1cmVtZW50cywgaXQn cyByZWNvbW1lbmRlZCB0byBsZWF2ZSB0aGUKKiBydW5uaW5nIHN1bSBpbiBpbnN0cl90aW1lIGZv cm0gKGllLCB1c2UgSU5TVFJfVElNRV9BREQgb3IKKiBJTlNUUl9USU1FX0FDQ1VNX0RJRkYpIGFu ZCBjb252ZXJ0IHRvIGEgcmVzdWx0IGZvcm1hdCBvbmx5IGF0IHRoZSBlbmQuCgpTbywgdGhpcyBw YXRjaCBhaW1zIHRvIHJlZmFjdG9yICdQZW5kaW5nV2FsU3RhdHMnIHRvIHVzZSAnaW5zdHJfdGlt ZScgaW5zdGVhZApvZiAnUGdTdGF0X0NvdW50ZXInIHdoaWxlIGFjY3VtdWxhdGluZyAnd2FsX3dy aXRlX3RpbWUnIGFuZCAnd2FsX3N5bmNfdGltZScuCgpBbHNvLCBzb21lIGNhbGN1bGF0aW9ucyBh cmUgcmVmYWN0b3JlZCB0byB1c2UgJ0lOU1RSX1RJTUVfQUNDVU1fRElGRicgaW5zdGVhZApvZiB1 c2luZyAnSU5TVFJfVElNRV9TVUJUUkFDVCcgYW5kICdJTlNUUl9USU1FX0FERCcuCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgIHwgIDYgKystLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgICAgICB8ICA2ICsrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfd2FsLmMgfCAzMSArKysrKysrKysrKysrLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysr KysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgIHwgIDEgKwogNSBm aWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKaW5kZXggNTQzZDRkODk3YWUuLjQ2ODIxYWQ2MDU2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC0yMjA2LDggKzIyMDYsNyBAQCBYTG9nV3JpdGUoWExv Z3dydFJxc3QgV3JpdGVScXN0LCBUaW1lTGluZUlEIHRsaSwgYm9vbCBmbGV4aWJsZSkKIAkJCQkJ aW5zdHJfdGltZQlkdXJhdGlvbjsKIAogCQkJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGR1cmF0 aW9uKTsKLQkJCQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwgc3RhcnQpOwotCQkJCQlQ ZW5kaW5nV2FsU3RhdHMud2FsX3dyaXRlX3RpbWUgKz0gSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMo ZHVyYXRpb24pOworCQkJCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoUGVuZGluZ1dhbFN0YXRzLndh bF93cml0ZV90aW1lLCBkdXJhdGlvbiwgc3RhcnQpOwogCQkJCX0KIAogCQkJCVBlbmRpbmdXYWxT dGF0cy53YWxfd3JpdGUrKzsKQEAgLTgyMDQsOCArODIwMyw3IEBAIGlzc3VlX3hsb2dfZnN5bmMo aW50IGZkLCBYTG9nU2VnTm8gc2Vnbm8sIFRpbWVMaW5lSUQgdGxpKQogCQlpbnN0cl90aW1lCWR1 cmF0aW9uOwogCiAJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZHVyYXRpb24pOwotCQlJTlNUUl9U SU1FX1NVQlRSQUNUKGR1cmF0aW9uLCBzdGFydCk7Ci0JCVBlbmRpbmdXYWxTdGF0cy53YWxfc3lu Y190aW1lICs9IElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGR1cmF0aW9uKTsKKwkJSU5TVFJfVElN RV9BQ0NVTV9ESUZGKFBlbmRpbmdXYWxTdGF0cy53YWxfc3luY190aW1lLCBkdXJhdGlvbiwgc3Rh cnQpOwogCX0KIAogCVBlbmRpbmdXYWxTdGF0cy53YWxfc3luYysrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmls ZS9idWZmaWxlLmMKaW5kZXggMGE1MTYyNGRmM2IuLmU1NWY4NmI2NzVlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvZmlsZS9idWZmaWxlLmMKQEAgLTQ2OSw4ICs0NjksNyBAQCBCdWZGaWxlTG9hZEJ1ZmZlcihC dWZGaWxlICpmaWxlKQogCWlmICh0cmFja19pb190aW1pbmcpCiAJewogCQlJTlNUUl9USU1FX1NF VF9DVVJSRU5UKGlvX3RpbWUpOwotCQlJTlNUUl9USU1FX1NVQlRSQUNUKGlvX3RpbWUsIGlvX3N0 YXJ0KTsKLQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS50ZW1wX2Jsa19yZWFkX3RpbWUs IGlvX3RpbWUpOworCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS50ZW1wX2Js a19yZWFkX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKIAl9CiAKIAkvKiB3ZSBjaG9vc2Ugbm90 IHRvIGFkdmFuY2UgY3VyT2Zmc2V0IGhlcmUgKi8KQEAgLTU0NCw4ICs1NDMsNyBAQCBCdWZGaWxl RHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQogCQlpZiAodHJhY2tfaW9fdGltaW5nKQogCQl7CiAJ CQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGlvX3RpbWUpOwotCQkJSU5TVFJfVElNRV9TVUJUUkFD VChpb190aW1lLCBpb19zdGFydCk7Ci0JCQlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLnRl bXBfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUpOworCQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBn QnVmZmVyVXNhZ2UudGVtcF9ibGtfd3JpdGVfdGltZSwgaW9fdGltZSwgaW9fc3RhcnQpOwogCQl9 CiAKIAkJZmlsZS0+Y3VyT2Zmc2V0ICs9IGJ5dGVzdG93cml0ZTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF93YWwuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdF93YWwuYwppbmRleCBlODU5OGIyZjRlMC4uOTRmMWEzYjA2ZTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF93YWwuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfd2FsLmMKQEAgLTIxLDcgKzIxLDcgQEAKICNp bmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAKIAotUGdTdGF0X1dhbFN0YXRzIFBlbmRp bmdXYWxTdGF0cyA9IHswfTsKK1BnU3RhdF9QZW5kaW5nV2FsU3RhdHMgUGVuZGluZ1dhbFN0YXRz ID0gezB9OwogCiAvKgogICogV0FMIHVzYWdlIGNvdW50ZXJzIHNhdmVkIGZyb20gcGdXQUxVc2Fn ZSBhdCB0aGUgcHJldmlvdXMgY2FsbCB0bwpAQCAtNzAsNyArNzAsNyBAQCBib29sCiBwZ3N0YXRf Zmx1c2hfd2FsKGJvb2wgbm93YWl0KQogewogCVBnU3RhdFNoYXJlZF9XYWwgKnN0YXRzX3NobWVt ID0gJnBnU3RhdExvY2FsLnNobWVtLT53YWw7Ci0JV2FsVXNhZ2UJZGlmZiA9IHswfTsKKwlXYWxV c2FnZQl3YWxfdXNhZ2VfZGlmZiA9IHswfTsKIAogCUFzc2VydChJc1VuZGVyUG9zdG1hc3RlciB8 fCAhSXNQb3N0bWFzdGVyRW52aXJvbm1lbnQpOwogCUFzc2VydChwZ1N0YXRMb2NhbC5zaG1lbSAh PSBOVUxMICYmCkBAIC04OCwyNSArODgsMjYgQEAgcGdzdGF0X2ZsdXNoX3dhbChib29sIG5vd2Fp dCkKIAkgKiBDYWxjdWxhdGUgaG93IG11Y2ggV0FMIHVzYWdlIGNvdW50ZXJzIHdlcmUgaW5jcmVh c2VkIGJ5IHN1YnRyYWN0aW5nIHRoZQogCSAqIHByZXZpb3VzIGNvdW50ZXJzIGZyb20gdGhlIGN1 cnJlbnQgb25lcy4KIAkgKi8KLQlXYWxVc2FnZUFjY3VtRGlmZigmZGlmZiwgJnBnV2FsVXNhZ2Us ICZwcmV2V2FsVXNhZ2UpOwotCVBlbmRpbmdXYWxTdGF0cy53YWxfcmVjb3JkcyA9IGRpZmYud2Fs X3JlY29yZHM7Ci0JUGVuZGluZ1dhbFN0YXRzLndhbF9mcGkgPSBkaWZmLndhbF9mcGk7Ci0JUGVu ZGluZ1dhbFN0YXRzLndhbF9ieXRlcyA9IGRpZmYud2FsX2J5dGVzOworCVdhbFVzYWdlQWNjdW1E aWZmKCZ3YWxfdXNhZ2VfZGlmZiwgJnBnV2FsVXNhZ2UsICZwcmV2V2FsVXNhZ2UpOwogCiAJaWYg KCFub3dhaXQpCiAJCUxXTG9ja0FjcXVpcmUoJnN0YXRzX3NobWVtLT5sb2NrLCBMV19FWENMVVNJ VkUpOwogCWVsc2UgaWYgKCFMV0xvY2tDb25kaXRpb25hbEFjcXVpcmUoJnN0YXRzX3NobWVtLT5s b2NrLCBMV19FWENMVVNJVkUpKQogCQlyZXR1cm4gdHJ1ZTsKIAotI2RlZmluZSBXQUxTVEFUX0FD QyhmbGQpIHN0YXRzX3NobWVtLT5zdGF0cy5mbGQgKz0gUGVuZGluZ1dhbFN0YXRzLmZsZAotCVdB TFNUQVRfQUNDKHdhbF9yZWNvcmRzKTsKLQlXQUxTVEFUX0FDQyh3YWxfZnBpKTsKLQlXQUxTVEFU X0FDQyh3YWxfYnl0ZXMpOwotCVdBTFNUQVRfQUNDKHdhbF9idWZmZXJzX2Z1bGwpOwotCVdBTFNU QVRfQUNDKHdhbF93cml0ZSk7Ci0JV0FMU1RBVF9BQ0Mod2FsX3N5bmMpOwotCVdBTFNUQVRfQUND KHdhbF93cml0ZV90aW1lKTsKLQlXQUxTVEFUX0FDQyh3YWxfc3luY190aW1lKTsKKyNkZWZpbmUg V0FMU1RBVF9BQ0MoZmxkLCB2YXJfdG9fYWRkKSBcCisJKHN0YXRzX3NobWVtLT5zdGF0cy5mbGQg Kz0gdmFyX3RvX2FkZC5mbGQpCisjZGVmaW5lIFdBTFNUQVRfQUNDX0lOU1RSX1RJTUUoZmxkKSBc CisJKHN0YXRzX3NobWVtLT5zdGF0cy5mbGQgKz0gSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMoUGVu ZGluZ1dhbFN0YXRzLmZsZCkpCisJV0FMU1RBVF9BQ0Mod2FsX3JlY29yZHMsIHdhbF91c2FnZV9k aWZmKTsKKwlXQUxTVEFUX0FDQyh3YWxfZnBpLCB3YWxfdXNhZ2VfZGlmZik7CisJV0FMU1RBVF9B Q0Mod2FsX2J5dGVzLCB3YWxfdXNhZ2VfZGlmZik7CisJV0FMU1RBVF9BQ0Mod2FsX2J1ZmZlcnNf ZnVsbCwgUGVuZGluZ1dhbFN0YXRzKTsKKwlXQUxTVEFUX0FDQyh3YWxfd3JpdGUsIFBlbmRpbmdX YWxTdGF0cyk7CisJV0FMU1RBVF9BQ0Mod2FsX3N5bmMsIFBlbmRpbmdXYWxTdGF0cyk7CisJV0FM U1RBVF9BQ0NfSU5TVFJfVElNRSh3YWxfd3JpdGVfdGltZSk7CisJV0FMU1RBVF9BQ0NfSU5TVFJf VElNRSh3YWxfc3luY190aW1lKTsKKyN1bmRlZiBXQUxTVEFUX0FDQ19JTlNUUl9USU1FCiAjdW5k ZWYgV0FMU1RBVF9BQ0MKIAogCUxXTG9ja1JlbGVhc2UoJnN0YXRzX3NobWVtLT5sb2NrKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5k ZXggMWU0MThiNjgyYjUuLmU4ZTE3NDIzYzQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0 YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtNDMzLDYgKzQzMywyMSBAQCB0eXBl ZGVmIHN0cnVjdCBQZ1N0YXRfV2FsU3RhdHMKIAlUaW1lc3RhbXBUeiBzdGF0X3Jlc2V0X3RpbWVz dGFtcDsKIH0gUGdTdGF0X1dhbFN0YXRzOwogCisvKgorICogVGhpcyBzdHJ1Y3Qgc3RvcmVzIHdh bC1yZWxhdGVkIGR1cmF0aW9ucyBhcyBpbnN0cl90aW1lLCB3aGljaCBtYWtlcyBpdAorICogZWFz aWVyIHRvIGFjY3VtdWxhdGUgdGhlbSB3aXRob3V0IHJlcXVpcmluZyB0eXBlIGNvbnZlcnNpb25z LiBUaGVuLAorICogZHVyaW5nIHN0YXRzIGZsdXNoLCB0aGV5IHdpbGwgYmUgbW92ZWQgaW50byBz aGFyZWQgc3RhdHMgd2l0aCB0eXBlCisgKiBjb252ZXJzaW9ucy4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgUGdTdGF0X1BlbmRpbmdXYWxTdGF0cworeworCVBnU3RhdF9Db3VudGVyIHdhbF9idWZmZXJz X2Z1bGw7CisJUGdTdGF0X0NvdW50ZXIgd2FsX3dyaXRlOworCVBnU3RhdF9Db3VudGVyIHdhbF9z eW5jOworCWluc3RyX3RpbWUgd2FsX3dyaXRlX3RpbWU7CisJaW5zdHJfdGltZSB3YWxfc3luY190 aW1lOworfSBQZ1N0YXRfUGVuZGluZ1dhbFN0YXRzOworCiAKIC8qCiAgKiBGdW5jdGlvbnMgaW4g cGdzdGF0LmMKQEAgLTc0Niw3ICs3NjEsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgU2Vzc2lvbkVu ZFR5cGUgcGdTdGF0U2Vzc2lvbkVuZENhdXNlOwogICovCiAKIC8qIHVwZGF0ZWQgZGlyZWN0bHkg YnkgYmFja2VuZHMgYW5kIGJhY2tncm91bmQgcHJvY2Vzc2VzICovCi1leHRlcm4gUEdETExJTVBP UlQgUGdTdGF0X1dhbFN0YXRzIFBlbmRpbmdXYWxTdGF0czsKK2V4dGVybiBQR0RMTElNUE9SVCBQ Z1N0YXRfUGVuZGluZ1dhbFN0YXRzIFBlbmRpbmdXYWxTdGF0czsKIAogCiAjZW5kaWYJCQkJCQkJ LyogUEdTVEFUX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMDk3ZjQyZTFiMzQu Ljg3OWY3NDhhN2RjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjA0OCw2ICsyMDQ4 LDcgQEAgUGdTdGF0X0tpbmQKIFBnU3RhdF9LaW5kSW5mbwogUGdTdGF0X0xvY2FsU3RhdGUKIFBn U3RhdF9QZW5kaW5nRHJvcHBlZFN0YXRzSXRlbQorUGdTdGF0X1BlbmRpbmdXYWxTdGF0cwogUGdT dGF0X1NMUlVTdGF0cwogUGdTdGF0X1NobWVtQ29udHJvbAogUGdTdGF0X1NuYXBzaG90Ci0tIAoy LjQwLjAKCg== --000000000000b5c79905f7923a26--