Re: [f2fs-dev] [PATCH] f2fs: quiesce background threads during system suspend using PM notifier

Daeho Jeong <[email protected]> Tue, 4 Aug 2026 10:35:00 -0700
Newsgroups net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel
Message-ID <CACOAw_y_SnSqcB6D6Yw5z7nkrFFr4aAHU6wj2KW4U2N7TeFMNQ@mail.gmail.com>
T24gVHVlLCBBdWcgNCwgMjAyNiBhdCA0OjI04oCvQU0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3Jn
PiB3cm90ZToKPgo+IE9uIDgvNC8yNiAwMjo0MiwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPiBPbiBN
b24sIEF1ZyAzLCAyMDI2IGF0IDI6MDjigK9BTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdy
b3RlOgo+ID4+Cj4gPj4gT24gNy8zMC8yNiAwMzoyMywgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPj4+
IEZyb206IERhZWhvIEplb25nIDxkYWVob2plb25nQGdvb2dsZS5jb20+Cj4gPj4+Cj4gPj4+IER1
cmluZyBzeXN0ZW0gc3VzcGVuZCwgYSByYWNlIGNvbmRpdGlvbiBjYW4gY2F1c2UgZjJmc19nYyBh
bmQgZjJmc19kaXNjYXJkCj4gPj4+IHRocmVhZHMgdG8gY2FsbCBzdWJtaXRfYmlvKCkgd2hpbGUg
dGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlIChlLmcuLCBVRlMpCj4gPj4+IGlzIGluIFJ1bnRp
bWUgUE0gc3VzcGVuZC4gQmVjYXVzZSBSdW50aW1lIFBNIHdvcmtlciB0aHJlYWRzIGFyZSBhbHJl
YWR5Cj4gPj4+IGZyb3plbiBkdXJpbmcgdGFzayBmcmVlemluZywgdGhlIHRocmVhZHMgYmVjb21l
IHRyYXBwZWQgaW4KPiA+Pj4gX19iaW9fcXVldWVfZW50ZXIoKSB3YWl0aW5nIG9uIG1xX2ZyZWV6
ZV93cSwgbGVhZGluZyB0byBhIFBNIGZyZWV6ZXIKPiA+Pj4gdGltZW91dC4KPiA+Pj4KPiA+Pj4g
VG8gcHJldmVudCB0aGlzIGRlYWRsb2NrLCByZWdpc3RlciBhIFBNIG5vdGlmaWVyIHRvIHNldCBT
QklfSVNfU1VTUEVORElORwo+ID4+PiBkdXJpbmcgUE1fU1VTUEVORF9QUkVQQVJFLiBCYWNrZ3Jv
dW5kIEdDIGFuZCBkaXNjYXJkIHRocmVhZHMgY2hlY2sgdGhpcwo+ID4+Cj4gPj4gU2hvdWxkIHdl
IGNvdmVyIGlzc3VlX2ZsdXNoX3RocmVhZCBhbmQgaXNzdWVfY2hlY2twb2ludF90aHJlYWQgYXMg
d2VsbCBpbgo+ID4+IHdoZXJlIHdlIHdpbGwgc3VibWl0IGJpbz8KPiA+Cj4gPiBVbmxpa2UgR0Mg
YW5kIGRpc2NhcmQsIHdoaWNoIGFyZSBiYWNrZ3JvdW5kIG9wdGltaXphdGlvbiB0YXNrcyBhbmQg
Y2FuCj4gPiBiZSBzYWZlbHkgcGF1c2VkLCBvdGhlciBvcGVyYXRpb25zIGxpa2UgY2hlY2twb2lu
dCBhcmUgY3JpdGljYWwgZm9yCj4gPiBkYXRhIGNvbnNpc3RlbmN5Lgo+ID4gSXQgaXMgYmV0dGVy
IG5vdCB0byBpbnRlcnJ1cHQgdGhlbSBpbiB0aGUgbWlkZGxlIG9mIHRoZWlyIHByb2dyZXNzLiBJ
Zgo+ID4gdGhleSBhcmUgcnVubmluZyBhbmQgdGFrZSB0b28gbG9uZywgaXQgaXMgc2FmZXIgdG8g
anVzdCBsZXQgdGhlIHN5c3RlbQo+ID4gc3VzcGVuZCB0ZW1wb3JhcmlseSBmYWlsIHJhdGhlciB0
aGFuIGZvcmNpYmx5IGJyZWFraW5nIHRoZWlyCj4gPiBvcGVyYXRpb25zLgo+Cj4gU28gd2h5IGZv
cmVncm91bmQgdGhyZWFkIGxpa2UgY2twdCB0aHJlYWQgb3IgZmx1c2ggdGhyZWFkIHdvbid0IHN1
ZmZlciB0aGUKPiBzYW1lIGlzc3VlIGxpa2UgZ2Mgb3IgZGlzY2FyZCB0aHJlYWQ/IGJlY2F1c2Ug
Zm9yZWdyb3VuZCB0aHJlYWQgd2lsbCBwcmV2ZW50Cj4gVUZTIGZyb20gcnVubmluZyBpbnRvIHN1
c3BlbmQgc3RhdGU/IEkgbWF5IG1pc3NlZCBzb21ldGhpbmcgaGVyZS4gOikKPgoKRm9yZWdyb3Vu
ZCB0aHJlYWRzIChja3B0L2ZsdXNoKSBpc3N1ZSBJL08gb24tZGVtYW5kIGZvciBkaXJ0eSBkYXRh
IHN5bmMuCklmIHN1c3BlbmQgYWJvcnRzIGR1ZSB0byBhY3RpdmUgSS9PLCBpdCBpcyBsZWdpdGlt
YXRlIGFuZCBleHBlY3RlZApiZWhhdmlvciByYXRoZXIgdGhhbiBhbiBpc3N1ZSwgYXMgaXQgaXMg
YSBuZWNlc3NhcnkgZmlsZXN5c3RlbQpvcGVyYXRpb24gdW5kZXIgYSBub24taWRsZSB3b3JrbG9h
ZC4KSW4gY29udHJhc3QsIGYyZnNfZ2MgYW5kIGYyZnNfZGlzY2FyZCBhcmUgYXV0b25vbW91cyBi
YWNrZ3JvdW5kCnRocmVhZHMgd2FraW5nIHVwIGV2ZW4gb24gYW4gaWRsZSBzeXN0ZW0gd2l0aCBV
RlMgaW4gUnVudGltZSBQTQpzdXNwZW5kLCB3aGljaCBpcyB0aGUgbWFpbiBjYXVzZSBvZiBVRlMg
ZGVhZGxvY2sgd2hlbiBlbnRlcmluZyB0aGUKc3VzcGVuZC4KV2l0aCBaVUZTLCBHQyBydW5zIG11
Y2ggbW9yZSBmcmVxdWVudGx5LCBjYXVzaW5nIGZyZXF1ZW50IHN1c3BlbmQgYWJvcnRzLgoKPiA+
Cj4gPj4KPiA+Pj4gZmxhZyBhbmQgaW1tZWRpYXRlbHkgc3RvcCBpc3N1aW5nIG5ldyBiaW9zLCBh
bGxvd2luZyB0aGVtIHRvIGVudGVyIGEKPiA+Pj4gZnJlZXphYmxlIHNsZWVwIHN0YXRlIGNsZWFu
bHkgYmVmb3JlIHByb2Nlc3MgZnJlZXppbmcgYmVnaW5zLgo+ID4+Pgo+ID4+PiBTaWduZWQtb2Zm
LWJ5OiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+ID4+PiAtLS0KPiA+Pj4g
ICBmcy9mMmZzL2YyZnMuaCAgICB8ICAzICsrKwo+ID4+PiAgIGZzL2YyZnMvZ2MuYyAgICAgIHwg
MTMgKysrKysrKystLS0tLQo+ID4+PiAgIGZzL2YyZnMvc2VnbWVudC5jIHwgMTMgKysrKysrKysr
LS0tLQo+ID4+PiAgIGZzL2YyZnMvc3VwZXIuYyAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysr
KysrKwo+ID4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlv
bnMoLSkKPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZjJmcy5oIGIvZnMvZjJmcy9m
MmZzLmgKPiA+Pj4gaW5kZXggZjI0ZTMwYmI1YzNkLi5jNDZiZjRkZjk0MTIgMTAwNjQ0Cj4gPj4+
IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPj4+ICsrKyBiL2ZzL2YyZnMvZjJmcy5oCj4gPj4+IEBA
IC0yNSw2ICsyNSw3IEBACj4gPj4+ICAgI2luY2x1ZGUgPGxpbnV4L3F1b3Rhb3BzLmg+Cj4gPj4+
ICAgI2luY2x1ZGUgPGxpbnV4L3BhcnRfc3RhdC5oPgo+ID4+PiAgICNpbmNsdWRlIDxsaW51eC9y
d19oaW50Lmg+Cj4gPj4+ICsjaW5jbHVkZSA8bGludXgvc3VzcGVuZC5oPgo+ID4+Pgo+ID4+PiAg
ICNpbmNsdWRlIDxsaW51eC9mc2NyeXB0Lmg+Cj4gPj4+ICAgI2luY2x1ZGUgPGxpbnV4L2ZzdmVy
aXR5Lmg+Cj4gPj4+IEBAIC0xNDk0LDYgKzE0OTUsNyBAQCBlbnVtIHsKPiA+Pj4gICAgICAgU0JJ
X0lTX0ZSRUVaSU5HLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZyZWV6ZWZzIGlzIGluIHBy
b2Nlc3MgKi8KPiA+Pj4gICAgICAgU0JJX0lTX1dSSVRBQkxFLCAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHJlbW92ZSBybyBtb3VudG9wdGlvbiB0cmFuc2llbnRseSAqLwo+ID4+PiAgICAgICBT
QklfRU5BQkxFX0NIRUNLUE9JTlQsICAgICAgICAgICAgICAgICAgLyogaW5kaWNhdGUgaXQncyBk
dXJpbmcgZjJmc19lbmFibGVfY2hlY2twb2ludCgpICovCj4gPj4+ICsgICAgIFNCSV9JU19TVVNQ
RU5ESU5HLCAgICAgICAgICAgICAgICAgICAgICAvKiBzeXN0ZW0gc3VzcGVuZCBpcyBpbiBwcm9n
cmVzcyAqLwo+ID4+PiAgICAgICBNQVhfU0JJX0ZMQUcsCj4gPj4+ICAgfTsKPiA+Pj4KPiA+Pj4g
QEAgLTE3NTcsNiArMTc1OSw3IEBAIHN0cnVjdCBmMmZzX3NiX2luZm8gewo+ID4+PiAgICAgICBz
dHJ1Y3QgZjJmc19yd3NlbSBzYl9sb2NrOyAgICAgICAgICAgICAgLyogbG9jayBmb3IgcmF3IHN1
cGVyIGJsb2NrICovCj4gPj4+ICAgICAgIGludCB2YWxpZF9zdXBlcl9ibG9jazsgICAgICAgICAg
ICAgICAgICAvKiB2YWxpZCBzdXBlciBibG9jayBubyAqLwo+ID4+PiAgICAgICB1bnNpZ25lZCBs
b25nIHNfZmxhZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmbGFncyBmb3Igc2JpICov
Cj4gPj4+ICsgICAgIHN0cnVjdCBub3RpZmllcl9ibG9jayBwbV9uYjsgICAgICAgICAgICAvKiBm
b3IgUE0gbm90aWZpZXIgKi8KPiA+Pj4gICAgICAgc3RydWN0IG11dGV4IHdyaXRlcGFnZXM7ICAg
ICAgICAgICAgICAgIC8qIG11dGV4IGZvciB3cml0ZXBhZ2VzKCkgKi8KPiA+Pj4KPiA+Pj4gICAj
aWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZ2Mu
YyBiL2ZzL2YyZnMvZ2MuYwo+ID4+PiBpbmRleCA5M2JjYjM1YTViNWQuLjg2YjJiMjk0MDJhNSAx
MDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9nYy5jCj4gPj4+ICsrKyBiL2ZzL2YyZnMvZ2MuYwo+
ID4+PiBAQCAtNzEsNyArNzEsOCBAQCBzdGF0aWMgaW50IGdjX3RocmVhZF9mdW5jKHZvaWQgKmRh
dGEpCj4gPj4+ICAgICAgICAgICAgICAgaWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSkKPiA+Pj4g
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4+Pgo+ID4+PiAtICAgICAgICAgICAgIGlm
IChzYmktPnNiLT5zX3dyaXRlcnMuZnJvemVuID49IFNCX0ZSRUVaRV9XUklURSkgewo+ID4+PiAr
ICAgICAgICAgICAgIGlmIChzYmktPnNiLT5zX3dyaXRlcnMuZnJvemVuID49IFNCX0ZSRUVaRV9X
UklURSB8fAo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgaXNfc2JpX2ZsYWdfc2V0KHNiaSwg
U0JJX0lTX1NVU1BFTkRJTkcpKSB7Cj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICBpbmNyZWFz
ZV9zbGVlcF90aW1lKGdjX3RoLCAmd2FpdF9tcyk7Cj4gPj4+ICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0X290aGVyX3NraXBfYmdnY19jb3VudChzYmkpOwo+ID4+PiAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Cj4gPj4+IEBAIC0xMDY0LDggKzEwNjUsOSBAQCBzdGF0aWMgaW50IGdj
X25vZGVfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICAgICAgICAgICAg
ICAgc3RydWN0IG5vZGVfaW5mbyBuaTsKPiA+Pj4gICAgICAgICAgICAgICBpbnQgZXJyOwo+ID4+
Pgo+ID4+PiAtICAgICAgICAgICAgIC8qIHN0b3AgQkdfR0MgaWYgdGhlcmUgaXMgbm90IGVub3Vn
aCBmcmVlIHNlY3Rpb25zLiAqLwo+ID4+PiAtICAgICAgICAgICAgIGlmIChnY190eXBlID09IEJH
X0dDICYmIGhhc19ub3RfZW5vdWdoX2ZyZWVfc2VjcyhzYmksIDAsIDApKQo+ID4+PiArICAgICAg
ICAgICAgIC8qIHN0b3AgQkdfR0MgaWYgdGhlcmUgaXMgbm90IGVub3VnaCBmcmVlIHNlY3Rpb25z
IG9yIHN1c3BlbmRpbmcuICovCj4gPj4+ICsgICAgICAgICAgICAgaWYgKGdjX3R5cGUgPT0gQkdf
R0MgJiYgKGhhc19ub3RfZW5vdWdoX2ZyZWVfc2VjcyhzYmksIDAsIDApIHx8Cj4gPj4+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJ
X0lTX1NVU1BFTkRJTkcpKSkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJt
aXR0ZWQ7Cj4gPj4+Cj4gPj4+ICAgICAgICAgICAgICAgaWYgKGNoZWNrX3ZhbGlkX21hcChzYmks
IHNlZ25vLCBvZmYpID09IDApCj4gPj4+IEBAIC0xNjExLDcgKzE2MTMsOCBAQCBzdGF0aWMgaW50
IGdjX2RhdGFfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZzX3N1
bW1hcnkgKnN1bSwKPiA+Pj4gICAgICAgICAgICAgICAgKiBPciwgc3RvcCBHQyBpZiB0aGUgc2Vn
bWVudCBiZWNvbWVzIGZ1bGx5IHZhbGlkIGNhdXNlZCBieQo+ID4+PiAgICAgICAgICAgICAgICAq
IHJhY2UgY29uZGl0aW9uIGFsb25nIHdpdGggU1NSIGJsb2NrIGFsbG9jYXRpb24uCj4gPj4+ICAg
ICAgICAgICAgICAgICovCj4gPj4+IC0gICAgICAgICAgICAgaWYgKChnY190eXBlID09IEJHX0dD
ICYmIGhhc19ub3RfZW5vdWdoX2ZyZWVfc2VjcyhzYmksIDAsIDApKSB8fAo+ID4+PiArICAgICAg
ICAgICAgIGlmICgoZ2NfdHlwZSA9PSBCR19HQyAmJiAoaGFzX25vdF9lbm91Z2hfZnJlZV9zZWNz
KHNiaSwgMCwgMCkgfHwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykpKSB8fAo+ID4+PiAgICAg
ICAgICAgICAgICAgICAgICAgKCFmb3JjZV9taWdyYXRlICYmIGdldF92YWxpZF9ibG9ja3Moc2Jp
LCBzZWdubywgdHJ1ZSkgPT0KPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0FQX0JMS1NfUEVSX1NFQyhzYmkpKSkKPiA+Pj4gICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzdWJtaXR0ZWQ7Cj4gPj4+IEBAIC0yMDE1LDcgKzIwMTgs
NyBAQCBpbnQgZjJmc19nYyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZzX2dj
X2NvbnRyb2wgKmdjX2NvbnRyb2wpCj4gPj4+ICAgICAgICAgICAgICAgZ290byBzdG9wOwo+ID4+
PiAgICAgICB9Cj4gPj4+ICAgcmV0cnk6Cj4gPj4+IC0gICAgIGlmICh1bmxpa2VseShmcmVlemlu
ZyhjdXJyZW50KSkpIHsKPiA+Pgo+ID4+IFNob3VsZG4ndCB3ZSBrZWVwIG9yaWdpbmFsIGZyZWV6
aW5nIGxvZ2ljPyBpbiBjYXNlIGZpbGVzeXN0ZW0gYXJlIGZyb3plbgo+ID4+IHdoZW4gbG93IGRl
dmljZSBzbmFwc2hvdCBpcyB0cmlnZ2VyZWQ/Cj4gPgo+ID4gU2luY2UgdGhlIHJ1bnRpbWUgUE0g
c3VzcGVuZC9yZXN1bWUgd29ya2VycyBhcmUgb25seSBmcm96ZW4gZHVyaW5nCj4gPiBzeXN0ZW0t
d2lkZSBQTSB0cmFuc2l0aW9ucyAoc3VzcGVuZC9oaWJlcm5hdGlvbiksIHRoZSBQTSBub3RpZmll
cgo+ID4gYXBwcm9hY2ggd2l0aCBTQklfSVNfU1VTUEVORElORyBzdWZmaWNpZW50bHkgcHJldmVu
dHMgdGhlIGRlYWRsb2NrLgo+Cj4gV2hhdCBJIG1lYW4gaXM6Cj4KPiBpZiAoaXNfc2JpX2ZsYWdf
c2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcpIHx8IHVubGlrZWx5KGZyZWV6aW5nKGN1cnJlbnQp
KSkgewo+Cj4gb3RoZXJ3aXNlLCBnYyB0aHJlYWQgb3IgZGlzY2FyZCB0aHJlYWQgd29uJ3QgZGV0
ZWN0IGZyZWV6ZSBzdGF0ZSwgYW5kIHdpbGwKPiBjb250aW51ZSB0byB0cmlnZ2VyIElPIGluIGJh
Y2tncm91bmQgZXZlbiB0aGVyZSBpcyBhIHN5c3RlbSBmcmVlemUgcmVxdWVzdAo+IGZyb20gZGV2
aWNlIHNuYXBzaG90IG9yIGNncm91cCBmcmVlemluZywgcmlnaHQ/Cj4KClRoZSBoYW5nIGluIHN5
c3RlbSBzdXNwZW5kIGhhcHBlbnMgYmVjYXVzZSBSdW50aW1lIFBNIHdvcmtlcnMgKHBtX3dxKQph
cmUgZnJvemVuLCBzbyBVRlMgY2Fubm90IGJlIHJlc3VtZWQgZnJvbSBzdWJtaXRfYmlvKCkuCkR1
cmluZyBjZ3JvdXAgZnJlZXplIG9yIHNuYXBzaG90LCBJIGJlbGlldmUgcG1fd3EgaXMgYWxpdmUs
IHNvIFVGUwpyZXN1bWVzIGluIGEgZmV3IG1zIGFuZCBJL08gZmluaXNoZXMgd2l0aG91dCBkZWFk
bG9jay4gQWxzbywKd2FpdF9ldmVudF9mcmVlemFibGVfdGltZW91dCgpIHdpbGwgZnJlZXplIHRo
ZSB0aHJlYWRzIHdoZW4gdGhleQpzbGVlcC4KCklmIHlvdSBwcmVmZXIga2VlcGluZyBmcmVlemlu
ZyhjdXJyZW50KSBhcyBhIGZhc3QgcGF0aCBmb3Igbm9uLVBNCmZyZWV6aW5nLCBJIGNhbiBjaGFu
Z2UgaXQgdG86CmlmIChpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfSVNfU1VTUEVORElORykgfHwg
dW5saWtlbHkoZnJlZXppbmcoY3VycmVudCkpKQpEbyB5b3Ugc3RpbGwgdGhpbmsgaXQgaXMgcmVx
dWlyZWQ/IElmIHNvLCBwbHosIGxldCBtZSBrbm93LgoKVGhhbmtzLgoKPiBUaGFua3MsCj4KPiA+
Cj4gPiBUaGFua3MsCj4gPgo+ID4+Cj4gPj4+ICsgICAgIGlmIChpc19zYmlfZmxhZ19zZXQoc2Jp
LCBTQklfSVNfU1VTUEVORElORykpIHsKPiA+Pj4gICAgICAgICAgICAgICByZXQgPSAwOwo+ID4+
PiAgICAgICAgICAgICAgIGdvdG8gc3RvcDsKPiA+Pj4gICAgICAgfQo+ID4+PiBkaWZmIC0tZ2l0
IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4+PiBpbmRleCBkNzBk
YzVlZjNkZTQuLmUyNzE5Nzk1MzM1NiAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50
LmMKPiA+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+Pj4gQEAgLTEzMDAsNyArMTMwMCw4
IEBAIHN0YXRpYyBpbnQgX19zdWJtaXRfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5mbyAq
c2JpLAo+ID4+PiAgICAgICBpZiAoZGMtPnN0YXRlICE9IERfUFJFUCkKPiA+Pj4gICAgICAgICAg
ICAgICByZXR1cm4gMDsKPiA+Pj4KPiA+Pj4gLSAgICAgaWYgKGlzX3NiaV9mbGFnX3NldChzYmks
IFNCSV9ORUVEX0ZTQ0spKQo+ID4+PiArICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJ
X05FRURfRlNDSykgfHwKPiA+Pj4gKyAgICAgICAgICAgICBpc19zYmlfZmxhZ19zZXQoc2JpLCBT
QklfSVNfU1VTUEVORElORykpCj4gPj4+ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4+Cj4g
Pj4+ICAgI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4gPj4+IEBAIC0xMzQxLDYgKzEzNDIs
OSBAQCBzdGF0aWMgaW50IF9fc3VibWl0X2Rpc2NhcmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8g
KnNiaSwKPiA+Pj4gICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4+PiAgICAg
ICAgICAgICAgIGJvb2wgbGFzdCA9IHRydWU7Cj4gPj4+Cj4gPj4+ICsgICAgICAgICAgICAgaWYg
KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9JU19TVVNQRU5ESU5HKSkKPiA+Pj4gKyAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwo+ID4+PiArCj4gPj4+ICAgICAgICAgICAgICAgaWYgKGxlbiA+
IG1heF9kaXNjYXJkX2Jsb2Nrcykgewo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgbGVuID0g
bWF4X2Rpc2NhcmRfYmxvY2tzOwo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGZh
bHNlOwo+ID4+PiBAQCAtMTYxNSw3ICsxNjE5LDcgQEAgc3RhdGljIHZvaWQgX19pc3N1ZV9kaXNj
YXJkX2NtZF9vcmRlcmx5KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gICAgICAgICAg
ICAgICBpZiAoZGMtPnN0YXRlICE9IERfUFJFUCkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAg
IGdvdG8gbmV4dDsKPiA+Pj4KPiA+Pj4gLSAgICAgICAgICAgICBpZiAoKmlzc3VlZCA+IDAgJiYg
dW5saWtlbHkoZnJlZXppbmcoY3VycmVudCkpKQo+ID4+Cj4gPj4gRGl0dG8sCj4gPj4KPiA+Pj4g
KyAgICAgICAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0lTX1NVU1BFTkRJTkcp
KQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4+Cj4gPj4+ICAgICAgICAg
ICAgICAgaWYgKGRwb2xpY3ktPmlvX2F3YXJlICYmICFpc19pZGxlKHNiaSwgRElTQ0FSRF9USU1F
KSkgewo+ID4+PiBAQCAtMTY4OCw3ICsxNjkyLDcgQEAgc3RhdGljIGludCBfX2lzc3VlX2Rpc2Nh
cmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gICAgICAgICAgICAgICBsaXN0
X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGMsIHRtcCwgcGVuZF9saXN0LCBsaXN0KSB7Cj4gPj4+ICAg
ICAgICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIGRjLT5zdGF0ZSAhPSBEX1BSRVAp
Owo+ID4+Pgo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlZCA+IDAgJiYgdW5s
aWtlbHkoZnJlZXppbmcoY3VycmVudCkpKSB7Cj4gPj4KPiA+PiBEaXR0bywKPiA+Pgo+ID4+IFRo
YW5rcywKPiA+Pgo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3NiaV9mbGFnX3Nl
dChzYmksIFNCSV9JU19TVVNQRU5ESU5HKSkgewo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdXNwZW5kZWQgPSB0cnVlOwo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgIH0KPiA+Pj4gQEAgLTE5NTUs
NyArMTk1OSw4IEBAIHN0YXRpYyBpbnQgaXNzdWVfZGlzY2FyZF90aHJlYWQodm9pZCAqZGF0YSkK
PiA+Pj4gICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+PiAgICAgICAgICAgICAg
IGlmIChrdGhyZWFkX3Nob3VsZF9zdG9wKCkpCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKPiA+Pj4gLSAgICAgICAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJ
X05FRURfRlNDSykgfHwKPiA+Pj4gKyAgICAgICAgICAgICBpZiAoaXNfc2JpX2ZsYWdfc2V0KHNi
aSwgU0JJX0lTX1NVU1BFTkRJTkcpIHx8Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBpc19z
YmlfZmxhZ19zZXQoc2JpLCBTQklfTkVFRF9GU0NLKSB8fAo+ID4+PiAgICAgICAgICAgICAgICAg
ICAgICAgIWF0b21pY19yZWFkKCZkY2MtPmRpc2NhcmRfY21kX2NudCkpIHsKPiA+Pj4gICAgICAg
ICAgICAgICAgICAgICAgIHdhaXRfbXMgPSBkcG9saWN5Lm1heF9pbnRlcnZhbDsKPiA+Pj4gICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9z
dXBlci5jIGIvZnMvZjJmcy9zdXBlci5jCj4gPj4+IGluZGV4IGQ1ZGM4M2U2MTNlMi4uNTM2ZjNm
ZmU1MzU0IDEwMDY0NAo+ID4+PiAtLS0gYS9mcy9mMmZzL3N1cGVyLmMKPiA+Pj4gKysrIGIvZnMv
ZjJmcy9zdXBlci5jCj4gPj4+IEBAIC0xOTc5LDYgKzE5NzksMjYgQEAgc3RhdGljIHZvaWQgZGVz
dHJveV9kZXZpY2VfbGlzdChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPj4+ICAgICAgIGt2
ZnJlZShzYmktPmRldnMpOwo+ID4+PiAgIH0KPiA+Pj4KPiA+Pj4gK3N0YXRpYyBpbnQgZjJmc19w
bV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAo+ID4+PiArICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWN0aW9uLCB2b2lkICpwdHIpCj4gPj4+ICt7Cj4g
Pj4+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IGNvbnRhaW5lcl9vZihuYiwgc3Ry
dWN0IGYyZnNfc2JfaW5mbywgcG1fbmIpOwo+ID4+PiArCj4gPj4+ICsgICAgIHN3aXRjaCAoYWN0
aW9uKSB7Cj4gPj4+ICsgICAgIGNhc2UgUE1fSElCRVJOQVRJT05fUFJFUEFSRToKPiA+Pj4gKyAg
ICAgY2FzZSBQTV9TVVNQRU5EX1BSRVBBUkU6Cj4gPj4+ICsgICAgIGNhc2UgUE1fUkVTVE9SRV9Q
UkVQQVJFOgo+ID4+PiArICAgICAgICAgICAgIHNldF9zYmlfZmxhZyhzYmksIFNCSV9JU19TVVNQ
RU5ESU5HKTsKPiA+Pj4gKyAgICAgICAgICAgICBicmVhazsKPiA+Pj4gKyAgICAgY2FzZSBQTV9Q
T1NUX1NVU1BFTkQ6Cj4gPj4+ICsgICAgIGNhc2UgUE1fUE9TVF9ISUJFUk5BVElPTjoKPiA+Pj4g
KyAgICAgY2FzZSBQTV9QT1NUX1JFU1RPUkU6Cj4gPj4+ICsgICAgICAgICAgICAgY2xlYXJfc2Jp
X2ZsYWcoc2JpLCBTQklfSVNfU1VTUEVORElORyk7Cj4gPj4+ICsgICAgICAgICAgICAgYnJlYWs7
Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgcmV0dXJuIE5PVElGWV9PSzsKPiA+Pj4gK30KPiA+
Pj4gKwo+ID4+PiAgIHN0YXRpYyB2b2lkIGYyZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2IpCj4gPj4+ICAgewo+ID4+PiAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBG
MkZTX1NCKHNiKTsKPiA+Pj4gQEAgLTE5ODYsNiArMjAwNiw4IEBAIHN0YXRpYyB2b2lkIGYyZnNf
cHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCj4gPj4+ICAgICAgIGludCBlcnIgPSAw
Owo+ID4+PiAgICAgICBib29sIGRvbmU7Cj4gPj4+Cj4gPj4+ICsgICAgIHVucmVnaXN0ZXJfcG1f
bm90aWZpZXIoJnNiaS0+cG1fbmIpOwo+ID4+PiArCj4gPj4+ICAgICAgIC8qIHVucmVnaXN0ZXIg
cHJvY2ZzL3N5c2ZzIGVudHJpZXMgaW4gYWR2YW5jZSB0byBhdm9pZCByYWNlIGNhc2UgKi8KPiA+
Pj4gICAgICAgZjJmc191bnJlZ2lzdGVyX3N5c2ZzKHNiaSk7Cj4gPj4+Cj4gPj4+IEBAIC01NDcy
LDYgKzU0OTQsOSBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPj4+Cj4gPj4+ICAgICAgIGYyZnNfcmVz
dG9yZV9kZXZpY2VfYWxpYXMoc2JpKTsKPiA+Pj4KPiA+Pj4gKyAgICAgc2JpLT5wbV9uYi5ub3Rp
Zmllcl9jYWxsID0gZjJmc19wbV9ub3RpZmllcjsKPiA+Pj4gKyAgICAgcmVnaXN0ZXJfcG1fbm90
aWZpZXIoJnNiaS0+cG1fbmIpOwo+ID4+PiArCj4gPj4+ICAgICAgIHNiaS0+dW1vdW50X2xvY2tf
aG9sZGVyID0gTlVMTDsKPiA+Pj4gICAgICAgcmV0dXJuIDA7Cj4gPj4+Cj4gPj4KPgoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2
ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0
dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2
ZWwK