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 1rQ9hz-00GtoI-5y for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jan 2024 17:28:12 +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 1rQ9hx-00EpFb-LI for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jan 2024 17:28:09 +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 1rQ9hw-00EpFT-Uo for pgsql-hackers@lists.postgresql.org; Wed, 17 Jan 2024 17:28:09 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rQ9hp-0021FE-Ly for pgsql-hackers@postgresql.org; Wed, 17 Jan 2024 17:28:07 +0000 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2cca5d81826so147794641fa.2 for ; Wed, 17 Jan 2024 09:28:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705512480; x=1706117280; darn=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=oksZX9u65a45siVBaW9e8fDll6YfH0Vlt6KDkvWBIgU=; b=JF46FPcAFC3ko/dxDRCwl1cFW0Wy2H9u/2QVL3wjLQw8xi095R6Bz68vttqEgJKxWQ 63Ra+yuG5UPJ3wBsT6+8vS1ZlY87pWDm+k4VCiCIz01DvUM8evV9vVNKz1auXUG+7dsB NBfHYWm15oke440BhCqa+POb4Dl0B0DHr5noWAdzAhtIAkQ2xQ/JkuPFwa6GS4BLCVdd E59A2yvyd+sDVXq48VdawmSYaQ18g1quxwDxf1d6BPh1KYukZZa3GEtIqFhNp1HUmmXN uUBngB5sGrodV3lY5bt/dRP3erbrkrd3J4fY8LrkUd81R8SwFlCLutaP321+OaLMVu5P vaMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705512480; x=1706117280; h=cc: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=oksZX9u65a45siVBaW9e8fDll6YfH0Vlt6KDkvWBIgU=; b=GfcR1ZdfqZUUsgdbFtaBsPqiRFGJnh9NBm/RP/eixbHMgx4CQu9wm+0cwReiDTKQpK EjEFc/Nx8b8A3UAeveM//GVKANpFcwyS/tVBBZYfOfQ7kQXKMK6NbwOkk8w7qCjEYRcG 18qTpdSEEwDJRkGoGmvPG/IZE1LIXOhPnzv+pzMazodvOWm+/Uhjvg6TpuvlSMGlN/+1 vpDVoSwZJZO9MbFLzkODfH0ahtm6QTJ94AsT7B/EHf1E+WJdK9j0xujCspEKHx9nOQ0d 6szUl+LVMskUNdvl7SiTtEaaQt9yFEYolCmRA37XItMDhKOp1L2Ii5srIbm0B0k/1dgc LlTg== X-Gm-Message-State: AOJu0Yxvh/IU6kBL3ECFGpQf4Es/1ZQ4cl4Q9BJmW+C3CM6scpBu0tpS hcYNjePUy+fAx3zxBS7GUrERUSIXHJFCPtl9Dys= X-Google-Smtp-Source: AGHT+IEK3jtA3hO5KoXj8P4gkieAHRYu4+isKqEfoYQKK9UaE5JFSHp1xnikG1CaY1sEodQlLXMPJMq5oGo8fHup5JE= X-Received: by 2002:a2e:95ca:0:b0:2cd:d217:6dd9 with SMTP id y10-20020a2e95ca000000b002cdd2176dd9mr2384488ljh.29.1705512479639; Wed, 17 Jan 2024 09:27:59 -0800 (PST) MIME-Version: 1.0 References: <20230603223824.o7iyochli2dwwi7k@alap3.anarazel.de> In-Reply-To: From: Bharath Rupireddy Date: Wed, 17 Jan 2024 22:57:48 +0530 Message-ID: Subject: Re: New Table Access Methods for Multi and Single Inserts To: Jacob Champion Cc: Andres Freund , Dilip Kumar , Luc Vlaming , Justin Pryzby , PostgreSQL-development , Paul Guo , Jeff Davis , Michael Paquier , Matthias van de Meent Content-Type: multipart/mixed; boundary="00000000000082844a060f279106" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000082844a060f279106 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Aug 1, 2023 at 10:32=E2=80=AFPM Jacob Champion wrote: > > On Tue, Aug 1, 2023 at 9:31=E2=80=AFAM Bharath Rupireddy > wrote: > > Thanks. Finally, I started to spend time on this. Just curious - may > > I know the discussion in/for which this patch is referenced? What was > > the motive? Is it captured somewhere? > > It may not have been the only place, but we at least touched on it > during the unconference: > > https://wiki.postgresql.org/wiki/PgCon_2023_Developer_Unconference#Ta= ble_AMs > > We discussed two related-but-separate ideas: > 1) bulk/batch operations and > 2) maintenance of TAM state across multiple related operations. Thank you. I'm attaching v8 patch-set here which includes use of new insert TAMs for COPY FROM. With this, postgres not only will have the new TAM for inserts, but they also can make the following commands faster - CREATE TABLE AS, SELECT INTO, CREATE MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW and COPY FROM. I'll perform some testing in the coming days and post the results here, until then I appreciate any feedback on the patches. I've also added this proposal to CF - https://commitfest.postgresql.org/47/4777/. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --00000000000082844a060f279106 Content-Type: application/x-patch; name="v8-0001-New-TAMs-for-inserts.patch" Content-Disposition: attachment; filename="v8-0001-New-TAMs-for-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lri1maxi0 RnJvbSBjYmRmMjkzNWJlMzYwMDE3YzBkNjI0NzllODc5NjMwZDRmZWM4NzY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTcgSmFuIDIwMjQgMTY6NDQ6MTkgKzAw MDAKU3ViamVjdDogW1BBVENIIHY4XSBOZXcgVEFNcyBmb3IgaW5zZXJ0cwoKLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgIHwgMjI0ICsrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgICA5ICsK IHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgfCAgNDkgKysrKysKIHNy Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgfCAxNDMgKysrKysrKysrKysr KysrCiA0IGZpbGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwppbmRleCA3MDc0NjBhNTM2Li43ZGYzMDUzODBlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCkBAIC0y NDQ2LDYgKzI0NDcsMjI5IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBU dXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAlwZ3N0YXRfY291bnRfaGVhcF9p bnNlcnQocmVsYXRpb24sIG50dXBsZXMpOwogfQogCisvKgorICogSW5pdGlhbGl6ZSBzdGF0ZSBy ZXF1aXJlZCBmb3IgYW4gaW5zZXJ0IGEgc2luZ2xlIHR1cGxlIG9yIG11bHRpcGxlIHR1cGxlcwor ICogaW50byBhIGhlYXAuCisgKi8KK1RhYmxlSW5zZXJ0U3RhdGUgKgoraGVhcF9pbnNlcnRfYmVn aW4oUmVsYXRpb24gcmVsLCBDb21tYW5kSWQgY2lkLCBpbnQgYW1fZmxhZ3MsIGludCBpbnNlcnRf ZmxhZ3MpCit7CisJVGFibGVJbnNlcnRTdGF0ZSAqdGlzdGF0ZTsKKworCXRpc3RhdGUgPSBwYWxs b2MwKHNpemVvZihUYWJsZUluc2VydFN0YXRlKSk7CisJdGlzdGF0ZS0+cmVsID0gcmVsOworCXRp c3RhdGUtPmNpZCA9IGNpZDsKKwl0aXN0YXRlLT5hbV9mbGFncyA9IGFtX2ZsYWdzOworCXRpc3Rh dGUtPmluc2VydF9mbGFncyA9IGluc2VydF9mbGFnczsKKworCWlmICgoYW1fZmxhZ3MgJiBUQUJM RUFNX01VTFRJX0lOU0VSVFMpICE9IDAgfHwKKwkJKGFtX2ZsYWdzICYgVEFCTEVBTV9CVUxLV1JJ VEVfQlVGRkVSX0FDQ0VTU19TVFJBVEVHWSkpCisJCXRpc3RhdGUtPmFtX2RhdGEgPSBwYWxsb2Mw KHNpemVvZihIZWFwSW5zZXJ0U3RhdGUpKTsKKworCWlmICgoYW1fZmxhZ3MgJiBUQUJMRUFNX01V TFRJX0lOU0VSVFMpICE9IDApCisJeworCQlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAqbWlzdGF0ZTsK KworCQltaXN0YXRlID0gcGFsbG9jMChzaXplb2YoSGVhcE11bHRpSW5zZXJ0U3RhdGUpKTsKKwkJ bWlzdGF0ZS0+c2xvdHMgPSBwYWxsb2MwKHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIEhFQVBf TUFYX0JVRkZFUkVEX1NMT1RTKTsKKworCQltaXN0YXRlLT5jb250ZXh0ID0gQWxsb2NTZXRDb250 ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkJICJoZWFwX211bHRp X2luc2VydF92MiBtZW1vcnkgY29udGV4dCIsCisJCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVM VF9TSVpFUyk7CisKKwkJKChIZWFwSW5zZXJ0U3RhdGUgKikgdGlzdGF0ZS0+YW1fZGF0YSktPm1p c3RhdGUgPSBtaXN0YXRlOworCX0KKworCWlmICgoYW1fZmxhZ3MgJiBUQUJMRUFNX0JVTEtXUklU RV9CVUZGRVJfQUNDRVNTX1NUUkFURUdZKSAhPSAwKQorCQkoKEhlYXBJbnNlcnRTdGF0ZSAqKSB0 aXN0YXRlLT5hbV9kYXRhKS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJcmV0 dXJuIHRpc3RhdGU7Cit9CisKKy8qCisgKiBJbnNlcnQgYSBzaW5nbGUgdHVwbGUgaW50byBhIGhl YXAuCisgKi8KK3ZvaWQKK2hlYXBfaW5zZXJ0X3YyKFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpCit7CisJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CisJSGVh cFR1cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxk RnJlZSk7CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGUgPSBOVUxMOworCisJQXNzZXJ0KHN0YXRl LT5hbV9kYXRhICE9IE5VTEwgJiYKKwkJICAgKChIZWFwSW5zZXJ0U3RhdGUgKikgc3RhdGUtPmFt X2RhdGEpLT5taXN0YXRlID09IE5VTEwpOworCisJLyogVXBkYXRlIHR1cGxlIHdpdGggdGFibGUg b2lkICovCisJc2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChzdGF0ZS0+cmVs KTsKKwl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKKworCWlmIChzdGF0 ZS0+YW1fZGF0YSAhPSBOVUxMICYmCisJCSgoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5hbV9k YXRhKS0+YmlzdGF0ZSAhPSBOVUxMKQorCQliaXN0YXRlID0gKChIZWFwSW5zZXJ0U3RhdGUgKikg c3RhdGUtPmFtX2RhdGEpLT5iaXN0YXRlOworCisJLyogUGVyZm9ybSBpbnNlcnRpb24sIGFuZCBj b3B5IHRoZSByZXN1bHRpbmcgSXRlbVBvaW50ZXIgKi8KKwloZWFwX2luc2VydChzdGF0ZS0+cmVs LCB0dXBsZSwgc3RhdGUtPmNpZCwgc3RhdGUtPmluc2VydF9mbGFncywKKwkJCQliaXN0YXRlKTsK KwlJdGVtUG9pbnRlckNvcHkoJnR1cGxlLT50X3NlbGYsICZzbG90LT50dHNfdGlkKTsKKworCWlm IChzaG91bGRGcmVlKQorCQlwZnJlZSh0dXBsZSk7Cit9CisKKy8qCisgKiBDcmVhdGUvcmV0dXJu IG5leHQgZnJlZSBzbG90IGZyb20gbXVsdGktaW5zZXJ0IGJ1ZmZlcmVkIHNsb3RzIGFycmF5Lgor ICovCitUdXBsZVRhYmxlU2xvdCAqCitoZWFwX211bHRpX2luc2VydF9uZXh0X2ZyZWVfc2xvdChU YWJsZUluc2VydFN0YXRlICogc3RhdGUpCit7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJSGVh cE11bHRpSW5zZXJ0U3RhdGUgKm1pc3RhdGU7CisKKwlBc3NlcnQoc3RhdGUtPmFtX2RhdGEgIT0g TlVMTCAmJgorCQkgICAoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPm1pc3Rh dGUgIT0gTlVMTCk7CisKKwltaXN0YXRlID0gKChIZWFwSW5zZXJ0U3RhdGUgKikgc3RhdGUtPmFt X2RhdGEpLT5taXN0YXRlOworCXNsb3QgPSBtaXN0YXRlLT5zbG90c1ttaXN0YXRlLT5jdXJfc2xv dHNdOworCisJaWYgKHNsb3QgPT0gTlVMTCkKKwl7CisJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0 ZShzdGF0ZS0+cmVsLCBOVUxMKTsKKwkJbWlzdGF0ZS0+c2xvdHNbbWlzdGF0ZS0+Y3VyX3Nsb3Rz XSA9IHNsb3Q7CisJfQorCWVsc2UKKwkJRXhlY0NsZWFyVHVwbGUoc2xvdCk7CisKKwlyZXR1cm4g c2xvdDsKK30KKworLyoKKyAqIFN0b3JlIHBhc3NlZC1pbiB0dXBsZSBpbnRvIGluLW1lbW9yeSBi dWZmZXJlZCBzbG90cy4gV2hlbiBmdWxsLCBpbnNlcnQKKyAqIG11bHRpcGxlIHR1cGxlcyBmcm9t IHRoZSBidWZmZXJzIGludG8gaGVhcC4KKyAqLwordm9pZAoraGVhcF9tdWx0aV9pbnNlcnRfdjIo VGFibGVJbnNlcnRTdGF0ZSAqIHN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlUdXBs ZVRhYmxlU2xvdCAqZHN0c2xvdDsKKwlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAqbWlzdGF0ZTsKKwor CUFzc2VydChzdGF0ZS0+YW1fZGF0YSAhPSBOVUxMICYmCisJCSAgICgoSGVhcEluc2VydFN0YXRl ICopIHN0YXRlLT5hbV9kYXRhKS0+bWlzdGF0ZSAhPSBOVUxMKTsKKworCW1pc3RhdGUgPSAoKEhl YXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPm1pc3RhdGU7CisJZHN0c2xvdCA9IG1p c3RhdGUtPnNsb3RzW21pc3RhdGUtPmN1cl9zbG90c107CisKKwlpZiAoZHN0c2xvdCA9PSBOVUxM KQorCXsKKwkJZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHN0YXRlLT5yZWwsIE5VTEwpOwor CQltaXN0YXRlLT5zbG90c1ttaXN0YXRlLT5jdXJfc2xvdHNdID0gZHN0c2xvdDsKKwl9CisKKwkv KgorCSAqIENhbGxlciBtYXkgaGF2ZSBnb3QgdGhlIHNsb3QgdXNpbmcgaGVhcF9tdWx0aV9pbnNl cnRfbmV4dF9mcmVlX3Nsb3QsCisJICogZmlsbGVkIGl0IGFuZCBwYXNzZWQuIFNvLCBza2lwIGNv cHlpbmcgaW4gc3VjaCBhIGNhc2UuCisJICovCisJaWYgKChzdGF0ZS0+YW1fZmxhZ3MgJiBUQUJM RUFNX1NLSVBfTVVMVElfSU5TRVJUU19GTFVTSCkgPT0gMCkKKwl7CisJCUV4ZWNDbGVhclR1cGxl KGRzdHNsb3QpOworCQlFeGVjQ29weVNsb3QoZHN0c2xvdCwgc2xvdCk7CisJfQorCWVsc2UKKwkJ QXNzZXJ0KGRzdHNsb3QgPT0gc2xvdCk7CisKKwltaXN0YXRlLT5jdXJfc2xvdHMrKzsKKworCS8q CisJICogV2hlbiBwYXNzZWQtaW4gc2xvdCBpcyBhbHJlYWR5IG1hdGVyaWFsaXplZCwgbWVtb3J5 IGFsbG9jYXRlZCBpbiBzbG90J3MKKwkgKiBtZW1vcnkgY29udGV4dCBpcyBhIGNsb3NlIGFwcHJv eGltYXRpb24gZm9yIHVzIHRvIHRyYWNrIHRoZSByZXF1aXJlZAorCSAqIHNwYWNlIGZvciB0aGUg dHVwbGUgaW4gc2xvdC4KKwkgKgorCSAqIEZvciBub24tbWF0ZXJpYWxpemVkIHNsb3RzLCB0aGUg Zmx1c2hpbmcgZGVjaXNpb24gaGFwcGVucyBzb2xlbHkgb24gdGhlCisJICogbnVtYmVyIG9mIHR1 cGxlcyBzdG9yZWQgaW4gdGhlIGJ1ZmZlci4KKwkgKi8KKwlpZiAoVFRTX1NIT1VMREZSRUUoc2xv dCkpCisJCW1pc3RhdGUtPmN1cl9zaXplICs9IE1lbW9yeUNvbnRleHRNZW1BbGxvY2F0ZWQoc2xv dC0+dHRzX21jeHQsIGZhbHNlKTsKKworCWlmICgoc3RhdGUtPmFtX2ZsYWdzICYgVEFCTEVBTV9T S0lQX01VTFRJX0lOU0VSVFNfRkxVU0gpID09IDAgJiYKKwkJKG1pc3RhdGUtPmN1cl9zbG90cyA+ PSBIRUFQX01BWF9CVUZGRVJFRF9TTE9UUyB8fAorCQkgbWlzdGF0ZS0+Y3VyX3NpemUgPj0gSEVB UF9NQVhfQlVGRkVSRURfQllURVMpKQorCQloZWFwX211bHRpX2luc2VydF9mbHVzaChzdGF0ZSk7 Cit9CisKKy8qCisgKiBSZXR1cm4gcG9pbnRlciB0byBtdWx0aS1pbnNlcnQgYnVmZmVyZWQgc2xv dHMgYXJyYXkgYW5kIG51bWJlciBvZiBjdXJyZW50bHkKKyAqIG9jY3VwaWVkIHNsb3RzLgorICov CitUdXBsZVRhYmxlU2xvdCAqKgoraGVhcF9tdWx0aV9pbnNlcnRfc2xvdHMoVGFibGVJbnNlcnRT dGF0ZSAqIHN0YXRlLCBpbnQgKm51bV9zbG90cykKK3sKKwlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAq bWlzdGF0ZTsKKworCW1pc3RhdGUgPSAoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0 YSktPm1pc3RhdGU7CisJKm51bV9zbG90cyA9IG1pc3RhdGUtPmN1cl9zbG90czsKKworCXJldHVy biBtaXN0YXRlLT5zbG90czsKK30KKworLyoKKyAqIEluc2VydCBtdWx0aXBsZSB0dXBsZXMgZnJv bSBpbi1tZW1vcnkgYnVmZmVyZWQgc2xvdHMgaW50byBoZWFwLgorICovCit2b2lkCitoZWFwX211 bHRpX2luc2VydF9mbHVzaChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpCit7CisJSGVhcE11bHRp SW5zZXJ0U3RhdGUgKm1pc3RhdGU7CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGUgPSBOVUxMOwor CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCW1pc3RhdGUgPSAoKEhlYXBJbnNlcnRTdGF0 ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPm1pc3RhdGU7CisKKwlpZiAoc3RhdGUtPmFtX2RhdGEgIT0g TlVMTCAmJgorCQkoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPmJpc3RhdGUg IT0gTlVMTCkKKwkJYmlzdGF0ZSA9ICgoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5hbV9kYXRh KS0+YmlzdGF0ZTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWlzdGF0 ZS0+Y29udGV4dCk7CisJaGVhcF9tdWx0aV9pbnNlcnQoc3RhdGUtPnJlbCwgbWlzdGF0ZS0+c2xv dHMsIG1pc3RhdGUtPmN1cl9zbG90cywKKwkJCQkJICBzdGF0ZS0+Y2lkLCBzdGF0ZS0+aW5zZXJ0 X2ZsYWdzLCBiaXN0YXRlKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJ TWVtb3J5Q29udGV4dFJlc2V0KG1pc3RhdGUtPmNvbnRleHQpOworCisJbWlzdGF0ZS0+Y3VyX3Ns b3RzID0gMDsKKwltaXN0YXRlLT5jdXJfc2l6ZSA9IDA7Cit9CisKKy8qCisgKiBDbGVhbiB1cCBz dGF0ZSB1c2VkIHRvIGluc2VydCBhIHNpbmdsZSBvciBtdWx0aXBsZSB0dXBsZXMgaW50byBhIGhl YXAuCisgKi8KK3ZvaWQKK2hlYXBfaW5zZXJ0X2VuZChUYWJsZUluc2VydFN0YXRlICogc3RhdGUp Cit7CisJaWYgKHN0YXRlLT5hbV9kYXRhICE9IE5VTEwgJiYKKwkJKChIZWFwSW5zZXJ0U3RhdGUg Kikgc3RhdGUtPmFtX2RhdGEpLT5taXN0YXRlICE9IE5VTEwpCisJeworCQlIZWFwTXVsdGlJbnNl cnRTdGF0ZSAqbWlzdGF0ZSA9CisJCQkoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0 YSktPm1pc3RhdGU7CisKKwkJLyogSW5zZXJ0IHJlbWFpbmluZyB0dXBsZXMgZnJvbSBtdWx0aS1p bnNlcnQgYnVmZmVycyAqLworCQlpZiAobWlzdGF0ZS0+Y3VyX3Nsb3RzID4gMCB8fCBtaXN0YXRl LT5jdXJfc2l6ZSA+IDApCisJCQloZWFwX211bHRpX2luc2VydF9mbHVzaChzdGF0ZSk7CisKKwkJ TWVtb3J5Q29udGV4dERlbGV0ZShtaXN0YXRlLT5jb250ZXh0KTsKKworCQlmb3IgKGludCBpID0g MDsgaSA8IEhFQVBfTUFYX0JVRkZFUkVEX1NMT1RTICYmIG1pc3RhdGUtPnNsb3RzW2ldICE9IE5V TEw7IGkrKykKKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QobWlzdGF0ZS0+c2xvdHNb aV0pOworCisJCXBmcmVlKG1pc3RhdGUpOworCQkoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+ YW1fZGF0YSktPm1pc3RhdGUgPSBOVUxMOworCX0KKworCWlmIChzdGF0ZS0+YW1fZGF0YSAhPSBO VUxMICYmCisJCSgoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5hbV9kYXRhKS0+YmlzdGF0ZSAh PSBOVUxMKQorCQlGcmVlQnVsa0luc2VydFN0YXRlKCgoSGVhcEluc2VydFN0YXRlICopIHN0YXRl LT5hbV9kYXRhKS0+YmlzdGF0ZSk7CisKKwlwZnJlZShzdGF0ZS0+YW1fZGF0YSk7CisJc3RhdGUt PmFtX2RhdGEgPSBOVUxMOworCXBmcmVlKHN0YXRlKTsKK30KKwogLyoKICAqCXNpbXBsZV9oZWFw X2luc2VydCAtIGluc2VydCBhIHR1cGxlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMKaW5kZXggZDE1YTAyYjJiZS4uNzk1MTc3ODEyZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0yNTY0LDYgKzI1NjQsMTUgQEAgc3RhdGlj IGNvbnN0IFRhYmxlQW1Sb3V0aW5lIGhlYXBhbV9tZXRob2RzID0gewogCS50dXBsZV9pbnNlcnRf c3BlY3VsYXRpdmUgPSBoZWFwYW1fdHVwbGVfaW5zZXJ0X3NwZWN1bGF0aXZlLAogCS50dXBsZV9j b21wbGV0ZV9zcGVjdWxhdGl2ZSA9IGhlYXBhbV90dXBsZV9jb21wbGV0ZV9zcGVjdWxhdGl2ZSwK IAkubXVsdGlfaW5zZXJ0ID0gaGVhcF9tdWx0aV9pbnNlcnQsCisKKwkudHVwbGVfaW5zZXJ0X2Jl Z2luID0gaGVhcF9pbnNlcnRfYmVnaW4sCisJLnR1cGxlX2luc2VydF92MiA9IGhlYXBfaW5zZXJ0 X3YyLAorCS50dXBsZV9tdWx0aV9pbnNlcnRfbmV4dF9mcmVlX3Nsb3QgPSBoZWFwX211bHRpX2lu c2VydF9uZXh0X2ZyZWVfc2xvdCwKKwkudHVwbGVfbXVsdGlfaW5zZXJ0X3YyID0gaGVhcF9tdWx0 aV9pbnNlcnRfdjIsCisJLnR1cGxlX211bHRpX2luc2VydF9zbG90cyA9IGhlYXBfbXVsdGlfaW5z ZXJ0X3Nsb3RzLAorCS50dXBsZV9tdWx0aV9pbnNlcnRfZmx1c2ggPSBoZWFwX211bHRpX2luc2Vy dF9mbHVzaCwKKwkudHVwbGVfaW5zZXJ0X2VuZCA9IGhlYXBfaW5zZXJ0X2VuZCwKKwogCS50dXBs ZV9kZWxldGUgPSBoZWFwYW1fdHVwbGVfZGVsZXRlLAogCS50dXBsZV91cGRhdGUgPSBoZWFwYW1f dHVwbGVfdXBkYXRlLAogCS50dXBsZV9sb2NrID0gaGVhcGFtX3R1cGxlX2xvY2ssCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKaW5kZXggOTMyZWMwZDZmMi4uNDZkYmE1MjQ1YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt MjI1LDYgKzIyNSw0MCBAQCBodHN2X2dldF92YWxpZF9zdGF0dXMoaW50IHN0YXR1cykKIAlyZXR1 cm4gKEhUU1ZfUmVzdWx0KSBzdGF0dXM7CiB9CiAKKy8qCisgKiBNYXhpbXVtIG51bWJlciBvZiBz bG90cyB0aGF0IG11bHRpLWluc2VydCBidWZmZXJzIGNhbiBob2xkLgorICoKKyAqIENhdXRpb246 IERvbid0IG1ha2UgdGhpcyB0b28gYmlnLCBhcyB3ZSBjb3VsZCBlbmQgdXAgd2l0aCB0aGlzIG1h bnkgdHVwbGVzCisgKiBzdG9yZWQgaW4gbXVsdGkgaW5zZXJ0IGJ1ZmZlci4gRm9yIGluc3RhbmNl LCBpbmNyZWFzaW5nIHRoaXMgY2FuIGNhdXNlCisgKiBxdWFkcmF0aWMgZ3Jvd3RoIGluIG1lbW9y eSByZXF1aXJlbWVudHMgZHVyaW5nIGNvcGllcyBpbnRvIHBhcnRpdGlvbmVkCisgKiB0YWJsZXMg d2l0aCBhIGxhcmdlIG51bWJlciBvZiBwYXJ0aXRpb25zLgorICovCisjZGVmaW5lIEhFQVBfTUFY X0JVRkZFUkVEX1NMT1RTCQkxMDAwCisKKy8qIE1heGltdW0gc2l6ZSBvZiBhbGwgdHVwbGVzIHRo YXQgbXVsdGktaW5zZXJ0IGJ1ZmZlcnMgY2FuIGhvbGQgKi8KKyNkZWZpbmUgSEVBUF9NQVhfQlVG RkVSRURfQllURVMJCTY1NTM1CisKK3R5cGVkZWYgc3RydWN0IEhlYXBNdWx0aUluc2VydFN0YXRl Cit7CisJLyogTWVtb3J5IGNvbnRleHQgdG8gdXNlIGZvciBmbHVzaGluZyBtdWx0aS1pbnNlcnQg YnVmZmVycyAqLworCU1lbW9yeUNvbnRleHQgY29udGV4dDsKKworCS8qIEFycmF5IG9mIGJ1ZmZl cmVkIHNsb3RzICovCisJVHVwbGVUYWJsZVNsb3QgKipzbG90czsKKworCS8qIE51bWJlciBvZiBz bG90cyB0aGF0IG11bHRpLWluc2VydCBidWZmZXJzIGN1cnJlbnRseSBob2xkICovCisJaW50CQkJ Y3VyX3Nsb3RzOworCisJLyogU2l6ZSBvZiBhbGwgdHVwbGVzIHRoYXQgbXVsdGktaW5zZXJ0IGJ1 ZmZlcnMgY3VycmVudGx5IGhvbGQgKi8KKwlTaXplCQljdXJfc2l6ZTsKK30JCQlIZWFwTXVsdGlJ bnNlcnRTdGF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgSGVhcEluc2VydFN0YXRlCit7CisJc3RydWN0 IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKmJpc3RhdGU7CisJSGVhcE11bHRpSW5zZXJ0U3RhdGUgKm1p c3RhdGU7Cit9CQkJSGVhcEluc2VydFN0YXRlOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKgkJ ZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgaGVhcCBhY2Nlc3MgbWV0aG9kCiAgKgpAQCAtMjc1LDYg KzMwOSwyMSBAQCBleHRlcm4gdm9pZCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVh cFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIGV4dGVybiB2b2lkIGhlYXBfbXVsdGlfaW5zZXJ0 KFJlbGF0aW9uIHJlbGF0aW9uLCBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgKipzbG90cywKIAkJCQkJ CQkgIGludCBudHVwbGVzLCBDb21tYW5kSWQgY2lkLCBpbnQgb3B0aW9ucywKIAkJCQkJCQkgIEJ1 bGtJbnNlcnRTdGF0ZSBiaXN0YXRlKTsKKworZXh0ZXJuIFRhYmxlSW5zZXJ0U3RhdGUgKiBoZWFw X2luc2VydF9iZWdpbihSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJCUNvbW1hbmRJZCBjaWQsCisJ CQkJCQkJCQkJCWludCBhbV9mbGFncywKKwkJCQkJCQkJCQkJaW50IGluc2VydF9mbGFncyk7Citl eHRlcm4gdm9pZCBoZWFwX2luc2VydF92MihUYWJsZUluc2VydFN0YXRlICogc3RhdGUsCisJCQkJ CQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitleHRlcm4gVHVwbGVUYWJsZVNsb3QgKmhlYXBf bXVsdGlfaW5zZXJ0X25leHRfZnJlZV9zbG90KFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSk7Citl eHRlcm4gdm9pZCBoZWFwX211bHRpX2luc2VydF92MihUYWJsZUluc2VydFN0YXRlICogc3RhdGUs CisJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitleHRlcm4gVHVwbGVUYWJsZVNsb3Qg KipoZWFwX211bHRpX2luc2VydF9zbG90cyhUYWJsZUluc2VydFN0YXRlICogc3RhdGUsCisJCQkJ CQkJCQkJCQlpbnQgKm51bV9zbG90cyk7CitleHRlcm4gdm9pZCBoZWFwX211bHRpX2luc2VydF9m bHVzaChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpOworZXh0ZXJuIHZvaWQgaGVhcF9pbnNlcnRf ZW5kKFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSk7CisKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9k ZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkgQ29tbWFu ZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAogCQkJCQkJCSBzdHJ1Y3Qg VE1fRmFpbHVyZURhdGEgKnRtZmQsIGJvb2wgY2hhbmdpbmdQYXJ0KTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CmluZGV4IDVmODQ3NDg3MWQuLjhmY2FmNmZlNWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjQ3 LDYgKzI0Nyw0MyBAQCB0eXBlZGVmIHN0cnVjdCBUTV9JbmRleERlbGV0ZU9wCiAJVE1fSW5kZXhT dGF0dXMgKnN0YXR1czsKIH0gVE1fSW5kZXhEZWxldGVPcDsKIAorLyogVXNlIG11bHRpIGluc2Vy dHMsIGkuZS4gYnVmZmVyIG11bHRpcGxlIHR1cGxlcyBhbmQgaW5zZXJ0IHRoZW0gYXQgb25jZSAq LworI2RlZmluZSBUQUJMRUFNX01VTFRJX0lOU0VSVFMgMHgwMDAwMDEKKworLyogVXNlIEJBU19C VUxLV1JJVEUgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSAqLworI2RlZmluZSBUQUJMRUFNX0JVTEtX UklURV9CVUZGRVJfQUNDRVNTX1NUUkFURUdZIDB4MDAwMDAyCisKKy8qCisgKiBTa2lwIGZsdXNo aW5nIGJ1ZmZlcmVkIHR1cGxlcyBhdXRvbWF0aWNhbGx5LiBSZXNwb25zaWJpbGl0eSBsaWVzIHdp dGggdGhlCisgKiBjYWxsZXIgdG8gZmx1c2ggdGhlIGJ1ZmZlcmVkIHR1cGxlcy4KKyAqLworI2Rl ZmluZSBUQUJMRUFNX1NLSVBfTVVMVElfSU5TRVJUU19GTFVTSCAweDAwMDAwNAorCisKKy8qIEhv bGRzIHRhYmxlIGluc2VydCBzdGF0ZS4gKi8KK3R5cGVkZWYgc3RydWN0IFRhYmxlSW5zZXJ0U3Rh dGUKK3sKKwkvKiBUYWJsZSBBTS1hZ25vc3RpYyBkYXRhIHN0YXJ0cyBoZXJlICovCisKKwlSZWxh dGlvbglyZWw7CQkJLyogVGFyZ2V0IHJlbGF0aW9uICovCisKKwkvKgorCSAqIENvbW1hbmQgSUQg Zm9yIHRoaXMgaW5zZXJ0aW9uLiBJZiByZXF1aXJlZCwgY2hhbmdlIHRoaXMgZm9yIGVhY2ggcGFz cworCSAqIG9mIGluc2VydCBmdW5jdGlvbnMuCisJICovCisJQ29tbWFuZElkCWNpZDsKKworCS8q IFRhYmxlIEFNIG9wdGlvbnMgKFRBQkxFQU1fWFhYIG1hY3JvcykgKi8KKwlpbnQJCQlhbV9mbGFn czsKKworCS8qIHRhYmxlX3R1cGxlX2luc2VydCBwZXJmb3JtYW5jZSBvcHRpb25zIChUQUJMRV9J TlNFUlRfWFhYIG1hY3JvcykgKi8KKwlpbnQJCQlpbnNlcnRfZmxhZ3M7CisKKwkvKiBUYWJsZSBB TSBzcGVjaWZpYyBkYXRhIHN0YXJ0cyBoZXJlICovCisKKwl2b2lkCSAgICphbV9kYXRhOworfQkJ CVRhYmxlSW5zZXJ0U3RhdGU7CisKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIHRhYmxlX3R1 cGxlX2luc2VydCAqLwogLyogVEFCTEVfSU5TRVJUX1NLSVBfV0FMIHdhcyAweDAwMDE7IFJlbGF0 aW9uTmVlZHNXQUwoKSBub3cgZ292ZXJucyAqLwogI2RlZmluZSBUQUJMRV9JTlNFUlRfU0tJUF9G U00JCTB4MDAwMgpAQCAtNTIyLDYgKzU1OSwyMCBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91 dGluZQogCXZvaWQJCSgqbXVsdGlfaW5zZXJ0KSAoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xv dCAqKnNsb3RzLCBpbnQgbnNsb3RzLAogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwgaW50IG9wdGlv bnMsIHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRhICpiaXN0YXRlKTsKIAorCVRhYmxlSW5zZXJ0 U3RhdGUgKigqdHVwbGVfaW5zZXJ0X2JlZ2luKSAoUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJCQkg Q29tbWFuZElkIGNpZCwKKwkJCQkJCQkJCQkJIGludCBhbV9mbGFncywKKwkJCQkJCQkJCQkJIGlu dCBpbnNlcnRfZmxhZ3MpOworCXZvaWQJCSgqdHVwbGVfaW5zZXJ0X3YyKSAoVGFibGVJbnNlcnRT dGF0ZSAqIHN0YXRlLAorCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCXZvaWQJCSgq dHVwbGVfbXVsdGlfaW5zZXJ0X3YyKSAoVGFibGVJbnNlcnRTdGF0ZSAqIHN0YXRlLAorCQkJCQkJ CQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCVR1cGxlVGFibGVTbG90ICooKnR1cGxlX211 bHRpX2luc2VydF9uZXh0X2ZyZWVfc2xvdCkgKFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSk7CisJ VHVwbGVUYWJsZVNsb3QgKiooKnR1cGxlX211bHRpX2luc2VydF9zbG90cykgKFRhYmxlSW5zZXJ0 U3RhdGUgKiBzdGF0ZSwKKwkJCQkJCQkJCQkJCSAgaW50ICpudW1fc2xvdHMpOworCXZvaWQJCSgq dHVwbGVfbXVsdGlfaW5zZXJ0X2ZsdXNoKSAoVGFibGVJbnNlcnRTdGF0ZSAqIHN0YXRlKTsKKwl2 b2lkCQkoKnR1cGxlX2luc2VydF9lbmQpIChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpOworCiAJ Lyogc2VlIHRhYmxlX3R1cGxlX2RlbGV0ZSgpIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVy cyAqLwogCVRNX1Jlc3VsdAkoKnR1cGxlX2RlbGV0ZSkgKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ IEl0ZW1Qb2ludGVyIHRpZCwKQEAgLTE0NTYsNiArMTUwNyw5OCBAQCB0YWJsZV9tdWx0aV9pbnNl cnQoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnNsb3RzLAogCQkJ CQkJCQkgIGNpZCwgb3B0aW9ucywgYmlzdGF0ZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgVGFibGVJ bnNlcnRTdGF0ZSAqCit0YWJsZV9pbnNlcnRfYmVnaW4oUmVsYXRpb24gcmVsLCBDb21tYW5kSWQg Y2lkLCBpbnQgYW1fZmxhZ3MsCisJCQkJICAgaW50IGluc2VydF9mbGFncykKK3sKKwlpZiAocmVs LT5yZF90YWJsZWFtICYmIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfaW5zZXJ0X2JlZ2luKQorCQly ZXR1cm4gcmVsLT5yZF90YWJsZWFtLT50dXBsZV9pbnNlcnRfYmVnaW4ocmVsLCBjaWQsIGFtX2Zs YWdzLAorCQkJCQkJCQkJCQkJICAgaW5zZXJ0X2ZsYWdzKTsKKwllbHNlCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJy bXNnKCJ0YWJsZV9pbnNlcnRfYmVnaW4gYWNjZXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQg Zm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0YWJsZV90dXBsZV9pbnNlcnRfdjIoVGFi bGVJbnNlcnRTdGF0ZSAqIHN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlpZiAoc3Rh dGUtPnJlbC0+cmRfdGFibGVhbSAmJgorCQlzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9p bnNlcnRfdjIpCisJCXN0YXRlLT5yZWwtPnJkX3RhYmxlYW0tPnR1cGxlX2luc2VydF92MihzdGF0 ZSwgc2xvdCk7CisJZWxzZQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygidGFibGVfdHVwbGVfaW5zZXJ0X3Yy IGFjY2VzcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIGZvciByZWxhdGlvbiBcIiVzXCIiLAor CQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0ZS0+cmVsKSkpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQKK3RhYmxlX211bHRpX2luc2VydF92MihUYWJsZUluc2VydFN0YXRlICog c3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCWlmIChzdGF0ZS0+cmVsLT5yZF90YWJs ZWFtICYmCisJCXN0YXRlLT5yZWwtPnJkX3RhYmxlYW0tPnR1cGxlX211bHRpX2luc2VydF92MikK KwkJc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X3YyKHN0YXRlLCBz bG90KTsKKwllbHNlCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJ0YWJsZV9tdWx0aV9pbnNlcnRfdjIgYWNj ZXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5yZWwpKSk7Cit9CisKK3N0YXRpYyBp bmxpbmUgVHVwbGVUYWJsZVNsb3QgKgordGFibGVfbXVsdGlfaW5zZXJ0X25leHRfZnJlZV9zbG90 KFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPnJlbC0+cmRfdGFibGVh bSAmJgorCQlzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tdWx0aV9pbnNlcnRfbmV4dF9m cmVlX3Nsb3QpCisJCXJldHVybiBzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tdWx0aV9p bnNlcnRfbmV4dF9mcmVlX3Nsb3Qoc3RhdGUpOworCWVsc2UKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInRh YmxlX211bHRpX2luc2VydF9uZXh0X2ZyZWVfc2xvdCBhY2Nlc3MgbWV0aG9kIGlzIG5vdCBpbXBs ZW1lbnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoc3RhdGUtPnJlbCkpKTsKK30KKworc3RhdGljIGlubGluZSBUdXBsZVRhYmxlU2xvdCAq KgordGFibGVfbXVsdGlfaW5zZXJ0X3Nsb3RzKFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSwgaW50 ICpudW1fc2xvdHMpCit7CisJaWYgKHN0YXRlLT5yZWwtPnJkX3RhYmxlYW0gJiYKKwkJc3RhdGUt PnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X3Nsb3RzKQorCQlyZXR1cm4gc3Rh dGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X3Nsb3RzKHN0YXRlLCBudW1f c2xvdHMpOworCWVsc2UKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInRhYmxlX211bHRpX2luc2VydF9zbG90 cyBhY2Nlc3MgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwK KwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPnJlbCkpKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkCit0YWJsZV9tdWx0aV9pbnNlcnRfZmx1c2goVGFibGVJbnNlcnRTdGF0 ZSAqIHN0YXRlKQoreworCWlmIChzdGF0ZS0+cmVsLT5yZF90YWJsZWFtICYmCisJCXN0YXRlLT5y ZWwtPnJkX3RhYmxlYW0tPnR1cGxlX211bHRpX2luc2VydF9mbHVzaCkKKwkJc3RhdGUtPnJlbC0+ cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X2ZsdXNoKHN0YXRlKTsKKwllbHNlCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJZXJybXNnKCJ0YWJsZV9tdWx0aV9pbnNlcnRfZmx1c2ggYWNjZXNzIG1ldGhvZCBpcyBu b3QgaW1wbGVtZW50ZWQgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHN0YXRlLT5yZWwpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGFi bGVfaW5zZXJ0X2VuZChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpCit7CisJaWYgKHN0YXRlLT5y ZWwtPnJkX3RhYmxlYW0gJiYKKwkJc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfaW5zZXJ0 X2VuZCkKKwkJc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfaW5zZXJ0X2VuZChzdGF0ZSk7 CisJZWxzZQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygidGFibGVfaW5zZXJ0X2VuZCBhY2Nlc3MgbWV0aG9k IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPnJlbCkpKTsKK30KKwogLyoKICAqIERlbGV0ZSBhIHR1 cGxlLgogICoKLS0gCjIuMzQuMQoK --00000000000082844a060f279106 Content-Type: application/x-patch; name="v8-0002-Optimize-CTAS-with-multi-inserts.patch" Content-Disposition: attachment; filename="v8-0002-Optimize-CTAS-with-multi-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lri1mchy1 RnJvbSA0ODM1NDk1ZTY3NWJiMTc4ZWNiNjdkODRlNmIwMGRlMTU3NTFjZThiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTcgSmFuIDIwMjQgMTU6MjM6MzggKzAw MDAKU3ViamVjdDogW1BBVENIIHY4XSBPcHRpbWl6ZSBDVEFTIHdpdGggbXVsdGkgaW5zZXJ0cwoK LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIHwgMjUgKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMTZhMmZlNjVlNi4uM2EwMmVhOTU3OCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC01OCw5ICs1OCw3IEBAIHR5cGVkZWYgc3RydWN0 CiAJLyogVGhlc2UgZmllbGRzIGFyZSBmaWxsZWQgYnkgaW50b3JlbF9zdGFydHVwOiAqLwogCVJl bGF0aW9uCXJlbDsJCQkvKiByZWxhdGlvbiB0byB3cml0ZSB0byAqLwogCU9iamVjdEFkZHJlc3Mg cmVsYWRkcjsJCS8qIGFkZHJlc3Mgb2YgcmVsLCBmb3IgRXhlY0NyZWF0ZVRhYmxlQXMgKi8KLQlD b21tYW5kSWQJb3V0cHV0X2NpZDsJCS8qIGNtaW4gdG8gaW5zZXJ0IGluIG91dHB1dCB0dXBsZXMg Ki8KLQlpbnQJCQl0aV9vcHRpb25zOwkJLyogdGFibGVfdHVwbGVfaW5zZXJ0IHBlcmZvcm1hbmNl IG9wdGlvbnMgKi8KLQlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogYnVsayBpbnNlcnQgc3Rh dGUgKi8KKwlUYWJsZUluc2VydFN0YXRlICp0aV9zdGF0ZTsgLyogdGFibGUgaW5zZXJ0IHN0YXRl ICovCiB9IERSX2ludG9yZWw7CiAKIC8qIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBDVEFTIGRlZmlu aXRpb24gY3JlYXRpb24gKi8KQEAgLTU1NywxNyArNTU1LDE5IEBAIGludG9yZWxfc3RhcnR1cChE ZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0eXBlaW5mbykKIAkg Ki8KIAlteVN0YXRlLT5yZWwgPSBpbnRvUmVsYXRpb25EZXNjOwogCW15U3RhdGUtPnJlbGFkZHIg PSBpbnRvUmVsYXRpb25BZGRyOwotCW15U3RhdGUtPm91dHB1dF9jaWQgPSBHZXRDdXJyZW50Q29t bWFuZElkKHRydWUpOwotCW15U3RhdGUtPnRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9G U007CiAKIAkvKgogCSAqIElmIFdJVEggTk8gREFUQSBpcyBzcGVjaWZpZWQsIHRoZXJlIGlzIG5v IG5lZWQgdG8gc2V0IHVwIHRoZSBzdGF0ZSBmb3IKIAkgKiBidWxrIGluc2VydHMgYXMgdGhlcmUg YXJlIG5vIHR1cGxlcyB0byBpbnNlcnQuCiAJICovCiAJaWYgKCFpbnRvLT5za2lwRGF0YSkKLQkJ bXlTdGF0ZS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCQlteVN0YXRlLT50aV9z dGF0ZSA9IHRhYmxlX2luc2VydF9iZWdpbihpbnRvUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCQkg ICBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAorCQkJCQkJCQkJCQkgICBUQUJMRUFNX01VTFRJ X0lOU0VSVFMgfAorCQkJCQkJCQkJCQkgICBUQUJMRUFNX0JVTEtXUklURV9CVUZGRVJfQUNDRVNT X1NUUkFURUdZLAorCQkJCQkJCQkJCQkgICBUQUJMRV9JTlNFUlRfU0tJUF9GU00pOwogCWVsc2UK LQkJbXlTdGF0ZS0+YmlzdGF0ZSA9IE5VTEw7CisJCW15U3RhdGUtPnRpX3N0YXRlID0gTlVMTDsK IAogCS8qCiAJICogVmFsaWQgc21ncl90YXJnYmxvY2sgaW1wbGllcyBzb21ldGhpbmcgYWxyZWFk eSB3cm90ZSB0byB0aGUgcmVsYXRpb24uCkBAIC01OTUsMTEgKzU5NSw3IEBAIGludG9yZWxfcmVj ZWl2ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVyICpzZWxmKQogCQkgKiB3b3Vs ZCBub3QgYmUgY2hlYXAgZWl0aGVyLiBUaGlzIGFsc28gZG9lc24ndCBhbGxvdyBhY2Nlc3Npbmcg cGVyLUFNCiAJCSAqIGRhdGEgKHNheSBhIHR1cGxlJ3MgeG1pbiksIGJ1dCBzaW5jZSB3ZSBkb24n dCBkbyB0aGF0IGhlcmUuLi4KIAkJICovCi0JCXRhYmxlX3R1cGxlX2luc2VydChteVN0YXRlLT5y ZWwsCi0JCQkJCQkgICBzbG90LAotCQkJCQkJICAgbXlTdGF0ZS0+b3V0cHV0X2NpZCwKLQkJCQkJ CSAgIG15U3RhdGUtPnRpX29wdGlvbnMsCi0JCQkJCQkgICBteVN0YXRlLT5iaXN0YXRlKTsKKwkJ dGFibGVfbXVsdGlfaW5zZXJ0X3YyKG15U3RhdGUtPnRpX3N0YXRlLCBzbG90KTsKIAl9CiAKIAkv KiBXZSBrbm93IHRoaXMgaXMgYSBuZXdseSBjcmVhdGVkIHJlbGF0aW9uLCBzbyB0aGVyZSBhcmUg bm8gaW5kZXhlcyAqLwpAQCAtNjE3LDEwICs2MTMsNyBAQCBpbnRvcmVsX3NodXRkb3duKERlc3RS ZWNlaXZlciAqc2VsZikKIAlJbnRvQ2xhdXNlICppbnRvID0gbXlTdGF0ZS0+aW50bzsKIAogCWlm ICghaW50by0+c2tpcERhdGEpCi0JewotCQlGcmVlQnVsa0luc2VydFN0YXRlKG15U3RhdGUtPmJp c3RhdGUpOwotCQl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQobXlTdGF0ZS0+cmVsLCBteVN0YXRl LT50aV9vcHRpb25zKTsKLQl9CisJCXRhYmxlX2luc2VydF9lbmQobXlTdGF0ZS0+dGlfc3RhdGUp OwogCiAJLyogY2xvc2UgcmVsLCBidXQga2VlcCBsb2NrIHVudGlsIGNvbW1pdCAqLwogCXRhYmxl X2Nsb3NlKG15U3RhdGUtPnJlbCwgTm9Mb2NrKTsKLS0gCjIuMzQuMQoK --00000000000082844a060f279106 Content-Type: application/x-patch; name="v8-0003-Optimize-RMV-with-multi-inserts.patch" Content-Disposition: attachment; filename="v8-0003-Optimize-RMV-with-multi-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lri1me8n2 RnJvbSBkNWZkNzc5YWE1MWM2MjQ2NjJlZWZlZTgzNDlmMmQzZjY1MTdjM2M1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTcgSmFuIDIwMjQgMTU6Mjc6MzcgKzAw MDAKU3ViamVjdDogW1BBVENIIHY4XSBPcHRpbWl6ZSBSTVYgd2l0aCBtdWx0aSBpbnNlcnRzCgot LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyB8IDM0ICsrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggMWRjZmJlODc5Yi4uZjg0Yzc5 ZjVmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNTIsMTAgKzUyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QKIAlEZXN0UmVjZWl2ZXIgcHViOwkJCS8qIHB1YmxpY2x5LWtub3duIGZ1bmN0aW9uIHBv aW50ZXJzICovCiAJT2lkCQkJdHJhbnNpZW50b2lkOwkvKiBPSUQgb2YgbmV3IGhlYXAgaW50byB3 aGljaCB0byBzdG9yZSAqLwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgZmlsbGVkIGJ5IHRyYW5zaWVu dHJlbF9zdGFydHVwOiAqLwotCVJlbGF0aW9uCXRyYW5zaWVudHJlbDsJLyogcmVsYXRpb24gdG8g d3JpdGUgdG8gKi8KLQlDb21tYW5kSWQJb3V0cHV0X2NpZDsJCS8qIGNtaW4gdG8gaW5zZXJ0IGlu IG91dHB1dCB0dXBsZXMgKi8KLQlpbnQJCQl0aV9vcHRpb25zOwkJLyogdGFibGVfdHVwbGVfaW5z ZXJ0IHBlcmZvcm1hbmNlIG9wdGlvbnMgKi8KLQlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyog YnVsayBpbnNlcnQgc3RhdGUgKi8KKwlUYWJsZUluc2VydFN0YXRlICp0aV9zdGF0ZTsgLyogdGFi bGUgaW5zZXJ0IHN0YXRlICovCiB9IERSX3RyYW5zaWVudHJlbDsKIAogc3RhdGljIGludAltYXR2 aWV3X21haW50ZW5hbmNlX2RlcHRoID0gMDsKQEAgLTQ1NywxMyArNDU0LDEzIEBAIHRyYW5zaWVu dHJlbF9zdGFydHVwKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlvbiwgVHVwbGVEZXNj IHR5cGVpbmZvKQogCiAJdHJhbnNpZW50cmVsID0gdGFibGVfb3BlbihteVN0YXRlLT50cmFuc2ll bnRvaWQsIE5vTG9jayk7CiAKLQkvKgotCSAqIEZpbGwgcHJpdmF0ZSBmaWVsZHMgb2YgbXlTdGF0 ZSBmb3IgdXNlIGJ5IGxhdGVyIHJvdXRpbmVzCi0JICovCi0JbXlTdGF0ZS0+dHJhbnNpZW50cmVs ID0gdHJhbnNpZW50cmVsOwotCW15U3RhdGUtPm91dHB1dF9jaWQgPSBHZXRDdXJyZW50Q29tbWFu ZElkKHRydWUpOwotCW15U3RhdGUtPnRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU00g fCBUQUJMRV9JTlNFUlRfRlJPWkVOOwotCW15U3RhdGUtPmJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0 U3RhdGUoKTsKKwkvKiBGaWxsIHByaXZhdGUgZmllbGRzIG9mIG15U3RhdGUgZm9yIHVzZSBieSBs YXRlciByb3V0aW5lcyAqLworCW15U3RhdGUtPnRpX3N0YXRlID0gdGFibGVfaW5zZXJ0X2JlZ2lu KHRyYW5zaWVudHJlbCwKKwkJCQkJCQkJCQkgICBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAor CQkJCQkJCQkJCSAgIFRBQkxFQU1fTVVMVElfSU5TRVJUUyB8CisJCQkJCQkJCQkJICAgVEFCTEVB TV9CVUxLV1JJVEVfQlVGRkVSX0FDQ0VTU19TVFJBVEVHWSwKKwkJCQkJCQkJCQkgICBUQUJMRV9J TlNFUlRfU0tJUF9GU00gfAorCQkJCQkJCQkJCSAgIFRBQkxFX0lOU0VSVF9GUk9aRU4pOwogCiAJ LyoKIAkgKiBWYWxpZCBzbWdyX3RhcmdibG9jayBpbXBsaWVzIHNvbWV0aGluZyBhbHJlYWR5IHdy b3RlIHRvIHRoZSByZWxhdGlvbi4KQEAgLTQ4OCwxMiArNDg1LDcgQEAgdHJhbnNpZW50cmVsX3Jl Y2VpdmUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNlaXZlciAqc2VsZikKIAkgKiBjaGVh cCBlaXRoZXIuIFRoaXMgYWxzbyBkb2Vzbid0IGFsbG93IGFjY2Vzc2luZyBwZXItQU0gZGF0YSAo c2F5IGEKIAkgKiB0dXBsZSdzIHhtaW4pLCBidXQgc2luY2Ugd2UgZG9uJ3QgZG8gdGhhdCBoZXJl Li4uCiAJICovCi0KLQl0YWJsZV90dXBsZV9pbnNlcnQobXlTdGF0ZS0+dHJhbnNpZW50cmVsLAot CQkJCQkgICBzbG90LAotCQkJCQkgICBteVN0YXRlLT5vdXRwdXRfY2lkLAotCQkJCQkgICBteVN0 YXRlLT50aV9vcHRpb25zLAotCQkJCQkgICBteVN0YXRlLT5iaXN0YXRlKTsKKwl0YWJsZV9tdWx0 aV9pbnNlcnRfdjIobXlTdGF0ZS0+dGlfc3RhdGUsIHNsb3QpOwogCiAJLyogV2Uga25vdyB0aGlz IGlzIGEgbmV3bHkgY3JlYXRlZCByZWxhdGlvbiwgc28gdGhlcmUgYXJlIG5vIGluZGV4ZXMgKi8K IApAQCAtNTA3LDE0ICs0OTksMTIgQEAgc3RhdGljIHZvaWQKIHRyYW5zaWVudHJlbF9zaHV0ZG93 bihEZXN0UmVjZWl2ZXIgKnNlbGYpCiB7CiAJRFJfdHJhbnNpZW50cmVsICpteVN0YXRlID0gKERS X3RyYW5zaWVudHJlbCAqKSBzZWxmOworCVJlbGF0aW9uCXRyYW5zaWVudHJlbCA9IG15U3RhdGUt PnRpX3N0YXRlLT5yZWw7CiAKLQlGcmVlQnVsa0luc2VydFN0YXRlKG15U3RhdGUtPmJpc3RhdGUp OwotCi0JdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG15U3RhdGUtPnRyYW5zaWVudHJlbCwgbXlT dGF0ZS0+dGlfb3B0aW9ucyk7CisJdGFibGVfaW5zZXJ0X2VuZChteVN0YXRlLT50aV9zdGF0ZSk7 CiAKIAkvKiBjbG9zZSB0cmFuc2llbnRyZWwsIGJ1dCBrZWVwIGxvY2sgdW50aWwgY29tbWl0ICov Ci0JdGFibGVfY2xvc2UobXlTdGF0ZS0+dHJhbnNpZW50cmVsLCBOb0xvY2spOwotCW15U3RhdGUt PnRyYW5zaWVudHJlbCA9IE5VTEw7CisJdGFibGVfY2xvc2UodHJhbnNpZW50cmVsLCBOb0xvY2sp OwogfQogCiAvKgotLSAKMi4zNC4xCgo= --00000000000082844a060f279106 Content-Type: application/x-patch; name="v8-0004-Use-new-multi-insert-TAM-for-COPY-FROM.patch" Content-Disposition: attachment; filename="v8-0004-Use-new-multi-insert-TAM-for-COPY-FROM.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lri1mg0p3 RnJvbSAyNDA2MjQyMmIwZjIxM2YxODhiYWQ4NDRiMjE5MTkyM2ZmMjU4ODA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTcgSmFuIDIwMjQgMTY6NDk6NTIgKzAw MDAKU3ViamVjdDogW1BBVENIIHY4XSBVc2UgbmV3IG11bHRpIGluc2VydCBUQU0gZm9yIENPUFkg RlJPTQoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIHwgOTIgKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygr KSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggNDA1OGIwODEz NC4uYTZjNzAzYTk5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC03NywxMCArNzcsOSBA QAogLyogU3RvcmVzIG11bHRpLWluc2VydCBkYXRhIHJlbGF0ZWQgdG8gYSBzaW5nbGUgcmVsYXRp b24gaW4gQ29weUZyb20uICovCiB0eXBlZGVmIHN0cnVjdCBDb3B5TXVsdGlJbnNlcnRCdWZmZXIK IHsKLQlUdXBsZVRhYmxlU2xvdCAqc2xvdHNbTUFYX0JVRkZFUkVEX1RVUExFU107IC8qIEFycmF5 IHRvIHN0b3JlIHR1cGxlcyAqLworCVRhYmxlSW5zZXJ0U3RhdGUgKnRpX3N0YXRlOyAvKiBUYWJs ZSBpbnNlcnQgc3RhdGU7IE5VTEwgaWYgZm9yZWlnbiB0YWJsZSAqLworCVR1cGxlVGFibGVTbG90 ICoqc2xvdHM7CQkvKiBBcnJheSB0byBzdG9yZSB0dXBsZXMgKi8KIAlSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvOwkvKiBSZXN1bHRSZWxJbmZvIGZvciAncmVsaWQnICovCi0JQnVsa0luc2Vy dFN0YXRlIGJpc3RhdGU7CS8qIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGhpcyByZWwgaWYgcGxhaW4K LQkJCQkJCQkJICogdGFibGU7IE5VTEwgaWYgZm9yZWlnbiB0YWJsZSAqLwogCWludAkJCW51c2Vk OwkJCS8qIG51bWJlciBvZiAnc2xvdHMnIGNvbnRhaW5pbmcgdHVwbGVzICovCiAJdWludDY0CQls aW5lbm9zW01BWF9CVUZGRVJFRF9UVVBMRVNdOwkvKiBMaW5lICMgb2YgdHVwbGUgaW4gY29weQog CQkJCQkJCQkJCQkJICogc3RyZWFtICovCkBAIC0yMjMsMTQgKzIyMiwzMSBAQCBsaW1pdF9wcmlu dG91dF9sZW5ndGgoY29uc3QgY2hhciAqc3RyKQogICogUmVzdWx0UmVsSW5mby4KICAqLwogc3Rh dGljIENvcHlNdWx0aUluc2VydEJ1ZmZlciAqCi1Db3B5TXVsdGlJbnNlcnRCdWZmZXJJbml0KFJl c3VsdFJlbEluZm8gKnJyaSkKK0NvcHlNdWx0aUluc2VydEJ1ZmZlckluaXQoQ29weU11bHRpSW5z ZXJ0SW5mbyAqbWlpbmZvLCBSZXN1bHRSZWxJbmZvICpycmkpCiB7CiAJQ29weU11bHRpSW5zZXJ0 QnVmZmVyICpidWZmZXI7CiAKIAlidWZmZXIgPSAoQ29weU11bHRpSW5zZXJ0QnVmZmVyICopIHBh bGxvYyhzaXplb2YoQ29weU11bHRpSW5zZXJ0QnVmZmVyKSk7Ci0JbWVtc2V0KGJ1ZmZlci0+c2xv dHMsIDAsIHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIE1BWF9CVUZGRVJFRF9UVVBMRVMpOwor CisJaWYgKHJyaS0+cmlfRmR3Um91dGluZSA9PSBOVUxMKQorCXsKKwkJaW50CQkJbnVtX3Nsb3Rz OworCisJCWJ1ZmZlci0+dGlfc3RhdGUgPSB0YWJsZV9pbnNlcnRfYmVnaW4ocnJpLT5yaV9SZWxh dGlvbkRlc2MsCisJCQkJCQkJCQkJCSAgbWlpbmZvLT5teWNpZCwKKwkJCQkJCQkJCQkJICBUQUJM RUFNX01VTFRJX0lOU0VSVFMgfAorCQkJCQkJCQkJCQkgIFRBQkxFQU1fQlVMS1dSSVRFX0JVRkZF Ul9BQ0NFU1NfU1RSQVRFR1kgfAorCQkJCQkJCQkJCQkgIFRBQkxFQU1fU0tJUF9NVUxUSV9JTlNF UlRTX0ZMVVNILAorCQkJCQkJCQkJCQkgIG1paW5mby0+dGlfb3B0aW9ucyk7CisJCWJ1ZmZlci0+ c2xvdHMgPSB0YWJsZV9tdWx0aV9pbnNlcnRfc2xvdHMoYnVmZmVyLT50aV9zdGF0ZSwgJm51bV9z bG90cyk7CisJfQorCWVsc2UKKwl7CisJCWJ1ZmZlci0+c2xvdHMgPSBwYWxsb2MwKHNpemVvZihU dXBsZVRhYmxlU2xvdCAqKSAqIE1BWF9CVUZGRVJFRF9UVVBMRVMpOworCQlidWZmZXItPnRpX3N0 YXRlID0gTlVMTDsKKwl9CisKIAlidWZmZXItPnJlc3VsdFJlbEluZm8gPSBycmk7Ci0JYnVmZmVy LT5iaXN0YXRlID0gKHJyaS0+cmlfRmR3Um91dGluZSA9PSBOVUxMKSA/IEdldEJ1bGtJbnNlcnRT dGF0ZSgpIDogTlVMTDsKIAlidWZmZXItPm51c2VkID0gMDsKIAogCXJldHVybiBidWZmZXI7CkBA IC0yNDUsNyArMjYxLDcgQEAgQ29weU11bHRpSW5zZXJ0SW5mb1NldHVwQnVmZmVyKENvcHlNdWx0 aUluc2VydEluZm8gKm1paW5mbywKIHsKIAlDb3B5TXVsdGlJbnNlcnRCdWZmZXIgKmJ1ZmZlcjsK IAotCWJ1ZmZlciA9IENvcHlNdWx0aUluc2VydEJ1ZmZlckluaXQocnJpKTsKKwlidWZmZXIgPSBD b3B5TXVsdGlJbnNlcnRCdWZmZXJJbml0KG1paW5mbywgcnJpKTsKIAogCS8qIFNldHVwIGJhY2st bGluayBzbyB3ZSBjYW4gZWFzaWx5IGZpbmQgdGhpcyBidWZmZXIgYWdhaW4gKi8KIAlycmktPnJp X0NvcHlNdWx0aUluc2VydEJ1ZmZlciA9IGJ1ZmZlcjsKQEAgLTMyMiw4ICszMzgsNiBAQCBDb3B5 TXVsdGlJbnNlcnRCdWZmZXJGbHVzaChDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sCiAJCWlu dAkJCWJhdGNoX3NpemUgPSByZXN1bHRSZWxJbmZvLT5yaV9CYXRjaFNpemU7CiAJCWludAkJCXNl bnQgPSAwOwogCi0JCUFzc2VydChidWZmZXItPmJpc3RhdGUgPT0gTlVMTCk7Ci0KIAkJLyogRW5z dXJlIHRoYXQgdGhlIEZEVyBzdXBwb3J0cyBiYXRjaGluZyBhbmQgaXQncyBlbmFibGVkICovCiAJ CUFzc2VydChyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5FeGVjRm9yZWlnbkJhdGNoSW5z ZXJ0KTsKIAkJQXNzZXJ0KGJhdGNoX3NpemUgPiAxKTsKQEAgLTM5NSwxMyArNDA5LDggQEAgQ29w eU11bHRpSW5zZXJ0QnVmZmVyRmx1c2goQ29weU11bHRpSW5zZXJ0SW5mbyAqbWlpbmZvLAogCX0K IAllbHNlCiAJewotCQlDb21tYW5kSWQJbXljaWQgPSBtaWluZm8tPm15Y2lkOwotCQlpbnQJCQl0 aV9vcHRpb25zID0gbWlpbmZvLT50aV9vcHRpb25zOwogCQlib29sCQlsaW5lX2J1Zl92YWxpZCA9 IGNzdGF0ZS0+bGluZV9idWZfdmFsaWQ7CiAJCXVpbnQ2NAkJc2F2ZV9jdXJfbGluZW5vID0gY3N0 YXRlLT5jdXJfbGluZW5vOwotCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7Ci0KLQkJQXNzZXJ0 KGJ1ZmZlci0+YmlzdGF0ZSAhPSBOVUxMKTsKIAogCQkvKgogCQkgKiBQcmludCBlcnJvciBjb250 ZXh0IGluZm9ybWF0aW9uIGNvcnJlY3RseSwgaWYgb25lIG9mIHRoZSBvcGVyYXRpb25zCkBAIC00 MDksMTggKzQxOCw3IEBAIENvcHlNdWx0aUluc2VydEJ1ZmZlckZsdXNoKENvcHlNdWx0aUluc2Vy dEluZm8gKm1paW5mbywKIAkJICovCiAJCWNzdGF0ZS0+bGluZV9idWZfdmFsaWQgPSBmYWxzZTsK IAotCQkvKgotCQkgKiB0YWJsZV9tdWx0aV9pbnNlcnQgbWF5IGxlYWsgbWVtb3J5LCBzbyBzd2l0 Y2ggdG8gc2hvcnQtbGl2ZWQgbWVtb3J5Ci0JCSAqIGNvbnRleHQgYmVmb3JlIGNhbGxpbmcgaXQu Ci0JCSAqLwotCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldFBlclR1cGxl TWVtb3J5Q29udGV4dChlc3RhdGUpKTsKLQkJdGFibGVfbXVsdGlfaW5zZXJ0KHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYywKLQkJCQkJCSAgIHNsb3RzLAotCQkJCQkJICAgbnVzZWQsCi0J CQkJCQkgICBteWNpZCwKLQkJCQkJCSAgIHRpX29wdGlvbnMsCi0JCQkJCQkgICBidWZmZXItPmJp c3RhdGUpOwotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCXRhYmxlX211 bHRpX2luc2VydF9mbHVzaChidWZmZXItPnRpX3N0YXRlKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwg bnVzZWQ7IGkrKykKIAkJewpAQCAtNDM1LDcgKzQzMyw3IEBAIENvcHlNdWx0aUluc2VydEJ1ZmZl ckZsdXNoKENvcHlNdWx0aUluc2VydEluZm8gKm1paW5mbywKIAkJCQljc3RhdGUtPmN1cl9saW5l bm8gPSBidWZmZXItPmxpbmVub3NbaV07CiAJCQkJcmVjaGVja0luZGV4ZXMgPQogCQkJCQlFeGVj SW5zZXJ0SW5kZXhUdXBsZXMocmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCQkgIGJ1ZmZlci0+c2xv dHNbaV0sIGVzdGF0ZSwgZmFsc2UsCisJCQkJCQkJCQkJICBzbG90c1tpXSwgZXN0YXRlLCBmYWxz ZSwKIAkJCQkJCQkJCQkgIGZhbHNlLCBOVUxMLCBOSUwsIGZhbHNlKTsKIAkJCQlFeGVjQVJJbnNl cnRUcmlnZ2Vycyhlc3RhdGUsIHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkgc2xvdHNbaV0sIHJl Y2hlY2tJbmRleGVzLApAQCAtNDkzLDIwICs0OTEsMTUgQEAgQ29weU11bHRpSW5zZXJ0QnVmZmVy Q2xlYW51cChDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sCiAJcmVzdWx0UmVsSW5mby0+cmlf Q29weU11bHRpSW5zZXJ0QnVmZmVyID0gTlVMTDsKIAogCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9G ZHdSb3V0aW5lID09IE5VTEwpCi0JewotCQlBc3NlcnQoYnVmZmVyLT5iaXN0YXRlICE9IE5VTEwp OwotCQlGcmVlQnVsa0luc2VydFN0YXRlKGJ1ZmZlci0+YmlzdGF0ZSk7Ci0JfQorCQl0YWJsZV9p bnNlcnRfZW5kKGJ1ZmZlci0+dGlfc3RhdGUpOwogCWVsc2UKLQkJQXNzZXJ0KGJ1ZmZlci0+Ymlz dGF0ZSA9PSBOVUxMKTsKLQotCS8qIFNpbmNlIHdlIG9ubHkgY3JlYXRlIHNsb3RzIG9uIGRlbWFu ZCwganVzdCBkcm9wIHRoZSBub24tbnVsbCBvbmVzLiAqLwotCWZvciAoaSA9IDA7IGkgPCBNQVhf QlVGRkVSRURfVFVQTEVTICYmIGJ1ZmZlci0+c2xvdHNbaV0gIT0gTlVMTDsgaSsrKQotCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KGJ1ZmZlci0+c2xvdHNbaV0pOworCXsKKwkJLyogU2lu Y2Ugd2Ugb25seSBjcmVhdGUgc2xvdHMgb24gZGVtYW5kLCBqdXN0IGRyb3AgdGhlIG5vbi1udWxs IG9uZXMuICovCisJCWZvciAoaSA9IDA7IGkgPCBNQVhfQlVGRkVSRURfVFVQTEVTICYmIGJ1ZmZl ci0+c2xvdHNbaV0gIT0gTlVMTDsgaSsrKQorCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xv dChidWZmZXItPnNsb3RzW2ldKTsKIAotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5l ID09IE5VTEwpCi0JCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChyZXN1bHRSZWxJbmZvLT5yaV9S ZWxhdGlvbkRlc2MsCi0JCQkJCQkJCSBtaWluZm8tPnRpX29wdGlvbnMpOworCQlwZnJlZShidWZm ZXItPnNsb3RzKTsKKwl9CiAKIAlwZnJlZShidWZmZXIpOwogfQpAQCAtNTkzLDEzICs1ODYsMjUg QEAgQ29weU11bHRpSW5zZXJ0SW5mb05leHRGcmVlU2xvdChDb3B5TXVsdGlJbnNlcnRJbmZvICpt aWluZm8sCiB7CiAJQ29weU11bHRpSW5zZXJ0QnVmZmVyICpidWZmZXIgPSBycmktPnJpX0NvcHlN dWx0aUluc2VydEJ1ZmZlcjsKIAlpbnQJCQludXNlZCA9IGJ1ZmZlci0+bnVzZWQ7CisJVHVwbGVU YWJsZVNsb3QgKnNsb3Q7CiAKIAlBc3NlcnQoYnVmZmVyICE9IE5VTEwpOwogCUFzc2VydChudXNl ZCA8IE1BWF9CVUZGRVJFRF9UVVBMRVMpOwogCi0JaWYgKGJ1ZmZlci0+c2xvdHNbbnVzZWRdID09 IE5VTEwpCi0JCWJ1ZmZlci0+c2xvdHNbbnVzZWRdID0gdGFibGVfc2xvdF9jcmVhdGUocnJpLT5y aV9SZWxhdGlvbkRlc2MsIE5VTEwpOwotCXJldHVybiBidWZmZXItPnNsb3RzW251c2VkXTsKKwlp ZiAocnJpLT5yaV9GZHdSb3V0aW5lID09IE5VTEwpCisJCXNsb3QgPSB0YWJsZV9tdWx0aV9pbnNl cnRfbmV4dF9mcmVlX3Nsb3QoYnVmZmVyLT50aV9zdGF0ZSk7CisJZWxzZQorCXsKKwkJaWYgKGJ1 ZmZlci0+c2xvdHNbbnVzZWRdID09IE5VTEwpCisJCXsKKwkJCXNsb3QgPSB0YWJsZV9zbG90X2Ny ZWF0ZShycmktPnJpX1JlbGF0aW9uRGVzYywgTlVMTCk7CisJCQlidWZmZXItPnNsb3RzW251c2Vk XSA9IHNsb3Q7CisJCX0KKwkJZWxzZQorCQkJc2xvdCA9IGJ1ZmZlci0+c2xvdHNbbnVzZWRdOwor CX0KKworCXJldHVybiBzbG90OwogfQogCiAvKgpAQCAtNjE1LDYgKzYyMCw5IEBAIENvcHlNdWx0 aUluc2VydEluZm9TdG9yZShDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sIFJlc3VsdFJlbElu Zm8gKnJyaSwKIAlBc3NlcnQoYnVmZmVyICE9IE5VTEwpOwogCUFzc2VydChzbG90ID09IGJ1ZmZl ci0+c2xvdHNbYnVmZmVyLT5udXNlZF0pOwogCisJaWYgKHJyaS0+cmlfRmR3Um91dGluZSA9PSBO VUxMKQorCQl0YWJsZV9tdWx0aV9pbnNlcnRfdjIoYnVmZmVyLT50aV9zdGF0ZSwgc2xvdCk7CisK IAkvKiBTdG9yZSB0aGUgbGluZSBudW1iZXIgc28gd2UgY2FuIHByb3Blcmx5IHJlcG9ydCBhbnkg ZXJyb3JzIGxhdGVyICovCiAJYnVmZmVyLT5saW5lbm9zW2J1ZmZlci0+bnVzZWRdID0gbGluZW5v OwogCi0tIAoyLjM0LjEKCg== --00000000000082844a060f279106--