Re: [f2fs-dev] [PATCH] f2fs: quiesce background threads during system suspend using PM notifier
Chao Yu via Linux-f2fs-devel <[email protected]> Wed, 5 Aug 2026 09:51:03 +0800
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
T24gOC81LzI2IDAxOjM1LCBEYWVobyBKZW9uZyB3cm90ZToKPiBPbiBUdWUsIEF1ZyA0LCAyMDI2 IGF0IDQ6MjTigK9BTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdyb3RlOgo+Pgo+PiBPbiA4 LzQvMjYgMDI6NDIsIERhZWhvIEplb25nIHdyb3RlOgo+Pj4gT24gTW9uLCBBdWcgMywgMjAyNiBh dCAyOjA44oCvQU0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3JnPiB3cm90ZToKPj4+Pgo+Pj4+IE9u IDcvMzAvMjYgMDM6MjMsIERhZWhvIEplb25nIHdyb3RlOgo+Pj4+PiBGcm9tOiBEYWVobyBKZW9u ZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+Pj4+Pgo+Pj4+PiBEdXJpbmcgc3lzdGVtIHN1c3Bl bmQsIGEgcmFjZSBjb25kaXRpb24gY2FuIGNhdXNlIGYyZnNfZ2MgYW5kIGYyZnNfZGlzY2FyZAo+ Pj4+PiB0aHJlYWRzIHRvIGNhbGwgc3VibWl0X2JpbygpIHdoaWxlIHRoZSB1bmRlcmx5aW5nIGJs b2NrIGRldmljZSAoZS5nLiwgVUZTKQo+Pj4+PiBpcyBpbiBSdW50aW1lIFBNIHN1c3BlbmQuIEJl Y2F1c2UgUnVudGltZSBQTSB3b3JrZXIgdGhyZWFkcyBhcmUgYWxyZWFkeQo+Pj4+PiBmcm96ZW4g ZHVyaW5nIHRhc2sgZnJlZXppbmcsIHRoZSB0aHJlYWRzIGJlY29tZSB0cmFwcGVkIGluCj4+Pj4+ IF9fYmlvX3F1ZXVlX2VudGVyKCkgd2FpdGluZyBvbiBtcV9mcmVlemVfd3EsIGxlYWRpbmcgdG8g YSBQTSBmcmVlemVyCj4+Pj4+IHRpbWVvdXQuCj4+Pj4+Cj4+Pj4+IFRvIHByZXZlbnQgdGhpcyBk ZWFkbG9jaywgcmVnaXN0ZXIgYSBQTSBub3RpZmllciB0byBzZXQgU0JJX0lTX1NVU1BFTkRJTkcK Pj4+Pj4gZHVyaW5nIFBNX1NVU1BFTkRfUFJFUEFSRS4gQmFja2dyb3VuZCBHQyBhbmQgZGlzY2Fy ZCB0aHJlYWRzIGNoZWNrIHRoaXMKPj4+Pgo+Pj4+IFNob3VsZCB3ZSBjb3ZlciBpc3N1ZV9mbHVz aF90aHJlYWQgYW5kIGlzc3VlX2NoZWNrcG9pbnRfdGhyZWFkIGFzIHdlbGwgaW4KPj4+PiB3aGVy ZSB3ZSB3aWxsIHN1Ym1pdCBiaW8/Cj4+Pgo+Pj4gVW5saWtlIEdDIGFuZCBkaXNjYXJkLCB3aGlj aCBhcmUgYmFja2dyb3VuZCBvcHRpbWl6YXRpb24gdGFza3MgYW5kIGNhbgo+Pj4gYmUgc2FmZWx5 IHBhdXNlZCwgb3RoZXIgb3BlcmF0aW9ucyBsaWtlIGNoZWNrcG9pbnQgYXJlIGNyaXRpY2FsIGZv cgo+Pj4gZGF0YSBjb25zaXN0ZW5jeS4KPj4+IEl0IGlzIGJldHRlciBub3QgdG8gaW50ZXJydXB0 IHRoZW0gaW4gdGhlIG1pZGRsZSBvZiB0aGVpciBwcm9ncmVzcy4gSWYKPj4+IHRoZXkgYXJlIHJ1 bm5pbmcgYW5kIHRha2UgdG9vIGxvbmcsIGl0IGlzIHNhZmVyIHRvIGp1c3QgbGV0IHRoZSBzeXN0 ZW0KPj4+IHN1c3BlbmQgdGVtcG9yYXJpbHkgZmFpbCByYXRoZXIgdGhhbiBmb3JjaWJseSBicmVh a2luZyB0aGVpcgo+Pj4gb3BlcmF0aW9ucy4KPj4KPj4gU28gd2h5IGZvcmVncm91bmQgdGhyZWFk IGxpa2UgY2twdCB0aHJlYWQgb3IgZmx1c2ggdGhyZWFkIHdvbid0IHN1ZmZlciB0aGUKPj4gc2Ft ZSBpc3N1ZSBsaWtlIGdjIG9yIGRpc2NhcmQgdGhyZWFkPyBiZWNhdXNlIGZvcmVncm91bmQgdGhy ZWFkIHdpbGwgcHJldmVudAo+PiBVRlMgZnJvbSBydW5uaW5nIGludG8gc3VzcGVuZCBzdGF0ZT8g SSBtYXkgbWlzc2VkIHNvbWV0aGluZyBoZXJlLiA6KQo+Pgo+IAo+IEZvcmVncm91bmQgdGhyZWFk cyAoY2twdC9mbHVzaCkgaXNzdWUgSS9PIG9uLWRlbWFuZCBmb3IgZGlydHkgZGF0YSBzeW5jLgo+ IElmIHN1c3BlbmQgYWJvcnRzIGR1ZSB0byBhY3RpdmUgSS9PLCBpdCBpcyBsZWdpdGltYXRlIGFu ZCBleHBlY3RlZAo+IGJlaGF2aW9yIHJhdGhlciB0aGFuIGFuIGlzc3VlLCBhcyBpdCBpcyBhIG5l Y2Vzc2FyeSBmaWxlc3lzdGVtCj4gb3BlcmF0aW9uIHVuZGVyIGEgbm9uLWlkbGUgd29ya2xvYWQu CgpPa2F5LCBzbyBpZiBja3B0L2ZsdXNoIGFyZSBhY3RpdmUsIHRoYXQgbWVhbnMgdGhlcmUgYXJl IHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgYXJlCndhaXRpbmcgZm9yIGNoZWNrcG9pbnQvZmx1c2gg Y29tcGxldGlvbiwgc28gZnJlZXplX3Byb2Nlc3NlcygpIGZvcm0gc3lzdGVtIHN1c3BlbmQKc3Rp bGwgZGlkbid0IGNvbXBsZXRpb24sIGFuZCBpdCB3b24ndCBlbnRlciBwaGFzZSAyIChkZXZpY2Ug c3VzcGVuZCAmIGZyZWV6aW5nIHBtX3dxKS4KCkxldCBtZSBrbm93IGlmIEkgdW5kZXJzdGFuZCBp dCBjb3JyZWN0bHkuCgo+IEluIGNvbnRyYXN0LCBmMmZzX2djIGFuZCBmMmZzX2Rpc2NhcmQgYXJl IGF1dG9ub21vdXMgYmFja2dyb3VuZAo+IHRocmVhZHMgd2FraW5nIHVwIGV2ZW4gb24gYW4gaWRs ZSBzeXN0ZW0gd2l0aCBVRlMgaW4gUnVudGltZSBQTQo+IHN1c3BlbmQsIHdoaWNoIGlzIHRoZSBt YWluIGNhdXNlIG9mIFVGUyBkZWFkbG9jayB3aGVuIGVudGVyaW5nIHRoZQo+IHN1c3BlbmQuCj4g V2l0aCBaVUZTLCBHQyBydW5zIG11Y2ggbW9yZSBmcmVxdWVudGx5LCBjYXVzaW5nIGZyZXF1ZW50 IHN1c3BlbmQgYWJvcnRzLgo+IAo+Pj4KPj4+Pgo+Pj4+PiBmbGFnIGFuZCBpbW1lZGlhdGVseSBz dG9wIGlzc3VpbmcgbmV3IGJpb3MsIGFsbG93aW5nIHRoZW0gdG8gZW50ZXIgYQo+Pj4+PiBmcmVl emFibGUgc2xlZXAgc3RhdGUgY2xlYW5seSBiZWZvcmUgcHJvY2VzcyBmcmVlemluZyBiZWdpbnMu Cj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IERhZWhvIEplb25nIDxkYWVob2plb25nQGdvb2ds ZS5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiAgIGZzL2YyZnMvZjJmcy5oICAgIHwgIDMgKysrCj4+Pj4+ ICAgZnMvZjJmcy9nYy5jICAgICAgfCAxMyArKysrKysrKy0tLS0tCj4+Pj4+ICAgZnMvZjJmcy9z ZWdtZW50LmMgfCAxMyArKysrKysrKystLS0tCj4+Pj4+ICAgZnMvZjJmcy9zdXBlci5jICAgfCAy NSArKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA0NSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+Pj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvZnMv ZjJmcy9mMmZzLmggYi9mcy9mMmZzL2YyZnMuaAo+Pj4+PiBpbmRleCBmMjRlMzBiYjVjM2QuLmM0 NmJmNGRmOTQxMiAxMDA2NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9mMmZzLmgKPj4+Pj4gKysrIGIv ZnMvZjJmcy9mMmZzLmgKPj4+Pj4gQEAgLTI1LDYgKzI1LDcgQEAKPj4+Pj4gICAjaW5jbHVkZSA8 bGludXgvcXVvdGFvcHMuaD4KPj4+Pj4gICAjaW5jbHVkZSA8bGludXgvcGFydF9zdGF0Lmg+Cj4+ Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L3J3X2hpbnQuaD4KPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9z dXNwZW5kLmg+Cj4+Pj4+Cj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L2ZzY3J5cHQuaD4KPj4+Pj4g ICAjaW5jbHVkZSA8bGludXgvZnN2ZXJpdHkuaD4KPj4+Pj4gQEAgLTE0OTQsNiArMTQ5NSw3IEBA IGVudW0gewo+Pj4+PiAgICAgICBTQklfSVNfRlJFRVpJTkcsICAgICAgICAgICAgICAgICAgICAg ICAgLyogZnJlZXplZnMgaXMgaW4gcHJvY2VzcyAqLwo+Pj4+PiAgICAgICBTQklfSVNfV1JJVEFC TEUsICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVtb3ZlIHJvIG1vdW50b3B0aW9uIHRyYW5z aWVudGx5ICovCj4+Pj4+ICAgICAgIFNCSV9FTkFCTEVfQ0hFQ0tQT0lOVCwgICAgICAgICAgICAg ICAgICAvKiBpbmRpY2F0ZSBpdCdzIGR1cmluZyBmMmZzX2VuYWJsZV9jaGVja3BvaW50KCkgKi8K Pj4+Pj4gKyAgICAgU0JJX0lTX1NVU1BFTkRJTkcsICAgICAgICAgICAgICAgICAgICAgIC8qIHN5 c3RlbSBzdXNwZW5kIGlzIGluIHByb2dyZXNzICovCj4+Pj4+ICAgICAgIE1BWF9TQklfRkxBRywK Pj4+Pj4gICB9Owo+Pj4+Pgo+Pj4+PiBAQCAtMTc1Nyw2ICsxNzU5LDcgQEAgc3RydWN0IGYyZnNf c2JfaW5mbyB7Cj4+Pj4+ICAgICAgIHN0cnVjdCBmMmZzX3J3c2VtIHNiX2xvY2s7ICAgICAgICAg ICAgICAvKiBsb2NrIGZvciByYXcgc3VwZXIgYmxvY2sgKi8KPj4+Pj4gICAgICAgaW50IHZhbGlk X3N1cGVyX2Jsb2NrOyAgICAgICAgICAgICAgICAgIC8qIHZhbGlkIHN1cGVyIGJsb2NrIG5vICov Cj4+Pj4+ICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnOyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIGZsYWdzIGZvciBzYmkgKi8KPj4+Pj4gKyAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2Nr IHBtX25iOyAgICAgICAgICAgIC8qIGZvciBQTSBub3RpZmllciAqLwo+Pj4+PiAgICAgICBzdHJ1 Y3QgbXV0ZXggd3JpdGVwYWdlczsgICAgICAgICAgICAgICAgLyogbXV0ZXggZm9yIHdyaXRlcGFn ZXMoKSAqLwo+Pj4+Pgo+Pj4+PiAgICNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+Pj4+PiBk aWZmIC0tZ2l0IGEvZnMvZjJmcy9nYy5jIGIvZnMvZjJmcy9nYy5jCj4+Pj4+IGluZGV4IDkzYmNi MzVhNWI1ZC4uODZiMmIyOTQwMmE1IDEwMDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL2djLmMKPj4+ Pj4gKysrIGIvZnMvZjJmcy9nYy5jCj4+Pj4+IEBAIC03MSw3ICs3MSw4IEBAIHN0YXRpYyBpbnQg Z2NfdGhyZWFkX2Z1bmModm9pZCAqZGF0YSkKPj4+Pj4gICAgICAgICAgICAgICBpZiAoa3RocmVh ZF9zaG91bGRfc3RvcCgpKQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+ Cj4+Pj4+IC0gICAgICAgICAgICAgaWYgKHNiaS0+c2ItPnNfd3JpdGVycy5mcm96ZW4gPj0gU0Jf RlJFRVpFX1dSSVRFKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKHNiaS0+c2ItPnNfd3JpdGVy cy5mcm96ZW4gPj0gU0JfRlJFRVpFX1dSSVRFIHx8Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICBpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykpIHsKPj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgIGluY3JlYXNlX3NsZWVwX3RpbWUoZ2NfdGgsICZ3YWl0X21zKTsKPj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgIHN0YXRfb3RoZXJfc2tpcF9iZ2djX2NvdW50KHNiaSk7 Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+Pj4gQEAgLTEwNjQsOCAr MTA2NSw5IEBAIHN0YXRpYyBpbnQgZ2Nfbm9kZV9zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwKPj4+Pj4gICAgICAgICAgICAgICBzdHJ1Y3Qgbm9kZV9pbmZvIG5pOwo+Pj4+PiAgICAg ICAgICAgICAgIGludCBlcnI7Cj4+Pj4+Cj4+Pj4+IC0gICAgICAgICAgICAgLyogc3RvcCBCR19H QyBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc2VjdGlvbnMuICovCj4+Pj4+IC0gICAgICAg ICAgICAgaWYgKGdjX3R5cGUgPT0gQkdfR0MgJiYgaGFzX25vdF9lbm91Z2hfZnJlZV9zZWNzKHNi aSwgMCwgMCkpCj4+Pj4+ICsgICAgICAgICAgICAgLyogc3RvcCBCR19HQyBpZiB0aGVyZSBpcyBu b3QgZW5vdWdoIGZyZWUgc2VjdGlvbnMgb3Igc3VzcGVuZGluZy4gKi8KPj4+Pj4gKyAgICAgICAg ICAgICBpZiAoZ2NfdHlwZSA9PSBCR19HQyAmJiAoaGFzX25vdF9lbm91Z2hfZnJlZV9zZWNzKHNi aSwgMCwgMCkgfHwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp c19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykpKQo+Pj4+PiAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdHRlZDsKPj4+Pj4KPj4+Pj4gICAgICAgICAgICAgICBp ZiAoY2hlY2tfdmFsaWRfbWFwKHNiaSwgc2Vnbm8sIG9mZikgPT0gMCkKPj4+Pj4gQEAgLTE2MTEs NyArMTYxMyw4IEBAIHN0YXRpYyBpbnQgZ2NfZGF0YV9zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgc3RydWN0IGYyZnNfc3VtbWFyeSAqc3VtLAo+Pj4+PiAgICAgICAgICAgICAgICAq IE9yLCBzdG9wIEdDIGlmIHRoZSBzZWdtZW50IGJlY29tZXMgZnVsbHkgdmFsaWQgY2F1c2VkIGJ5 Cj4+Pj4+ICAgICAgICAgICAgICAgICogcmFjZSBjb25kaXRpb24gYWxvbmcgd2l0aCBTU1IgYmxv Y2sgYWxsb2NhdGlvbi4KPj4+Pj4gICAgICAgICAgICAgICAgKi8KPj4+Pj4gLSAgICAgICAgICAg ICBpZiAoKGdjX3R5cGUgPT0gQkdfR0MgJiYgaGFzX25vdF9lbm91Z2hfZnJlZV9zZWNzKHNiaSwg MCwgMCkpIHx8Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKChnY190eXBlID09IEJHX0dDICYmICho YXNfbm90X2Vub3VnaF9mcmVlX3NlY3Moc2JpLCAwLCAwKSB8fAo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9JU19TVVNQ RU5ESU5HKSkpIHx8Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAoIWZvcmNlX21pZ3JhdGUg JiYgZ2V0X3ZhbGlkX2Jsb2NrcyhzYmksIHNlZ25vLCB0cnVlKSA9PQo+Pj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQVBfQkxLU19QRVJf U0VDKHNiaSkpKQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdHRlZDsK Pj4+Pj4gQEAgLTIwMTUsNyArMjAxOCw3IEBAIGludCBmMmZzX2djKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgc3RydWN0IGYyZnNfZ2NfY29udHJvbCAqZ2NfY29udHJvbCkKPj4+Pj4gICAgICAg ICAgICAgICBnb3RvIHN0b3A7Cj4+Pj4+ICAgICAgIH0KPj4+Pj4gICByZXRyeToKPj4+Pj4gLSAg ICAgaWYgKHVubGlrZWx5KGZyZWV6aW5nKGN1cnJlbnQpKSkgewo+Pj4+Cj4+Pj4gU2hvdWxkbid0 IHdlIGtlZXAgb3JpZ2luYWwgZnJlZXppbmcgbG9naWM/IGluIGNhc2UgZmlsZXN5c3RlbSBhcmUg ZnJvemVuCj4+Pj4gd2hlbiBsb3cgZGV2aWNlIHNuYXBzaG90IGlzIHRyaWdnZXJlZD8KPj4+Cj4+ PiBTaW5jZSB0aGUgcnVudGltZSBQTSBzdXNwZW5kL3Jlc3VtZSB3b3JrZXJzIGFyZSBvbmx5IGZy b3plbiBkdXJpbmcKPj4+IHN5c3RlbS13aWRlIFBNIHRyYW5zaXRpb25zIChzdXNwZW5kL2hpYmVy bmF0aW9uKSwgdGhlIFBNIG5vdGlmaWVyCj4+PiBhcHByb2FjaCB3aXRoIFNCSV9JU19TVVNQRU5E SU5HIHN1ZmZpY2llbnRseSBwcmV2ZW50cyB0aGUgZGVhZGxvY2suCj4+Cj4+IFdoYXQgSSBtZWFu IGlzOgo+Pgo+PiBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcpIHx8 IHVubGlrZWx5KGZyZWV6aW5nKGN1cnJlbnQpKSkgewo+Pgo+PiBvdGhlcndpc2UsIGdjIHRocmVh ZCBvciBkaXNjYXJkIHRocmVhZCB3b24ndCBkZXRlY3QgZnJlZXplIHN0YXRlLCBhbmQgd2lsbAo+ PiBjb250aW51ZSB0byB0cmlnZ2VyIElPIGluIGJhY2tncm91bmQgZXZlbiB0aGVyZSBpcyBhIHN5 c3RlbSBmcmVlemUgcmVxdWVzdAo+PiBmcm9tIGRldmljZSBzbmFwc2hvdCBvciBjZ3JvdXAgZnJl ZXppbmcsIHJpZ2h0Pwo+Pgo+IAo+IFRoZSBoYW5nIGluIHN5c3RlbSBzdXNwZW5kIGhhcHBlbnMg YmVjYXVzZSBSdW50aW1lIFBNIHdvcmtlcnMgKHBtX3dxKQo+IGFyZSBmcm96ZW4sIHNvIFVGUyBj YW5ub3QgYmUgcmVzdW1lZCBmcm9tIHN1Ym1pdF9iaW8oKS4KPiBEdXJpbmcgY2dyb3VwIGZyZWV6 ZSBvciBzbmFwc2hvdCwgSSBiZWxpZXZlIHBtX3dxIGlzIGFsaXZlLCBzbyBVRlMKPiByZXN1bWVz IGluIGEgZmV3IG1zIGFuZCBJL08gZmluaXNoZXMgd2l0aG91dCBkZWFkbG9jay4gQWxzbywKPiB3 YWl0X2V2ZW50X2ZyZWV6YWJsZV90aW1lb3V0KCkgd2lsbCBmcmVlemUgdGhlIHRocmVhZHMgd2hl biB0aGV5Cj4gc2xlZXAuCgpIZXJlLCB3ZSBuZWVkIHRvIGRldGVjdCB0aGUgZnJlZXppbmcgc3Rh dGUgYW5kIHN0b3AgaXNzdWluZyBhbnkgbmV3IEkvTwppbW1lZGlhdGVseSBiZWNhdXNlIG5vbi1Q TSBmcmVlemluZyBtZWNoYW5pc21zIChzdWNoIGFzIGRtLXNuYXBzaG90IG9yCmNncm91cCBmcmVl emVyKSByZXF1aXJlIHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0vZGV2aWNlIHRvIHJlYWNoIGEK cXVpZXNjZW50IChzdGF0aWMpIHN0YXRlLiBJdCdzIG5vdCBsaW1pdGVkIHN0cmljdGx5IHRvIHRo ZSBQTSBzdXNwZW5kCnN0YXRlLgoKPiAKPiBJZiB5b3UgcHJlZmVyIGtlZXBpbmcgZnJlZXppbmco Y3VycmVudCkgYXMgYSBmYXN0IHBhdGggZm9yIG5vbi1QTQo+IGZyZWV6aW5nLCBJIGNhbiBjaGFu Z2UgaXQgdG86Cj4gaWYgKGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9JU19TVVNQRU5ESU5HKSB8 fCB1bmxpa2VseShmcmVlemluZyhjdXJyZW50KSkpCj4gRG8geW91IHN0aWxsIHRoaW5rIGl0IGlz IHJlcXVpcmVkPyBJZiBzbywgcGx6LCBsZXQgbWUga25vdy4KClllcywgcGxlYXNlLgoKVGhhbmtz LAoKPiAKPiBUaGFua3MuCj4gCj4+IFRoYW5rcywKPj4KPj4+Cj4+PiBUaGFua3MsCj4+Pgo+Pj4+ Cj4+Pj4+ICsgICAgIGlmIChpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykp IHsKPj4+Pj4gICAgICAgICAgICAgICByZXQgPSAwOwo+Pj4+PiAgICAgICAgICAgICAgIGdvdG8g c3RvcDsKPj4+Pj4gICAgICAgfQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMg Yi9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4+PiBpbmRleCBkNzBkYzVlZjNkZTQuLmUyNzE5Nzk1MzM1 NiAxMDA2NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmMKPj4+Pj4gKysrIGIvZnMvZjJm cy9zZWdtZW50LmMKPj4+Pj4gQEAgLTEzMDAsNyArMTMwMCw4IEBAIHN0YXRpYyBpbnQgX19zdWJt aXRfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiAgICAgICBpZiAo ZGMtPnN0YXRlICE9IERfUFJFUCkKPj4+Pj4gICAgICAgICAgICAgICByZXR1cm4gMDsKPj4+Pj4K Pj4+Pj4gLSAgICAgaWYgKGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9ORUVEX0ZTQ0spKQo+Pj4+ PiArICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX05FRURfRlNDSykgfHwKPj4+Pj4g KyAgICAgICAgICAgICBpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykpCj4+ Pj4+ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+Cj4+Pj4+ICAgI2lmZGVmIENPTkZJR19C TEtfREVWX1pPTkVECj4+Pj4+IEBAIC0xMzQxLDYgKzEzNDIsOSBAQCBzdGF0aWMgaW50IF9fc3Vi bWl0X2Rpc2NhcmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+PiAgICAgICAgICAgICAgIGJvb2wgbGFzdCA9 IHRydWU7Cj4+Pj4+Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKGlzX3NiaV9mbGFnX3NldChzYmks IFNCSV9JU19TVVNQRU5ESU5HKSkKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ Pj4+PiArCj4+Pj4+ICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1heF9kaXNjYXJkX2Jsb2Nrcykg ewo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWF4X2Rpc2NhcmRfYmxvY2tzOwo+ Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGZhbHNlOwo+Pj4+PiBAQCAtMTYxNSw3 ICsxNjE5LDcgQEAgc3RhdGljIHZvaWQgX19pc3N1ZV9kaXNjYXJkX2NtZF9vcmRlcmx5KHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAgICAgICAgICAgICBpZiAoZGMtPnN0YXRlICE9 IERfUFJFUCkKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dDsKPj4+Pj4KPj4+ Pj4gLSAgICAgICAgICAgICBpZiAoKmlzc3VlZCA+IDAgJiYgdW5saWtlbHkoZnJlZXppbmcoY3Vy cmVudCkpKQo+Pj4+Cj4+Pj4gRGl0dG8sCj4+Pj4KPj4+Pj4gKyAgICAgICAgICAgICBpZiAoaXNf c2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcpKQo+Pj4+PiAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgICAgICAgaWYgKGRwb2xpY3ktPmlv X2F3YXJlICYmICFpc19pZGxlKHNiaSwgRElTQ0FSRF9USU1FKSkgewo+Pj4+PiBAQCAtMTY4OCw3 ICsxNjkyLDcgQEAgc3RhdGljIGludCBfX2lzc3VlX2Rpc2NhcmRfY21kKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwKPj4+Pj4gICAgICAgICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo ZGMsIHRtcCwgcGVuZF9saXN0LCBsaXN0KSB7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICBm MmZzX2J1Z19vbihzYmksIGRjLT5zdGF0ZSAhPSBEX1BSRVApOwo+Pj4+Pgo+Pj4+PiAtICAgICAg ICAgICAgICAgICAgICAgaWYgKGlzc3VlZCA+IDAgJiYgdW5saWtlbHkoZnJlZXppbmcoY3VycmVu dCkpKSB7Cj4+Pj4KPj4+PiBEaXR0bywKPj4+Pgo+Pj4+IFRoYW5rcywKPj4+Pgo+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgaWYgKGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9JU19TVVNQRU5E SU5HKSkgewo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXNwZW5kZWQgPSB0 cnVlOwo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgIH0KPj4+Pj4gQEAgLTE5NTUsNyArMTk1OSw4IEBAIHN0YXRpYyBp bnQgaXNzdWVfZGlzY2FyZF90aHJlYWQodm9pZCAqZGF0YSkKPj4+Pj4gICAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOwo+Pj4+PiAgICAgICAgICAgICAgIGlmIChrdGhyZWFkX3Nob3VsZF9z dG9wKCkpCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4+Pj4gLSAgICAg ICAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX05FRURfRlNDSykgfHwKPj4+Pj4g KyAgICAgICAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcp IHx8Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklf TkVFRF9GU0NLKSB8fAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIWF0b21pY19yZWFkKCZk Y2MtPmRpc2NhcmRfY21kX2NudCkpIHsKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIHdhaXRf bXMgPSBkcG9saWN5Lm1heF9pbnRlcnZhbDsKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+Pj4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zdXBlci5jIGIvZnMvZjJmcy9zdXBl ci5jCj4+Pj4+IGluZGV4IGQ1ZGM4M2U2MTNlMi4uNTM2ZjNmZmU1MzU0IDEwMDY0NAo+Pj4+PiAt LS0gYS9mcy9mMmZzL3N1cGVyLmMKPj4+Pj4gKysrIGIvZnMvZjJmcy9zdXBlci5jCj4+Pj4+IEBA IC0xOTc5LDYgKzE5NzksMjYgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9kZXZpY2VfbGlzdChzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+Pj4+ICAgICAgIGt2ZnJlZShzYmktPmRldnMpOwo+Pj4+ PiAgIH0KPj4+Pj4KPj4+Pj4gK3N0YXRpYyBpbnQgZjJmc19wbV9ub3RpZmllcihzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgKm5iLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgYWN0aW9uLCB2b2lkICpwdHIpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgIHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSA9IGNvbnRhaW5lcl9vZihuYiwgc3RydWN0IGYyZnNfc2JfaW5mbywgcG1f bmIpOwo+Pj4+PiArCj4+Pj4+ICsgICAgIHN3aXRjaCAoYWN0aW9uKSB7Cj4+Pj4+ICsgICAgIGNh c2UgUE1fSElCRVJOQVRJT05fUFJFUEFSRToKPj4+Pj4gKyAgICAgY2FzZSBQTV9TVVNQRU5EX1BS RVBBUkU6Cj4+Pj4+ICsgICAgIGNhc2UgUE1fUkVTVE9SRV9QUkVQQVJFOgo+Pj4+PiArICAgICAg ICAgICAgIHNldF9zYmlfZmxhZyhzYmksIFNCSV9JU19TVVNQRU5ESU5HKTsKPj4+Pj4gKyAgICAg ICAgICAgICBicmVhazsKPj4+Pj4gKyAgICAgY2FzZSBQTV9QT1NUX1NVU1BFTkQ6Cj4+Pj4+ICsg ICAgIGNhc2UgUE1fUE9TVF9ISUJFUk5BVElPTjoKPj4+Pj4gKyAgICAgY2FzZSBQTV9QT1NUX1JF U1RPUkU6Cj4+Pj4+ICsgICAgICAgICAgICAgY2xlYXJfc2JpX2ZsYWcoc2JpLCBTQklfSVNfU1VT UEVORElORyk7Cj4+Pj4+ICsgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4g KyAgICAgcmV0dXJuIE5PVElGWV9PSzsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAgIHN0YXRpYyB2 b2lkIGYyZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCj4+Pj4+ICAgewo+Pj4+ PiAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX1NCKHNiKTsKPj4+Pj4gQEAg LTE5ODYsNiArMjAwNiw4IEBAIHN0YXRpYyB2b2lkIGYyZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IpCj4+Pj4+ICAgICAgIGludCBlcnIgPSAwOwo+Pj4+PiAgICAgICBib29sIGRv bmU7Cj4+Pj4+Cj4+Pj4+ICsgICAgIHVucmVnaXN0ZXJfcG1fbm90aWZpZXIoJnNiaS0+cG1fbmIp Owo+Pj4+PiArCj4+Pj4+ICAgICAgIC8qIHVucmVnaXN0ZXIgcHJvY2ZzL3N5c2ZzIGVudHJpZXMg aW4gYWR2YW5jZSB0byBhdm9pZCByYWNlIGNhc2UgKi8KPj4+Pj4gICAgICAgZjJmc191bnJlZ2lz dGVyX3N5c2ZzKHNiaSk7Cj4+Pj4+Cj4+Pj4+IEBAIC01NDcyLDYgKzU0OTQsOSBAQCBzdGF0aWMg aW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29u dGV4dCAqZmMpCj4+Pj4+Cj4+Pj4+ICAgICAgIGYyZnNfcmVzdG9yZV9kZXZpY2VfYWxpYXMoc2Jp KTsKPj4+Pj4KPj4+Pj4gKyAgICAgc2JpLT5wbV9uYi5ub3RpZmllcl9jYWxsID0gZjJmc19wbV9u b3RpZmllcjsKPj4+Pj4gKyAgICAgcmVnaXN0ZXJfcG1fbm90aWZpZXIoJnNiaS0+cG1fbmIpOwo+ Pj4+PiArCj4+Pj4+ICAgICAgIHNiaS0+dW1vdW50X2xvY2tfaG9sZGVyID0gTlVMTDsKPj4+Pj4g ICAgICAgcmV0dXJuIDA7Cj4+Pj4+Cj4+Pj4KPj4KCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKTGlu dXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vm b3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAo=