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=