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 1rgIvT-005LOu-8M for pgsql-hackers@arkaria.postgresql.org; Sat, 02 Mar 2024 06:32:51 +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 1rgIvQ-00FqBC-7F for pgsql-hackers@arkaria.postgresql.org; Sat, 02 Mar 2024 06:32:48 +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 1rgIvP-00FqB4-Eu for pgsql-hackers@lists.postgresql.org; Sat, 02 Mar 2024 06:32:48 +0000 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rgIvL-002Rgh-Hy for pgsql-hackers@postgresql.org; Sat, 02 Mar 2024 06:32:46 +0000 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2d1094b5568so32134781fa.1 for ; Fri, 01 Mar 2024 22:32:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709361163; x=1709965963; 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=nXCbKeVqmxm68kPuicBM3Gt82E/G1vNWubNm79hVW6o=; b=SzRv/xc8DC+REwjJajDYdBebK7ypRVsagpUnmqcOKEpRyZjvUQmVjjCIzBjk+xR8li QIrkIT3Afb55TvfRyacwtbrCFum4SgQvBBHQ4iqZg+KDOSvLV8vUpAUG07NEjMa86YTv 7G8uXurzBPBIfJPWKoXdWMx/A5hVDkUZV4LP2jNN0VMXR7JmiNsvby2WB4fapTIIMtkV TO3hI1Zx3ItAHQp2Al5xb+kVowHwC3ZzbfZp0YN9sLpaOdPRtdFomvCvjwoIBZ0WZqPk OpU1atskIh4zt45k4oM9av9Qn9EgMZRLxI3ndH1ri6fNwXQPp0cfHPmAnuFfIUYxZ/G1 QEGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709361163; x=1709965963; 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=nXCbKeVqmxm68kPuicBM3Gt82E/G1vNWubNm79hVW6o=; b=b+6iTzWjItAihJSuqkA07FJJtOZUyYcgurkEWyGQ7GarJkzEvbZV6km4Tc2TlprqAD Xnf13bQlYx+/yqvacLUE2fl3gVn8qPIsByXUIEwW6wqe29Ke9Wn1cu3zc4Qwfv9XZyUx WWn/flzOtDSltSz1QA++AN0KGbzVjC5Ua0mu4S47ewTxVnGqjqC7RXdISTMRxcpdp3Zm PdIbakbf+0QlfUKm8e6Wq7SJMBsUQZyMvEuMe83qJizs1sOziR/Qm99y/DKUvX/AhYLR sf9N+udyVl4h1e09SP3wqzwVWCAatrKESzvQhDlOU6WVjdfkS6q9qVBFuFX7C0EChX35 UgFg== X-Gm-Message-State: AOJu0YxOjKT1lX4Cvbc0ilWSa+sIJPeMqbS86jufcP40lfZ6yI3wtd5b tr1MY1W5CwWtLRvDf6QLMx8EYwEz/l3BGaTzIwdvaUt7ZPYWijTJ13M4CuPweV84zNukzcBkXnf 6HpvkJfSfXh4Kg428IHvZD+dY9UUUgC9s X-Google-Smtp-Source: AGHT+IFpOXjA2oZ0qso8m56f6m5jcyr3b5/+CifnDfIH4Vn/s8a/xYavjB64e86yAOsYr6ZRvvRa4wVsyGNKLXJVKao= X-Received: by 2002:a2e:9218:0:b0:2d2:3b6a:b90a with SMTP id k24-20020a2e9218000000b002d23b6ab90amr2381545ljg.51.1709361162489; Fri, 01 Mar 2024 22:32:42 -0800 (PST) MIME-Version: 1.0 References: <20230603223824.o7iyochli2dwwi7k@alap3.anarazel.de> In-Reply-To: From: Bharath Rupireddy Date: Sat, 2 Mar 2024 12:02:29 +0530 Message-ID: Subject: Re: New Table Access Methods for Multi and Single Inserts To: PostgreSQL-development Cc: Andres Freund , Dilip Kumar , Luc Vlaming , Justin Pryzby , Jeff Davis , Michael Paquier , Matthias van de Meent Content-Type: multipart/mixed; boundary="000000000000e229ee0612a7a84e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e229ee0612a7a84e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jan 29, 2024 at 5:16=E2=80=AFPM Bharath Rupireddy wrote: > > > Please find the attached v9 patch set. I've had to rebase the patches due to commit 874d817, please find the attached v11 patch set. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000e229ee0612a7a84e Content-Type: application/x-patch; name="v11-0001-New-TAMs-for-inserts.patch" Content-Disposition: attachment; filename="v11-0001-New-TAMs-for-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt8razm70 RnJvbSBjMzM4ZjU0MWUwMTg1MGZhNGJiNDIzZTA5YWNjZTYxOGJlOWUyMWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMSBNYXIgMjAyNCAxNDoyMzowNyArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjExIDEvNF0gTmV3IFRBTXMgZm9yIGluc2VydHMKCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8IDIyNCArKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8ICAg OSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgIHwgIDQ5ICsrKysr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgIHwgMTM4ICsrKysrKysr KysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDQyMCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwppbmRleCA3MDc0NjBhNTM2Li43ZGYzMDUzODBlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAj aW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCkBA IC0yNDQ2LDYgKzI0NDcsMjI5IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAlwZ3N0YXRfY291bnRfaGVh cF9pbnNlcnQocmVsYXRpb24sIG50dXBsZXMpOwogfQogCisvKgorICogSW5pdGlhbGl6ZSBzdGF0 ZSByZXF1aXJlZCBmb3IgYW4gaW5zZXJ0IGEgc2luZ2xlIHR1cGxlIG9yIG11bHRpcGxlIHR1cGxl cworICogaW50byBhIGhlYXAuCisgKi8KK1RhYmxlSW5zZXJ0U3RhdGUgKgoraGVhcF9pbnNlcnRf YmVnaW4oUmVsYXRpb24gcmVsLCBDb21tYW5kSWQgY2lkLCBpbnQgYW1fZmxhZ3MsIGludCBpbnNl cnRfZmxhZ3MpCit7CisJVGFibGVJbnNlcnRTdGF0ZSAqdGlzdGF0ZTsKKworCXRpc3RhdGUgPSBw YWxsb2MwKHNpemVvZihUYWJsZUluc2VydFN0YXRlKSk7CisJdGlzdGF0ZS0+cmVsID0gcmVsOwor CXRpc3RhdGUtPmNpZCA9IGNpZDsKKwl0aXN0YXRlLT5hbV9mbGFncyA9IGFtX2ZsYWdzOworCXRp c3RhdGUtPmluc2VydF9mbGFncyA9IGluc2VydF9mbGFnczsKKworCWlmICgoYW1fZmxhZ3MgJiBU QUJMRUFNX01VTFRJX0lOU0VSVFMpICE9IDAgfHwKKwkJKGFtX2ZsYWdzICYgVEFCTEVBTV9CVUxL V1JJVEVfQlVGRkVSX0FDQ0VTU19TVFJBVEVHWSkpCisJCXRpc3RhdGUtPmFtX2RhdGEgPSBwYWxs b2MwKHNpemVvZihIZWFwSW5zZXJ0U3RhdGUpKTsKKworCWlmICgoYW1fZmxhZ3MgJiBUQUJMRUFN X01VTFRJX0lOU0VSVFMpICE9IDApCisJeworCQlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAqbWlzdGF0 ZTsKKworCQltaXN0YXRlID0gcGFsbG9jMChzaXplb2YoSGVhcE11bHRpSW5zZXJ0U3RhdGUpKTsK KwkJbWlzdGF0ZS0+c2xvdHMgPSBwYWxsb2MwKHNpemVvZihUdXBsZVRhYmxlU2xvdCAqKSAqIEhF QVBfTUFYX0JVRkZFUkVEX1NMT1RTKTsKKworCQltaXN0YXRlLT5jb250ZXh0ID0gQWxsb2NTZXRD b250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkJICJoZWFwX211 bHRpX2luc2VydF92MiBtZW1vcnkgY29udGV4dCIsCisJCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVG QVVMVF9TSVpFUyk7CisKKwkJKChIZWFwSW5zZXJ0U3RhdGUgKikgdGlzdGF0ZS0+YW1fZGF0YSkt Pm1pc3RhdGUgPSBtaXN0YXRlOworCX0KKworCWlmICgoYW1fZmxhZ3MgJiBUQUJMRUFNX0JVTEtX UklURV9CVUZGRVJfQUNDRVNTX1NUUkFURUdZKSAhPSAwKQorCQkoKEhlYXBJbnNlcnRTdGF0ZSAq KSB0aXN0YXRlLT5hbV9kYXRhKS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJ cmV0dXJuIHRpc3RhdGU7Cit9CisKKy8qCisgKiBJbnNlcnQgYSBzaW5nbGUgdHVwbGUgaW50byBh IGhlYXAuCisgKi8KK3ZvaWQKK2hlYXBfaW5zZXJ0X3YyKFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0 ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCit7CisJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CisJ SGVhcFR1cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hv dWxkRnJlZSk7CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGUgPSBOVUxMOworCisJQXNzZXJ0KHN0 YXRlLT5hbV9kYXRhICE9IE5VTEwgJiYKKwkJICAgKChIZWFwSW5zZXJ0U3RhdGUgKikgc3RhdGUt PmFtX2RhdGEpLT5taXN0YXRlID09IE5VTEwpOworCisJLyogVXBkYXRlIHR1cGxlIHdpdGggdGFi bGUgb2lkICovCisJc2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChzdGF0ZS0+ cmVsKTsKKwl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKKworCWlmIChz dGF0ZS0+YW1fZGF0YSAhPSBOVUxMICYmCisJCSgoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5h bV9kYXRhKS0+YmlzdGF0ZSAhPSBOVUxMKQorCQliaXN0YXRlID0gKChIZWFwSW5zZXJ0U3RhdGUg Kikgc3RhdGUtPmFtX2RhdGEpLT5iaXN0YXRlOworCisJLyogUGVyZm9ybSBpbnNlcnRpb24sIGFu ZCBjb3B5IHRoZSByZXN1bHRpbmcgSXRlbVBvaW50ZXIgKi8KKwloZWFwX2luc2VydChzdGF0ZS0+ cmVsLCB0dXBsZSwgc3RhdGUtPmNpZCwgc3RhdGUtPmluc2VydF9mbGFncywKKwkJCQliaXN0YXRl KTsKKwlJdGVtUG9pbnRlckNvcHkoJnR1cGxlLT50X3NlbGYsICZzbG90LT50dHNfdGlkKTsKKwor CWlmIChzaG91bGRGcmVlKQorCQlwZnJlZSh0dXBsZSk7Cit9CisKKy8qCisgKiBDcmVhdGUvcmV0 dXJuIG5leHQgZnJlZSBzbG90IGZyb20gbXVsdGktaW5zZXJ0IGJ1ZmZlcmVkIHNsb3RzIGFycmF5 LgorICovCitUdXBsZVRhYmxlU2xvdCAqCitoZWFwX211bHRpX2luc2VydF9uZXh0X2ZyZWVfc2xv dChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpCit7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJ SGVhcE11bHRpSW5zZXJ0U3RhdGUgKm1pc3RhdGU7CisKKwlBc3NlcnQoc3RhdGUtPmFtX2RhdGEg IT0gTlVMTCAmJgorCQkgICAoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPm1p c3RhdGUgIT0gTlVMTCk7CisKKwltaXN0YXRlID0gKChIZWFwSW5zZXJ0U3RhdGUgKikgc3RhdGUt PmFtX2RhdGEpLT5taXN0YXRlOworCXNsb3QgPSBtaXN0YXRlLT5zbG90c1ttaXN0YXRlLT5jdXJf c2xvdHNdOworCisJaWYgKHNsb3QgPT0gTlVMTCkKKwl7CisJCXNsb3QgPSB0YWJsZV9zbG90X2Ny ZWF0ZShzdGF0ZS0+cmVsLCBOVUxMKTsKKwkJbWlzdGF0ZS0+c2xvdHNbbWlzdGF0ZS0+Y3VyX3Ns b3RzXSA9IHNsb3Q7CisJfQorCWVsc2UKKwkJRXhlY0NsZWFyVHVwbGUoc2xvdCk7CisKKwlyZXR1 cm4gc2xvdDsKK30KKworLyoKKyAqIFN0b3JlIHBhc3NlZC1pbiB0dXBsZSBpbnRvIGluLW1lbW9y eSBidWZmZXJlZCBzbG90cy4gV2hlbiBmdWxsLCBpbnNlcnQKKyAqIG11bHRpcGxlIHR1cGxlcyBm cm9tIHRoZSBidWZmZXJzIGludG8gaGVhcC4KKyAqLwordm9pZAoraGVhcF9tdWx0aV9pbnNlcnRf djIoVGFibGVJbnNlcnRTdGF0ZSAqIHN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlU dXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKwlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAqbWlzdGF0ZTsK KworCUFzc2VydChzdGF0ZS0+YW1fZGF0YSAhPSBOVUxMICYmCisJCSAgICgoSGVhcEluc2VydFN0 YXRlICopIHN0YXRlLT5hbV9kYXRhKS0+bWlzdGF0ZSAhPSBOVUxMKTsKKworCW1pc3RhdGUgPSAo KEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPm1pc3RhdGU7CisJZHN0c2xvdCA9 IG1pc3RhdGUtPnNsb3RzW21pc3RhdGUtPmN1cl9zbG90c107CisKKwlpZiAoZHN0c2xvdCA9PSBO VUxMKQorCXsKKwkJZHN0c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHN0YXRlLT5yZWwsIE5VTEwp OworCQltaXN0YXRlLT5zbG90c1ttaXN0YXRlLT5jdXJfc2xvdHNdID0gZHN0c2xvdDsKKwl9CisK KwkvKgorCSAqIENhbGxlciBtYXkgaGF2ZSBnb3QgdGhlIHNsb3QgdXNpbmcgaGVhcF9tdWx0aV9p bnNlcnRfbmV4dF9mcmVlX3Nsb3QsCisJICogZmlsbGVkIGl0IGFuZCBwYXNzZWQuIFNvLCBza2lw IGNvcHlpbmcgaW4gc3VjaCBhIGNhc2UuCisJICovCisJaWYgKChzdGF0ZS0+YW1fZmxhZ3MgJiBU QUJMRUFNX1NLSVBfTVVMVElfSU5TRVJUU19GTFVTSCkgPT0gMCkKKwl7CisJCUV4ZWNDbGVhclR1 cGxlKGRzdHNsb3QpOworCQlFeGVjQ29weVNsb3QoZHN0c2xvdCwgc2xvdCk7CisJfQorCWVsc2UK KwkJQXNzZXJ0KGRzdHNsb3QgPT0gc2xvdCk7CisKKwltaXN0YXRlLT5jdXJfc2xvdHMrKzsKKwor CS8qCisJICogV2hlbiBwYXNzZWQtaW4gc2xvdCBpcyBhbHJlYWR5IG1hdGVyaWFsaXplZCwgbWVt b3J5IGFsbG9jYXRlZCBpbiBzbG90J3MKKwkgKiBtZW1vcnkgY29udGV4dCBpcyBhIGNsb3NlIGFw cHJveGltYXRpb24gZm9yIHVzIHRvIHRyYWNrIHRoZSByZXF1aXJlZAorCSAqIHNwYWNlIGZvciB0 aGUgdHVwbGUgaW4gc2xvdC4KKwkgKgorCSAqIEZvciBub24tbWF0ZXJpYWxpemVkIHNsb3RzLCB0 aGUgZmx1c2hpbmcgZGVjaXNpb24gaGFwcGVucyBzb2xlbHkgb24gdGhlCisJICogbnVtYmVyIG9m IHR1cGxlcyBzdG9yZWQgaW4gdGhlIGJ1ZmZlci4KKwkgKi8KKwlpZiAoVFRTX1NIT1VMREZSRUUo c2xvdCkpCisJCW1pc3RhdGUtPmN1cl9zaXplICs9IE1lbW9yeUNvbnRleHRNZW1BbGxvY2F0ZWQo c2xvdC0+dHRzX21jeHQsIGZhbHNlKTsKKworCWlmICgoc3RhdGUtPmFtX2ZsYWdzICYgVEFCTEVB TV9TS0lQX01VTFRJX0lOU0VSVFNfRkxVU0gpID09IDAgJiYKKwkJKG1pc3RhdGUtPmN1cl9zbG90 cyA+PSBIRUFQX01BWF9CVUZGRVJFRF9TTE9UUyB8fAorCQkgbWlzdGF0ZS0+Y3VyX3NpemUgPj0g SEVBUF9NQVhfQlVGRkVSRURfQllURVMpKQorCQloZWFwX211bHRpX2luc2VydF9mbHVzaChzdGF0 ZSk7Cit9CisKKy8qCisgKiBSZXR1cm4gcG9pbnRlciB0byBtdWx0aS1pbnNlcnQgYnVmZmVyZWQg c2xvdHMgYXJyYXkgYW5kIG51bWJlciBvZiBjdXJyZW50bHkKKyAqIG9jY3VwaWVkIHNsb3RzLgor ICovCitUdXBsZVRhYmxlU2xvdCAqKgoraGVhcF9tdWx0aV9pbnNlcnRfc2xvdHMoVGFibGVJbnNl cnRTdGF0ZSAqIHN0YXRlLCBpbnQgKm51bV9zbG90cykKK3sKKwlIZWFwTXVsdGlJbnNlcnRTdGF0 ZSAqbWlzdGF0ZTsKKworCW1pc3RhdGUgPSAoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1f ZGF0YSktPm1pc3RhdGU7CisJKm51bV9zbG90cyA9IG1pc3RhdGUtPmN1cl9zbG90czsKKworCXJl dHVybiBtaXN0YXRlLT5zbG90czsKK30KKworLyoKKyAqIEluc2VydCBtdWx0aXBsZSB0dXBsZXMg ZnJvbSBpbi1tZW1vcnkgYnVmZmVyZWQgc2xvdHMgaW50byBoZWFwLgorICovCit2b2lkCitoZWFw X211bHRpX2luc2VydF9mbHVzaChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpCit7CisJSGVhcE11 bHRpSW5zZXJ0U3RhdGUgKm1pc3RhdGU7CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGUgPSBOVUxM OworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCW1pc3RhdGUgPSAoKEhlYXBJbnNlcnRT dGF0ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPm1pc3RhdGU7CisKKwlpZiAoc3RhdGUtPmFtX2RhdGEg IT0gTlVMTCAmJgorCQkoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1fZGF0YSktPmJpc3Rh dGUgIT0gTlVMTCkKKwkJYmlzdGF0ZSA9ICgoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5hbV9k YXRhKS0+YmlzdGF0ZTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWlz dGF0ZS0+Y29udGV4dCk7CisJaGVhcF9tdWx0aV9pbnNlcnQoc3RhdGUtPnJlbCwgbWlzdGF0ZS0+ c2xvdHMsIG1pc3RhdGUtPmN1cl9zbG90cywKKwkJCQkJICBzdGF0ZS0+Y2lkLCBzdGF0ZS0+aW5z ZXJ0X2ZsYWdzLCBiaXN0YXRlKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisJTWVtb3J5Q29udGV4dFJlc2V0KG1pc3RhdGUtPmNvbnRleHQpOworCisJbWlzdGF0ZS0+Y3Vy X3Nsb3RzID0gMDsKKwltaXN0YXRlLT5jdXJfc2l6ZSA9IDA7Cit9CisKKy8qCisgKiBDbGVhbiB1 cCBzdGF0ZSB1c2VkIHRvIGluc2VydCBhIHNpbmdsZSBvciBtdWx0aXBsZSB0dXBsZXMgaW50byBh IGhlYXAuCisgKi8KK3ZvaWQKK2hlYXBfaW5zZXJ0X2VuZChUYWJsZUluc2VydFN0YXRlICogc3Rh dGUpCit7CisJaWYgKHN0YXRlLT5hbV9kYXRhICE9IE5VTEwgJiYKKwkJKChIZWFwSW5zZXJ0U3Rh dGUgKikgc3RhdGUtPmFtX2RhdGEpLT5taXN0YXRlICE9IE5VTEwpCisJeworCQlIZWFwTXVsdGlJ bnNlcnRTdGF0ZSAqbWlzdGF0ZSA9CisJCQkoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+YW1f ZGF0YSktPm1pc3RhdGU7CisKKwkJLyogSW5zZXJ0IHJlbWFpbmluZyB0dXBsZXMgZnJvbSBtdWx0 aS1pbnNlcnQgYnVmZmVycyAqLworCQlpZiAobWlzdGF0ZS0+Y3VyX3Nsb3RzID4gMCB8fCBtaXN0 YXRlLT5jdXJfc2l6ZSA+IDApCisJCQloZWFwX211bHRpX2luc2VydF9mbHVzaChzdGF0ZSk7CisK KwkJTWVtb3J5Q29udGV4dERlbGV0ZShtaXN0YXRlLT5jb250ZXh0KTsKKworCQlmb3IgKGludCBp ID0gMDsgaSA8IEhFQVBfTUFYX0JVRkZFUkVEX1NMT1RTICYmIG1pc3RhdGUtPnNsb3RzW2ldICE9 IE5VTEw7IGkrKykKKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QobWlzdGF0ZS0+c2xv dHNbaV0pOworCisJCXBmcmVlKG1pc3RhdGUpOworCQkoKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0 ZS0+YW1fZGF0YSktPm1pc3RhdGUgPSBOVUxMOworCX0KKworCWlmIChzdGF0ZS0+YW1fZGF0YSAh PSBOVUxMICYmCisJCSgoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5hbV9kYXRhKS0+YmlzdGF0 ZSAhPSBOVUxMKQorCQlGcmVlQnVsa0luc2VydFN0YXRlKCgoSGVhcEluc2VydFN0YXRlICopIHN0 YXRlLT5hbV9kYXRhKS0+YmlzdGF0ZSk7CisKKwlwZnJlZShzdGF0ZS0+YW1fZGF0YSk7CisJc3Rh dGUtPmFtX2RhdGEgPSBOVUxMOworCXBmcmVlKHN0YXRlKTsKK30KKwogLyoKICAqCXNpbXBsZV9o ZWFwX2luc2VydCAtIGluc2VydCBhIHR1cGxlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKaW5kZXggNjgwYTUwYmY4Yi4uODQ3OTNmMzI0ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0yNTYyLDYgKzI1NjIsMTUgQEAgc3Rh dGljIGNvbnN0IFRhYmxlQW1Sb3V0aW5lIGhlYXBhbV9tZXRob2RzID0gewogCS50dXBsZV9pbnNl cnRfc3BlY3VsYXRpdmUgPSBoZWFwYW1fdHVwbGVfaW5zZXJ0X3NwZWN1bGF0aXZlLAogCS50dXBs ZV9jb21wbGV0ZV9zcGVjdWxhdGl2ZSA9IGhlYXBhbV90dXBsZV9jb21wbGV0ZV9zcGVjdWxhdGl2 ZSwKIAkubXVsdGlfaW5zZXJ0ID0gaGVhcF9tdWx0aV9pbnNlcnQsCisKKwkudHVwbGVfaW5zZXJ0 X2JlZ2luID0gaGVhcF9pbnNlcnRfYmVnaW4sCisJLnR1cGxlX2luc2VydF92MiA9IGhlYXBfaW5z ZXJ0X3YyLAorCS50dXBsZV9tdWx0aV9pbnNlcnRfbmV4dF9mcmVlX3Nsb3QgPSBoZWFwX211bHRp X2luc2VydF9uZXh0X2ZyZWVfc2xvdCwKKwkudHVwbGVfbXVsdGlfaW5zZXJ0X3YyID0gaGVhcF9t dWx0aV9pbnNlcnRfdjIsCisJLnR1cGxlX211bHRpX2luc2VydF9zbG90cyA9IGhlYXBfbXVsdGlf aW5zZXJ0X3Nsb3RzLAorCS50dXBsZV9tdWx0aV9pbnNlcnRfZmx1c2ggPSBoZWFwX211bHRpX2lu c2VydF9mbHVzaCwKKwkudHVwbGVfaW5zZXJ0X2VuZCA9IGhlYXBfaW5zZXJ0X2VuZCwKKwogCS50 dXBsZV9kZWxldGUgPSBoZWFwYW1fdHVwbGVfZGVsZXRlLAogCS50dXBsZV91cGRhdGUgPSBoZWFw YW1fdHVwbGVfdXBkYXRlLAogCS50dXBsZV9sb2NrID0gaGVhcGFtX3R1cGxlX2xvY2ssCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKaW5kZXggNGIxMzNmNjg1OS4uMDUzYmUxODExMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApA QCAtMjI1LDYgKzIyNSw0MCBAQCBodHN2X2dldF92YWxpZF9zdGF0dXMoaW50IHN0YXR1cykKIAly ZXR1cm4gKEhUU1ZfUmVzdWx0KSBzdGF0dXM7CiB9CiAKKy8qCisgKiBNYXhpbXVtIG51bWJlciBv ZiBzbG90cyB0aGF0IG11bHRpLWluc2VydCBidWZmZXJzIGNhbiBob2xkLgorICoKKyAqIENhdXRp b246IERvbid0IG1ha2UgdGhpcyB0b28gYmlnLCBhcyB3ZSBjb3VsZCBlbmQgdXAgd2l0aCB0aGlz IG1hbnkgdHVwbGVzCisgKiBzdG9yZWQgaW4gbXVsdGkgaW5zZXJ0IGJ1ZmZlci4gRm9yIGluc3Rh bmNlLCBpbmNyZWFzaW5nIHRoaXMgY2FuIGNhdXNlCisgKiBxdWFkcmF0aWMgZ3Jvd3RoIGluIG1l bW9yeSByZXF1aXJlbWVudHMgZHVyaW5nIGNvcGllcyBpbnRvIHBhcnRpdGlvbmVkCisgKiB0YWJs ZXMgd2l0aCBhIGxhcmdlIG51bWJlciBvZiBwYXJ0aXRpb25zLgorICovCisjZGVmaW5lIEhFQVBf TUFYX0JVRkZFUkVEX1NMT1RTCQkxMDAwCisKKy8qIE1heGltdW0gc2l6ZSBvZiBhbGwgdHVwbGVz IHRoYXQgbXVsdGktaW5zZXJ0IGJ1ZmZlcnMgY2FuIGhvbGQgKi8KKyNkZWZpbmUgSEVBUF9NQVhf QlVGRkVSRURfQllURVMJCTY1NTM1CisKK3R5cGVkZWYgc3RydWN0IEhlYXBNdWx0aUluc2VydFN0 YXRlCit7CisJLyogTWVtb3J5IGNvbnRleHQgdG8gdXNlIGZvciBmbHVzaGluZyBtdWx0aS1pbnNl cnQgYnVmZmVycyAqLworCU1lbW9yeUNvbnRleHQgY29udGV4dDsKKworCS8qIEFycmF5IG9mIGJ1 ZmZlcmVkIHNsb3RzICovCisJVHVwbGVUYWJsZVNsb3QgKipzbG90czsKKworCS8qIE51bWJlciBv ZiBzbG90cyB0aGF0IG11bHRpLWluc2VydCBidWZmZXJzIGN1cnJlbnRseSBob2xkICovCisJaW50 CQkJY3VyX3Nsb3RzOworCisJLyogU2l6ZSBvZiBhbGwgdHVwbGVzIHRoYXQgbXVsdGktaW5zZXJ0 IGJ1ZmZlcnMgY3VycmVudGx5IGhvbGQgKi8KKwlTaXplCQljdXJfc2l6ZTsKK30JCQlIZWFwTXVs dGlJbnNlcnRTdGF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgSGVhcEluc2VydFN0YXRlCit7CisJc3Ry dWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKmJpc3RhdGU7CisJSGVhcE11bHRpSW5zZXJ0U3RhdGUg Km1pc3RhdGU7Cit9CQkJSGVhcEluc2VydFN0YXRlOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAg KgkJZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgaGVhcCBhY2Nlc3MgbWV0aG9kCiAgKgpAQCAtMjc1 LDYgKzMwOSwyMSBAQCBleHRlcm4gdm9pZCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIGV4dGVybiB2b2lkIGhlYXBfbXVsdGlfaW5z ZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgKipzbG90cywKIAkJ CQkJCQkgIGludCBudHVwbGVzLCBDb21tYW5kSWQgY2lkLCBpbnQgb3B0aW9ucywKIAkJCQkJCQkg IEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlKTsKKworZXh0ZXJuIFRhYmxlSW5zZXJ0U3RhdGUgKiBo ZWFwX2luc2VydF9iZWdpbihSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJCUNvbW1hbmRJZCBjaWQs CisJCQkJCQkJCQkJCWludCBhbV9mbGFncywKKwkJCQkJCQkJCQkJaW50IGluc2VydF9mbGFncyk7 CitleHRlcm4gdm9pZCBoZWFwX2luc2VydF92MihUYWJsZUluc2VydFN0YXRlICogc3RhdGUsCisJ CQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitleHRlcm4gVHVwbGVUYWJsZVNsb3QgKmhl YXBfbXVsdGlfaW5zZXJ0X25leHRfZnJlZV9zbG90KFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSk7 CitleHRlcm4gdm9pZCBoZWFwX211bHRpX2luc2VydF92MihUYWJsZUluc2VydFN0YXRlICogc3Rh dGUsCisJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitleHRlcm4gVHVwbGVUYWJsZVNs b3QgKipoZWFwX211bHRpX2luc2VydF9zbG90cyhUYWJsZUluc2VydFN0YXRlICogc3RhdGUsCisJ CQkJCQkJCQkJCQlpbnQgKm51bV9zbG90cyk7CitleHRlcm4gdm9pZCBoZWFwX211bHRpX2luc2Vy dF9mbHVzaChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpOworZXh0ZXJuIHZvaWQgaGVhcF9pbnNl cnRfZW5kKFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSk7CisKIGV4dGVybiBUTV9SZXN1bHQgaGVh cF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkgQ29t bWFuZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAogCQkJCQkJCSBzdHJ1 Y3QgVE1fRmFpbHVyZURhdGEgKnRtZmQsIGJvb2wgY2hhbmdpbmdQYXJ0KTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCmluZGV4IDVmODQ3NDg3MWQuLjgzNGRlMTViOWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt MjQ3LDYgKzI0Nyw0MyBAQCB0eXBlZGVmIHN0cnVjdCBUTV9JbmRleERlbGV0ZU9wCiAJVE1fSW5k ZXhTdGF0dXMgKnN0YXR1czsKIH0gVE1fSW5kZXhEZWxldGVPcDsKIAorLyogVXNlIG11bHRpIGlu c2VydHMsIGkuZS4gYnVmZmVyIG11bHRpcGxlIHR1cGxlcyBhbmQgaW5zZXJ0IHRoZW0gYXQgb25j ZSAqLworI2RlZmluZSBUQUJMRUFNX01VTFRJX0lOU0VSVFMgMHgwMDAwMDEKKworLyogVXNlIEJB U19CVUxLV1JJVEUgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSAqLworI2RlZmluZSBUQUJMRUFNX0JV TEtXUklURV9CVUZGRVJfQUNDRVNTX1NUUkFURUdZIDB4MDAwMDAyCisKKy8qCisgKiBTa2lwIGZs dXNoaW5nIGJ1ZmZlcmVkIHR1cGxlcyBhdXRvbWF0aWNhbGx5LiBSZXNwb25zaWJpbGl0eSBsaWVz IHdpdGggdGhlCisgKiBjYWxsZXIgdG8gZmx1c2ggdGhlIGJ1ZmZlcmVkIHR1cGxlcy4KKyAqLwor I2RlZmluZSBUQUJMRUFNX1NLSVBfTVVMVElfSU5TRVJUU19GTFVTSCAweDAwMDAwNAorCisKKy8q IEhvbGRzIHRhYmxlIGluc2VydCBzdGF0ZS4gKi8KK3R5cGVkZWYgc3RydWN0IFRhYmxlSW5zZXJ0 U3RhdGUKK3sKKwkvKiBUYWJsZSBBTS1hZ25vc3RpYyBkYXRhIHN0YXJ0cyBoZXJlICovCisKKwlS ZWxhdGlvbglyZWw7CQkJLyogVGFyZ2V0IHJlbGF0aW9uICovCisKKwkvKgorCSAqIENvbW1hbmQg SUQgZm9yIHRoaXMgaW5zZXJ0aW9uLiBJZiByZXF1aXJlZCwgY2hhbmdlIHRoaXMgZm9yIGVhY2gg cGFzcworCSAqIG9mIGluc2VydCBmdW5jdGlvbnMuCisJICovCisJQ29tbWFuZElkCWNpZDsKKwor CS8qIFRhYmxlIEFNIG9wdGlvbnMgKFRBQkxFQU1fWFhYIG1hY3JvcykgKi8KKwlpbnQJCQlhbV9m bGFnczsKKworCS8qIHRhYmxlX3R1cGxlX2luc2VydCBwZXJmb3JtYW5jZSBvcHRpb25zIChUQUJM RV9JTlNFUlRfWFhYIG1hY3JvcykgKi8KKwlpbnQJCQlpbnNlcnRfZmxhZ3M7CisKKwkvKiBUYWJs ZSBBTSBzcGVjaWZpYyBkYXRhIHN0YXJ0cyBoZXJlICovCisKKwl2b2lkCSAgICphbV9kYXRhOwor fQkJCVRhYmxlSW5zZXJ0U3RhdGU7CisKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIHRhYmxl X3R1cGxlX2luc2VydCAqLwogLyogVEFCTEVfSU5TRVJUX1NLSVBfV0FMIHdhcyAweDAwMDE7IFJl bGF0aW9uTmVlZHNXQUwoKSBub3cgZ292ZXJucyAqLwogI2RlZmluZSBUQUJMRV9JTlNFUlRfU0tJ UF9GU00JCTB4MDAwMgpAQCAtNTIyLDYgKzU1OSwyMCBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFt Um91dGluZQogCXZvaWQJCSgqbXVsdGlfaW5zZXJ0KSAoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxl U2xvdCAqKnNsb3RzLCBpbnQgbnNsb3RzLAogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwgaW50IG9w dGlvbnMsIHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRhICpiaXN0YXRlKTsKIAorCVRhYmxlSW5z ZXJ0U3RhdGUgKigqdHVwbGVfaW5zZXJ0X2JlZ2luKSAoUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJ CQkgQ29tbWFuZElkIGNpZCwKKwkJCQkJCQkJCQkJIGludCBhbV9mbGFncywKKwkJCQkJCQkJCQkJ IGludCBpbnNlcnRfZmxhZ3MpOworCXZvaWQJCSgqdHVwbGVfaW5zZXJ0X3YyKSAoVGFibGVJbnNl cnRTdGF0ZSAqIHN0YXRlLAorCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCXZvaWQJ CSgqdHVwbGVfbXVsdGlfaW5zZXJ0X3YyKSAoVGFibGVJbnNlcnRTdGF0ZSAqIHN0YXRlLAorCQkJ CQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCVR1cGxlVGFibGVTbG90ICooKnR1cGxl X211bHRpX2luc2VydF9uZXh0X2ZyZWVfc2xvdCkgKFRhYmxlSW5zZXJ0U3RhdGUgKiBzdGF0ZSk7 CisJVHVwbGVUYWJsZVNsb3QgKiooKnR1cGxlX211bHRpX2luc2VydF9zbG90cykgKFRhYmxlSW5z ZXJ0U3RhdGUgKiBzdGF0ZSwKKwkJCQkJCQkJCQkJCSAgaW50ICpudW1fc2xvdHMpOworCXZvaWQJ CSgqdHVwbGVfbXVsdGlfaW5zZXJ0X2ZsdXNoKSAoVGFibGVJbnNlcnRTdGF0ZSAqIHN0YXRlKTsK Kwl2b2lkCQkoKnR1cGxlX2luc2VydF9lbmQpIChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpOwor CiAJLyogc2VlIHRhYmxlX3R1cGxlX2RlbGV0ZSgpIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1l dGVycyAqLwogCVRNX1Jlc3VsdAkoKnR1cGxlX2RlbGV0ZSkgKFJlbGF0aW9uIHJlbCwKIAkJCQkJ CQkJIEl0ZW1Qb2ludGVyIHRpZCwKQEAgLTE0NTYsNiArMTUwNyw5MyBAQCB0YWJsZV9tdWx0aV9p bnNlcnQoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnNsb3RzLAog CQkJCQkJCQkgIGNpZCwgb3B0aW9ucywgYmlzdGF0ZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgVGFi bGVJbnNlcnRTdGF0ZSAqCit0YWJsZV9pbnNlcnRfYmVnaW4oUmVsYXRpb24gcmVsLCBDb21tYW5k SWQgY2lkLCBpbnQgYW1fZmxhZ3MsCisJCQkJICAgaW50IGluc2VydF9mbGFncykKK3sKKwlpZiAo cmVsLT5yZF90YWJsZWFtICYmIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfaW5zZXJ0X2JlZ2luKQor CQlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT50dXBsZV9pbnNlcnRfYmVnaW4ocmVsLCBjaWQsIGFt X2ZsYWdzLAorCQkJCQkJCQkJCQkJICAgaW5zZXJ0X2ZsYWdzKTsKKwllbHNlCisJeworCQllbG9n KEVSUk9SLCAidGFibGVfaW5zZXJ0X2JlZ2luIGFjY2VzcyBtZXRob2QgaXMgbm90IGltcGxlbWVu dGVkIGZvciByZWxhdGlvbiBcIiVzXCIiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpOworCQlyZXR1cm4gTlVMTDsJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJfQorfQor CitzdGF0aWMgaW5saW5lIHZvaWQKK3RhYmxlX3R1cGxlX2luc2VydF92MihUYWJsZUluc2VydFN0 YXRlICogc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCWlmIChzdGF0ZS0+cmVsLT5y ZF90YWJsZWFtICYmCisJCXN0YXRlLT5yZWwtPnJkX3RhYmxlYW0tPnR1cGxlX2luc2VydF92MikK KwkJc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfaW5zZXJ0X3YyKHN0YXRlLCBzbG90KTsK KwllbHNlCisJCWVsb2coRVJST1IsICJ0YWJsZV90dXBsZV9pbnNlcnRfdjIgYWNjZXNzIG1ldGhv ZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoc3RhdGUtPnJlbCkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3Rh YmxlX211bHRpX2luc2VydF92MihUYWJsZUluc2VydFN0YXRlICogc3RhdGUsIFR1cGxlVGFibGVT bG90ICpzbG90KQoreworCWlmIChzdGF0ZS0+cmVsLT5yZF90YWJsZWFtICYmCisJCXN0YXRlLT5y ZWwtPnJkX3RhYmxlYW0tPnR1cGxlX211bHRpX2luc2VydF92MikKKwkJc3RhdGUtPnJlbC0+cmRf dGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X3YyKHN0YXRlLCBzbG90KTsKKwllbHNlCisJCWVs b2coRVJST1IsICJ0YWJsZV9tdWx0aV9pbnNlcnRfdjIgYWNjZXNzIG1ldGhvZCBpcyBub3QgaW1w bGVtZW50ZWQgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoc3RhdGUtPnJlbCkpOworfQorCitzdGF0aWMgaW5saW5lIFR1cGxlVGFibGVTbG90ICoKK3Rh YmxlX211bHRpX2luc2VydF9uZXh0X2ZyZWVfc2xvdChUYWJsZUluc2VydFN0YXRlICogc3RhdGUp Cit7CisJaWYgKHN0YXRlLT5yZWwtPnJkX3RhYmxlYW0gJiYKKwkJc3RhdGUtPnJlbC0+cmRfdGFi bGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X25leHRfZnJlZV9zbG90KQorCQlyZXR1cm4gc3RhdGUt PnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X25leHRfZnJlZV9zbG90KHN0YXRl KTsKKwllbHNlCisJeworCQllbG9nKEVSUk9SLCAidGFibGVfbXVsdGlfaW5zZXJ0X25leHRfZnJl ZV9zbG90IGFjY2VzcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIGZvciByZWxhdGlvbiBcIiVz XCIiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5yZWwpKTsKKwkJcmV0dXJu IE5VTEw7CQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCX0KK30KKworc3RhdGljIGlubGlu ZSBUdXBsZVRhYmxlU2xvdCAqKgordGFibGVfbXVsdGlfaW5zZXJ0X3Nsb3RzKFRhYmxlSW5zZXJ0 U3RhdGUgKiBzdGF0ZSwgaW50ICpudW1fc2xvdHMpCit7CisJaWYgKHN0YXRlLT5yZWwtPnJkX3Rh YmxlYW0gJiYKKwkJc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X3Ns b3RzKQorCQlyZXR1cm4gc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0 X3Nsb3RzKHN0YXRlLCBudW1fc2xvdHMpOworCWVsc2UKKwl7CisJCWVsb2coRVJST1IsICJ0YWJs ZV9tdWx0aV9pbnNlcnRfc2xvdHMgYWNjZXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9y IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPnJl bCkpOworCQlyZXR1cm4gTlVMTDsJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJfQorfQor CitzdGF0aWMgaW5saW5lIHZvaWQKK3RhYmxlX211bHRpX2luc2VydF9mbHVzaChUYWJsZUluc2Vy dFN0YXRlICogc3RhdGUpCit7CisJaWYgKHN0YXRlLT5yZWwtPnJkX3RhYmxlYW0gJiYKKwkJc3Rh dGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbXVsdGlfaW5zZXJ0X2ZsdXNoKQorCQlzdGF0ZS0+ cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tdWx0aV9pbnNlcnRfZmx1c2goc3RhdGUpOworCWVsc2UK KwkJZWxvZyhFUlJPUiwgInRhYmxlX211bHRpX2luc2VydF9mbHVzaCBhY2Nlc3MgbWV0aG9kIGlz IG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShzdGF0ZS0+cmVsKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGFibGVf aW5zZXJ0X2VuZChUYWJsZUluc2VydFN0YXRlICogc3RhdGUpCit7CisJaWYgKHN0YXRlLT5yZWwt PnJkX3RhYmxlYW0gJiYKKwkJc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfaW5zZXJ0X2Vu ZCkKKwkJc3RhdGUtPnJlbC0+cmRfdGFibGVhbS0+dHVwbGVfaW5zZXJ0X2VuZChzdGF0ZSk7CisJ ZWxzZQorCQllbG9nKEVSUk9SLCAidGFibGVfaW5zZXJ0X2VuZCBhY2Nlc3MgbWV0aG9kIGlzIG5v dCBpbXBsZW1lbnRlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShzdGF0ZS0+cmVsKSk7Cit9CisKIC8qCiAgKiBEZWxldGUgYSB0dXBsZS4KICAqCi0t IAoyLjM0LjEKCg== --000000000000e229ee0612a7a84e Content-Type: application/x-patch; name="v11-0002-Optimize-CTAS-with-multi-inserts.patch" Content-Disposition: attachment; filename="v11-0002-Optimize-CTAS-with-multi-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt8rb1kp1 RnJvbSAzZWU5MWZjZjFiYTg0OGVlMDc5OTNhZjUxZmJhM2I2YThhMjcxNGI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMSBNYXIgMjAyNCAxNDoyNzowOCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjExIDIvNF0gT3B0aW1pemUgQ1RBUyB3aXRoIG11bHRpIGluc2Vy dHMKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyB8IDI1ICsrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDE2YTJmZTY1ZTYuLjNhMDJlYTk1 NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtNTgsOSArNTgsNyBAQCB0eXBlZGVmIHN0 cnVjdAogCS8qIFRoZXNlIGZpZWxkcyBhcmUgZmlsbGVkIGJ5IGludG9yZWxfc3RhcnR1cDogKi8K IAlSZWxhdGlvbglyZWw7CQkJLyogcmVsYXRpb24gdG8gd3JpdGUgdG8gKi8KIAlPYmplY3RBZGRy ZXNzIHJlbGFkZHI7CQkvKiBhZGRyZXNzIG9mIHJlbCwgZm9yIEV4ZWNDcmVhdGVUYWJsZUFzICov Ci0JQ29tbWFuZElkCW91dHB1dF9jaWQ7CQkvKiBjbWluIHRvIGluc2VydCBpbiBvdXRwdXQgdHVw bGVzICovCi0JaW50CQkJdGlfb3B0aW9uczsJCS8qIHRhYmxlX3R1cGxlX2luc2VydCBwZXJmb3Jt YW5jZSBvcHRpb25zICovCi0JQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIGJ1bGsgaW5zZXJ0 IHN0YXRlICovCisJVGFibGVJbnNlcnRTdGF0ZSAqdGlfc3RhdGU7IC8qIHRhYmxlIGluc2VydCBz dGF0ZSAqLwogfSBEUl9pbnRvcmVsOwogCiAvKiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgQ1RBUyBk ZWZpbml0aW9uIGNyZWF0aW9uICovCkBAIC01NTcsMTcgKzU1NSwxOSBAQCBpbnRvcmVsX3N0YXJ0 dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2MgdHlwZWluZm8p CiAJICovCiAJbXlTdGF0ZS0+cmVsID0gaW50b1JlbGF0aW9uRGVzYzsKIAlteVN0YXRlLT5yZWxh ZGRyID0gaW50b1JlbGF0aW9uQWRkcjsKLQlteVN0YXRlLT5vdXRwdXRfY2lkID0gR2V0Q3VycmVu dENvbW1hbmRJZCh0cnVlKTsKLQlteVN0YXRlLT50aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NL SVBfRlNNOwogCiAJLyoKIAkgKiBJZiBXSVRIIE5PIERBVEEgaXMgc3BlY2lmaWVkLCB0aGVyZSBp cyBubyBuZWVkIHRvIHNldCB1cCB0aGUgc3RhdGUgZm9yCiAJICogYnVsayBpbnNlcnRzIGFzIHRo ZXJlIGFyZSBubyB0dXBsZXMgdG8gaW5zZXJ0LgogCSAqLwogCWlmICghaW50by0+c2tpcERhdGEp Ci0JCW15U3RhdGUtPmJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKwkJbXlTdGF0ZS0+ dGlfc3RhdGUgPSB0YWJsZV9pbnNlcnRfYmVnaW4oaW50b1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJ CQkJICAgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJCQkJCQkJICAgVEFCTEVBTV9N VUxUSV9JTlNFUlRTIHwKKwkJCQkJCQkJCQkJICAgVEFCTEVBTV9CVUxLV1JJVEVfQlVGRkVSX0FD Q0VTU19TVFJBVEVHWSwKKwkJCQkJCQkJCQkJICAgVEFCTEVfSU5TRVJUX1NLSVBfRlNNKTsKIAll bHNlCi0JCW15U3RhdGUtPmJpc3RhdGUgPSBOVUxMOworCQlteVN0YXRlLT50aV9zdGF0ZSA9IE5V TEw7CiAKIAkvKgogCSAqIFZhbGlkIHNtZ3JfdGFyZ2Jsb2NrIGltcGxpZXMgc29tZXRoaW5nIGFs cmVhZHkgd3JvdGUgdG8gdGhlIHJlbGF0aW9uLgpAQCAtNTk1LDExICs1OTUsNyBAQCBpbnRvcmVs X3JlY2VpdmUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNlaXZlciAqc2VsZikKIAkJICog d291bGQgbm90IGJlIGNoZWFwIGVpdGhlci4gVGhpcyBhbHNvIGRvZXNuJ3QgYWxsb3cgYWNjZXNz aW5nIHBlci1BTQogCQkgKiBkYXRhIChzYXkgYSB0dXBsZSdzIHhtaW4pLCBidXQgc2luY2Ugd2Ug ZG9uJ3QgZG8gdGhhdCBoZXJlLi4uCiAJCSAqLwotCQl0YWJsZV90dXBsZV9pbnNlcnQobXlTdGF0 ZS0+cmVsLAotCQkJCQkJICAgc2xvdCwKLQkJCQkJCSAgIG15U3RhdGUtPm91dHB1dF9jaWQsCi0J CQkJCQkgICBteVN0YXRlLT50aV9vcHRpb25zLAotCQkJCQkJICAgbXlTdGF0ZS0+YmlzdGF0ZSk7 CisJCXRhYmxlX211bHRpX2luc2VydF92MihteVN0YXRlLT50aV9zdGF0ZSwgc2xvdCk7CiAJfQog CiAJLyogV2Uga25vdyB0aGlzIGlzIGEgbmV3bHkgY3JlYXRlZCByZWxhdGlvbiwgc28gdGhlcmUg YXJlIG5vIGluZGV4ZXMgKi8KQEAgLTYxNywxMCArNjEzLDcgQEAgaW50b3JlbF9zaHV0ZG93bihE ZXN0UmVjZWl2ZXIgKnNlbGYpCiAJSW50b0NsYXVzZSAqaW50byA9IG15U3RhdGUtPmludG87CiAK IAlpZiAoIWludG8tPnNraXBEYXRhKQotCXsKLQkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShteVN0YXRl LT5iaXN0YXRlKTsKLQkJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG15U3RhdGUtPnJlbCwgbXlT dGF0ZS0+dGlfb3B0aW9ucyk7Ci0JfQorCQl0YWJsZV9pbnNlcnRfZW5kKG15U3RhdGUtPnRpX3N0 YXRlKTsKIAogCS8qIGNsb3NlIHJlbCwgYnV0IGtlZXAgbG9jayB1bnRpbCBjb21taXQgKi8KIAl0 YWJsZV9jbG9zZShteVN0YXRlLT5yZWwsIE5vTG9jayk7Ci0tIAoyLjM0LjEKCg== --000000000000e229ee0612a7a84e Content-Type: application/x-patch; name="v11-0003-Optimize-RMV-with-multi-inserts.patch" Content-Disposition: attachment; filename="v11-0003-Optimize-RMV-with-multi-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt8rb3r92 RnJvbSA2MjNjYmI0OTVmYjU4YTA3ZGU1ZGUyODg0YzVjZDE5MDU5YWJiYjliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMSBNYXIgMjAyNCAxNDoyNzo0MCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjExIDMvNF0gT3B0aW1pemUgUk1WIHdpdGggbXVsdGkgaW5zZXJ0 cwoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgfCAzNCArKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwg MjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmll dy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDU5OTIwY2VkODMuLjZh ODgzNGU4NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTUyLDEwICs1Miw3IEBAIHR5cGVk ZWYgc3RydWN0CiAJRGVzdFJlY2VpdmVyIHB1YjsJCQkvKiBwdWJsaWNseS1rbm93biBmdW5jdGlv biBwb2ludGVycyAqLwogCU9pZAkJCXRyYW5zaWVudG9pZDsJLyogT0lEIG9mIG5ldyBoZWFwIGlu dG8gd2hpY2ggdG8gc3RvcmUgKi8KIAkvKiBUaGVzZSBmaWVsZHMgYXJlIGZpbGxlZCBieSB0cmFu c2llbnRyZWxfc3RhcnR1cDogKi8KLQlSZWxhdGlvbgl0cmFuc2llbnRyZWw7CS8qIHJlbGF0aW9u IHRvIHdyaXRlIHRvICovCi0JQ29tbWFuZElkCW91dHB1dF9jaWQ7CQkvKiBjbWluIHRvIGluc2Vy dCBpbiBvdXRwdXQgdHVwbGVzICovCi0JaW50CQkJdGlfb3B0aW9uczsJCS8qIHRhYmxlX3R1cGxl X2luc2VydCBwZXJmb3JtYW5jZSBvcHRpb25zICovCi0JQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7 CS8qIGJ1bGsgaW5zZXJ0IHN0YXRlICovCisJVGFibGVJbnNlcnRTdGF0ZSAqdGlfc3RhdGU7IC8q IHRhYmxlIGluc2VydCBzdGF0ZSAqLwogfSBEUl90cmFuc2llbnRyZWw7CiAKIHN0YXRpYyBpbnQJ bWF0dmlld19tYWludGVuYW5jZV9kZXB0aCA9IDA7CkBAIC00NTcsMTMgKzQ1NCwxMyBAQCB0cmFu c2llbnRyZWxfc3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxl RGVzYyB0eXBlaW5mbykKIAogCXRyYW5zaWVudHJlbCA9IHRhYmxlX29wZW4obXlTdGF0ZS0+dHJh bnNpZW50b2lkLCBOb0xvY2spOwogCi0JLyoKLQkgKiBGaWxsIHByaXZhdGUgZmllbGRzIG9mIG15 U3RhdGUgZm9yIHVzZSBieSBsYXRlciByb3V0aW5lcwotCSAqLwotCW15U3RhdGUtPnRyYW5zaWVu dHJlbCA9IHRyYW5zaWVudHJlbDsKLQlteVN0YXRlLT5vdXRwdXRfY2lkID0gR2V0Q3VycmVudENv bW1hbmRJZCh0cnVlKTsKLQlteVN0YXRlLT50aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBf RlNNIHwgVEFCTEVfSU5TRVJUX0ZST1pFTjsKLQlteVN0YXRlLT5iaXN0YXRlID0gR2V0QnVsa0lu c2VydFN0YXRlKCk7CisJLyogRmlsbCBwcml2YXRlIGZpZWxkcyBvZiBteVN0YXRlIGZvciB1c2Ug YnkgbGF0ZXIgcm91dGluZXMgKi8KKwlteVN0YXRlLT50aV9zdGF0ZSA9IHRhYmxlX2luc2VydF9i ZWdpbih0cmFuc2llbnRyZWwsCisJCQkJCQkJCQkJICAgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVl KSwKKwkJCQkJCQkJCQkgICBUQUJMRUFNX01VTFRJX0lOU0VSVFMgfAorCQkJCQkJCQkJCSAgIFRB QkxFQU1fQlVMS1dSSVRFX0JVRkZFUl9BQ0NFU1NfU1RSQVRFR1ksCisJCQkJCQkJCQkJICAgVEFC TEVfSU5TRVJUX1NLSVBfRlNNIHwKKwkJCQkJCQkJCQkgICBUQUJMRV9JTlNFUlRfRlJPWkVOKTsK IAogCS8qCiAJICogVmFsaWQgc21ncl90YXJnYmxvY2sgaW1wbGllcyBzb21ldGhpbmcgYWxyZWFk eSB3cm90ZSB0byB0aGUgcmVsYXRpb24uCkBAIC00ODgsMTIgKzQ4NSw3IEBAIHRyYW5zaWVudHJl bF9yZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJICog Y2hlYXAgZWl0aGVyLiBUaGlzIGFsc28gZG9lc24ndCBhbGxvdyBhY2Nlc3NpbmcgcGVyLUFNIGRh dGEgKHNheSBhCiAJICogdHVwbGUncyB4bWluKSwgYnV0IHNpbmNlIHdlIGRvbid0IGRvIHRoYXQg aGVyZS4uLgogCSAqLwotCi0JdGFibGVfdHVwbGVfaW5zZXJ0KG15U3RhdGUtPnRyYW5zaWVudHJl bCwKLQkJCQkJICAgc2xvdCwKLQkJCQkJICAgbXlTdGF0ZS0+b3V0cHV0X2NpZCwKLQkJCQkJICAg bXlTdGF0ZS0+dGlfb3B0aW9ucywKLQkJCQkJICAgbXlTdGF0ZS0+YmlzdGF0ZSk7CisJdGFibGVf bXVsdGlfaW5zZXJ0X3YyKG15U3RhdGUtPnRpX3N0YXRlLCBzbG90KTsKIAogCS8qIFdlIGtub3cg dGhpcyBpcyBhIG5ld2x5IGNyZWF0ZWQgcmVsYXRpb24sIHNvIHRoZXJlIGFyZSBubyBpbmRleGVz ICovCiAKQEAgLTUwNywxNCArNDk5LDEyIEBAIHN0YXRpYyB2b2lkCiB0cmFuc2llbnRyZWxfc2h1 dGRvd24oRGVzdFJlY2VpdmVyICpzZWxmKQogewogCURSX3RyYW5zaWVudHJlbCAqbXlTdGF0ZSA9 IChEUl90cmFuc2llbnRyZWwgKikgc2VsZjsKKwlSZWxhdGlvbgl0cmFuc2llbnRyZWwgPSBteVN0 YXRlLT50aV9zdGF0ZS0+cmVsOwogCi0JRnJlZUJ1bGtJbnNlcnRTdGF0ZShteVN0YXRlLT5iaXN0 YXRlKTsKLQotCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChteVN0YXRlLT50cmFuc2llbnRyZWws IG15U3RhdGUtPnRpX29wdGlvbnMpOworCXRhYmxlX2luc2VydF9lbmQobXlTdGF0ZS0+dGlfc3Rh dGUpOwogCiAJLyogY2xvc2UgdHJhbnNpZW50cmVsLCBidXQga2VlcCBsb2NrIHVudGlsIGNvbW1p dCAqLwotCXRhYmxlX2Nsb3NlKG15U3RhdGUtPnRyYW5zaWVudHJlbCwgTm9Mb2NrKTsKLQlteVN0 YXRlLT50cmFuc2llbnRyZWwgPSBOVUxMOworCXRhYmxlX2Nsb3NlKHRyYW5zaWVudHJlbCwgTm9M b2NrKTsKIH0KIAogLyoKLS0gCjIuMzQuMQoK --000000000000e229ee0612a7a84e Content-Type: application/x-patch; name="v11-0004-Use-new-multi-insert-TAM-for-COPY-FROM.patch" Content-Disposition: attachment; filename="v11-0004-Use-new-multi-insert-TAM-for-COPY-FROM.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt8rb5um3 RnJvbSBhYTA5NjViMjg4N2NkMDdmNWZlMzM3M2RjYzI1MDk2NTlhOWIyZmEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMSBNYXIgMjAyNCAxNDoyODo1OCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjExIDQvNF0gVXNlIG5ldyBtdWx0aSBpbnNlcnQgVEFNIGZvciBD T1BZIEZST00KCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyB8IDkyICsrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlv bnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IGMzYmM4 OTcwMjguLmExOGNmNzE4Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtNzcsMTAgKzc3 LDkgQEAKIC8qIFN0b3JlcyBtdWx0aS1pbnNlcnQgZGF0YSByZWxhdGVkIHRvIGEgc2luZ2xlIHJl bGF0aW9uIGluIENvcHlGcm9tLiAqLwogdHlwZWRlZiBzdHJ1Y3QgQ29weU11bHRpSW5zZXJ0QnVm ZmVyCiB7Ci0JVHVwbGVUYWJsZVNsb3QgKnNsb3RzW01BWF9CVUZGRVJFRF9UVVBMRVNdOyAvKiBB cnJheSB0byBzdG9yZSB0dXBsZXMgKi8KKwlUYWJsZUluc2VydFN0YXRlICp0aV9zdGF0ZTsgLyog VGFibGUgaW5zZXJ0IHN0YXRlOyBOVUxMIGlmIGZvcmVpZ24gdGFibGUgKi8KKwlUdXBsZVRhYmxl U2xvdCAqKnNsb3RzOwkJLyogQXJyYXkgdG8gc3RvcmUgdHVwbGVzICovCiAJUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbzsJLyogUmVzdWx0UmVsSW5mbyBmb3IgJ3JlbGlkJyAqLwotCUJ1bGtJ bnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRoaXMgcmVsIGlmIHBs YWluCi0JCQkJCQkJCSAqIHRhYmxlOyBOVUxMIGlmIGZvcmVpZ24gdGFibGUgKi8KIAlpbnQJCQlu dXNlZDsJCQkvKiBudW1iZXIgb2YgJ3Nsb3RzJyBjb250YWluaW5nIHR1cGxlcyAqLwogCXVpbnQ2 NAkJbGluZW5vc1tNQVhfQlVGRkVSRURfVFVQTEVTXTsJLyogTGluZSAjIG9mIHR1cGxlIGluIGNv cHkKIAkJCQkJCQkJCQkJCSAqIHN0cmVhbSAqLwpAQCAtMjIzLDE0ICsyMjIsMzEgQEAgbGltaXRf cHJpbnRvdXRfbGVuZ3RoKGNvbnN0IGNoYXIgKnN0cikKICAqIFJlc3VsdFJlbEluZm8uCiAgKi8K IHN0YXRpYyBDb3B5TXVsdGlJbnNlcnRCdWZmZXIgKgotQ29weU11bHRpSW5zZXJ0QnVmZmVySW5p dChSZXN1bHRSZWxJbmZvICpycmkpCitDb3B5TXVsdGlJbnNlcnRCdWZmZXJJbml0KENvcHlNdWx0 aUluc2VydEluZm8gKm1paW5mbywgUmVzdWx0UmVsSW5mbyAqcnJpKQogewogCUNvcHlNdWx0aUlu c2VydEJ1ZmZlciAqYnVmZmVyOwogCiAJYnVmZmVyID0gKENvcHlNdWx0aUluc2VydEJ1ZmZlciAq KSBwYWxsb2Moc2l6ZW9mKENvcHlNdWx0aUluc2VydEJ1ZmZlcikpOwotCW1lbXNldChidWZmZXIt PnNsb3RzLCAwLCBzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikgKiBNQVhfQlVGRkVSRURfVFVQTEVT KTsKKworCWlmIChycmktPnJpX0Zkd1JvdXRpbmUgPT0gTlVMTCkKKwl7CisJCWludAkJCW51bV9z bG90czsKKworCQlidWZmZXItPnRpX3N0YXRlID0gdGFibGVfaW5zZXJ0X2JlZ2luKHJyaS0+cmlf UmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCQkgIG1paW5mby0+bXljaWQsCisJCQkJCQkJCQkJCSAg VEFCTEVBTV9NVUxUSV9JTlNFUlRTIHwKKwkJCQkJCQkJCQkJICBUQUJMRUFNX0JVTEtXUklURV9C VUZGRVJfQUNDRVNTX1NUUkFURUdZIHwKKwkJCQkJCQkJCQkJICBUQUJMRUFNX1NLSVBfTVVMVElf SU5TRVJUU19GTFVTSCwKKwkJCQkJCQkJCQkJICBtaWluZm8tPnRpX29wdGlvbnMpOworCQlidWZm ZXItPnNsb3RzID0gdGFibGVfbXVsdGlfaW5zZXJ0X3Nsb3RzKGJ1ZmZlci0+dGlfc3RhdGUsICZu dW1fc2xvdHMpOworCX0KKwllbHNlCisJeworCQlidWZmZXItPnNsb3RzID0gcGFsbG9jMChzaXpl b2YoVHVwbGVUYWJsZVNsb3QgKikgKiBNQVhfQlVGRkVSRURfVFVQTEVTKTsKKwkJYnVmZmVyLT50 aV9zdGF0ZSA9IE5VTEw7CisJfQorCiAJYnVmZmVyLT5yZXN1bHRSZWxJbmZvID0gcnJpOwotCWJ1 ZmZlci0+YmlzdGF0ZSA9IChycmktPnJpX0Zkd1JvdXRpbmUgPT0gTlVMTCkgPyBHZXRCdWxrSW5z ZXJ0U3RhdGUoKSA6IE5VTEw7CiAJYnVmZmVyLT5udXNlZCA9IDA7CiAKIAlyZXR1cm4gYnVmZmVy OwpAQCAtMjQ1LDcgKzI2MSw3IEBAIENvcHlNdWx0aUluc2VydEluZm9TZXR1cEJ1ZmZlcihDb3B5 TXVsdGlJbnNlcnRJbmZvICptaWluZm8sCiB7CiAJQ29weU11bHRpSW5zZXJ0QnVmZmVyICpidWZm ZXI7CiAKLQlidWZmZXIgPSBDb3B5TXVsdGlJbnNlcnRCdWZmZXJJbml0KHJyaSk7CisJYnVmZmVy ID0gQ29weU11bHRpSW5zZXJ0QnVmZmVySW5pdChtaWluZm8sIHJyaSk7CiAKIAkvKiBTZXR1cCBi YWNrLWxpbmsgc28gd2UgY2FuIGVhc2lseSBmaW5kIHRoaXMgYnVmZmVyIGFnYWluICovCiAJcnJp LT5yaV9Db3B5TXVsdGlJbnNlcnRCdWZmZXIgPSBidWZmZXI7CkBAIC0zMjIsOCArMzM4LDYgQEAg Q29weU11bHRpSW5zZXJ0QnVmZmVyRmx1c2goQ29weU11bHRpSW5zZXJ0SW5mbyAqbWlpbmZvLAog CQlpbnQJCQliYXRjaF9zaXplID0gcmVzdWx0UmVsSW5mby0+cmlfQmF0Y2hTaXplOwogCQlpbnQJ CQlzZW50ID0gMDsKIAotCQlBc3NlcnQoYnVmZmVyLT5iaXN0YXRlID09IE5VTEwpOwotCiAJCS8q IEVuc3VyZSB0aGF0IHRoZSBGRFcgc3VwcG9ydHMgYmF0Y2hpbmcgYW5kIGl0J3MgZW5hYmxlZCAq LwogCQlBc3NlcnQocmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZS0+RXhlY0ZvcmVpZ25CYXRj aEluc2VydCk7CiAJCUFzc2VydChiYXRjaF9zaXplID4gMSk7CkBAIC0zOTUsMTMgKzQwOSw4IEBA IENvcHlNdWx0aUluc2VydEJ1ZmZlckZsdXNoKENvcHlNdWx0aUluc2VydEluZm8gKm1paW5mbywK IAl9CiAJZWxzZQogCXsKLQkJQ29tbWFuZElkCW15Y2lkID0gbWlpbmZvLT5teWNpZDsKLQkJaW50 CQkJdGlfb3B0aW9ucyA9IG1paW5mby0+dGlfb3B0aW9uczsKIAkJYm9vbAkJbGluZV9idWZfdmFs aWQgPSBjc3RhdGUtPmxpbmVfYnVmX3ZhbGlkOwogCQl1aW50NjQJCXNhdmVfY3VyX2xpbmVubyA9 IGNzdGF0ZS0+Y3VyX2xpbmVubzsKLQkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwotCi0JCUFz c2VydChidWZmZXItPmJpc3RhdGUgIT0gTlVMTCk7CiAKIAkJLyoKIAkJICogUHJpbnQgZXJyb3Ig Y29udGV4dCBpbmZvcm1hdGlvbiBjb3JyZWN0bHksIGlmIG9uZSBvZiB0aGUgb3BlcmF0aW9ucwpA QCAtNDA5LDE4ICs0MTgsNyBAQCBDb3B5TXVsdGlJbnNlcnRCdWZmZXJGbHVzaChDb3B5TXVsdGlJ bnNlcnRJbmZvICptaWluZm8sCiAJCSAqLwogCQljc3RhdGUtPmxpbmVfYnVmX3ZhbGlkID0gZmFs c2U7CiAKLQkJLyoKLQkJICogdGFibGVfbXVsdGlfaW5zZXJ0IG1heSBsZWFrIG1lbW9yeSwgc28g c3dpdGNoIHRvIHNob3J0LWxpdmVkIG1lbW9yeQotCQkgKiBjb250ZXh0IGJlZm9yZSBjYWxsaW5n IGl0LgotCQkgKi8KLQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJU dXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7Ci0JCXRhYmxlX211bHRpX2luc2VydChyZXN1bHRS ZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsCi0JCQkJCQkgICBzbG90cywKLQkJCQkJCSAgIG51c2Vk LAotCQkJCQkJICAgbXljaWQsCi0JCQkJCQkgICB0aV9vcHRpb25zLAotCQkJCQkJICAgYnVmZmVy LT5iaXN0YXRlKTsKLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQl0YWJs ZV9tdWx0aV9pbnNlcnRfZmx1c2goYnVmZmVyLT50aV9zdGF0ZSk7CiAKIAkJZm9yIChpID0gMDsg aSA8IG51c2VkOyBpKyspCiAJCXsKQEAgLTQzNSw3ICs0MzMsNyBAQCBDb3B5TXVsdGlJbnNlcnRC dWZmZXJGbHVzaChDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sCiAJCQkJY3N0YXRlLT5jdXJf bGluZW5vID0gYnVmZmVyLT5saW5lbm9zW2ldOwogCQkJCXJlY2hlY2tJbmRleGVzID0KIAkJCQkJ RXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkJICBidWZmZXIt PnNsb3RzW2ldLCBlc3RhdGUsIGZhbHNlLAorCQkJCQkJCQkJCSAgc2xvdHNbaV0sIGVzdGF0ZSwg ZmFsc2UsCiAJCQkJCQkJCQkJICBmYWxzZSwgTlVMTCwgTklMLCBmYWxzZSk7CiAJCQkJRXhlY0FS SW5zZXJ0VHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJIHNsb3RzW2ld LCByZWNoZWNrSW5kZXhlcywKQEAgLTQ5MywyMCArNDkxLDE1IEBAIENvcHlNdWx0aUluc2VydEJ1 ZmZlckNsZWFudXAoQ29weU11bHRpSW5zZXJ0SW5mbyAqbWlpbmZvLAogCXJlc3VsdFJlbEluZm8t PnJpX0NvcHlNdWx0aUluc2VydEJ1ZmZlciA9IE5VTEw7CiAKIAlpZiAocmVzdWx0UmVsSW5mby0+ cmlfRmR3Um91dGluZSA9PSBOVUxMKQotCXsKLQkJQXNzZXJ0KGJ1ZmZlci0+YmlzdGF0ZSAhPSBO VUxMKTsKLQkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShidWZmZXItPmJpc3RhdGUpOwotCX0KKwkJdGFi bGVfaW5zZXJ0X2VuZChidWZmZXItPnRpX3N0YXRlKTsKIAllbHNlCi0JCUFzc2VydChidWZmZXIt PmJpc3RhdGUgPT0gTlVMTCk7Ci0KLQkvKiBTaW5jZSB3ZSBvbmx5IGNyZWF0ZSBzbG90cyBvbiBk ZW1hbmQsIGp1c3QgZHJvcCB0aGUgbm9uLW51bGwgb25lcy4gKi8KLQlmb3IgKGkgPSAwOyBpIDwg TUFYX0JVRkZFUkVEX1RVUExFUyAmJiBidWZmZXItPnNsb3RzW2ldICE9IE5VTEw7IGkrKykKLQkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChidWZmZXItPnNsb3RzW2ldKTsKKwl7CisJCS8q IFNpbmNlIHdlIG9ubHkgY3JlYXRlIHNsb3RzIG9uIGRlbWFuZCwganVzdCBkcm9wIHRoZSBub24t bnVsbCBvbmVzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgTUFYX0JVRkZFUkVEX1RVUExFUyAmJiBi dWZmZXItPnNsb3RzW2ldICE9IE5VTEw7IGkrKykKKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJs ZVNsb3QoYnVmZmVyLT5zbG90c1tpXSk7CiAKLQlpZiAocmVzdWx0UmVsSW5mby0+cmlfRmR3Um91 dGluZSA9PSBOVUxMKQotCQl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQocmVzdWx0UmVsSW5mby0+ cmlfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkgbWlpbmZvLT50aV9vcHRpb25zKTsKKwkJcGZyZWUo YnVmZmVyLT5zbG90cyk7CisJfQogCiAJcGZyZWUoYnVmZmVyKTsKIH0KQEAgLTU5MywxMyArNTg2 LDI1IEBAIENvcHlNdWx0aUluc2VydEluZm9OZXh0RnJlZVNsb3QoQ29weU11bHRpSW5zZXJ0SW5m byAqbWlpbmZvLAogewogCUNvcHlNdWx0aUluc2VydEJ1ZmZlciAqYnVmZmVyID0gcnJpLT5yaV9D b3B5TXVsdGlJbnNlcnRCdWZmZXI7CiAJaW50CQkJbnVzZWQgPSBidWZmZXItPm51c2VkOworCVR1 cGxlVGFibGVTbG90ICpzbG90OwogCiAJQXNzZXJ0KGJ1ZmZlciAhPSBOVUxMKTsKIAlBc3NlcnQo bnVzZWQgPCBNQVhfQlVGRkVSRURfVFVQTEVTKTsKIAotCWlmIChidWZmZXItPnNsb3RzW251c2Vk XSA9PSBOVUxMKQotCQlidWZmZXItPnNsb3RzW251c2VkXSA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJy aS0+cmlfUmVsYXRpb25EZXNjLCBOVUxMKTsKLQlyZXR1cm4gYnVmZmVyLT5zbG90c1tudXNlZF07 CisJaWYgKHJyaS0+cmlfRmR3Um91dGluZSA9PSBOVUxMKQorCQlzbG90ID0gdGFibGVfbXVsdGlf aW5zZXJ0X25leHRfZnJlZV9zbG90KGJ1ZmZlci0+dGlfc3RhdGUpOworCWVsc2UKKwl7CisJCWlm IChidWZmZXItPnNsb3RzW251c2VkXSA9PSBOVUxMKQorCQl7CisJCQlzbG90ID0gdGFibGVfc2xv dF9jcmVhdGUocnJpLT5yaV9SZWxhdGlvbkRlc2MsIE5VTEwpOworCQkJYnVmZmVyLT5zbG90c1tu dXNlZF0gPSBzbG90OworCQl9CisJCWVsc2UKKwkJCXNsb3QgPSBidWZmZXItPnNsb3RzW251c2Vk XTsKKwl9CisKKwlyZXR1cm4gc2xvdDsKIH0KIAogLyoKQEAgLTYxNSw2ICs2MjAsOSBAQCBDb3B5 TXVsdGlJbnNlcnRJbmZvU3RvcmUoQ29weU11bHRpSW5zZXJ0SW5mbyAqbWlpbmZvLCBSZXN1bHRS ZWxJbmZvICpycmksCiAJQXNzZXJ0KGJ1ZmZlciAhPSBOVUxMKTsKIAlBc3NlcnQoc2xvdCA9PSBi dWZmZXItPnNsb3RzW2J1ZmZlci0+bnVzZWRdKTsKIAorCWlmIChycmktPnJpX0Zkd1JvdXRpbmUg PT0gTlVMTCkKKwkJdGFibGVfbXVsdGlfaW5zZXJ0X3YyKGJ1ZmZlci0+dGlfc3RhdGUsIHNsb3Qp OworCiAJLyogU3RvcmUgdGhlIGxpbmUgbnVtYmVyIHNvIHdlIGNhbiBwcm9wZXJseSByZXBvcnQg YW55IGVycm9ycyBsYXRlciAqLwogCWJ1ZmZlci0+bGluZW5vc1tidWZmZXItPm51c2VkXSA9IGxp bmVubzsKIAotLSAKMi4zNC4xCgo= --000000000000e229ee0612a7a84e--