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 1tsuae-006geQ-9V for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Mar 2025 02:16:01 +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 1tsuZd-00BnVE-1A for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Mar 2025 02:14:57 +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.94.2) (envelope-from ) id 1tsuZc-00BnTh-8V for pgsql-hackers@lists.postgresql.org; Fri, 14 Mar 2025 02:14:56 +0000 Received: from mail-m16.yeah.net ([220.197.32.19]) by magus.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1tsuZV-002kw5-0V for pgsql-hackers@lists.postgresql.org; Fri, 14 Mar 2025 02:14:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yeah.net; s=s110527; h=Content-Type:Message-ID:Date:MIME-Version:Subject: From; bh=C6rz46I65Hh5mk2TexLtD/RtTbufgZZJC5B1zHP2I3U=; b=T7UzeIE y7Fez7cmgl5WnOSSzbPVzoC63kMuSLYSB3MtNwbOzrW9x4GMzCic1dF/PW61WRLR H1YJe/NqkoDtOHHLsb3vhJRdk9oz5bJYwQTaY+o0y2k7IHvFAQb5/EvqYKgTAOz3 S5//ySml790tcy8Z9c8gK3Y+JwvtaRmXIpRE= Received: from [192.168.10.58] (unknown []) by gzsmtp2 (Coremail) with SMTP id Ms8vCgAnLu4LkdNnmTTeAA--.36127S2; Fri, 14 Mar 2025 10:14:36 +0800 (CST) Content-Type: multipart/mixed; boundary="------------SXPwK0cz8PlURR2haLNlHgmm" Message-ID: <2df8509c-e28a-467a-8f03-f3cfe812ed62@yeah.net> Date: Fri, 14 Mar 2025 10:14:35 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Available disk space per tablespace To: Christoph Berg , PostgreSQL Hackers References: Content-Language: en-US From: Quan Zongliang In-Reply-To: X-CM-TRANSID: Ms8vCgAnLu4LkdNnmTTeAA--.36127S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxZw1xGr45Xw4DXr4xZr1DWrg_yoW5Wr4DpF y3Jry7tw18Gw4UXr47Gr48Ary8Gr1rJr1UXF1Utry8Xw1UCwsrtrsrtry8JryDJry8CF1D ZFyjyw1UJr1UZw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jVeHfUUUUU= X-Originating-IP: [117.15.167.34] X-CM-SenderInfo: htxd06xrqjzxxdqjq5hhdkh0dhw/1tbiCwkQJGfTRV3lFgAAsp 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. --------------SXPwK0cz8PlURR2haLNlHgmm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025/3/14 02:10, Christoph Berg wrote: > Hi, > > I'm picking up a 5 year old patch again: > https://www.postgresql.org/message-id/flat/20191108132419.GG8017%40msg.df7cb.de > > Users will be interested in knowing how much extra data they can load > into a database, but PG currently does not expose that number. This > patch introduces a new function pg_tablespace_avail() that takes a > tablespace name or oid, and returns the number of bytes "available" > there. This is the number without any reserved blocks (Unix, f_avail) > or available to the current user (Windows). > > (This is not meant to replace a full-fledged OS monitoring system that > has much more numbers about disks and everything, it is filling a UX > gap.) > > Compared to the last patch, this just returns a single number so it's > easier to use - total space isn't all that interesting, we just return > the number the user wants. > > The free space is included in \db+ output: > > postgres =# \db+ > List of tablespaces > Name │ Owner │ Location │ Access privileges │ Options │ Size │ Free │ Description > ────────────┼───────┼──────────┼───────────────────┼─────────┼─────────┼────────┼───────────── > pg_default │ myon │ │ ∅ │ ∅ │ 23 MB │ 538 GB │ ∅ > pg_global │ myon │ │ ∅ │ ∅ │ 556 kB │ 538 GB │ ∅ > spc │ myon │ /tmp/spc │ ∅ │ ∅ │ 0 bytes │ 31 GB │ ∅ > (3 rows) > > The patch has also been tested on Windows. > > TODO: Figure out which systems need statfs() vs statvfs() > I tested the patch under macos. Abnormal work: List of tablespaces Name | Owner | Location | Access privileges | Options | Size | Free | Description ------------+--------+----------+-------------------+---------+--------+-------+------------- pg_default | quanzl | | | | 23 MB |23 TB | pg_global | quanzl | | | | 556 kB | 23 TB | (2 rows) Actually my disk is 1TB. According to the statvfs documentation for macOS f_frsize The size in bytes of the minimum unit of allocation on this file system. f_bsize The preferred length of I/O requests for files on this file system. I tweaked the code a little bit. See the attachment. List of tablespaces Name | Owner | Location | Access privileges | Options | Size | Free | Description ------------+--------+----------+-------------------+---------+--------+--------+------------- pg_default | quanzl | | | | 22 MB | 116 GB | pg_global | quanzl | | | | 556 kB | 116 GB | (2 rows) In addition, many systems use 1000 as 1k to represent the storage size. Shouldn't we consider this factor as well? > Christoph --------------SXPwK0cz8PlURR2haLNlHgmm Content-Type: text/plain; charset=UTF-8; name="0002-Add-pg_tablespace_avail-functions.patch" Content-Disposition: attachment; filename="0002-Add-pg_tablespace_avail-functions.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVu Yy5zZ21sCmluZGV4IDFjMzgxMGUxYTA0Li5jMDc1OGI5MjQ0ZiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0z MDA4OSw2ICszMDA4OSwyNyBAQCBwb3N0Z3Jlcz0jIFNFTEVDVCAnMC8wJzo6cGdfbHNuICsg cGQuc2VnbWVudF9udW1iZXIgKiBwcy5zZXR0aW5nOjppbnQgKyA6b2Zmc2V0CiAgICAgICAg PC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIAorICAgICAgPHJvdz4KKyAgICAgICA8 ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1 cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfdGFibGVz cGFjZV9hdmFpbDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxm dW5jdGlvbj5wZ190YWJsZXNwYWNlX2F2YWlsPC9mdW5jdGlvbj4gKCA8dHlwZT5uYW1lPC90 eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5iaWdpbnQ8L3JldHVybnZhbHVlPgorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAg ICAgIDxmdW5jdGlvbj5wZ190YWJsZXNwYWNlX2F2YWlsPC9mdW5jdGlvbj4gKCA8dHlwZT5v aWQ8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJpZ2ludDwvcmV0dXJudmFsdWU+ CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXR1cm5zIHRoZSBh dmFpbGFibGUgZGlzayBzcGFjZSBpbiB0aGUgdGFibGVzcGFjZSB3aXRoIHRoZQorICAgICAg ICBzcGVjaWZpZWQgbmFtZSBvciBPSUQuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uLCB5b3UgbXVz dAorICAgICAgICBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9u IHRoZSBzcGVjaWZpZWQgdGFibGVzcGFjZQorICAgICAgICBvciBoYXZlIHByaXZpbGVnZXMg b2YgdGhlIDxsaXRlcmFsPnBnX3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiByb2xlLAorICAg ICAgICB1bmxlc3MgaXQgaXMgdGhlIGRlZmF1bHQgdGFibGVzcGFjZSBmb3IgdGhlIGN1cnJl bnQgZGF0YWJhc2UuCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKwog ICAgICAgPHJvdz4KICAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgogICAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCmluZGV4IGNlZGNjYzE0MTI5Li45ZTFiZWMwYjQyMiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbApAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgU0VMRUNUICQxIFxw YXJzZSBzdG10MQogICAgICAgICBJZiA8bGl0ZXJhbD54PC9saXRlcmFsPiBpcyBhcHBlbmRl ZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgcmVzdWx0cwogICAgICAgICBhcmUgZGlzcGxh eWVkIGluIGV4cGFuZGVkIG1vZGUuCiAgICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+ IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIGVhY2ggdGFibGVzcGFjZQotICAg ICAgICBpcyBsaXN0ZWQgd2l0aCBpdHMgYXNzb2NpYXRlZCBvcHRpb25zLCBvbi1kaXNrIHNp emUsIHBlcm1pc3Npb25zIGFuZAorICAgICAgICBpcyBsaXN0ZWQgd2l0aCBpdHMgYXNzb2Np YXRlZCBvcHRpb25zLCBvbi1kaXNrIHNpemUgYW5kIGZyZWUgZGlzayBzcGFjZSwgcGVybWlz c2lvbnMgYW5kCiAgICAgICAgIGRlc2NyaXB0aW9uLgogICAgICAgICA8L3BhcmE+CiAgICAg ICAgIDwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGJz aXplLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGJzaXplLmMKaW5kZXggMjU4NjViNjYw ZWYuLmEyNjM3OTUzY2UwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGJz aXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jCkBAIC0xMiw2ICsx MiwxMSBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlIDxzeXMvc3RhdC5o PgorI2lmZGVmIFdJTjMyCisjaW5jbHVkZSA8ZmlsZWFwaS5oPgorI2Vsc2UKKyNpbmNsdWRl IDxzeXMvc3RhdHZmcy5oPgorI2VuZGlmCiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRh aWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCkBAIC0zMTYsNiArMzIxLDk5 IEBAIHBnX3RhYmxlc3BhY2Vfc2l6ZV9uYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIAor LyoKKyAqIFJldHVybiBhdmFpbGFibGUgZGlzayBzcGFjZSBvZiB0YWJsZXNwYWNlLiBSZXR1 cm5zIC0xIGlmIHRoZSB0YWJsZXNwYWNlCisgKiBkaXJlY3RvcnkgY2Fubm90IGJlIGZvdW5k LgorICovCitzdGF0aWMgaW50NjQKK2NhbGN1bGF0ZV90YWJsZXNwYWNlX2F2YWlsKE9pZCB0 YmxzcGNPaWQpCit7CisJY2hhcgkJdGJsc3BjUGF0aFtNQVhQR1BBVEhdOworCUFjbFJlc3Vs dAlhY2xyZXN1bHQ7CisjaWZkZWYgV0lOMzIKKwlVTEFSR0VfSU5URUdFUiBscEZyZWVCeXRl c0F2YWlsYWJsZTsKKyNlbHNlCisJc3RydWN0IHN0YXR2ZnMgZnN0OworI2VuZGlmCisKKwkv KgorCSAqIFVzZXIgbXVzdCBoYXZlIHByaXZpbGVnZXMgb2YgcGdfcmVhZF9hbGxfc3RhdHMg b3IgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlCisJICogZm9yIHRhcmdldCB0YWJsZXNwYWNlLCBl aXRoZXIgZXhwbGljaXRseSBncmFudGVkIG9yIGltcGxpY2l0bHkgYmVjYXVzZQorCSAqIGl0 IGlzIGRlZmF1bHQgZm9yIGN1cnJlbnQgZGF0YWJhc2UuCisJICovCisJaWYgKHRibHNwY09p ZCAhPSBNeURhdGFiYXNlVGFibGVTcGFjZSAmJgorCQkhaGFzX3ByaXZzX29mX3JvbGUoR2V0 VXNlcklkKCksIFJPTEVfUEdfUkVBRF9BTExfU1RBVFMpKQorCXsKKwkJYWNscmVzdWx0ID0g b2JqZWN0X2FjbGNoZWNrKFRhYmxlU3BhY2VSZWxhdGlvbklkLCB0YmxzcGNPaWQsIEdldFVz ZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKKwkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykK KwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1RBQkxFU1BBQ0UsCisJCQkJ CQkgICBnZXRfdGFibGVzcGFjZV9uYW1lKHRibHNwY09pZCkpOworCX0KKworCWlmICh0Ymxz cGNPaWQgPT0gREVGQVVMVFRBQkxFU1BBQ0VfT0lEKQorCQlzbnByaW50Zih0YmxzcGNQYXRo LCBNQVhQR1BBVEgsICJiYXNlIik7CisJZWxzZSBpZiAodGJsc3BjT2lkID09IEdMT0JBTFRB QkxFU1BBQ0VfT0lEKQorCQlzbnByaW50Zih0YmxzcGNQYXRoLCBNQVhQR1BBVEgsICJnbG9i YWwiKTsKKwllbHNlCisJCXNucHJpbnRmKHRibHNwY1BhdGgsIE1BWFBHUEFUSCwgIiVzLyV1 LyVzIiwgUEdfVEJMU1BDX0RJUiwgdGJsc3BjT2lkLAorCQkJCSBUQUJMRVNQQUNFX1ZFUlNJ T05fRElSRUNUT1JZKTsKKworI2lmZGVmIFdJTjMyCisJaWYgKEdldERpc2tGcmVlU3BhY2VF eCh0YmxzcGNQYXRoLCAmbHBGcmVlQnl0ZXNBdmFpbGFibGUsIE5VTEwsIE5VTEwpID09IGZh bHNlKQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gbHBGcmVlQnl0ZXNBdmFpbGFibGUuUXVh ZFBhcnQ7IC8qIFVMT05HTE9ORyBwYXJ0IG9mIFVMQVJHRV9JTlRFR0VSICovCisjZWxzZQor CWlmIChzdGF0dmZzKHRibHNwY1BhdGgsICZmc3QpIDwgMCkKKwkJcmV0dXJuIC0xOworCisj aWYgZGVmaW5lZChfX2Rhcndpbl9fKQorCXJldHVybiBmc3QuZl9iYXZhaWwgKiBmc3QuZl9m cnNpemU7IC8qIGF2YWlsYWJsZSBibG9ja3MgdGltZXMgYmxvY2sgc2l6ZSAqLworI2Vsc2UK KwlyZXR1cm4gZnN0LmZfYmF2YWlsICogZnN0LmZfYnNpemU7IC8qIGF2YWlsYWJsZSBibG9j a3MgdGltZXMgYmxvY2sgc2l6ZSAqLworI2VuZGlmICAgLyogX19kYXJ3aW5fXyAqLworI2Vu ZGlmCit9CisKK0RhdHVtCitwZ190YWJsZXNwYWNlX2F2YWlsX29pZChQR19GVU5DVElPTl9B UkdTKQoreworCU9pZAkJCXRibHNwY09pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJaW50NjQJ CWF2YWlsOworCisJLyoKKwkgKiBOb3QgbmVlZGVkIGZvciBjb3JyZWN0bmVzcywgYnV0IGF2 b2lkIG5vbi11c2VyLWZhY2luZyBlcnJvciBtZXNzYWdlCisJICogbGF0ZXIgaWYgdGhlIHRh Ymxlc3BhY2UgZG9lc24ndCBleGlzdC4KKwkgKi8KKwlpZiAoIVNlYXJjaFN5c0NhY2hlRXhp c3RzMShUQUJMRVNQQUNFT0lELCBPYmplY3RJZEdldERhdHVtKHRibHNwY09pZCkpKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwK KwkJCQllcnJtc2coInRhYmxlc3BhY2Ugd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCB0 YmxzcGNPaWQpKTsKKworCWF2YWlsID0gY2FsY3VsYXRlX3RhYmxlc3BhY2VfYXZhaWwodGJs c3BjT2lkKTsKKworCWlmIChhdmFpbCA8IDApCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQ R19SRVRVUk5fSU5UNjQoYXZhaWwpOworfQorCitEYXR1bQorcGdfdGFibGVzcGFjZV9hdmFp bF9uYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTmFtZQkJdGJsc3BjTmFtZSA9IFBHX0dF VEFSR19OQU1FKDApOworCU9pZAkJCXRibHNwY09pZCA9IGdldF90YWJsZXNwYWNlX29pZChO YW1lU3RyKCp0YmxzcGNOYW1lKSwgZmFsc2UpOworCWludDY0CQlhdmFpbDsKKworCWF2YWls ID0gY2FsY3VsYXRlX3RhYmxlc3BhY2VfYXZhaWwodGJsc3BjT2lkKTsKKworCWlmIChhdmFp bCA8IDApCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fSU5UNjQoYXZhaWwp OworfQorCisKIC8qCiAgKiBjYWxjdWxhdGUgc2l6ZSBvZiAob25lIGZvcmsgb2YpIGEgcmVs YXRpb24KICAqCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGU2Y2Y0NjhhYzllLi44YzUyYTEyNmFjMSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKQEAgLTI0MSwxMCArMjQxLDE1IEBAIGRlc2NyaWJlVGFibGVzcGFjZXMoY29u c3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCQlwcmludEFDTENvbHVtbigmYnVm LCAic3BjYWNsIik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICIsXG4g IHNwY29wdGlvbnMgQVMgXCIlc1wiIgotCQkJCQkJICAiLFxuICBwZ19jYXRhbG9nLnBnX3Np emVfcHJldHR5KHBnX2NhdGFsb2cucGdfdGFibGVzcGFjZV9zaXplKG9pZCkpIEFTIFwiJXNc IiIKLQkJCQkJCSAgIixcbiAgcGdfY2F0YWxvZy5zaG9ial9kZXNjcmlwdGlvbihvaWQsICdw Z190YWJsZXNwYWNlJykgQVMgXCIlc1wiIiwKKwkJCQkJCSAgIixcbiAgcGdfY2F0YWxvZy5w Z19zaXplX3ByZXR0eShwZ19jYXRhbG9nLnBnX3RhYmxlc3BhY2Vfc2l6ZShvaWQpKSBBUyBc IiVzXCIiLAogCQkJCQkJICBnZXR0ZXh0X25vb3AoIk9wdGlvbnMiKSwKLQkJCQkJCSAgZ2V0 dGV4dF9ub29wKCJTaXplIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiU2l6ZSIpKTsKKwkJ aWYgKHBzZXQuc3ZlcnNpb24gPj0gMTgwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJCQkgICIsXG4gIHBnX2NhdGFsb2cucGdfc2l6ZV9wcmV0dHkocGdfY2F0YWxv Zy5wZ190YWJsZXNwYWNlX2F2YWlsKG9pZCkpIEFTIFwiJXNcIiIsCisJCQkJCQkJICBnZXR0 ZXh0X25vb3AoIkZyZWUiKSk7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkg ICIsXG4gIHBnX2NhdGFsb2cuc2hvYmpfZGVzY3JpcHRpb24ob2lkLCAncGdfdGFibGVzcGFj ZScpIEFTIFwiJXNcIiIsCiAJCQkJCQkgIGdldHRleHRfbm9vcCgiRGVzY3JpcHRpb24iKSk7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA4OTA4MjJlYWY3OS4uMzlj M2I4YzI1NTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNzY4Myw2ICs3Njgz LDE0IEBACiAgIGRlc2NyID0+ICd0b3RhbCBkaXNrIHNwYWNlIHVzYWdlIGZvciB0aGUgc3Bl Y2lmaWVkIHRhYmxlc3BhY2UnLAogICBwcm9uYW1lID0+ICdwZ190YWJsZXNwYWNlX3NpemUn LCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ2ludDgnLAogICBwcm9hcmd0 eXBlcyA9PiAnbmFtZScsIHByb3NyYyA9PiAncGdfdGFibGVzcGFjZV9zaXplX25hbWUnIH0s Cit7IG9pZCA9PiAnNjAxNScsCisgIGRlc2NyID0+ICdkaXNrIHN0YXRzIGZvciB0aGUgc3Bl Y2lmaWVkIHRhYmxlc3BhY2UnLAorICBwcm9uYW1lID0+ICdwZ190YWJsZXNwYWNlX2F2YWls JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywKKyAgcHJvYXJn dHlwZXMgPT4gJ29pZCcsIHByb3NyYyA9PiAncGdfdGFibGVzcGFjZV9hdmFpbF9vaWQnIH0s Cit7IG9pZCA9PiAnNjAxNicsCisgIGRlc2NyID0+ICdkaXNrIHN0YXRzIGZvciB0aGUgc3Bl Y2lmaWVkIHRhYmxlc3BhY2UnLAorICBwcm9uYW1lID0+ICdwZ190YWJsZXNwYWNlX2F2YWls JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywKKyAgcHJvYXJn dHlwZXMgPT4gJ25hbWUnLCBwcm9zcmMgPT4gJ3BnX3RhYmxlc3BhY2VfYXZhaWxfbmFtZScg fSwKIHsgb2lkID0+ICcyMzI0JywgZGVzY3IgPT4gJ3RvdGFsIGRpc2sgc3BhY2UgdXNhZ2Ug Zm9yIHRoZSBzcGVjaWZpZWQgZGF0YWJhc2UnLAogICBwcm9uYW1lID0+ICdwZ19kYXRhYmFz ZV9zaXplJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywKICAg cHJvYXJndHlwZXMgPT4gJ29pZCcsIHByb3NyYyA9PiAncGdfZGF0YWJhc2Vfc2l6ZV9vaWQn IH0sCg== --------------SXPwK0cz8PlURR2haLNlHgmm--