From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?J=C3=A9r=C3=A9mie_Galarneau?= Subject: Re: [RFC PATCH v2 12/13] Fix: delay termination on consumerd to allow metadata flushing Date: Wed, 13 Dec 2017 20:57:49 -0500 Message-ID: References: <20170918225206.17725-1-jonathan.rajotte-julien@efficios.com> <20170918225206.17725-13-jonathan.rajotte-julien@efficios.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yb0-x242.google.com (mail-yb0-x242.google.com [IPv6:2607:f8b0:4002:c09::242]) by lists.lttng.org (Postfix) with ESMTPS id 3yxxXy5HYZzhm0 for ; Thu, 14 Dec 2017 01:58:10 +0000 (UTC) Received: by mail-yb0-x242.google.com with SMTP id s1so2367083ybm.7 for ; Wed, 13 Dec 2017 17:58:10 -0800 (PST) In-Reply-To: <20170918225206.17725-13-jonathan.rajotte-julien@efficios.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lttng-dev-bounces@lists.lttng.org Sender: "lttng-dev" To: Jonathan Rajotte Cc: "lttng-dev@lists.lttng.org" , Jeremie Galarneau List-Id: lttng-dev@lists.lttng.org T24gMTggU2VwdGVtYmVyIDIwMTcgYXQgMTg6NTIsIEpvbmF0aGFuIFJham90dGUKPGpvbmF0aGFu LnJham90dGUtanVsaWVuQGVmZmljaW9zLmNvbT4gd3JvdGU6Cj4gTW92ZSBjb25zdW1lcmQgb3du ZXJzaGlwIHRvIHRocmVhZF9tYW5hZ2VfY29uc3VtZXIgdG8gc2NvcGUgdGhlIGxpZmV0aW1lCj4g b24gdGhlIGNvbnN1bWVyZCB0byBpdHMgbWFuYWdlciB0aHJlYWQuCj4KPiAidGhyZWFkX21hbmFn ZV9jb25zdW1lciIgaXMgcmVzcG9uc2libGUgZm9yIHNpZ25hbGluZyBhbmQgd2FpdGluZyB0aGUK PiB0ZXJtaW5hdGlvbiBvZiBpdHMgY29uc3VtZXJkLgo+Cj4gQWxsIHRocmVhZF9tYW5hZ2VfY29u c3VtZXIgdGhyZWFkcyBub3cgd2FpdCBvbiBhIHVuaXF1ZSBxdWl0IHBpcGUKPiBkaWZmZXJlbnQg ZnJvbSB0aGUgZ2xvYmFsIHRocmVhZCBxdWl0IHBpcGUuIFRoaXMgYWxsb3cgY29udHJvbCBvdmVy IGl0cwo+IGxpZmV0aW1lLgo+Cj4gVGhlIHRlcm1pbmF0aW9uIG5vdGlmaWNhdGlvbiBpcyBzZW50 IGR1cmluZyBzZXNzaW9uZF9jbGVhbnVwIGFmdGVyIHRoZQo+IGRlc3Ryb3kgc2Vzc2lvbiBjb21t YW5kIHRvIGVuc3VyZSB0aGF0IG5vIHNlc3Npb24gYXJlIHN0aWxsIGFjdGl2ZSBhdAo+IHRoZSBt b21lbnQgdGhlIGNvbnN1bWVyZHMgYXJlIHRlcm1pbmF0ZWQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBK b25hdGhhbiBSYWpvdHRlIDxqb25hdGhhbi5yYWpvdHRlLWp1bGllbkBlZmZpY2lvcy5jb20+Cj4g LS0tCj4gIHNyYy9iaW4vbHR0bmctc2Vzc2lvbmQvbWFpbi5jIHwgMTc0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTEyIGluc2Vy dGlvbnMoKyksIDYyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL3NyYy9iaW4vbHR0bmct c2Vzc2lvbmQvbWFpbi5jIGIvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9tYWluLmMKPiBpbmRleCBh ODQwZThkZS4uZmI1OGFiNGIgMTAwNjQ0Cj4gLS0tIGEvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9t YWluLmMKPiArKysgYi9zcmMvYmluL2x0dG5nLXNlc3Npb25kL21haW4uYwo+IEBAIC0yMDYsNiAr MjA2LDcgQEAgc3RhdGljIGludCBrZXJuZWxfcG9sbF9waXBlWzJdID0geyAtMSwgLTEgfTsKPiAg c3RhdGljIGludCB0aHJlYWRfcXVpdF9waXBlWzJdID0geyAtMSwgLTEgfTsKPiAgc3RhdGljIGlu dCB0aHJlYWRfaGVhbHRoX3RlYXJkb3duX3RyaWdnZXJfcGlwZVsyXSA9IHsgLTEsIC0xIH07Cj4g IHN0YXRpYyBpbnQgdGhyZWFkX2FwcHNfdGVhcmRvd25fdHJpZ2dlcl9waXBlWzJdID0geyAtMSwg LTEgfTsKPiArc3RhdGljIGludCB0aHJlYWRfY29uc3VtZXJzX3RlYXJkb3duX3RyaWdnZXJfcGlw ZVsyXSA9IHsgLTEsIC0xIH07Cj4gIGludCB0aHJlYWRfYXBwc19ub3RpZnlfdGVhcmRvd25fdHJp Z2dlcl9waXBlWzJdID0geyAtMSwgLTEgfTsKPgo+ICAvKgo+IEBAIC00OTUsNiArNDk2LDExIEBA IHN0YXRpYyBpbnQgaW5pdF90aHJlYWRfYXBwc19ub3RpZnlfdGVhcmRvd25fdHJpZ2dlcl9waXBl KHZvaWQpCj4gICAgICAgICByZXR1cm4gX19pbml0X3RocmVhZF9xdWl0X3BpcGUodGhyZWFkX2Fw cHNfbm90aWZ5X3RlYXJkb3duX3RyaWdnZXJfcGlwZSk7Cj4gIH0KPgo+ICtzdGF0aWMgaW50IGlu aXRfdGhyZWFkX2NvbnN1bWVyc190ZWFyZG93bl90cmlnZ2VyX3BpcGUodm9pZCkKPiArewo+ICsg ICAgICAgcmV0dXJuIF9faW5pdF90aHJlYWRfcXVpdF9waXBlKHRocmVhZF9jb25zdW1lcnNfdGVh cmRvd25fdHJpZ2dlcl9waXBlKTsKPiArfQo+ICsKPiAgLyoKPiAgICogU3RvcCBmaXJzdCB3YXZl IHRocmVhZHMgYnkgY2xvc2luZyB0aGUgdGhyZWFkIHF1aXQgcGlwZS4KPiAgICogIC0ga2VybmVs IHRocmVhZAo+IEBAIC02MDEsMTQgKzYwNywxNSBAQCBzdGF0aWMgaW50IGdlbmVyYXRlX2xvY2tf ZmlsZV9wYXRoKGNoYXIgKnBhdGgsIHNpemVfdCBsZW4pCj4gIC8qCj4gICAqIFdhaXQgb24gY29u c3VtZXIgcHJvY2VzcyB0ZXJtaW5hdGlvbi4KPiAgICoKPiAtICogTmVlZCB0byBiZSBjYWxsZWQg d2l0aCB0aGUgY29uc3VtZXIgZGF0YSBsb2NrIGhlbGQgb3IgZnJvbSBhIGNvbnRleHQKPiAtICog ZW5zdXJpbmcgbm8gY29uY3VycmVudCBhY2Nlc3MgdG8gZGF0YSAoZS5nOiBjbGVhbnVwKS4KPiAr ICogTmVlZCB0byBiZSBjYWxsZWQgd2l0aCB0aGUgY29uc3VtZXIgZGF0YSBsb2NrIGhlbGQuCj4g ICAqLwo+ICBzdGF0aWMgdm9pZCB3YWl0X2NvbnN1bWVyKHN0cnVjdCBjb25zdW1lcl9kYXRhICpj b25zdW1lcl9kYXRhKQo+ICB7Cj4gICAgICAgICBwaWRfdCByZXQ7Cj4gICAgICAgICBpbnQgc3Rh dHVzOwo+Cj4gKyAgICAgICBhc3NlcnQoY29uc3VtZXJfZGF0YSk7Cj4gKwo+ICAgICAgICAgaWYg KGNvbnN1bWVyX2RhdGEtPnBpZCA8PSAwKSB7Cj4gICAgICAgICAgICAgICAgIHJldHVybjsKPiAg ICAgICAgIH0KPiBAQCAtNjI2LDYgKzYzMyw1MiBAQCBzdGF0aWMgdm9pZCB3YWl0X2NvbnN1bWVy KHN0cnVjdCBjb25zdW1lcl9kYXRhICpjb25zdW1lcl9kYXRhKQo+ICB9Cj4KPiAgLyoKPiArICog U2lnbmFsIHRvIHRoZSBjb25zdW1lciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4KPiArICoKPiArICog TmVlZCB0byBiZSBjYWxsZWQgd2l0aCB0aGUgY29uc3VtZXIgZGF0YSBsb2NrIGhlbGQuCj4gKyAq Lwo+ICtzdGF0aWMgdm9pZCBraWxsX2NvbnN1bWVyKHN0cnVjdCBjb25zdW1lcl9kYXRhICpjb25z dW1lcl9kYXRhKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIGFzc2VydChj b25zdW1lcl9kYXRhKTsKPiArCj4gKyAgICAgICAvKiBDb25zdW1lciBwaWQgbXVzdCBiZSBhIHJl YWwgb25lLiAqLwo+ICsgICAgICAgaWYgKGNvbnN1bWVyX2RhdGEtPnBpZCA8PSAwKSB7Cj4gKyAg ICAgICAgICAgICAgIGdvdG8gZW5kOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IGtp bGwoY29uc3VtZXJfZGF0YS0+cGlkLCBTSUdURVJNKTsKPiArICAgICAgIGlmIChyZXQpIHsKPiAr ICAgICAgICAgICAgICAgUEVSUk9SKCJFcnJvciBraWxsaW5nIGNvbnN1bWVyIGRhZW1vbiIpOwo+ ICsgICAgICAgICAgICAgICBnb3RvIGVuZDsKPiArICAgICAgIH0KPiArZW5kOgo+ICsgICAgICAg cmV0dXJuOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGpvaW5fdGhyZWFkX2NvbnN1bWVyKHN0cnVj dCBjb25zdW1lcl9kYXRhICpjb25zdW1lcl9kYXRhKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0Owo+ ICsgICAgICAgdm9pZCAqc3RhdHVzOwo+ICsKPiArICAgICAgIGFzc2VydChjb25zdW1lcl9kYXRh KTsKPiArCj4gKyAgICAgICAvKiBDb25zdW1lciBwaWQgbXVzdCBiZSBhIHJlYWwgb25lLiAqLwo+ ICsgICAgICAgaWYgKGNvbnN1bWVyX2RhdGEtPnBpZCA8PSAwKSB7Cj4gKyAgICAgICAgICAgICAg IHJldCA9IDA7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZW5kOwo+ICsgICAgICAgfQo+ICsKPiAr ICAgICAgIHJldCA9IHB0aHJlYWRfam9pbihjb25zdW1lcl9kYXRhLT50aHJlYWQsICZzdGF0dXMp Owo+ICsgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBFUlIoIkpvaW5pbmcgY29u c3VtZXIgdGhyZWFkIHBpZCAlZCIsIGNvbnN1bWVyX2RhdGEtPnBpZCk7Cj4gKyAgICAgICB9Cj4g K2VuZDoKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gKy8qCj4gICAqIENsZWFudXAg dGhlIHNlc3Npb24gZGFlbW9uJ3MgZGF0YSBzdHJ1Y3R1cmVzLgo+ICAgKi8KPiAgc3RhdGljIHZv aWQgc2Vzc2lvbmRfY2xlYW51cCh2b2lkKQo+IEBAIC03MDcsNyArNzYwLDYgQEAgc3RhdGljIHZv aWQgc2Vzc2lvbmRfY2xlYW51cCh2b2lkKQo+ICAgICAgICAgKHZvaWQpIHJtZGlyKHBhdGgpOwo+ Cj4gICAgICAgICBEQkcoIkNsZWFuaW5nIHVwIGFsbCBzZXNzaW9ucyIpOwo+IC0KPiAgICAgICAg IC8qIERlc3Ryb3kgc2Vzc2lvbiBsaXN0IG11dGV4ICovCj4gICAgICAgICBpZiAoc2Vzc2lvbl9s aXN0X3B0ciAhPSBOVUxMKSB7Cj4gICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJv eSgmc2Vzc2lvbl9saXN0X3B0ci0+bG9jayk7Cj4gQEAgLTcxOSw5ICs3NzEsMzUgQEAgc3RhdGlj IHZvaWQgc2Vzc2lvbmRfY2xlYW51cCh2b2lkKQo+ICAgICAgICAgICAgICAgICB9Cj4gICAgICAg ICB9Cj4KPiAtICAgICAgIHdhaXRfY29uc3VtZXIoJmtjb25zdW1lcl9kYXRhKTsKPiAtICAgICAg IHdhaXRfY29uc3VtZXIoJnVzdGNvbnN1bWVyNjRfZGF0YSk7Cj4gLSAgICAgICB3YWl0X2NvbnN1 bWVyKCZ1c3Rjb25zdW1lcjMyX2RhdGEpOwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIERlbGF5 IHRoZSB0ZXJtaW5hdGlvbiBvZiBtYW5hZ2VfY29uc3VtZXJfdGhyZWFkIHRocmVhZHMgdG8gYWxs b3cKPiArICAgICAgICAqIHByb3BlciBtZXRhZGF0YSBmbHVzaGluZywgZm9sbG93aW5nIHRoZSBz ZXNzaW9uIGRlc3Ryb3kuIFVzZSBhCj4gKyAgICAgICAgKiBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0 IGFsbCBjYWxsX3JjdSBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBwb2ludC4KPiArICAgICAgICAqLwo+ ICsgICAgICAgREJHKCJUZWFyZG93biBjb25zdXJtZXIgdGhyZWFkIik7Cj4gKyAgICAgICByY3Vf YmFycmllcigpOwo+ICsgICAgICAgcmV0ID0gbm90aWZ5X3RocmVhZF9waXBlKHRocmVhZF9jb25z dW1lcnNfdGVhcmRvd25fdHJpZ2dlcl9waXBlWzFdKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7 Cj4gKyAgICAgICAgICAgICAgIEVSUigid3JpdGUgZXJyb3Igb24gdGhyZWFkIGNvbnN1bWVyIHF1 aXQgcGlwZSIpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IGpvaW5fdGhyZWFkX2Nv bnN1bWVyKCZrY29uc3VtZXJfZGF0YSk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAg ICAgICAgIGVycm5vID0gcmV0Owo+ICsgICAgICAgICAgICAgICBQRVJST1IoImpvaW5fY29uc3Vt ZXIga2VybmVsIik7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0ID0gam9pbl90aHJlYWRf Y29uc3VtZXIoJnVzdGNvbnN1bWVyMzJfZGF0YSk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAg ICAgICAgICAgICAgIGVycm5vID0gcmV0Owo+ICsgICAgICAgICAgICAgICBQRVJST1IoImpvaW5f Y29uc3VtZXIgdXN0MzIiKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBqb2luX3Ro cmVhZF9jb25zdW1lcigmdXN0Y29uc3VtZXI2NF9kYXRhKTsKPiArICAgICAgIGlmIChyZXQpIHsK PiArICAgICAgICAgICAgICAgZXJybm8gPSByZXQ7Cj4gKyAgICAgICAgICAgICAgIFBFUlJPUigi am9pbl9jb25zdW1lciB1c3Q2NCIpOwo+ICsgICAgICAgfQo+Cj4gICAgICAgICBEQkcoIkNsZWFu aW5nIHVwIGFsbCBhZ2VudCBhcHBzIik7Cj4gICAgICAgICBhZ2VudF9hcHBfaHRfY2xlYW4oKTsK PiBAQCAtMTI4OSwxNCArMTM2NywyMCBAQCBzdGF0aWMgdm9pZCAqdGhyZWFkX21hbmFnZV9jb25z dW1lcih2b2lkICpkYXRhKQo+ICAgICAgICAgaGVhbHRoX2NvZGVfdXBkYXRlKCk7Cj4KPiAgICAg ICAgIC8qCj4gLSAgICAgICAgKiBQYXNzIDMgYXMgc2l6ZSBoZXJlIGZvciB0aGUgdGhyZWFkIHF1 aXQgcGlwZSwgY29uc3VtZXJkX2Vycl9zb2NrIGFuZCB0aGUKPiArICAgICAgICAqIFBhc3MgMyBh cyBzaXplIGhlcmUgZm9yIHRoZSB0aHJlYWQgY29uc3VtZXIgcXVpdCBwaXBlLCBjb25zdW1lcmRf ZXJyX3NvY2sgYW5kIHRoZQo+ICAgICAgICAgICogbWV0YWRhdGFfc29jay4gTm90aGluZyBtb3Jl IHdpbGwgYmUgYWRkZWQgdG8gdGhpcyBwb2xsIHNldC4KPiAgICAgICAgICAqLwo+IC0gICAgICAg cmV0ID0gc2Vzc2lvbmRfc2V0X3RocmVhZF9wb2xsc2V0KCZldmVudHMsIDMpOwo+ICsgICAgICAg cmV0ID0gbHR0bmdfcG9sbF9jcmVhdGUoJmV2ZW50cywgMywgTFRUTkdfQ0xPRVhFQyk7Cj4gICAg ICAgICBpZiAocmV0IDwgMCkgewo+ICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX3BvbGw7Cj4g ICAgICAgICB9Cj4KPiArICAgICAgIC8qIEFkZCBxdWl0IHBpcGUgKi8KPiArICAgICAgIHJldCA9 IGx0dG5nX3BvbGxfYWRkKCZldmVudHMsIHRocmVhZF9jb25zdW1lcnNfdGVhcmRvd25fdHJpZ2dl cl9waXBlWzBdLCBMUE9MTElOIHwgTFBPTExFUlIpOwo+ICsgICAgICAgaWYgKHJldCA8IDApIHsK PiArICAgICAgICAgICAgICAgZ290byBlcnJvcjsKPiArICAgICAgIH0KPiArCj4gICAgICAgICAv Kgo+ICAgICAgICAgICogVGhlIGVycm9yIHNvY2tldCBoZXJlIGlzIGFscmVhZHkgaW4gYSBsaXN0 ZW5pbmcgc3RhdGUgd2hpY2ggd2FzIGRvbmUKPiAgICAgICAgICAqIGp1c3QgYmVmb3JlIHNwYXdu aW5nIHRoaXMgdGhyZWFkIHRvIGF2b2lkIGEgcmFjZSBiZXR3ZWVuIHRoZSBjb25zdW1lcgo+IEBA IC0xMzQ0LDcgKzE0MjgsNyBAQCByZXN0YXJ0Ogo+ICAgICAgICAgICAgICAgICB9Cj4KPiAgICAg ICAgICAgICAgICAgLyogVGhyZWFkIHF1aXQgcGlwZSBoYXMgYmVlbiBjbG9zZWQuIEtpbGxpbmcg dGhyZWFkLiAqLwo+IC0gICAgICAgICAgICAgICByZXQgPSBzZXNzaW9uZF9jaGVja190aHJlYWRf cXVpdF9waXBlKHBvbGxmZCwgcmV2ZW50cyk7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IChwb2xs ZmQgPT0gdGhyZWFkX2NvbnN1bWVyc190ZWFyZG93bl90cmlnZ2VyX3BpcGVbMF0gJiYgKHJldmVu dHMgJiBMUE9MTElOKSkgPyAxIDogMDsKCkkgZG9uJ3QgbWluZCB0ZXJuYXJpZXMsIGJ1dCB0aGF0 J3MgYSByZWFsbHkgbG9uZyBleHByZXNzaW9uLgpJIHRoaW5rIHRoaXMgd291bGQgYmUgbW9yZSBy ZWFkYWJsZSB1c2luZyBhIGdvb2Qtb2xkICdpZicuCgpBbHNvLCBpcyBMUE9MTEVSUiBjaGVja2Vk IHNvbWV3aGVyZT8KCj4gICAgICAgICAgICAgICAgIGlmIChyZXQpIHsKPiAgICAgICAgICAgICAg ICAgICAgICAgICBlcnIgPSAwOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsK PiBAQCAtMTUwOSw3ICsxNTkzLDcgQEAgcmVzdGFydF9wb2xsOgo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAqIGJ1dCBjb250aW51ZSB0aGUgY3VycmVudCBsb29wIHRvIGhhbmRsZSBwb3RlbnRp YWwgZGF0YSBmcm9tCj4gICAgICAgICAgICAgICAgICAgICAgICAgICogY29uc3VtZXIuCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICovCj4gLSAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk X3F1aXQgPSBzZXNzaW9uZF9jaGVja190aHJlYWRfcXVpdF9waXBlKHBvbGxmZCwgcmV2ZW50cyk7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX3F1aXQgPSAocG9sbGZkID09IHRocmVh ZF9jb25zdW1lcnNfdGVhcmRvd25fdHJpZ2dlcl9waXBlWzBdICYmIChyZXZlbnRzICYgTFBPTExJ TikpID8gMSA6IDA7CgpTYW1lIGNvbW1lbnQgYXBwbGllcyBoZXJlLgoKPgo+ICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChwb2xsZmQgPT0gc29jaykgewo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogRXZlbnQgb24gdGhlIGNvbnN1bWVyZCBzb2NrZXQgKi8KPiBAQCAtMTU1 MiwxMSArMTYzNiw2IEBAIHJlc3RhcnRfcG9sbDoKPgo+ICBleGl0Ogo+ICBlcnJvcjoKPiAtICAg ICAgIC8qCj4gLSAgICAgICAgKiBXZSBsb2NrIGhlcmUgYmVjYXVzZSB3ZSBhcmUgYWJvdXQgdG8g Y2xvc2UgdGhlIHNvY2tldHMgYW5kIHNvbWUgb3RoZXIKPiAtICAgICAgICAqIHRocmVhZCBtaWdo dCBiZSB1c2luZyB0aGVtIHNvIGdldCBleGNsdXNpdmUgYWNjZXNzIHdoaWNoIHdpbGwgYWJvcnQg YWxsCj4gLSAgICAgICAgKiBvdGhlciBjb25zdW1lciBjb21tYW5kIGJ5IG90aGVyIHRocmVhZHMu Cj4gLSAgICAgICAgKi8KPiAgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmY29uc3VtZXJfZGF0 YS0+bG9jayk7Cj4KPiAgICAgICAgIC8qIEltbWVkaWF0ZWx5IHNldCB0aGUgY29uc3VtZXJkIHN0 YXRlIHRvIHN0b3BwZWQgKi8KPiBAQCAtMTU3MCw2ICsxNjQ5LDEzIEBAIGVycm9yOgo+ICAgICAg ICAgICAgICAgICBhc3NlcnQoMCk7Cj4gICAgICAgICB9Cj4KPiArICAgICAgIC8qCj4gKyAgICAg ICAgKiBUaGlzIHRocmVhZCBpcyByZXNwb25zaWJsZSBmb3IgaXRzIGNvbnN1bWVyZC4gTWFrZSBz dXJlIHRoZQo+ICsgICAgICAgICogY29uc3VtZXJkIHRlYXJkb3duIGlzIGNvbXBsZXRlIGJlZm9y ZSBwcm9jZWRpbmcuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGtpbGxfY29uc3VtZXIoY29uc3Vt ZXJfZGF0YSk7Cj4gKyAgICAgICB3YWl0X2NvbnN1bWVyKGNvbnN1bWVyX2RhdGEpOwo+ICsKPiAg ICAgICAgIGlmIChjb25zdW1lcl9kYXRhLT5lcnJfc29jayA+PSAwKSB7Cj4gICAgICAgICAgICAg ICAgIHJldCA9IGNsb3NlKGNvbnN1bWVyX2RhdGEtPmVycl9zb2NrKTsKPiAgICAgICAgICAgICAg ICAgaWYgKHJldCkgewo+IEBAIC0xNjAwLDEzICsxNjg2LDE1IEBAIGVycm9yOgo+Cj4gICAgICAg ICB1bmxpbmsoY29uc3VtZXJfZGF0YS0+ZXJyX3VuaXhfc29ja19wYXRoKTsKPiAgICAgICAgIHVu bGluayhjb25zdW1lcl9kYXRhLT5jbWRfdW5peF9zb2NrX3BhdGgpOwo+IC0gICAgICAgcHRocmVh ZF9tdXRleF91bmxvY2soJmNvbnN1bWVyX2RhdGEtPmxvY2spOwo+Cj4gICAgICAgICAvKiBDbGVh bnVwIG1ldGFkYXRhIHNvY2tldCBtdXRleC4gKi8KPiAgICAgICAgIGlmIChjb25zdW1lcl9kYXRh LT5tZXRhZGF0YV9zb2NrLmxvY2spIHsKPiAgICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleF9k ZXN0cm95KGNvbnN1bWVyX2RhdGEtPm1ldGFkYXRhX3NvY2subG9jayk7Cj4gICAgICAgICAgICAg ICAgIGZyZWUoY29uc3VtZXJfZGF0YS0+bWV0YWRhdGFfc29jay5sb2NrKTsKPiAgICAgICAgIH0K PiArCj4gKyAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmY29uc3VtZXJfZGF0YS0+bG9jayk7 Cj4gKwo+ICAgICAgICAgbHR0bmdfcG9sbF9jbGVhbigmZXZlbnRzKTsKPgo+ICAgICAgICAgaWYg KGNtZF9zb2NrZXRfd3JhcHBlcikgewo+IEBAIC0yNTYwLDI3ICsyNjQ4LDYgQEAgZXJyb3I6Cj4g IH0KPgo+ICAvKgo+IC0gKiBKb2luIGNvbnN1bWVyIHRocmVhZAo+IC0gKi8KPiAtc3RhdGljIGlu dCBqb2luX2NvbnN1bWVyX3RocmVhZChzdHJ1Y3QgY29uc3VtZXJfZGF0YSAqY29uc3VtZXJfZGF0 YSkKPiAtewo+IC0gICAgICAgdm9pZCAqc3RhdHVzOwo+IC0KPiAtICAgICAgIC8qIENvbnN1bWVy IHBpZCBtdXN0IGJlIGEgcmVhbCBvbmUuICovCj4gLSAgICAgICBpZiAoY29uc3VtZXJfZGF0YS0+ cGlkID4gMCkgewo+IC0gICAgICAgICAgICAgICBpbnQgcmV0Owo+IC0gICAgICAgICAgICAgICBy ZXQgPSBraWxsKGNvbnN1bWVyX2RhdGEtPnBpZCwgU0lHVEVSTSk7Cj4gLSAgICAgICAgICAgICAg IGlmIChyZXQpIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBQRVJST1IoIkVycm9yIGtpbGxp bmcgY29uc3VtZXIgZGFlbW9uIik7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPiAtICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICByZXR1cm4gcHRocmVhZF9q b2luKGNvbnN1bWVyX2RhdGEtPnRocmVhZCwgJnN0YXR1cyk7Cj4gLSAgICAgICB9IGVsc2Ugewo+ IC0gICAgICAgICAgICAgICByZXR1cm4gMDsKPiAtICAgICAgIH0KPiAtfQo+IC0KPiAtLyoKPiAg ICogRm9yayBhbmQgZXhlYyBhIGNvbnN1bWVyIGRhZW1vbiAoY29uc3VtZXJkKS4KPiAgICoKPiAg ICogUmV0dXJuIHBpZCBpZiBzdWNjZXNzZnVsIGVsc2UgLTEuCj4gQEAgLTQ3NDEsMjcgKzQ4MDgs NiBAQCBlcnJvcl9jcmVhdGVfcG9sbDoKPgo+ICAgICAgICAgcmN1X3VucmVnaXN0ZXJfdGhyZWFk KCk7Cj4KPiAtICAgICAgIC8qCj4gLSAgICAgICAgKiBTaW5jZSB3ZSBhcmUgY3JlYXRpbmcgdGhl IGNvbnN1bWVyIHRocmVhZHMsIHdlIG93biB0aGVtLCBzbyB3ZSBuZWVkCj4gLSAgICAgICAgKiB0 byBqb2luIHRoZW0gYmVmb3JlIG91ciB0aHJlYWQgZXhpdHMuCj4gLSAgICAgICAgKi8KPiAtICAg ICAgIHJldCA9IGpvaW5fY29uc3VtZXJfdGhyZWFkKCZrY29uc3VtZXJfZGF0YSk7Cj4gLSAgICAg ICBpZiAocmV0KSB7Cj4gLSAgICAgICAgICAgICAgIGVycm5vID0gcmV0Owo+IC0gICAgICAgICAg ICAgICBQRVJST1IoImpvaW5fY29uc3VtZXIiKTsKPiAtICAgICAgIH0KPiAtCj4gLSAgICAgICBy ZXQgPSBqb2luX2NvbnN1bWVyX3RocmVhZCgmdXN0Y29uc3VtZXIzMl9kYXRhKTsKPiAtICAgICAg IGlmIChyZXQpIHsKPiAtICAgICAgICAgICAgICAgZXJybm8gPSByZXQ7Cj4gLSAgICAgICAgICAg ICAgIFBFUlJPUigiam9pbl9jb25zdW1lciB1c3QzMiIpOwo+IC0gICAgICAgfQo+IC0KPiAtICAg ICAgIHJldCA9IGpvaW5fY29uc3VtZXJfdGhyZWFkKCZ1c3Rjb25zdW1lcjY0X2RhdGEpOwo+IC0g ICAgICAgaWYgKHJldCkgewo+IC0gICAgICAgICAgICAgICBlcnJubyA9IHJldDsKPiAtICAgICAg ICAgICAgICAgUEVSUk9SKCJqb2luX2NvbnN1bWVyIHVzdDY0Iik7Cj4gLSAgICAgICB9Cj4gICAg ICAgICByZXR1cm4gTlVMTDsKPiAgfQo+Cj4gQEAgLTU3ODUsNiArNTgzMSwxMSBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gICAgICAgICAgICAgICAgIGdvdG8gZXhpdF9pbml0 X2RhdGE7Cj4gICAgICAgICB9Cj4KPiArICAgICAgIGlmIChpbml0X3RocmVhZF9jb25zdW1lcnNf dGVhcmRvd25fdHJpZ2dlcl9waXBlKCkpIHsKPiArICAgICAgICAgICAgICAgcmV0dmFsID0gLTE7 Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXhpdF9pbml0X2RhdGE7Cj4gKyAgICAgICB9Cj4gKwo+ ICAgICAgICAgLyogQ2hlY2sgaWYgZGFlbW9uIGlzIFVJRCA9IDAgKi8KPiAgICAgICAgIGlzX3Jv b3QgPSAhZ2V0dWlkKCk7Cj4KPiBAQCAtNjQwNiwxMSArNjQ1Nyw4IEBAIGV4aXRfaW5pdF9kYXRh Ogo+ICAgICAgICAgICogcGVyZm9ybSBsb29rdXBzIGluIHRob3NlIHN0cnVjdHVyZXMuCj4gICAg ICAgICAgKi8KPiAgICAgICAgIHJjdV9iYXJyaWVyKCk7Cj4gLSAgICAgICAvKgo+IC0gICAgICAg ICogc2Vzc2lvbmRfY2xlYW51cCgpIGlzIGNhbGxlZCB3aGVuIG5vIG90aGVyIHRocmVhZCBpcyBy dW5uaW5nLCBleGNlcHQKPiAtICAgICAgICAqIHRoZSBodF9jbGVhbnVwIHRocmVhZCwgd2hpY2gg aXMgbmVlZGVkIHRvIGRlc3Ryb3kgdGhlIGhhc2ggdGFibGVzLgo+IC0gICAgICAgICovCj4gICAg ICAgICByY3VfdGhyZWFkX29ubGluZSgpOwo+ICsKPiAgICAgICAgIHNlc3Npb25kX2NsZWFudXAo KTsKPgo+ICAgICAgICAgLyoKPiBAQCAtNjQ2MSw2ICs2NTA5LDggQEAgZXhpdF9pbml0X2RhdGE6 Cj4gICAgICAgICAgICAgICAgIHJldHZhbCA9IC0xOwo+ICAgICAgICAgfQo+Cj4gKyAgICAgICAv KiBDb25zdW1lcnMgdGhyZWFkIHRlYXJkb3duIHBpcGUgY2xlYW51cCAqLwo+ICsgICAgICAgdXRp bHNfY2xvc2VfcGlwZSh0aHJlYWRfY29uc3VtZXJzX3RlYXJkb3duX3RyaWdnZXJfcGlwZSk7Cj4g ICAgICAgICAvKiBIZWFsdGggdGhyZWFkIHRlYXJkb3duIHBpcGUgY2xlYW51cCAqLwo+ICAgICAg ICAgdXRpbHNfY2xvc2VfcGlwZSh0aHJlYWRfaGVhbHRoX3RlYXJkb3duX3RyaWdnZXJfcGlwZSk7 Cj4gICAgICAgICAvKiBBcHBzIHRocmVhZCB0ZWFyZG93biBwaXBlIGNsZWFudXAgKi8KPiAtLQo+ IDIuMTEuMAo+CgoKCi0tIApKw6lyw6ltaWUgR2FsYXJuZWF1CkVmZmljaU9TIEluYy4KaHR0cDov L3d3dy5lZmZpY2lvcy5jb20KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbHR0bmctZGV2IG1haWxpbmcgbGlzdApsdHRuZy1kZXZAbGlzdHMubHR0bmcub3Jn Cmh0dHBzOi8vbGlzdHMubHR0bmcub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9sdHRuZy1k ZXYK