Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pg9Bd-0001iB-Sr for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Mar 2023 19:04:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pg9Bb-0003eS-6u for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Mar 2023 19:04:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pg9Ba-0003eJ-6u for pgsql-hackers@lists.postgresql.org; Sat, 25 Mar 2023 19:04:18 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pg9BR-0002Mp-NX for pgsql-hackers@postgresql.org; Sat, 25 Mar 2023 19:04:17 +0000 Received: by mail-pl1-x62f.google.com with SMTP id o2so4786520plg.4 for ; Sat, 25 Mar 2023 12:04:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679771048; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hOBvhwKKHyjW6cRqBMz+4kKMZAFLLNz4rrK/1c4xVl8=; b=DfeAgffyMgVfHikG27dMMa7qWvTtwp1S/lL6EubxS3Dkm7j+YDtkMykn2C6Dp+8RZ+ k30Pth/RyYkghC5CAjXw7x1mWtTPHl9nwwJRBZBFbAg3iLhPEuKm5LENbSfsTaXtTCev Io8/QNp7u9tiRKyCY7y9+LkyPawyxRhVTkO08eX9nvi8CBtHaoCOlzcAPpsrd4CwYnld 7+t9mInt2ns5FjjEI9JuSbiUTgFpJcUmajqI6Z9oHcyu/Rdf4FQmLJcdth9AIBMuTEVr pf/uhLtQ2eIPENFU9ZgpuW7BoGy3yaHxLvXEv0c0d1234mIpXiUdD+efrGOo9safdLK0 g5qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679771048; 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=hOBvhwKKHyjW6cRqBMz+4kKMZAFLLNz4rrK/1c4xVl8=; b=f9LaWyaSd5DeG6Tt7DCEhMVGxM5yW4tFqw7fcIkCVTwN2XcqwQ2+X+ynE83C3fRXvQ VUvHbRXBd+8hcp5HBtMvvMuq+IHWNB73oH6/Eiwjdcwp22t6IxdpeVaca314t7B1lVIe 94hkKfMpUk0L6WZFPXbSPsK9C+yZGCMVfQi2InA6xlXceRcExf21C8ej+6X2PQ6uhbfY StpxJzqu4QmcUYhsmaZ7uXUsY8FvorpQpx3pOBsswclwpfsq7qanUrY7dk54zDR2TYYe vxP+yyLAm5L1WfXhFlXgxq37ulltD/8IDbEKyKj1wqBfdxMlSff8/W8ZqFLG48+6eJsR Mw8g== X-Gm-Message-State: AAQBX9e4W2jcqG9Ufk7wmSP19FdHVCMX8qzx1LLjYoGNXZqeLx754yKf 3IrLV3j51HPSi8IKNfUB1FG8t5JN1su/KkkPM5w= X-Google-Smtp-Source: AKy350bopeNK0ICj8CdJAJvVrGuBcMYPo5LeGOiSwBRuE10iAQT1hIZ+m3ydoolFm6DY6WyExhqoUPRvWx5FH8947E4= X-Received: by 2002:a17:902:9041:b0:1a1:bbc5:be8e with SMTP id w1-20020a170902904100b001a1bbc5be8emr2401400plz.11.1679771048316; Sat, 25 Mar 2023 12:04:08 -0700 (PDT) MIME-Version: 1.0 References: <28639967-F021-4772-A40C-0E6D348CF941@yesql.se> In-Reply-To: From: Melanie Plageman Date: Sat, 25 Mar 2023 15:03:56 -0400 Message-ID: Subject: Re: Should vacuum process config file reload more often To: Masahiko Sawada Cc: Daniel Gustafsson , PostgreSQL Hackers , Andres Freund , Amit Kapila Content-Type: multipart/mixed; boundary="000000000000a4336005f7be2c99" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a4336005f7be2c99 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Mar 23, 2023 at 8:27=E2=80=AFPM Melanie Plageman wrote: > On Thu, Mar 23, 2023 at 2:09=E2=80=AFAM Masahiko Sawada wrote: > > > And, I was wondering if it was worth trying to split up the part that > > > reloads the config file and all of the autovacuum stuff. The reloadin= g > > > of the config file by itself won't actually result in autovacuum work= ers > > > having updated cost delays because of them overwriting it with > > > wi_cost_delay, but it will allow VACUUM to have those updated values. > > > > It makes sense to me to have changes for overhauling the rebalance > > mechanism in a separate patch. > > > > Looking back at the original concern you mentioned[1]: > > > > speed up long-running vacuum of a large table by > > decreasing autovacuum_vacuum_cost_delay/vacuum_cost_delay, however the > > config file is only reloaded between tables (for autovacuum) or after > > the statement (for explicit vacuum). > > > > does it make sense to have autovac_balance_cost() update workers' > > wi_cost_delay too? Autovacuum launcher already reloads the config file > > and does the rebalance. So I thought autovac_balance_cost() can update > > the cost_delay as well, and this might be a minimal change to deal > > with your concern. This doesn't have the effect for manual VACUUM but > > since vacuum delay is disabled by default it won't be a big problem. > > As for manual VACUUMs, we would need to reload the config file in > > vacuum_delay_point() as the part of your patch does. Overhauling the > > rebalance mechanism would be another patch to improve it further. > > So, we can't do this without acquiring an access shared lock on every > call to vacuum_delay_point() because cost delay is a double. > > I will work on a patchset with separate commits for reloading the config > file, though (with autovac not benefitting in the first commit). So, I realized we could actually do as you say and have autovac workers update their wi_cost_delay and keep the balance changes in a separate commit. I've done this in attached v8. Workers take the exclusive lock to update their wi_cost_delay and wi_cost_limit only when there is a config reload. So, there is one commit that implements this behavior and a separate commit to revise the worker rebalancing. Note that we must have the workers also update wi_cost_limit_base and then call autovac_balance_cost() when they reload the config file (instead of waiting for launcher to call autovac_balance_cost()) to avoid potentially calculating the sleep with a new value of cost delay and an old value of cost limit. In the commit which revises the worker rebalancing, I'm still wondering if wi_dobalance should be an atomic flag -- probably not worth it, right? On Fri, Mar 24, 2023 at 1:27=E2=80=AFPM Melanie Plageman wrote: > I realized nworkers_for_balance should be initialized to 0 and not 1 -- > 1 is misleading since there are often 0 autovac workers. We just never > want to use nworkers_for_balance when it is 0. But, workers put a floor > of 1 on the number when they divide limit/nworkers_for_balance (since > they know there must be at least one worker right now since they are a > worker). I thought about whether or not they should call > autovac_balance_cost() if they find that nworkers_for_balance is 0 when > updating their own limit, but I'm not sure. I've gone ahead and updated this. I haven't made the workers call autovac_balance_cost() if they find that nworkers_for_balance is 0 when they try and use it when updating their limit because I'm not sure if this can happen. I would be interested in input here. I'm also still interested in feedback on the variable name av_nworkers_for_balance. > On Fri, Mar 24, 2023 at 1:21=E2=80=AFAM Masahiko Sawada wrote: > > > > I need another few readthroughs to figure out of VacuumFailsafeActi= ve does what > > > > I think it does, and should be doing, but in general I think this i= s a good > > > > idea and a patch in good condition close to being committable. > > > > Another approach would be to make VacuumCostActive a ternary value: > > on, off, and never. When we trigger the failsafe mode we switch it to > > never, meaning that it never becomes active even after reloading the > > config file. A good point is that we don't need to add a new global > > variable, but I'm not sure it's better than the current approach. > > Hmm, this is interesting. I don't love the word "never" since it kind of > implies a duration longer than the current table being vacuumed. But we > could find a different word or just document it well. For clarity, we > might want to call it failsafe_mode or something. > > I wonder if the primary drawback to converting > LVRelState->failsafe_active to a global VacuumFailsafeActive is just the > general rule of limiting scope to the minimum needed. Okay, so I've changed my mind about this. I like having a ternary for VacuumCostActive and keeping failsafe_active in LVRelState. What I didn't like was having non-vacuum code have to care about the distinction between failsafe + inactive and just inactive. To handle this, I converted VacuumCostActive to VacuumCostInactive since there are two inactive cases (inactive and failsafe and plain inactive) and only one active case. Then, I defined VacuumCostInactive as an int but use enum values for it in vacuum code to distinguish between failsafe + inactive and just inactive (I call it VACUUM_COST_INACTIVE_AND_LOCKED and VACUUM_COST_INACTIVE_AND_UNLOCKED). Non-vacuum code only needs to check if VacuumCostInactive is 0 like if (!VacuumCostInactive). I'm happy with the result, and I think it employs only well-defined C behavior. - Melanie --000000000000a4336005f7be2c99 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0003-auto-vacuum-reloads-config-file-more-often.patch" Content-Disposition: attachment; filename="v8-0003-auto-vacuum-reloads-config-file-more-often.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfoc9d772 RnJvbSA4YjlmY2Y3YzEwMzUzZGNhY2I0YWMxNjUxNWFhZDBjZTM0NTY1NTY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDI0IE1hciAyMDIzIDEzOjM4OjIwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OCAzLzRdIFthdXRvXXZhY3V1bSByZWxvYWRzIGNvbmZpZyBmaWxlIG1vcmUgb2Z0ZW4K ClByZXZpb3VzbHksIFZBQ1VVTSBhbmQgYXV0b3ZhY3V1bSB3b3JrZXJzIHdvdWxkIHJlbG9hZCB0 aGUgY29uZmlndXJhdGlvbgpmaWxlIG9ubHkgYmV0d2VlbiB2YWN1dW1pbmcgdGFibGVzLiBUaGlz IHByZWNsdWRlZCB1c2VyIHVwZGF0ZXMgdG8KY29zdC1iYXNlZCBkZWxheSBwYXJhbWV0ZXJzIGZy b20gdGFraW5nIGVmZmVjdCB3aGlsZSB2YWN1dW1pbmcgYSB0YWJsZS4KCkNoZWNrIGlmIGEgcmVs b2FkIGlzIHBlbmRpbmcgcm91Z2hseSBvbmNlIHBlciBibG9jayBub3csIHdoZW4gY2hlY2tpbmcK aWYgd2UgbmVlZCB0byBkZWxheS4KClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2Fk YS5tc2hrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxkYW5pZWxA eWVzcWwuc2U+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvZmxhdC9DQUFLUnVfYnVQNXd6c2hvM3FOdzVvOV9SMHBGNjlGUk01aGdDbXItbXZYbUdYd2RB N0ElNDBtYWlsLmdtYWlsLmNvbSM1ZTY3NzFkNGNkY2E0ZGI2ZWZjMmFjZWMyZGNlMGJjNwotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgIHwgNzIgKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIHwgMzAg KysrKysrKysrKystCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCB8ICAzICst CiAzIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtLmMKaW5kZXggZWIxMjZmMjI0Ny4uY2IzMjA3OGMxOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2Vy X2ludGVybmFscy5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Btc2lnbmFsLmgiCkBAIC03Niw2ICs3Nyw3IEBAIGludAkJCXZhY3V1bV9tdWx0 aXhhY3RfZmFpbHNhZmVfYWdlOwogLyogQSBmZXcgdmFyaWFibGVzIHRoYXQgZG9uJ3Qgc2VlbSB3 b3J0aCBwYXNzaW5nIGFyb3VuZCBhcyBwYXJhbWV0ZXJzICovCiBzdGF0aWMgTWVtb3J5Q29udGV4 dCB2YWNfY29udGV4dCA9IE5VTEw7CiBzdGF0aWMgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgdmFjX3N0 cmF0ZWd5Oworc3RhdGljIGJvb2wgYW5hbHl6ZV9pbl9vdXRlcl94YWN0ID0gZmFsc2U7CiAKIAog LyoKQEAgLTMxNCw4ICszMTYsNyBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJh bXMgKnBhcmFtcywKIAlzdGF0aWMgYm9vbCBpbl92YWN1dW0gPSBmYWxzZTsKIAogCWNvbnN0IGNo YXIgKnN0bXR0eXBlOwotCXZvbGF0aWxlIGJvb2wgaW5fb3V0ZXJfeGFjdCwKLQkJCQl1c2Vfb3du X3hhY3RzOworCXZvbGF0aWxlIGJvb2wgdXNlX293bl94YWN0czsKIAogCUFzc2VydChwYXJhbXMg IT0gTlVMTCk7CiAKQEAgLTMzMiwxMCArMzMzLDEwIEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMs IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCWlmIChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkFD VVVNKQogCXsKIAkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhpc1RvcExldmVsLCBzdG10dHlw ZSk7Ci0JCWluX291dGVyX3hhY3QgPSBmYWxzZTsKKwkJYW5hbHl6ZV9pbl9vdXRlcl94YWN0ID0g ZmFsc2U7CiAJfQogCWVsc2UKLQkJaW5fb3V0ZXJfeGFjdCA9IElzSW5UcmFuc2FjdGlvbkJsb2Nr KGlzVG9wTGV2ZWwpOworCQlhbmFseXplX2luX291dGVyX3hhY3QgPSBJc0luVHJhbnNhY3Rpb25C bG9jayhpc1RvcExldmVsKTsKIAogCS8qCiAJICogRHVlIHRvIHN0YXRpYyB2YXJpYWJsZXMgdmFj X2NvbnRleHQsIGFubF9jb250ZXh0IGFuZCB2YWNfc3RyYXRlZ3ksCkBAIC00NTcsNyArNDU4LDcg QEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCUFzc2Vy dChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfQU5BTFlaRSk7CiAJCWlmIChJc0F1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkpCiAJCQl1c2Vfb3duX3hhY3RzID0gdHJ1ZTsKLQkJZWxzZSBpZiAoaW5f b3V0ZXJfeGFjdCkKKwkJZWxzZSBpZiAoYW5hbHl6ZV9pbl9vdXRlcl94YWN0KQogCQkJdXNlX293 bl94YWN0cyA9IGZhbHNlOwogCQllbHNlIGlmIChsaXN0X2xlbmd0aChyZWxhdGlvbnMpID4gMSkK IAkJCXVzZV9vd25feGFjdHMgPSB0cnVlOwpAQCAtNDc1LDcgKzQ3Niw3IEBAIHZhY3V1bShMaXN0 ICpyZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCSAqLwogCWlmICh1c2Vfb3duX3hh Y3RzKQogCXsKLQkJQXNzZXJ0KCFpbl9vdXRlcl94YWN0KTsKKwkJQXNzZXJ0KCFhbmFseXplX2lu X291dGVyX3hhY3QpOwogCiAJCS8qIEFjdGl2ZVNuYXBzaG90IGlzIG5vdCBzZXQgYnkgYXV0b3Zh Y3V1bSAqLwogCQlpZiAoQWN0aXZlU25hcHNob3RTZXQoKSkKQEAgLTU0NCw3ICs1NDUsNyBAQCB2 YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCQl9CiAKIAkJ CQlhbmFseXplX3JlbCh2cmVsLT5vaWQsIHZyZWwtPnJlbGF0aW9uLCBwYXJhbXMsCi0JCQkJCQkJ dnJlbC0+dmFfY29scywgaW5fb3V0ZXJfeGFjdCwgdmFjX3N0cmF0ZWd5KTsKKwkJCQkJCQl2cmVs LT52YV9jb2xzLCBhbmFseXplX2luX291dGVyX3hhY3QsIHZhY19zdHJhdGVneSk7CiAKIAkJCQlp ZiAodXNlX293bl94YWN0cykKIAkJCQl7CkBAIC01NjgsNiArNTY5LDcgQEAgdmFjdXVtKExpc3Qg KnJlbGF0aW9ucywgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCWluX3ZhY3V1bSA9IGZhbHNlOwog CQlWYWN1dW1Db3N0SW5hY3RpdmUgPSBWQUNVVU1fQ09TVF9JTkFDVElWRV9BTkRfVU5MT0NLRUQ7 CiAJCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKKwkJYW5hbHl6ZV9pbl9vdXRlcl94YWN0ID0gZmFs c2U7CiAJfQogCVBHX0VORF9UUlkoKTsKIApAQCAtMjIzMyw3ICsyMjM1LDUyIEBAIHZhY3V1bV9k ZWxheV9wb2ludCh2b2lkKQogCS8qIEFsd2F5cyBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwogCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQlpZiAoVmFjdXVtQ29zdEluYWN0aXZlIHx8IEludGVy cnVwdFBlbmRpbmcpCisJaWYgKEludGVycnVwdFBlbmRpbmcgfHwKKwkJKFZhY3V1bUNvc3RJbmFj dGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykpCisJCXJldHVybjsKKworCS8qCisJICogUmVs b2FkIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaWYgcmVxdWVzdGVkLiBUaGlzIGFsbG93cyBjaGFu Z2VzIHRvCisJICogW2F1dG92YWN1dW1fXXZhY3V1bV9jb3N0X2xpbWl0IGFuZCBbYXV0b3ZhY3V1 bV9ddmFjdXVtX2Nvc3RfZGVsYXkgdG8KKwkgKiB0YWtlIGVmZmVjdCB3aGlsZSBhIHRhYmxlIGlz IGJlaW5nIHZhY3V1bWVkIG9yIGFuYWx5emVkLiBBbmFseXplIHNob3VsZAorCSAqIG5vdCByZWxv YWQgY29uZmlndXJhdGlvbiBmaWxlIGlmIGl0IGlzIGluIGFuIG91dGVyIHRyYW5zYWN0aW9uLCBh cyBHVUMKKwkgKiB2YWx1ZXMgc2hvdWxkbid0IGJlIGFsbG93ZWQgdG8gcmVmZXIgdG8gc29tZSB1 bmNvbW1pdHRlZCBzdGF0ZSAoZS5nLgorCSAqIGRhdGFiYXNlIG9iamVjdHMgY3JlYXRlZCBpbiB0 aGlzIHRyYW5zYWN0aW9uKS4KKwkgKi8KKwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZyAmJiAhYW5h bHl6ZV9pbl9vdXRlcl94YWN0KQorCXsKKwkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwor CQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKworCQkvKgorCQkgKiBBdXRvdmFjdXVt IHdvcmtlcnMgbXVzdCByZXN0b3JlIHRoZSBjb3JyZWN0IHZhbHVlcyBvZgorCQkgKiBWYWN1dW1D b3N0TGltaXQgYW5kIFZhY3V1bUNvc3REZWxheSBpbiBjYXNlIHRoZXkgd2VyZSBvdmVyd3JpdHRl bgorCQkgKiBieSByZWxvYWQuCisJCSAqLworCQlBdXRvVmFjdXVtVXBkYXRlQ29zdHMoKTsKKwkJ QXV0b1ZhY3V1bU92ZXJyaWRlQ29zdHMoKTsKKworCQkvKgorCQkgKiBJZiBjb25maWd1cmF0aW9u IGNoYW5nZXMgYXJlIGFsbG93ZWQgdG8gaW1wYWN0IFZhY3V1bUNvc3RJbmFjdGl2ZSwKKwkJICog bWFrZSBzdXJlIGl0IGlzIHVwZGF0ZWQuCisJCSAqLworCQlpZiAoVmFjdXVtQ29zdEluYWN0aXZl ID09IFZBQ1VVTV9DT1NUX0lOQUNUSVZFX0FORF9MT0NLRUQpCisJCQlyZXR1cm47CisKKwkJaWYg KFZhY3V1bUNvc3REZWxheSA+IDApCisJCQlWYWN1dW1Db3N0SW5hY3RpdmUgPSBWQUNVVU1fQ09T VF9BQ1RJVkU7CisJCWVsc2UKKwkJeworCQkJVmFjdXVtQ29zdEluYWN0aXZlID0gVkFDVVVNX0NP U1RfSU5BQ1RJVkVfQU5EX1VOTE9DS0VEOworCQkJVmFjdXVtQ29zdEJhbGFuY2UgPSAwOworCQl9 CisJfQorCisJLyoKKwkgKiBJZiB3ZSBkaXNhYmxlZCBjb3N0LWJhc2VkIGRlbGF5cyBhZnRlciBy ZWxvYWRpbmcgdGhlIGNvbmZpZyBmaWxlLAorCSAqIHJldHVybi4KKwkgKi8KKwlpZiAoVmFjdXVt Q29zdEluYWN0aXZlKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMjI2Niw4ICsyMzEzLDEzIEBAIHZh Y3V1bV9kZWxheV9wb2ludCh2b2lkKQogCiAJCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKIAotCQkv KiB1cGRhdGUgYmFsYW5jZSB2YWx1ZXMgZm9yIHdvcmtlcnMgKi8KLQkJQXV0b1ZhY3V1bVVwZGF0 ZURlbGF5KCk7CisJCS8qCisJCSAqIEZvciBhdXRvdmFjdXVtIHdvcmtlcnMsIHNvbWVvbmUgbWF5 IGhhdmUgY2FsbGVkCisJCSAqIGF1dG92YWNfYmFsYW5jZV9jb3N0KCkgc2luY2UgdGhleSBsYXN0 IHVwZGF0ZWQgdGhlaXIKKwkJICogVmFjdXVtQ29zdExpbWl0IGFib3ZlLiBEbyBzbyBhZ2FpbiBu b3cgdG8gZW5zdXJlIHRoZXkgaGF2ZSBhCisJCSAqIGN1cnJlbnQgdmFsdWUuCisJCSAqLworCQlB dXRvVmFjdXVtT3ZlcnJpZGVDb3N0cygpOwogCiAJCS8qIE1pZ2h0IGhhdmUgZ290dGVuIGFuIGlu dGVycnVwdCB3aGlsZSBzbGVlcGluZyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBjMGUyZTAwYTdlLi44YWMxNGE0NGM4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMTc3OCw3ICsxNzc4LDcgQEAgRnJl ZVdvcmtlckluZm8oaW50IGNvZGUsIERhdHVtIGFyZykKICAqIGVhY2ggYSBmcmFjdGlvbiBvZiB0 aGUgdG90YWwgYXZhaWxhYmxlIEkvTy4KICAqLwogdm9pZAotQXV0b1ZhY3V1bVVwZGF0ZURlbGF5 KHZvaWQpCitBdXRvVmFjdXVtT3ZlcnJpZGVDb3N0cyh2b2lkKQogewogCWlmIChNeVdvcmtlcklu Zm8pCiAJewpAQCAtMTc4Nyw2ICsxNzg3LDI5IEBAIEF1dG9WYWN1dW1VcGRhdGVEZWxheSh2b2lk KQogCX0KIH0KIAorLyoKKyAqIENhbGxlciBtdXN0IG5vdCBhbHJlYWR5IGhvbGQgdGhlIEF1dG92 YWN1dW1Mb2NrCisgKi8KK3ZvaWQKK0F1dG9WYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQoreworCS8q CisJICogRXZlbiB0aG91Z2ggdGhpcyBhdXRvdmFjdXVtIHdvcmtlciBtYXkgYmUgdmFjdXVtaW5n IGEgdGFibGUgd2l0aCBhIGNvc3QKKwkgKiBsaW1pdCB0YWJsZSBvcHRpb24gYW5kIG5vdCBhIGNv c3QgZGVsYXkgdGFibGUgb3B0aW9uLCB3ZSBzdGlsbCBkb24ndAorCSAqIHJlZnJlc2ggdGhlIGNv c3QgZGVsYXkgdmFsdWUuCisJICovCisJaWYgKCFNeVdvcmtlckluZm8gfHwgIU15V29ya2VySW5m by0+d2lfZG9iYWxhbmNlKQorCQlyZXR1cm47CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1M b2NrLCBMV19FWENMVVNJVkUpOworCU15V29ya2VySW5mby0+d2lfY29zdF9kZWxheSA9IGF1dG92 YWN1dW1fdmFjX2Nvc3RfZGVsYXkgPj0gMCA/CisJCWF1dG92YWN1dW1fdmFjX2Nvc3RfZGVsYXkg OiBWYWN1dW1Db3N0RGVsYXk7CisJTXlXb3JrZXJJbmZvLT53aV9jb3N0X2xpbWl0X2Jhc2UgPSBh dXRvdmFjdXVtX3ZhY19jb3N0X2xpbWl0ID4gMCA/CisJCWF1dG92YWN1dW1fdmFjX2Nvc3RfbGlt aXQgOiBWYWN1dW1Db3N0TGltaXQ7CisJYXV0b3ZhY19iYWxhbmNlX2Nvc3QoKTsKKwlMV0xvY2tS ZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKK30KKwogLyoKICAqIGF1dG92YWNfYmFsYW5jZV9jb3N0 CiAgKgkJUmVjYWxjdWxhdGUgdGhlIGNvc3QgbGltaXQgc2V0dGluZyBmb3IgZWFjaCBhY3RpdmUg d29ya2VyLgpAQCAtMjMyMCw2ICsyMzQzLDkgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCiAJCS8q CiAJCSAqIENoZWNrIGZvciBjb25maWcgY2hhbmdlcyBiZWZvcmUgcHJvY2Vzc2luZyBlYWNoIGNv bGxlY3RlZCB0YWJsZS4KKwkJICogQXV0b3ZhY3V1bSB3b3JrZXJzIG11c3QgdXBkYXRlIFZhY3V1 bUNvc3REZWxheSBhbmQgVmFjdXVtQ29zdExpbWl0CisJCSAqIGluIGNhc2UgdGhleSB3ZXJlIG92 ZXJyaWRkZW4gYnkgdGhlIHJlbG9hZC4gSG93ZXZlciwgd2Ugd2lsbCBkbworCQkgKiB0aGlzIGFz IHNvb24gYXMgd2UgY2hlY2sgdGFibGUgb3B0aW9ucyBhIGJpdCBsYXRlci4KIAkJICovCiAJCWlm IChDb25maWdSZWxvYWRQZW5kaW5nKQogCQl7CkBAIC0yNDM3LDcgKzI0NjMsNyBAQCBkb19hdXRv dmFjdXVtKHZvaWQpCiAJCWF1dG92YWNfYmFsYW5jZV9jb3N0KCk7CiAKIAkJLyogc2V0IHRoZSBh Y3RpdmUgY29zdCBwYXJhbWV0ZXJzIGZyb20gdGhlIHJlc3VsdCBvZiB0aGF0ICovCi0JCUF1dG9W YWN1dW1VcGRhdGVEZWxheSgpOworCQlBdXRvVmFjdXVtT3ZlcnJpZGVDb3N0cygpOwogCiAJCS8q IGRvbmUgKi8KIAkJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oCmluZGV4IGMxNDAzNzFiNTEuLmVlNDhlNzEyM2QgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCkBAIC02NCw3ICs2NCw4IEBAIGV4dGVybiBpbnQJU3RhcnRB dXRvVmFjV29ya2VyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXV0b1ZhY1dvcmtlckZhaWxlZCh2b2lk KTsKIAogLyogYXV0b3ZhY3V1bSBjb3N0LWRlbGF5IGJhbGFuY2VyICovCi1leHRlcm4gdm9pZCBB dXRvVmFjdXVtVXBkYXRlRGVsYXkodm9pZCk7CitleHRlcm4gdm9pZCBBdXRvVmFjdXVtT3ZlcnJp ZGVDb3N0cyh2b2lkKTsKK2V4dGVybiB2b2lkIEF1dG9WYWN1dW1VcGRhdGVDb3N0cyh2b2lkKTsK IAogI2lmZGVmIEVYRUNfQkFDS0VORAogZXh0ZXJuIHZvaWQgQXV0b1ZhY0xhdW5jaGVyTWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKLS0gCjIuMzcu MgoK --000000000000a4336005f7be2c99 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0001-Zero-out-VacuumCostBalance.patch" Content-Disposition: attachment; filename="v8-0001-Zero-out-VacuumCostBalance.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfoc9d710 RnJvbSA5YWRlMTA4ODJjNmIyZGFhZmI4NDZiZTY2N2RlMDQyMjUwNDZlMTU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI1IE1hciAyMDIzIDExOjU5OjMzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OCAxLzRdIFplcm8gb3V0IFZhY3V1bUNvc3RCYWxhbmNlCgpUaG91Z2ggaXQgaXMgdW5s aWtlbHkgdG8gbWF0dGVyLCB3ZSBzaG91bGQgemVybyBvdXQgVmFjdXVtQ29zdEJhbGFuY2UKd2hl bmV2ZXIgd2UgbWF5IGJlIHRyYW5zaXRpb25pbmcgdGhlIHN0YXRlIG9mIFZhY3V1bUNvc3RBY3Rp dmUgdG8gZmFsc2UuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgfCAxICsKIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggYzU0 MzYwYTZhMC4uN2QwMWRmN2U0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKQEAgLTU1MCw2ICs1NTAs NyBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl7CiAJ CWluX3ZhY3V1bSA9IGZhbHNlOwogCQlWYWN1dW1Db3N0QWN0aXZlID0gZmFsc2U7CisJCVZhY3V1 bUNvc3RCYWxhbmNlID0gMDsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCi0tIAoyLjM3LjIKCg== --000000000000a4336005f7be2c99 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0004-Improve-autovacuum-worker-cost-balancing.patch" Content-Disposition: attachment; filename="v8-0004-Improve-autovacuum-worker-cost-balancing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfoc9d783 RnJvbSAwYTU0NmE1MzhiNzVlZTFhNzM2ZmY5YTA5YTMxNDEyYzBiMzIzMDgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI1IE1hciAyMDIzIDE0OjE0OjU1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OCA0LzRdIEltcHJvdmUgYXV0b3ZhY3V1bSB3b3JrZXIgY29zdCBiYWxhbmNpbmcKCkJl Zm9yZSB0aGUgcHJpb3IgY29tbWl0LCBhbiBhdXRvdmFjdXVtIHdvcmtlcidzIHdpX2Nvc3RfbGlt aXQgd2FzIHNldApvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nIGEgdGFibGUsIGFm dGVyIHJlbG9hZGluZyB0aGUgY29uZmlnCmZpbGUuIFRoZXJlZm9yZSwgYXQgdGhlIHRpbWUgdGhh dCBhdXRvdmFjX2JhbGFuY2VfY29zdCgpIGlzIGNhbGxlZCwKd29ya2VycyB2YWN1dW1pbmcgdGFi bGVzIHdpdGggbm8gdGFibGUgb3B0aW9ucyBjb3VsZCBzdGlsbCBoYXZlCmRpZmZlcmVudCB2YWx1 ZXMgZm9yIHRoZWlyIHdpX2Nvc3RfbGltaXRfYmFzZSBhbmQgd2lfY29zdF9kZWxheS4KCk5vdyB0 aGF0IHRoZSBjb3N0IHBhcmFtZXRlcnMgY2FuIGJlIHVwZGF0ZWQgd2hpbGUgdmFjdXVtaW5nIGEg dGFibGUsCndvcmtlcnMgd2lsbCAod2l0aGluIHNvbWUgbWFyZ2luIG9mIGVycm9yKSBoYXZlIG5v IHJlYXNvbiB0byBoYXZlCmRpZmZlcmVudCB2YWx1ZXMgZm9yIGNvc3QgbGltaXQgYW5kIGNvc3Qg ZGVsYXkgKGluIHRoZSBhYnNlbmNlIG9mIHRhYmxlCm9wdGlvbnMpLiBUaGlzIHJlbW92ZXMgdGhl IHJhdGlvbmFsZSBmb3Iga2VlcGluZyBjb3N0IGxpbWl0IGFuZCBjb3N0CmRlbGF5IGluIHNoYXJl ZCBtZW1vcnkuIEJhbGFuY2luZyB0aGUgY29zdCBsaW1pdCByZXF1aXJlcyBvbmx5IHRoZQpudW1i ZXIgb2YgYWN0aXZlIGF1dG92YWN1dW0gd29ya2VycyB2YWN1dW1pbmcgYSB0YWJsZSB3aXRoIG5v IGNvc3QtYmFzZWQKdGFibGUgb3B0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW0uYyAgICAgICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j IHwgMjM3ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oIHwgICA0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25z KCspLCAxNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCBjYjMyMDc4YzE5 Li41NGFkNzZhNzI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMjI1NywxMiArMjI1NywxMyBA QCB2YWN1dW1fZGVsYXlfcG9pbnQodm9pZCkKIAkJICogVmFjdXVtQ29zdExpbWl0IGFuZCBWYWN1 dW1Db3N0RGVsYXkgaW4gY2FzZSB0aGV5IHdlcmUgb3ZlcndyaXR0ZW4KIAkJICogYnkgcmVsb2Fk LgogCQkgKi8KLQkJQXV0b1ZhY3V1bVVwZGF0ZUNvc3RzKCk7Ci0JCUF1dG9WYWN1dW1PdmVycmlk ZUNvc3RzKCk7CisJCUF1dG9WYWN1dW1VcGRhdGVEZWxheSgpOworCQlBdXRvVmFjdXVtVXBkYXRl TGltaXQoKTsKIAogCQkvKgogCQkgKiBJZiBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIGFsbG93 ZWQgdG8gaW1wYWN0IFZhY3V1bUNvc3RJbmFjdGl2ZSwKLQkJICogbWFrZSBzdXJlIGl0IGlzIHVw ZGF0ZWQuCisJCSAqIG1ha2Ugc3VyZSBpdCBpcyB1cGRhdGVkLiBBdXRvdmFjdXVtIHdvcmtlcnMg d2lsbCBoYXZlIGFscmVhZHkgZG9uZQorCQkgKiB0aGlzIGluIEF1dG9WYWN1dW1VcGRhdGVEZWxh eSgpCiAJCSAqLwogCQlpZiAoVmFjdXVtQ29zdEluYWN0aXZlID09IFZBQ1VVTV9DT1NUX0lOQUNU SVZFX0FORF9MT0NLRUQpCiAJCQlyZXR1cm47CkBAIC0yMzE0LDEyICsyMzE1LDEzIEBAIHZhY3V1 bV9kZWxheV9wb2ludCh2b2lkKQogCQlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CiAKIAkJLyoKLQkJ ICogRm9yIGF1dG92YWN1dW0gd29ya2Vycywgc29tZW9uZSBtYXkgaGF2ZSBjYWxsZWQKLQkJICog YXV0b3ZhY19iYWxhbmNlX2Nvc3QoKSBzaW5jZSB0aGV5IGxhc3QgdXBkYXRlZCB0aGVpcgotCQkg KiBWYWN1dW1Db3N0TGltaXQgYWJvdmUuIERvIHNvIGFnYWluIG5vdyB0byBlbnN1cmUgdGhleSBo YXZlIGEKLQkJICogY3VycmVudCB2YWx1ZS4KKwkJICogVXBkYXRlIGxpbWl0IHZhbHVlcyBmb3Ig YXV0b3ZhY3V1bSB3b3JrZXJzLiBXZSBtdXN0IGFsd2F5cyBkbyB0aGlzCisJCSAqIGluIGNhc2Ug dGhlIGF1dG92YWN1dW0gbGF1bmNoZXIgb3IgYW5vdGhlciBhdXRvdmFjdXVtIHdvcmtlciBoYXMK KwkJICogcmVjYWxjdWxhdGVkIHRoZSBudW1iZXIgb2Ygd29ya2VycyBhY3Jvc3Mgd2hpY2ggd2Ug bXVzdCBiYWxhbmNlIHRoZQorCQkgKiBsaW1pdC4gVGhpcyBpcyBkb25lIGJ5IHRoZSBsYXVuY2hl ciB3aGVuIGxhdW5jaGluZyBhIG5ldyB3b3JrZXIgYW5kCisJCSAqIGJ5IHdvcmtlcnMgYmVmb3Jl IHZhY3V1bWluZyBlYWNoIHRhYmxlLgogCQkgKi8KLQkJQXV0b1ZhY3V1bU92ZXJyaWRlQ29zdHMo KTsKKwkJQXV0b1ZhY3V1bVVwZGF0ZUxpbWl0KCk7CiAKIAkJLyogTWlnaHQgaGF2ZSBnb3R0ZW4g YW4gaW50ZXJydXB0IHdoaWxlIHNsZWVwaW5nICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDhhYzE0YTQ0YzguLjBjMjA0NDJm YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0xMzksNiArMTM5LDkgQEAg aW50CQkJTG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gNjAwMDAwOwogc3RhdGljIGJvb2wg YW1fYXV0b3ZhY3V1bV9sYXVuY2hlciA9IGZhbHNlOwogc3RhdGljIGJvb2wgYW1fYXV0b3ZhY3V1 bV93b3JrZXIgPSBmYWxzZTsKIAorc3RhdGljIGRvdWJsZSBhdl90YWJsZV9vcHRpb25fY29zdF9k ZWxheSA9IC0xOworc3RhdGljIGludAlhdl90YWJsZV9vcHRpb25fY29zdF9saW1pdCA9IDA7CisK IC8qIEZsYWdzIHNldCBieSBzaWduYWwgaGFuZGxlcnMgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdf YXRvbWljX3QgZ290X1NJR1VTUjIgPSBmYWxzZTsKIApAQCAtMTg5LDggKzE5Miw4IEBAIHR5cGVk ZWYgc3RydWN0IGF1dG92YWNfdGFibGUKIHsKIAlPaWQJCQlhdF9yZWxpZDsKIAlWYWN1dW1QYXJh bXMgYXRfcGFyYW1zOwotCWRvdWJsZQkJYXRfdmFjdXVtX2Nvc3RfZGVsYXk7Ci0JaW50CQkJYXRf dmFjdXVtX2Nvc3RfbGltaXQ7CisJZG91YmxlCQlhdF90YWJsZV9vcHRpb25fdmFjX2Nvc3RfZGVs YXk7CisJaW50CQkJYXRfdGFibGVfb3B0aW9uX3ZhY19jb3N0X2xpbWl0OwogCWJvb2wJCWF0X2Rv YmFsYW5jZTsKIAlib29sCQlhdF9zaGFyZWRyZWw7CiAJY2hhcgkgICAqYXRfcmVsbmFtZTsKQEAg LTIwOSw3ICsyMTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBhdXRvdmFjX3RhYmxlCiAgKiB3aV9zaGFy ZWRyZWwgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGFibGUgaXMgbWFya2VkIHJlbGlzc2hhcmVk CiAgKiB3aV9wcm9jCQlwb2ludGVyIHRvIFBHUFJPQyBvZiB0aGUgcnVubmluZyB3b3JrZXIsIE5V TEwgaWYgbm90IHN0YXJ0ZWQKICAqIHdpX2xhdW5jaHRpbWUgVGltZSBhdCB3aGljaCB0aGlzIHdv cmtlciB3YXMgbGF1bmNoZWQKLSAqIHdpX2Nvc3RfKglWYWN1dW0gY29zdC1iYXNlZCBkZWxheSBw YXJhbWV0ZXJzIGN1cnJlbnQgaW4gdGhpcyB3b3JrZXIKKyAqIHdpX2RvYmFsYW5jZSBXaGV0aGVy IHRoaXMgd29ya2VyIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBiYWxhbmNlIGNhbGN1bGF0aW9ucwog ICoKICAqIEFsbCBmaWVsZHMgYXJlIHByb3RlY3RlZCBieSBBdXRvdmFjdXVtTG9jaywgZXhjZXB0 IGZvciB3aV90YWJsZW9pZCBhbmQKICAqIHdpX3NoYXJlZHJlbCB3aGljaCBhcmUgcHJvdGVjdGVk IGJ5IEF1dG92YWN1dW1TY2hlZHVsZUxvY2sgKG5vdGUgdGhlc2UKQEAgLTIyNSw5ICsyMjgsNiBA QCB0eXBlZGVmIHN0cnVjdCBXb3JrZXJJbmZvRGF0YQogCVRpbWVzdGFtcFR6IHdpX2xhdW5jaHRp bWU7CiAJYm9vbAkJd2lfZG9iYWxhbmNlOwogCWJvb2wJCXdpX3NoYXJlZHJlbDsKLQlkb3VibGUJ CXdpX2Nvc3RfZGVsYXk7Ci0JaW50CQkJd2lfY29zdF9saW1pdDsKLQlpbnQJCQl3aV9jb3N0X2xp bWl0X2Jhc2U7CiB9IFdvcmtlckluZm9EYXRhOwogCiB0eXBlZGVmIHN0cnVjdCBXb3JrZXJJbmZv RGF0YSAqV29ya2VySW5mbzsKQEAgLTI3Myw2ICsyNzMsOCBAQCB0eXBlZGVmIHN0cnVjdCBBdXRv VmFjdXVtV29ya0l0ZW0KICAqIGF2X3N0YXJ0aW5nV29ya2VyIHBvaW50ZXIgdG8gV29ya2VySW5m byBjdXJyZW50bHkgYmVpbmcgc3RhcnRlZCAoY2xlYXJlZCBieQogICoJCQkJCXRoZSB3b3JrZXIg aXRzZWxmIGFzIHNvb24gYXMgaXQncyB1cCBhbmQgcnVubmluZykKICAqIGF2X3dvcmtJdGVtcwkJ d29yayBpdGVtIGFycmF5CisgKiBhdl9ud29ya2Vyc19mb3JfYmFsYW5jZSB0aGUgbnVtYmVyIG9m IGF1dG92YWN1dW0gd29ya2VycyB0byB1c2Ugd2hlbgorICogCQkJCQljYWxjdWxhdGluZyB0aGUg cGVyIHdvcmtlciBjb3N0IGxpbWl0CiAgKgogICogVGhpcyBzdHJ1Y3QgaXMgcHJvdGVjdGVkIGJ5 IEF1dG92YWN1dW1Mb2NrLCBleGNlcHQgZm9yIGF2X3NpZ25hbCBhbmQgcGFydHMKICAqIG9mIHRo ZSB3b3JrZXIgbGlzdCAoc2VlIGFib3ZlKS4KQEAgLTI4Niw2ICsyODgsNyBAQCB0eXBlZGVmIHN0 cnVjdAogCWRsaXN0X2hlYWQJYXZfcnVubmluZ1dvcmtlcnM7CiAJV29ya2VySW5mbwlhdl9zdGFy dGluZ1dvcmtlcjsKIAlBdXRvVmFjdXVtV29ya0l0ZW0gYXZfd29ya0l0ZW1zW05VTV9XT1JLSVRF TVNdOworCXBnX2F0b21pY191aW50MzIgYXZfbndvcmtlcnNfZm9yX2JhbGFuY2U7CiB9IEF1dG9W YWN1dW1TaG1lbVN0cnVjdDsKIAogc3RhdGljIEF1dG9WYWN1dW1TaG1lbVN0cnVjdCAqQXV0b1Zh Y3V1bVNobWVtOwpAQCAtODIwLDcgKzgyMyw3IEBAIEhhbmRsZUF1dG9WYWNMYXVuY2hlckludGVy cnVwdHModm9pZCkKIAkJCUF1dG9WYWNMYXVuY2hlclNodXRkb3duKCk7CiAKIAkJLyogcmViYWxh bmNlIGluIGNhc2UgdGhlIGRlZmF1bHQgY29zdCBwYXJhbWV0ZXJzIGNoYW5nZWQgKi8KLQkJTFdM b2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJTFdMb2NrQWNxdWly ZShBdXRvdmFjdXVtTG9jaywgTFdfU0hBUkVEKTsKIAkJYXV0b3ZhY19iYWxhbmNlX2Nvc3QoKTsK IAkJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CiAKQEAgLTE3NTYsOSArMTc1OSw2IEBA IEZyZWVXb3JrZXJJbmZvKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJCU15V29ya2VySW5mby0+d2lf cHJvYyA9IE5VTEw7CiAJCU15V29ya2VySW5mby0+d2lfbGF1bmNodGltZSA9IDA7CiAJCU15V29y a2VySW5mby0+d2lfZG9iYWxhbmNlID0gZmFsc2U7Ci0JCU15V29ya2VySW5mby0+d2lfY29zdF9k ZWxheSA9IDA7Ci0JCU15V29ya2VySW5mby0+d2lfY29zdF9saW1pdCA9IDA7Ci0JCU15V29ya2Vy SW5mby0+d2lfY29zdF9saW1pdF9iYXNlID0gMDsKIAkJZGxpc3RfcHVzaF9oZWFkKCZBdXRvVmFj dXVtU2htZW0tPmF2X2ZyZWVXb3JrZXJzLAogCQkJCQkJJk15V29ya2VySW5mby0+d2lfbGlua3Mp OwogCQkvKiBub3QgbWluZSBhbnltb3JlICovCkBAIC0xNzczLDEyMyArMTc3MywxMTQgQEAgRnJl ZVdvcmtlckluZm8oaW50IGNvZGUsIERhdHVtIGFyZykKIAl9CiB9CiAKKwogLyoKLSAqIFVwZGF0 ZSB0aGUgY29zdC1iYXNlZCBkZWxheSBwYXJhbWV0ZXJzLCBzbyB0aGF0IG11bHRpcGxlIHdvcmtl cnMgY29uc3VtZQotICogZWFjaCBhIGZyYWN0aW9uIG9mIHRoZSB0b3RhbCBhdmFpbGFibGUgSS9P LgorICogVXBkYXRlIFZhY3V1bUNvc3REZWxheSB3aXRoIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBh biBhdXRvdmFjdXVtIHdvcmtlciwKKyAqIGdpdmVuIHRoZSB2YWx1ZSBvZiBvdGhlciByZWxldmFu dCBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMuIEF1dG92YWN1dW0KKyAqIHdvcmtlcnMgc2hv dWxkIGNhbGwgdGhpcyBhZnRlciBldmVyeSBjb25maWcgcmVsb2FkLCBpbiBjYXNlIFZhY3V1bUNv c3REZWxheQorICogd2FzIG92ZXJ3cml0dGVuLgogICovCiB2b2lkCi1BdXRvVmFjdXVtT3ZlcnJp ZGVDb3N0cyh2b2lkKQorQXV0b1ZhY3V1bVVwZGF0ZURlbGF5KHZvaWQpCiB7Ci0JaWYgKE15V29y a2VySW5mbykKKwlpZiAoIWFtX2F1dG92YWN1dW1fd29ya2VyKQorCQlyZXR1cm47CisKKwlpZiAo YXZfdGFibGVfb3B0aW9uX2Nvc3RfZGVsYXkgPj0gMCkKKwkJVmFjdXVtQ29zdERlbGF5ID0gYXZf dGFibGVfb3B0aW9uX2Nvc3RfZGVsYXk7CisJZWxzZSBpZiAoYXV0b3ZhY3V1bV92YWNfY29zdF9k ZWxheSA+PSAwKQorCQlWYWN1dW1Db3N0RGVsYXkgPSBhdXRvdmFjdXVtX3ZhY19jb3N0X2RlbGF5 OworCisJLyoKKwkgKiBJZiBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIGFsbG93ZWQgdG8gaW1w YWN0IFZhY3V1bUNvc3RJbmFjdGl2ZSwgbWFrZQorCSAqIHN1cmUgaXQgaXMgdXBkYXRlZC4KKwkg Ki8KKwlpZiAoVmFjdXVtQ29zdEluYWN0aXZlID09IFZBQ1VVTV9DT1NUX0lOQUNUSVZFX0FORF9M T0NLRUQpCisJCXJldHVybjsKKworCWlmIChWYWN1dW1Db3N0RGVsYXkgPiAwKQorCQlWYWN1dW1D b3N0SW5hY3RpdmUgPSBWQUNVVU1fQ09TVF9BQ1RJVkU7CisJZWxzZQogCXsKLQkJVmFjdXVtQ29z dERlbGF5ID0gTXlXb3JrZXJJbmZvLT53aV9jb3N0X2RlbGF5OwotCQlWYWN1dW1Db3N0TGltaXQg PSBNeVdvcmtlckluZm8tPndpX2Nvc3RfbGltaXQ7CisJCVZhY3V1bUNvc3RJbmFjdGl2ZSA9IFZB Q1VVTV9DT1NUX0lOQUNUSVZFX0FORF9VTkxPQ0tFRDsKKwkJVmFjdXVtQ29zdEJhbGFuY2UgPSAw OwogCX0KIH0KIAorCiAvKgotICogQ2FsbGVyIG11c3Qgbm90IGFscmVhZHkgaG9sZCB0aGUgQXV0 b3ZhY3V1bUxvY2sKKyAqIFVwZGF0ZSBWYWN1dW1Db3N0TGltaXQgd2l0aCB0aGUgY29ycmVjdCB2 YWx1ZSBmb3IgYW4gYXV0b3ZhY3V1bSB3b3JrZXIsCisgKiBnaXZlbiB0aGUgdmFsdWUgb2Ygb3Ro ZXIgcmVsZXZhbnQgY29zdCBsaW1pdCBwYXJhbWV0ZXJzIGFuZCB0aGUgbnVtYmVyIG9mCisgKiB3 b3JrZXJzIGFjcm9zcyB3aGljaCB0aGUgbGltaXQgbXVzdCBiZSBiYWxhbmNlZC4gQXV0b3ZhY3V1 bSB3b3JrZXJzIG11c3QKKyAqIGNhbGwgdGhpcyByZWd1bGFybHkgaW4gY2FzZSBhdl9ud29ya2Vy c19mb3JfYmFsYW5jZSBoYXMgYmVlbiB1cGRhdGVkIGJ5CisgKiBhbm90aGVyIHdvcmtlciBvciBi eSB0aGUgYXV0b3ZhY3V1bSBsYXVuY2hlci4gVGhleSBhbHNvIG11c3QgY2FsbCB0aGlzIGFmdGVy CisgKiBldmVyeSBjb25maWcgcmVsb2FkLCBpbiBjYXNlIFZhY3V1bUNvc3RMaW1pdCB3YXMgb3Zl cndyaXR0ZW4uCiAgKi8KIHZvaWQKLUF1dG9WYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQorQXV0b1Zh Y3V1bVVwZGF0ZUxpbWl0KHZvaWQpCiB7CisJaWYgKCFhbV9hdXRvdmFjdXVtX3dvcmtlcikKKwkJ cmV0dXJuOworCiAJLyoKLQkgKiBFdmVuIHRob3VnaCB0aGlzIGF1dG92YWN1dW0gd29ya2VyIG1h eSBiZSB2YWN1dW1pbmcgYSB0YWJsZSB3aXRoIGEgY29zdAotCSAqIGxpbWl0IHRhYmxlIG9wdGlv biBhbmQgbm90IGEgY29zdCBkZWxheSB0YWJsZSBvcHRpb24sIHdlIHN0aWxsIGRvbid0Ci0JICog cmVmcmVzaCB0aGUgY29zdCBkZWxheSB2YWx1ZS4KKwkgKiBub3RlOiBpbiBjb3N0X2xpbWl0LCB6 ZXJvIGFsc28gbWVhbnMgdXNlIHZhbHVlIGZyb20gZWxzZXdoZXJlLCBiZWNhdXNlCisJICogemVy byBpcyBub3QgYSB2YWxpZCB2YWx1ZS4KIAkgKi8KLQlpZiAoIU15V29ya2VySW5mbyB8fCAhTXlX b3JrZXJJbmZvLT53aV9kb2JhbGFuY2UpCi0JCXJldHVybjsKKwlpZiAoYXZfdGFibGVfb3B0aW9u X2Nvc3RfbGltaXQgPiAwKQorCQlWYWN1dW1Db3N0TGltaXQgPSBhdl90YWJsZV9vcHRpb25fY29z dF9saW1pdDsKKwllbHNlCisJeworCQkvKiBUaGVyZSBpcyBhdCBsZWFzdCAxIGF1dG92YWMgd29y a2VyICh0aGlzIHdvcmtlcikuICovCisJCWludAkJCW53b3JrZXJzX2Zvcl9iYWxhbmNlID0gTWF4 KHBnX2F0b21pY19yZWFkX3UzMigKKwkJCQkJJkF1dG9WYWN1dW1TaG1lbS0+YXZfbndvcmtlcnNf Zm9yX2JhbGFuY2UpLCAxKTsKIAotCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VY Q0xVU0lWRSk7Ci0JTXlXb3JrZXJJbmZvLT53aV9jb3N0X2RlbGF5ID0gYXV0b3ZhY3V1bV92YWNf Y29zdF9kZWxheSA+PSAwID8KLQkJYXV0b3ZhY3V1bV92YWNfY29zdF9kZWxheSA6IFZhY3V1bUNv c3REZWxheTsKLQlNeVdvcmtlckluZm8tPndpX2Nvc3RfbGltaXRfYmFzZSA9IGF1dG92YWN1dW1f dmFjX2Nvc3RfbGltaXQgPiAwID8KKwkJaW50CQkJdmFjX2Nvc3RfbGltaXQgPSBhdXRvdmFjdXVt X3ZhY19jb3N0X2xpbWl0ID4gMCA/CiAJCWF1dG92YWN1dW1fdmFjX2Nvc3RfbGltaXQgOiBWYWN1 dW1Db3N0TGltaXQ7Ci0JYXV0b3ZhY19iYWxhbmNlX2Nvc3QoKTsKLQlMV0xvY2tSZWxlYXNlKEF1 dG92YWN1dW1Mb2NrKTsKKworCQlpbnQJCQliYWxhbmNlZF9jb3N0X2xpbWl0ID0gdmFjX2Nvc3Rf bGltaXQgLyBud29ya2Vyc19mb3JfYmFsYW5jZTsKKworCQlWYWN1dW1Db3N0TGltaXQgPSBNYXgo TWluKGJhbGFuY2VkX2Nvc3RfbGltaXQsIHZhY19jb3N0X2xpbWl0KSwgMSk7CisJfQogfQogCisK IC8qCiAgKiBhdXRvdmFjX2JhbGFuY2VfY29zdAotICoJCVJlY2FsY3VsYXRlIHRoZSBjb3N0IGxp bWl0IHNldHRpbmcgZm9yIGVhY2ggYWN0aXZlIHdvcmtlci4KKyAqCQlSZWNhbGN1bGF0ZSB0aGUg bnVtYmVyIG9mIHdvcmtlcnMgdG8gY29uc2lkZXIsIGdpdmVuIHRhYmxlIG9wdGlvbnMgYW5kCisg KgkJdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGFjdGl2ZSB3b3JrZXJzLgogICoKLSAqIENhbGxlciBt dXN0IGhvbGQgdGhlIEF1dG92YWN1dW1Mb2NrIGluIGV4Y2x1c2l2ZSBtb2RlLgorICogQ2FsbGVy IG11c3QgaG9sZCB0aGUgQXV0b3ZhY3V1bUxvY2sgaW4gYXQgbGVhc3Qgc2hhcmVkIG1vZGUuCiAg Ki8KIHN0YXRpYyB2b2lkCiBhdXRvdmFjX2JhbGFuY2VfY29zdCh2b2lkKQogewotCS8qCi0JICog VGhlIGlkZWEgaGVyZSBpcyB0aGF0IHdlIHJhdGlvbiBvdXQgSS9PIGVxdWFsbHkuICBUaGUgYW1v dW50IG9mIEkvTwotCSAqIHRoYXQgYSB3b3JrZXIgY2FuIGNvbnN1bWUgaXMgZGV0ZXJtaW5lZCBi eSBjb3N0X2xpbWl0L2Nvc3RfZGVsYXksIHNvIHdlCi0JICogdHJ5IHRvIGVxdWFsaXplIHRob3Nl IHJhdGlvcyByYXRoZXIgdGhhbiB0aGUgcmF3IGxpbWl0IHNldHRpbmdzLgotCSAqCi0JICogbm90 ZTogaW4gY29zdF9saW1pdCwgemVybyBhbHNvIG1lYW5zIHVzZSB2YWx1ZSBmcm9tIGVsc2V3aGVy ZSwgYmVjYXVzZQotCSAqIHplcm8gaXMgbm90IGEgdmFsaWQgdmFsdWUuCi0JICovCi0JaW50CQkJ dmFjX2Nvc3RfbGltaXQgPSAoYXV0b3ZhY3V1bV92YWNfY29zdF9saW1pdCA+IDAgPwotCQkJCQkJ CQkgIGF1dG92YWN1dW1fdmFjX2Nvc3RfbGltaXQgOiBWYWN1dW1Db3N0TGltaXQpOwotCWRvdWJs ZQkJdmFjX2Nvc3RfZGVsYXkgPSAoYXV0b3ZhY3V1bV92YWNfY29zdF9kZWxheSA+PSAwID8KLQkJ CQkJCQkJICBhdXRvdmFjdXVtX3ZhY19jb3N0X2RlbGF5IDogVmFjdXVtQ29zdERlbGF5KTsKLQlk b3VibGUJCWNvc3RfdG90YWw7Ci0JZG91YmxlCQljb3N0X2F2YWlsOwogCWRsaXN0X2l0ZXIJaXRl cjsKKwlpbnQJCQlvcmlnX253b3JrZXJzX2Zvcl9iYWxhbmNlOworCWludAkJCW53b3JrZXJzX2Zv cl9iYWxhbmNlID0gMDsKIAotCS8qIG5vdCBzZXQ/IG5vdGhpbmcgdG8gZG8gKi8KLQlpZiAodmFj X2Nvc3RfbGltaXQgPD0gMCB8fCB2YWNfY29zdF9kZWxheSA8PSAwKQorCWlmIChhdXRvdmFjdXVt X3ZhY19jb3N0X2RlbGF5ID09IDAgfHwKKwkJKGF1dG92YWN1dW1fdmFjX2Nvc3RfZGVsYXkgPT0g LTEgJiYgVmFjdXVtQ29zdERlbGF5ID09IDApKQogCQlyZXR1cm47CiAKLQkvKiBjYWxjdWxhdGUg dGhlIHRvdGFsIGJhc2UgY29zdCBsaW1pdCBvZiBwYXJ0aWNpcGF0aW5nIGFjdGl2ZSB3b3JrZXJz ICovCi0JY29zdF90b3RhbCA9IDAuMDsKLQlkbGlzdF9mb3JlYWNoKGl0ZXIsICZBdXRvVmFjdXVt U2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKQotCXsKLQkJV29ya2VySW5mbwl3b3JrZXIgPSBkbGlz dF9jb250YWluZXIoV29ya2VySW5mb0RhdGEsIHdpX2xpbmtzLCBpdGVyLmN1cik7Ci0KLQkJaWYg KHdvcmtlci0+d2lfcHJvYyAhPSBOVUxMICYmCi0JCQl3b3JrZXItPndpX2RvYmFsYW5jZSAmJgot CQkJd29ya2VyLT53aV9jb3N0X2xpbWl0X2Jhc2UgPiAwICYmIHdvcmtlci0+d2lfY29zdF9kZWxh eSA+IDApCi0JCQljb3N0X3RvdGFsICs9Ci0JCQkJKGRvdWJsZSkgd29ya2VyLT53aV9jb3N0X2xp bWl0X2Jhc2UgLyB3b3JrZXItPndpX2Nvc3RfZGVsYXk7Ci0JfQotCi0JLyogdGhlcmUgYXJlIG5v IGNvc3QgbGltaXRzIC0tIG5vdGhpbmcgdG8gZG8gKi8KLQlpZiAoY29zdF90b3RhbCA8PSAwKQor CWlmIChhdXRvdmFjdXVtX3ZhY19jb3N0X2xpbWl0IDw9IDAgJiYgVmFjdXVtQ29zdExpbWl0IDw9 IDApCiAJCXJldHVybjsKIAotCS8qCi0JICogQWRqdXN0IGNvc3QgbGltaXQgb2YgZWFjaCBhY3Rp dmUgd29ya2VyIHRvIGJhbGFuY2UgdGhlIHRvdGFsIG9mIGNvc3QKLQkgKiBsaW1pdCB0byBhdXRv dmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LgotCSAqLwotCWNvc3RfYXZhaWwgPSAoZG91YmxlKSB2 YWNfY29zdF9saW1pdCAvIHZhY19jb3N0X2RlbGF5OworCW9yaWdfbndvcmtlcnNfZm9yX2JhbGFu Y2UgPQorCQlwZ19hdG9taWNfcmVhZF91MzIoJkF1dG9WYWN1dW1TaG1lbS0+YXZfbndvcmtlcnNf Zm9yX2JhbGFuY2UpOworCiAJZGxpc3RfZm9yZWFjaChpdGVyLCAmQXV0b1ZhY3V1bVNobWVtLT5h dl9ydW5uaW5nV29ya2VycykKIAl7CiAJCVdvcmtlckluZm8Jd29ya2VyID0gZGxpc3RfY29udGFp bmVyKFdvcmtlckluZm9EYXRhLCB3aV9saW5rcywgaXRlci5jdXIpOwogCi0JCWlmICh3b3JrZXIt PndpX3Byb2MgIT0gTlVMTCAmJgotCQkJd29ya2VyLT53aV9kb2JhbGFuY2UgJiYKLQkJCXdvcmtl ci0+d2lfY29zdF9saW1pdF9iYXNlID4gMCAmJiB3b3JrZXItPndpX2Nvc3RfZGVsYXkgPiAwKQot CQl7Ci0JCQlpbnQJCQlsaW1pdCA9IChpbnQpCi0JCQkoY29zdF9hdmFpbCAqIHdvcmtlci0+d2lf Y29zdF9saW1pdF9iYXNlIC8gY29zdF90b3RhbCk7Ci0KLQkJCS8qCi0JCQkgKiBXZSBwdXQgYSBs b3dlciBib3VuZCBvZiAxIG9uIHRoZSBjb3N0X2xpbWl0LCB0byBhdm9pZCBkaXZpc2lvbi0KLQkJ CSAqIGJ5LXplcm8gaW4gdGhlIHZhY3V1bSBjb2RlLiAgQWxzbywgaW4gY2FzZSBvZiByb3VuZG9m ZiB0cm91YmxlCi0JCQkgKiBpbiB0aGVzZSBjYWxjdWxhdGlvbnMsIGxldCdzIGJlIHN1cmUgd2Ug ZG9uJ3QgZXZlciBzZXQKLQkJCSAqIGNvc3RfbGltaXQgdG8gbW9yZSB0aGFuIHRoZSBiYXNlIHZh bHVlLgotCQkJICovCi0JCQl3b3JrZXItPndpX2Nvc3RfbGltaXQgPSBNYXgoTWluKGxpbWl0LAot CQkJCQkJCQkJCQl3b3JrZXItPndpX2Nvc3RfbGltaXRfYmFzZSksCi0JCQkJCQkJCQkJMSk7Ci0J CX0KKwkJaWYgKHdvcmtlci0+d2lfcHJvYyA9PSBOVUxMIHx8ICF3b3JrZXItPndpX2RvYmFsYW5j ZSkKKwkJCWNvbnRpbnVlOwogCi0JCWlmICh3b3JrZXItPndpX3Byb2MgIT0gTlVMTCkKLQkJCWVs b2coREVCVUcyLCAiYXV0b3ZhY19iYWxhbmNlX2Nvc3QocGlkPSVkIGRiPSV1LCByZWw9JXUsIGRv YmFsYW5jZT0lcyBjb3N0X2xpbWl0PSVkLCBjb3N0X2xpbWl0X2Jhc2U9JWQsIGNvc3RfZGVsYXk9 JWcpIiwKLQkJCQkgd29ya2VyLT53aV9wcm9jLT5waWQsIHdvcmtlci0+d2lfZGJvaWQsIHdvcmtl ci0+d2lfdGFibGVvaWQsCi0JCQkJIHdvcmtlci0+d2lfZG9iYWxhbmNlID8gInllcyIgOiAibm8i LAotCQkJCSB3b3JrZXItPndpX2Nvc3RfbGltaXQsIHdvcmtlci0+d2lfY29zdF9saW1pdF9iYXNl LAotCQkJCSB3b3JrZXItPndpX2Nvc3RfZGVsYXkpOworCQlud29ya2Vyc19mb3JfYmFsYW5jZSsr OwogCX0KKworCWlmIChud29ya2Vyc19mb3JfYmFsYW5jZSAhPSBvcmlnX253b3JrZXJzX2Zvcl9i YWxhbmNlKQorCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZBdXRvVmFjdXVtU2htZW0tPmF2X253b3Jr ZXJzX2Zvcl9iYWxhbmNlLAorCQkJCQkJCW53b3JrZXJzX2Zvcl9iYWxhbmNlKTsKIH0KIAogLyoK QEAgLTIzMzUsOCArMjMyNiw2IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJYXV0b3ZhY190YWJs ZSAqdGFiOwogCQlib29sCQlpc3NoYXJlZDsKIAkJYm9vbAkJc2tpcGl0OwotCQlkb3VibGUJCXN0 ZFZhY3V1bUNvc3REZWxheTsKLQkJaW50CQkJc3RkVmFjdXVtQ29zdExpbWl0OwogCQlkbGlzdF9p dGVyCWl0ZXI7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKQEAgLTI0NDIsMzIgKzI0MzEs MTggQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCQkJY29udGludWU7CiAJCX0KIAotCQkvKgotCQkg KiBSZW1lbWJlciB0aGUgcHJldmFpbGluZyB2YWx1ZXMgb2YgdGhlIHZhY3V1bSBjb3N0IEdVQ3Mu ICBXZSBoYXZlIHRvCi0JCSAqIHJlc3RvcmUgdGhlc2UgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbG9v cCwgZWxzZSB3ZSdsbCBjb21wdXRlIHdyb25nCi0JCSAqIHZhbHVlcyBpbiB0aGUgbmV4dCBpdGVy YXRpb24gb2YgYXV0b3ZhY19iYWxhbmNlX2Nvc3QoKS4KLQkJICovCi0JCXN0ZFZhY3V1bUNvc3RE ZWxheSA9IFZhY3V1bUNvc3REZWxheTsKLQkJc3RkVmFjdXVtQ29zdExpbWl0ID0gVmFjdXVtQ29z dExpbWl0OworCQlhdl90YWJsZV9vcHRpb25fY29zdF9saW1pdCA9IHRhYi0+YXRfdGFibGVfb3B0 aW9uX3ZhY19jb3N0X2xpbWl0OworCQlhdl90YWJsZV9vcHRpb25fY29zdF9kZWxheSA9IHRhYi0+ YXRfdGFibGVfb3B0aW9uX3ZhY19jb3N0X2RlbGF5OwogCiAJCS8qIE11c3QgaG9sZCBBdXRvdmFj dXVtTG9jayB3aGlsZSBtdWNraW5nIHdpdGggY29zdCBiYWxhbmNlIGluZm8gKi8KIAkJTFdMb2Nr QWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhDTFVTSVZFKTsKLQotCQkvKiBhZHZlcnRpc2Ug bXkgY29zdCBkZWxheSBwYXJhbWV0ZXJzIGZvciB0aGUgYmFsYW5jaW5nIGFsZ29yaXRobSAqLwog CQlNeVdvcmtlckluZm8tPndpX2RvYmFsYW5jZSA9IHRhYi0+YXRfZG9iYWxhbmNlOwotCQlNeVdv cmtlckluZm8tPndpX2Nvc3RfZGVsYXkgPSB0YWItPmF0X3ZhY3V1bV9jb3N0X2RlbGF5OwotCQlN eVdvcmtlckluZm8tPndpX2Nvc3RfbGltaXQgPSB0YWItPmF0X3ZhY3V1bV9jb3N0X2xpbWl0Owot CQlNeVdvcmtlckluZm8tPndpX2Nvc3RfbGltaXRfYmFzZSA9IHRhYi0+YXRfdmFjdXVtX2Nvc3Rf bGltaXQ7Ci0KLQkJLyogZG8gYSBiYWxhbmNlICovCiAJCWF1dG92YWNfYmFsYW5jZV9jb3N0KCk7 Ci0KLQkJLyogc2V0IHRoZSBhY3RpdmUgY29zdCBwYXJhbWV0ZXJzIGZyb20gdGhlIHJlc3VsdCBv ZiB0aGF0ICovCi0JCUF1dG9WYWN1dW1PdmVycmlkZUNvc3RzKCk7Ci0KLQkJLyogZG9uZSAqLwog CQlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKIAorCQlBdXRvVmFjdXVtVXBkYXRlRGVs YXkoKTsKKwkJQXV0b1ZhY3V1bVVwZGF0ZUxpbWl0KCk7CisKIAkJLyogY2xlYW4gdXAgbWVtb3J5 IGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiAqLwogCQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVD aGlsZHJlbihQb3J0YWxDb250ZXh0KTsKIApAQCAtMjU1MSwxOSArMjUyNiwxNSBAQCBkZWxldGVk OgogCiAJCS8qCiAJCSAqIFJlbW92ZSBteSBpbmZvIGZyb20gc2hhcmVkIG1lbW9yeS4gIFdlIGNv dWxkLCBidXQgaW50ZW50aW9uYWxseQotCQkgKiBkb24ndCwgY2xlYXIgd2lfY29zdF9saW1pdCBh bmQgZnJpZW5kcyAtLS0gdGhpcyBpcyBvbiB0aGUKLQkJICogYXNzdW1wdGlvbiB0aGF0IHdlIHBy b2JhYmx5IGhhdmUgbW9yZSB0byBkbyB3aXRoIHNpbWlsYXIgY29zdAotCQkgKiBzZXR0aW5ncywg c28gd2UgZG9uJ3Qgd2FudCB0byBnaXZlIHVwIG91ciBzaGFyZSBvZiBJL08gZm9yIGEgdmVyeQot CQkgKiBzaG9ydCBpbnRlcnZhbCBhbmQgdGhlcmVieSB0aHJhc2ggdGhlIGdsb2JhbCBiYWxhbmNl LgorCQkgKiBkb24ndCwgc2V0IHdpX2RvYmFsYW5jZSB0byBmYWxzZSBvbiB0aGUgYXNzdW1wdGlv biB0aGF0IHdlIGFyZSBtb3JlCisJCSAqIGxpa2VseSB0aGFuIG5vdCB0byB2YWN1dW0gYSB0YWJs ZSB3aXRoIG5vIHRhYmxlIG9wdGlvbnMgbmV4dCwgc28gd2UKKwkJICogZG9uJ3Qgd2FudCB0byBn aXZlIHVwIG91ciBzaGFyZSBvZiBJL08gZm9yIGEgdmVyeSBzaG9ydCBpbnRlcnZhbAorCQkgKiBh bmQgdGhlcmVieSB0aHJhc2ggdGhlIGdsb2JhbCBiYWxhbmNlLgogCQkgKi8KIAkJTFdMb2NrQWNx dWlyZShBdXRvdmFjdXVtU2NoZWR1bGVMb2NrLCBMV19FWENMVVNJVkUpOwogCQlNeVdvcmtlcklu Zm8tPndpX3RhYmxlb2lkID0gSW52YWxpZE9pZDsKIAkJTXlXb3JrZXJJbmZvLT53aV9zaGFyZWRy ZWwgPSBmYWxzZTsKIAkJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtU2NoZWR1bGVMb2NrKTsKLQot CQkvKiByZXN0b3JlIHZhY3V1bSBjb3N0IEdVQ3MgZm9yIHRoZSBuZXh0IGl0ZXJhdGlvbiAqLwot CQlWYWN1dW1Db3N0RGVsYXkgPSBzdGRWYWN1dW1Db3N0RGVsYXk7Ci0JCVZhY3V1bUNvc3RMaW1p dCA9IHN0ZFZhY3V1bUNvc3RMaW1pdDsKIAl9CiAKIAkvKgpAQCAtMjU5NSw2ICsyNTY2LDggQEAg ZGVsZXRlZDoKIAkJewogCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vz c0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCQlBdXRvVmFjdXVtVXBkYXRlRGVsYXkoKTsKKwkJ CUF1dG9WYWN1dW1VcGRhdGVMaW1pdCgpOwogCQl9CiAKIAkJTFdMb2NrQWNxdWlyZShBdXRvdmFj dXVtTG9jaywgTFdfRVhDTFVTSVZFKTsKQEAgLTI4MjcsOCArMjgwMCw2IEBAIHRhYmxlX3JlY2hl Y2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJaW50CQkJZnJl ZXplX3RhYmxlX2FnZTsKIAkJaW50CQkJbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlOwogCQlpbnQJ CQltdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZTsKLQkJaW50CQkJdmFjX2Nvc3RfbGltaXQ7Ci0J CWRvdWJsZQkJdmFjX2Nvc3RfZGVsYXk7CiAJCWludAkJCWxvZ19taW5fZHVyYXRpb247CiAKIAkJ LyoKQEAgLTI4MzgsMjAgKzI4MDksNiBAQCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlk LCBIVEFCICp0YWJsZV90b2FzdF9tYXAsCiAJCSAqIGRlZmF1bHRzLCBhdXRvdmFjdXVtJ3Mgb3du IGZpcnN0IGFuZCBwbGFpbiB2YWN1dW0gc2Vjb25kLgogCQkgKi8KIAotCQkvKiAtMSBpbiBhdXRv dmFjIHNldHRpbmcgbWVhbnMgdXNlIHBsYWluIHZhY3V1bV9jb3N0X2RlbGF5ICovCi0JCXZhY19j b3N0X2RlbGF5ID0gKGF2b3B0cyAmJiBhdm9wdHMtPnZhY3V1bV9jb3N0X2RlbGF5ID49IDApCi0J CQk/IGF2b3B0cy0+dmFjdXVtX2Nvc3RfZGVsYXkKLQkJCTogKGF1dG92YWN1dW1fdmFjX2Nvc3Rf ZGVsYXkgPj0gMCkKLQkJCT8gYXV0b3ZhY3V1bV92YWNfY29zdF9kZWxheQotCQkJOiBWYWN1dW1D b3N0RGVsYXk7Ci0KLQkJLyogMCBvciAtMSBpbiBhdXRvdmFjIHNldHRpbmcgbWVhbnMgdXNlIHBs YWluIHZhY3V1bV9jb3N0X2xpbWl0ICovCi0JCXZhY19jb3N0X2xpbWl0ID0gKGF2b3B0cyAmJiBh dm9wdHMtPnZhY3V1bV9jb3N0X2xpbWl0ID4gMCkKLQkJCT8gYXZvcHRzLT52YWN1dW1fY29zdF9s aW1pdAotCQkJOiAoYXV0b3ZhY3V1bV92YWNfY29zdF9saW1pdCA+IDApCi0JCQk/IGF1dG92YWN1 dW1fdmFjX2Nvc3RfbGltaXQKLQkJCTogVmFjdXVtQ29zdExpbWl0OwotCiAJCS8qIC0xIGluIGF1 dG92YWMgc2V0dGluZyBtZWFucyB1c2UgbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uICovCiAJ CWxvZ19taW5fZHVyYXRpb24gPSAoYXZvcHRzICYmIGF2b3B0cy0+bG9nX21pbl9kdXJhdGlvbiA+ PSAwKQogCQkJPyBhdm9wdHMtPmxvZ19taW5fZHVyYXRpb24KQEAgLTI5MDcsOCArMjg2NCwxMCBA QCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAs CiAJCXRhYi0+YXRfcGFyYW1zLm11bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlID0gbXVsdGl4YWN0 X2ZyZWV6ZV90YWJsZV9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLmlzX3dyYXBhcm91bmQgPSB3cmFw YXJvdW5kOwogCQl0YWItPmF0X3BhcmFtcy5sb2dfbWluX2R1cmF0aW9uID0gbG9nX21pbl9kdXJh dGlvbjsKLQkJdGFiLT5hdF92YWN1dW1fY29zdF9saW1pdCA9IHZhY19jb3N0X2xpbWl0OwotCQl0 YWItPmF0X3ZhY3V1bV9jb3N0X2RlbGF5ID0gdmFjX2Nvc3RfZGVsYXk7CisJCXRhYi0+YXRfdGFi bGVfb3B0aW9uX3ZhY19jb3N0X2xpbWl0ID0gYXZvcHRzID8KKwkJCWF2b3B0cy0+dmFjdXVtX2Nv c3RfbGltaXQgOiAwOworCQl0YWItPmF0X3RhYmxlX29wdGlvbl92YWNfY29zdF9kZWxheSA9IGF2 b3B0cyA/CisJCQlhdm9wdHMtPnZhY3V1bV9jb3N0X2RlbGF5IDogLTE7CiAJCXRhYi0+YXRfcmVs bmFtZSA9IE5VTEw7CiAJCXRhYi0+YXRfbnNwbmFtZSA9IE5VTEw7CiAJCXRhYi0+YXRfZGF0bmFt ZSA9IE5VTEw7CkBAIC0zNDAwLDEwICszMzU5LDE0IEBAIEF1dG9WYWN1dW1TaG1lbUluaXQodm9p ZCkKIAkJd29ya2VyID0gKFdvcmtlckluZm8pICgoY2hhciAqKSBBdXRvVmFjdXVtU2htZW0gKwog CQkJCQkJCSAgIE1BWEFMSUdOKHNpemVvZihBdXRvVmFjdXVtU2htZW1TdHJ1Y3QpKSk7CiAKKwog CQkvKiBpbml0aWFsaXplIHRoZSBXb3JrZXJJbmZvIGZyZWUgbGlzdCAqLwogCQlmb3IgKGkgPSAw OyBpIDwgYXV0b3ZhY3V1bV9tYXhfd29ya2VyczsgaSsrKQogCQkJZGxpc3RfcHVzaF9oZWFkKCZB dXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3JrZXJzLAogCQkJCQkJCSZ3b3JrZXJbaV0ud2lfbGlu a3MpOworCisJCXBnX2F0b21pY19pbml0X3UzMigmQXV0b1ZhY3V1bVNobWVtLT5hdl9ud29ya2Vy c19mb3JfYmFsYW5jZSwgMCk7CisKIAl9CiAJZWxzZQogCQlBc3NlcnQoZm91bmQpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1dG92YWN1dW0uaAppbmRleCBlZTQ4ZTcxMjNkLi43YjQ2Mjg2NmM5IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAorKysgYi9zcmMvaW5j bHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAtNjQsOCArNjQsOCBAQCBleHRlcm4gaW50 CVN0YXJ0QXV0b1ZhY1dvcmtlcih2b2lkKTsKIGV4dGVybiB2b2lkIEF1dG9WYWNXb3JrZXJGYWls ZWQodm9pZCk7CiAKIC8qIGF1dG92YWN1dW0gY29zdC1kZWxheSBiYWxhbmNlciAqLwotZXh0ZXJu IHZvaWQgQXV0b1ZhY3V1bU92ZXJyaWRlQ29zdHModm9pZCk7Ci1leHRlcm4gdm9pZCBBdXRvVmFj dXVtVXBkYXRlQ29zdHModm9pZCk7CitleHRlcm4gdm9pZCBBdXRvVmFjdXVtVXBkYXRlRGVsYXko dm9pZCk7CitleHRlcm4gdm9pZCBBdXRvVmFjdXVtVXBkYXRlTGltaXQodm9pZCk7CiAKICNpZmRl ZiBFWEVDX0JBQ0tFTkQKIGV4dGVybiB2b2lkIEF1dG9WYWNMYXVuY2hlck1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7Ci0tIAoyLjM3LjIKCg== --000000000000a4336005f7be2c99 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0002-Make-VacuumCostActive-failsafe-aware.patch" Content-Disposition: attachment; filename="v8-0002-Make-VacuumCostActive-failsafe-aware.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfoc9d771 RnJvbSAzYTk0OTJiMWYzZWFhY2FmYzczMGFlYTBkNTMwODUwNDY4ODZlY2FkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI1IE1hciAyMDIzIDEyOjA1OjE4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OCAyLzRdIE1ha2UgVmFjdXVtQ29zdEFjdGl2ZSBmYWlsc2FmZS1hd2FyZQoKV2hpbGUg dmFjdXVtaW5nIGEgdGFibGUgaW4gZmFpbHNhZmUgbW9kZSwgVmFjdXVtQ29zdEFjdGl2ZSBzaG91 bGQgbm90IGJlCnJlLWVuYWJsZWQuIFRoaXMgY3VycmVudGx5IGlzbid0IGEgcHJvYmxlbSBiZWNh dXNlIHZhY3V1bSBjb3N0CnBhcmFtZXRlcnMgYXJlIG9ubHkgcmVmcmVzaGVkIGluIGJldHdlZW4g dmFjdXVtaW5nIHRhYmxlcyBhbmQgZmFpbHNhZmUKc3RhdHVzIGlzIHJlc2V0IGZvciBldmVyeSB0 YWJsZS4gSW4gcHJlcGFyYXRpb24gZm9yIGFsbG93aW5nIHZhY3V1bSBjb3N0CnBhcmFtZXRlcnMg dG8gYmUgdXBkYXRlZCBtb3JlIGZyZXF1ZW50bHksIG1ha2UgdmFjdXVtIGNvc3Qgc3RhdHVzIG1v cmUKZXhwcmVzc2l2ZS4KClZhY3V1bUNvc3RBY3RpdmUgaXMgbm93IFZhY3V1bUNvc3RJbmFjdGl2 ZSwgYXMgaXQgY2FuIG9ubHkgYmUgYWN0aXZlIGluCm9uZSB3YXkgYnV0IGl0IGNhbiBiZSBpbmFj dGl2ZSBpbiB0d28gd2F5cy4gSWYgcGVyZm9ybWluZyBhIGZhaWxzYWZlCnZhY3V1bSwgdGhlIHZh Y3V1bSBjb3N0IHN0YXR1cyBjYW5ub3QgYmUgZW5hYmxlZCBhbmQgaXMgZWZmZWN0aXZlbHkKImxv Y2tlZCIuIElmIHBlcmZvcm1pbmcgYSBub24tZmFpbHNhZmUgdmFjdXVtLCB0aGUgdmFjdXVtIGNv c3Qgc3RhdHVzCm1heSBiZSBhY3RpdmUgb3IgaW5hY3RpdmUuIFRvIGV4cHJlc3MgdGhpcywgVmFj dXVtQ29zdEluYWN0aXZlIGNhbiBiZQpvbmUgb2YgdGhyZWUgc3RhdHVzZXM6IFZBQ1VVTV9DT1NU X0lOQUNUSVZFX0FORF9MT0NLRUQsClZBQ1VVTV9DT1NUX0FDVElWRV9BTkRfTE9DS0VELCBhbmQg VkFDVVVNX0NPU1RfQUNUSVZFLgoKVmFjdXVtQ29zdEluYWN0aXZlIGlzIGRlZmluZWQgYXMgYW4g aW50ZWdlciBiZWNhdXNlIHdlIGRvIG5vdCB3YW50Cm5vbi12YWN1dW0gY29kZSBjb25jZXJuaW5n IGl0c2VsZiB3aXRoIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSB0aHJlZQpzdGF0dXNlcyAt LSBvbmx5IHdpdGggd2hldGhlciBvciBub3QgVmFjdXVtQ29zdEluYWN0aXZlID09IDAgb3Igbm90 LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCAgMiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysr KysrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIHwgIDggKysrKysr LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgfCAgOCArKysrLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICB8ICAyICstCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgIHwgIDggKysrKysrKysKIHNyYy9pbmNsdWRlL21p c2NhZG1pbi5oICAgICAgICAgICAgICAgfCAgMyArLS0KIDcgZmlsZXMgY2hhbmdlZCwgNDEgaW5z ZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IDhmMTRjZjg1ZjMuLjA0MGE0ZTkzMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKQEAgLTI2MzcsNyArMjYzNyw3IEBAIGxhenlfY2hlY2tfd3JhcGFyb3VuZF9m YWlsc2FmZShMVlJlbFN0YXRlICp2YWNyZWwpCiAJCQkJCQkgIllvdSBtaWdodCBhbHNvIG5lZWQg dG8gY29uc2lkZXIgb3RoZXIgd2F5cyBmb3IgVkFDVVVNIHRvIGtlZXAgdXAgd2l0aCB0aGUgYWxs b2NhdGlvbiBvZiB0cmFuc2FjdGlvbiBJRHMuIikpKTsKIAogCQkvKiBTdG9wIGFwcGx5aW5nIGNv c3QgbGltaXRzIGZyb20gdGhpcyBwb2ludCBvbiAqLwotCQlWYWN1dW1Db3N0QWN0aXZlID0gZmFs c2U7CisJCVZhY3V1bUNvc3RJbmFjdGl2ZSA9IFZBQ1VVTV9DT1NUX0lOQUNUSVZFX0FORF9MT0NL RUQ7CiAJCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKIAogCQlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtLmMKaW5kZXggN2QwMWRmN2U0OC4uZWIxMjZmMjI0NyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt LmMKQEAgLTQ5MSw3ICs0OTEsNiBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJh bXMgKnBhcmFtcywKIAkJTGlzdENlbGwgICAqY3VyOwogCiAJCWluX3ZhY3V1bSA9IHRydWU7Ci0J CVZhY3V1bUNvc3RBY3RpdmUgPSAoVmFjdXVtQ29zdERlbGF5ID4gMCk7CiAJCVZhY3V1bUNvc3RC YWxhbmNlID0gMDsKIAkJVmFjdXVtUGFnZUhpdCA9IDA7CiAJCVZhY3V1bVBhZ2VNaXNzID0gMDsK QEAgLTUwNyw2ICs1MDYsMjQgQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywgVmFjdXVtUGFyYW1z ICpwYXJhbXMsCiAJCXsKIAkJCVZhY3V1bVJlbGF0aW9uICp2cmVsID0gbGZpcnN0X25vZGUoVmFj dXVtUmVsYXRpb24sIGN1cik7CiAKKwkJCS8qCisJCQkgKiBmYWlsc2FmZV9hY3RpdmUgaXMgcmVz ZXQgcGVyIHJlbGF0aW9uLCBzbyB3ZSBtdXN0IGJlIHN1cmUgdGhhdAorCQkJICogVmFjdXVtQ29z dEluYWN0aXZlIGlzIHNldCB0byBlaXRoZXIgVkFDVVVNX0NPU1RfSU5BQ1RJVkUgb3IKKwkJCSAq IFZBQ1VVTV9DT1NUX0lOQUNUSVZFX0FORF9VTkxPQ0tFRCBpbiBiZXR3ZWVuIHZhY3V1bWluZwor CQkJICogcmVsYXRpb25zLgorCQkJICovCisJCQlWYWN1dW1Db3N0SW5hY3RpdmUgPSBWYWN1dW1D b3N0RGVsYXkgPiAwID8gVkFDVVVNX0NPU1RfQUNUSVZFIDoKKwkJCQlWQUNVVU1fQ09TVF9JTkFD VElWRV9BTkRfVU5MT0NLRUQ7CisKKwkJCS8qCisJCQkgKiBXZSBzaG91bGQgbm90IGhhdmUgdHJh bnNpdGlvbmVkIFZhY3V1bUNvc3RJbmFjdGl2ZSBmcm9tCisJCQkgKiBWQUNVVU1fQ09TVF9BQ1RJ VkUgdG8gVkFDVVVNX0NPU1RfSU5BQ1RJVkVfQU5EX1VOTE9DS0VEIGFib3ZlLAorCQkJICogYXMg dGhhdCBzaG91bGQgaGF2ZSBoYXBwZW5lZCB3aGVuIHdlIGNoYW5nZWQgdGhlIHZhbHVlIG9mCisJ CQkgKiBWYWN1dW1Db3N0RGVsYXkuCisJCQkgKi8KKwkJCUFzc2VydChWYWN1dW1Db3N0SW5hY3Rp dmUgPT0gVkFDVVVNX0NPU1RfQUNUSVZFIHx8CisJCQkJICAgVmFjdXVtQ29zdEJhbGFuY2UgPT0g MCk7CisKIAkJCWlmIChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkFDVVVNKQogCQkJewogCQkJ CWlmICghdmFjdXVtX3JlbCh2cmVsLT5vaWQsIHZyZWwtPnJlbGF0aW9uLCBwYXJhbXMsIGZhbHNl KSkKQEAgLTU0OSw3ICs1NjYsNyBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJh bXMgKnBhcmFtcywKIAlQR19GSU5BTExZKCk7CiAJewogCQlpbl92YWN1dW0gPSBmYWxzZTsKLQkJ VmFjdXVtQ29zdEFjdGl2ZSA9IGZhbHNlOworCQlWYWN1dW1Db3N0SW5hY3RpdmUgPSBWQUNVVU1f Q09TVF9JTkFDVElWRV9BTkRfVU5MT0NLRUQ7CiAJCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKIAl9 CiAJUEdfRU5EX1RSWSgpOwpAQCAtMjIxNiw3ICsyMjMzLDcgQEAgdmFjdXVtX2RlbGF5X3BvaW50 KHZvaWQpCiAJLyogQWx3YXlzIGNoZWNrIGZvciBpbnRlcnJ1cHRzICovCiAJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAotCWlmICghVmFjdXVtQ29zdEFjdGl2ZSB8fCBJbnRlcnJ1cHRQZW5kaW5n KQorCWlmIChWYWN1dW1Db3N0SW5hY3RpdmUgfHwgSW50ZXJydXB0UGVuZGluZykKIAkJcmV0dXJu OwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IGJjZDQwYzgw YTEuLjI2NmJmNmJiNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAt OTg5LDggKzk4OSwxMiBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJCQkJCQkJCQkJCQkgUEFSQUxMRUxfVkFDVVVNX0tFWV9ERUFEX0lURU1T LAogCQkJCQkJCQkJCQkJIGZhbHNlKTsKIAotCS8qIFNldCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxh eSAqLwotCVZhY3V1bUNvc3RBY3RpdmUgPSAoVmFjdXVtQ29zdERlbGF5ID4gMCk7CisJLyoKKwkg KiBTZXQgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgUGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMgd2ls bCBub3QgZXhlY3V0ZQorCSAqIGZhaWxzYWZlIFZBQ1VVTS4KKwkgKi8KKwlWYWN1dW1Db3N0SW5h Y3RpdmUgPSBWYWN1dW1Db3N0RGVsYXkgPiAwID8gVkFDVVVNX0NPU1RfQUNUSVZFIDoKKwkJVkFD VVVNX0NPU1RfSU5BQ1RJVkVfQU5EX1VOTE9DS0VEOwogCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsK IAlWYWN1dW1QYWdlSGl0ID0gMDsKIAlWYWN1dW1QYWdlTWlzcyA9IDA7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCmluZGV4IDk1MjEyYTM5NDEuLjZkM2RkMjZmYzcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC04OTMsNyArODkzLDcgQEAgUmVhZEJ1ZmZlcl9jb21t b24oU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsIEZvcmtOdW1iZXIgZm9y a051bSwKIAkJCSpoaXQgPSB0cnVlOwogCQkJVmFjdXVtUGFnZUhpdCsrOwogCi0JCQlpZiAoVmFj dXVtQ29zdEFjdGl2ZSkKKwkJCWlmICghVmFjdXVtQ29zdEluYWN0aXZlKQogCQkJCVZhY3V1bUNv c3RCYWxhbmNlICs9IFZhY3V1bUNvc3RQYWdlSGl0OwogCiAJCQlUUkFDRV9QT1NUR1JFU1FMX0JV RkZFUl9SRUFEX0RPTkUoZm9ya051bSwgYmxvY2tOdW0sCkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBS ZWFkQnVmZmVyX2NvbW1vbihTTWdyUmVsYXRpb24gc21nciwgY2hhciByZWxwZXJzaXN0ZW5jZSwg Rm9ya051bWJlciBmb3JrTnVtLAogCX0KIAogCVZhY3V1bVBhZ2VNaXNzKys7Ci0JaWYgKFZhY3V1 bUNvc3RBY3RpdmUpCisJaWYgKCFWYWN1dW1Db3N0SW5hY3RpdmUpCiAJCVZhY3V1bUNvc3RCYWxh bmNlICs9IFZhY3V1bUNvc3RQYWdlTWlzczsKIAogCVRSQUNFX1BPU1RHUkVTUUxfQlVGRkVSX1JF QURfRE9ORShmb3JrTnVtLCBibG9ja051bSwKQEAgLTE2NzIsNyArMTY3Miw3IEBAIE1hcmtCdWZm ZXJEaXJ0eShCdWZmZXIgYnVmZmVyKQogCXsKIAkJVmFjdXVtUGFnZURpcnR5Kys7CiAJCXBnQnVm ZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZCsrOwotCQlpZiAoVmFjdXVtQ29zdEFjdGl2ZSkK KwkJaWYgKCFWYWN1dW1Db3N0SW5hY3RpdmUpCiAJCQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1 dW1Db3N0UGFnZURpcnR5OwogCX0KIH0KQEAgLTQxOTksNyArNDE5OSw3IEBAIE1hcmtCdWZmZXJE aXJ0eUhpbnQoQnVmZmVyIGJ1ZmZlciwgYm9vbCBidWZmZXJfc3RkKQogCQl7CiAJCQlWYWN1dW1Q YWdlRGlydHkrKzsKIAkJCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZCsrOwotCQkJ aWYgKFZhY3V1bUNvc3RBY3RpdmUpCisJCQlpZiAoIVZhY3V1bUNvc3RJbmFjdGl2ZSkKIAkJCQlW YWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5OwogCQl9CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYwppbmRleCAxYjFkODE0MjU0Li42MDhlYmI5MTgyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYwpAQCAtMTUwLDQgKzE1MCw0IEBAIGludDY0CQlWYWN1dW1QYWdlTWlz cyA9IDA7CiBpbnQ2NAkJVmFjdXVtUGFnZURpcnR5ID0gMDsKIAogaW50CQkJVmFjdXVtQ29zdEJh bGFuY2UgPSAwOwkvKiB3b3JraW5nIHN0YXRlIGZvciB2YWN1dW0gKi8KLWJvb2wJCVZhY3V1bUNv c3RBY3RpdmUgPSBmYWxzZTsKK2ludAkJCVZhY3V1bUNvc3RJbmFjdGl2ZSA9IDE7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3ZhY3V1bS5oCmluZGV4IGJkZmQ5NmNmZWMuLjVjM2UyNTBiMDYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1 bS5oCkBAIC0zMDIsNiArMzAyLDE0IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX2Zh aWxzYWZlX2FnZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX211bHRpeGFjdF9mYWls c2FmZV9hZ2U7CiAKIC8qIFZhcmlhYmxlcyBmb3IgY29zdC1iYXNlZCBwYXJhbGxlbCB2YWN1dW0g Ki8KKwordHlwZWRlZiBlbnVtIFZhY3V1bUNvc3RTdGF0dXMKK3sKKwlWQUNVVU1fQ09TVF9JTkFD VElWRV9BTkRfTE9DS0VEID0gLTEsCisJVkFDVVVNX0NPU1RfQUNUSVZFID0gMCwKKwlWQUNVVU1f Q09TVF9JTkFDVElWRV9BTkRfVU5MT0NLRUQgPSAxLAorfQkJCVZhY3V1bUNvc3RTdGF0dXM7CisK IGV4dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDMyICpWYWN1dW1TaGFyZWRDb3N0QmFs YW5jZTsKIGV4dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDMyICpWYWN1dW1BY3RpdmVO V29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgVmFjdXVtQ29zdEJhbGFuY2VMb2NhbDsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmgKaW5kZXggMDZhODZmOWFjMS4uMzNlMjI3MzNhZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTI3NCw4ICsy NzQsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50NjQgVmFjdXVtUGFnZU1pc3M7CiBleHRlcm4g UEdETExJTVBPUlQgaW50NjQgVmFjdXVtUGFnZURpcnR5OwogCiBleHRlcm4gUEdETExJTVBPUlQg aW50IFZhY3V1bUNvc3RCYWxhbmNlOwotZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgVmFjdXVtQ29z dEFjdGl2ZTsKLQorZXh0ZXJuIFBHRExMSU1QT1JUIGludCBWYWN1dW1Db3N0SW5hY3RpdmU7CiAK IC8qIGluIHRjb3AvcG9zdGdyZXMuYyAqLwogCi0tIAoyLjM3LjIKCg== --000000000000a4336005f7be2c99--