From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruno Alvisio Subject: [PATCH RFC v3 RESEND 12/12] Migration with Local Disks Mirroring: Introduce pre_mirror_disks_stream_phase op to xc_sr_save_ops Date: Sat, 23 Dec 2017 14:03:36 +0000 Message-ID: <1514037816-40864-13-git-send-email-bruno.alvisio@gmail.com> References: <1514037816-40864-1-git-send-email-bruno.alvisio@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1514037816-40864-1-git-send-email-bruno.alvisio@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org, wei.liu2@citrix.com, dave@recoil.org, ian.jackson@eu.citrix.com List-Id: xen-devel@lists.xenproject.org QSBuZXcgb3AgcHJlX21pcnJvcl9zdHJlYW1fcGhhc2UgaXMgaW50cm9kdWNlZCBhcyBwYXJ0IG9m IHRoZSB4Y19zcl9zYXZlX29wcy4KVGhpcyBvcCBzZW5kcyBhbGwgcGZucyBhbmQgcGFyYW1zIHRo YXQgbmVlZCB0byBiZSB0cmFuc2ZlcnJlZCBiZWZvcmUgdGhlIGRpc2tzCm1pcnJvcmluZyBqb2Jz IGNhbiBiZSBzdGFydGVkLiBOb3RlIHRoYXQgbm8gbmV3IGxpYnhjIHJlY29yZCB0eXBlIGlzIGNy ZWF0ZWQuCgpUaGUgc2F2ZSBmbG93IGlzIG1vZGlmaWVkIHN1Y2ggdGhhdDogaWYgdGhlIHN0cmVh bV9waGFzZSA9PQpYQ19QUkVfTUlSUk9SX0RJU0tTX1NUUkVBTV9QSEFTRSBvbmx5IHRoZSBwcmVf bWlycm9yX2Rpc2tzIG9wIGlzIGV4ZWN1dGVkIGFzCnBhcnQgb2YgdGhlIHNhdmUoKS4gSW4gYWxs IG90aGVyIGxpYnhjIHBoYXNlIHR5cGVzLCB0aGUgb3JpZ2luYWwgZmxvdyBpcwpleGVjdXRlZC4K ClNpZ25lZC1vZmYtYnk6IEJydW5vIEFsdmlzaW8gPGJydW5vLmFsdmlzaW9AZ21haWwuY29tPgot LS0KIHRvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oICAgICAgIHwgIDExICsrKysKIHRvb2xzL2xp YnhjL3hjX3NyX3NhdmUuYyAgICAgICAgIHwgIDI0ICsrKysrKystLQogdG9vbHMvbGlieGMveGNf c3Jfc2F2ZV94ODZfaHZtLmMgfCAxMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhj L3hjX3NyX2NvbW1vbi5oCmluZGV4IDhjZjM5M2YuLjQ0ZjQxMDMgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhjL3hjX3NyX2NvbW1vbi5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCkBA IC05Niw2ICs5NiwxMyBAQCBzdHJ1Y3QgeGNfc3Jfc2F2ZV9vcHMKICAgICAgKiBhZnRlciBhIHN1 Y2Nlc3NmdWwgc2F2ZSwgb3IgdXBvbiBlbmNvdW50ZXJpbmcgYW4gZXJyb3IuCiAgICAgICovCiAg ICAgaW50ICgqY2xlYW51cCkoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCk7CisKKyAgICAvKioK KyAgICAgKiBTZW5kIHRoZSBuZWNlc3NhcnkgcmVjb3Jkcy9wYXJhbXMgdG8gYWxsb3cgdGhlIHN0 YXJ0IG9mIHRoZSBsb2NhbAorICAgICAqIGRpc2tzIG1pcnJvcmluZyBqb2IgaW4gdGhlIGRlc3Rp bmF0aW9uIG5vZGUuIEl0IHdpbGwgYmUgY2FsbGVkIGV4YWN0bHkKKyAgICAgKiBvbmNlIG9ubHkg aWYgdGhlIHN0cmVhbSBwaGFzZSB0eXBlID09IFhDX1NUUkVBTV9QSEFTRV9QUkVfTUlSUk9SX0RJ U0tTCisgICAgICovCisgICAgaW50ICgqcHJlX21pcnJvcl9kaXNrc19zdHJlYW1fcGhhc2UpKHN0 cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpOwogfTsKIAogCkBAIC0zOTgsNiArNDA1LDEwIEBAIGlu dCByZWFkX3JlY29yZChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LCBpbnQgZmQsIHN0cnVjdCB4 Y19zcl9yZWNvcmQgKnJlYyk7CiBpbnQgcG9wdWxhdGVfcGZucyhzdHJ1Y3QgeGNfc3JfY29udGV4 dCAqY3R4LCB1bnNpZ25lZCBjb3VudCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHhlbl9wZm5f dCAqb3JpZ2luYWxfcGZucywgY29uc3QgdWludDMyX3QgKnR5cGVzKTsKIAoraW50IGFkZF90b19i YXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LCB4ZW5fcGZuX3QgcGZuKTsKKworaW50IGZs dXNoX2JhdGNoKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpOworCiAjZW5kaWYKIC8qCiAgKiBM b2NhbCB2YXJpYWJsZXM6CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMgYi90 b29scy9saWJ4Yy94Y19zcl9zYXZlLmMKaW5kZXggYjc0OThlMy4uNTU3ZGFmZSAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfc3Jfc2F2ZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUu YwpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfYmF0Y2goc3RydWN0IHhjX3Ny X2NvbnRleHQgKmN0eCkKIC8qCiAgKiBGbHVzaCBhIGJhdGNoIG9mIHBmbnMgaW50byB0aGUgc3Ry ZWFtLgogICovCi1zdGF0aWMgaW50IGZsdXNoX2JhdGNoKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpj dHgpCitpbnQgZmx1c2hfYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKIHsKICAgICBp bnQgcmMgPSAwOwogCkBAIC0zMDEsNyArMzAxLDcgQEAgc3RhdGljIGludCBmbHVzaF9iYXRjaChz dHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogLyoKICAqIEFkZCBhIHNpbmdsZSBwZm4gdG8gdGhl IGJhdGNoLCBmbHVzaGluZyB0aGUgYmF0Y2ggaWYgZnVsbC4KICAqLwotc3RhdGljIGludCBhZGRf dG9fYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbikKK2ludCBh ZGRfdG9fYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbikKIHsK ICAgICBpbnQgcmMgPSAwOwogCkBAIC04NDIsOCArODQyLDEyIEBAIHN0YXRpYyBpbnQgc2F2ZShz dHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LCB1aW50MTZfdCBndWVzdF90eXBlKQogICAgIHhjX2lu dGVyZmFjZSAqeGNoID0gY3R4LT54Y2g7CiAgICAgaW50IHJjLCBzYXZlZF9yYyA9IDAsIHNhdmVk X2Vycm5vID0gMDsKIAotICAgIElQUklOVEYoIlNhdmluZyBkb21haW4gJWQsIHR5cGUgJXMiLAot ICAgICAgICAgICAgY3R4LT5kb21pZCwgZGhkcl90eXBlX3RvX3N0cihndWVzdF90eXBlKSk7Cisg ICAgaWYgKCBjdHgtPnN0cmVhbV9waGFzZSA9PSBYQ19TVFJFQU1fUEhBU0VfUFJFX01JUlJPUl9E SVNLUyApCisgICAgICAgIElQUklOVEYoIlByZS1taXJyb3JpbmcgZGlza3Mgc2F2ZSBwaGFzZSBm b3IgZG9tYWluICVkLCB0eXBlICVzIiwKKyAgICAgICAgICAgICAgICBjdHgtPmRvbWlkLCBkaGRy X3R5cGVfdG9fc3RyKGd1ZXN0X3R5cGUpKTsKKyAgICBlbHNlCisgICAgICAgIElQUklOVEYoIlNh dmluZyBkb21haW4gJWQsIHR5cGUgJXMiLAorICAgICAgICAgICAgICAgIGN0eC0+ZG9taWQsIGRo ZHJfdHlwZV90b19zdHIoZ3Vlc3RfdHlwZSkpOwogCiAgICAgcmMgPSBzZXR1cChjdHgpOwogICAg IGlmICggcmMgKQpAQCAtODU1LDYgKzg1OSwxMyBAQCBzdGF0aWMgaW50IHNhdmUoc3RydWN0IHhj X3NyX2NvbnRleHQgKmN0eCwgdWludDE2X3QgZ3Vlc3RfdHlwZSkKICAgICBpZiAoIHJjICkKICAg ICAgICAgZ290byBlcnI7CiAKKyAgICBpZiAoIGN0eC0+c3RyZWFtX3BoYXNlID09IFhDX1NUUkVB TV9QSEFTRV9QUkVfTUlSUk9SX0RJU0tTICkgeworICAgICAgICByYyA9IGN0eC0+c2F2ZS5vcHMu cHJlX21pcnJvcl9kaXNrc19zdHJlYW1fcGhhc2UoY3R4KTsKKyAgICAgICAgaWYgKCByYyApCisg ICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgZ290byBlbmQ7CisgICAgfQorCiAgICAgcmMg PSBjdHgtPnNhdmUub3BzLnN0YXJ0X29mX3N0cmVhbShjdHgpOwogICAgIGlmICggcmMgKQogICAg ICAgICBnb3RvIGVycjsKQEAgLTkzOSw2ICs5NTAsNyBAQCBzdGF0aWMgaW50IHNhdmUoc3RydWN0 IHhjX3NyX2NvbnRleHQgKmN0eCwgdWludDE2X3QgZ3Vlc3RfdHlwZSkKICAgICAgICAgfQogICAg IH0gd2hpbGUgKCBjdHgtPnNhdmUuY2hlY2twb2ludGVkICE9IFhDX01JR19TVFJFQU1fTk9ORSAp OwogCisgZW5kOgogICAgIHhjX3JlcG9ydF9wcm9ncmVzc19zaW5nbGUoeGNoLCAiRW5kIG9mIHN0 cmVhbSIpOwogCiAgICAgcmMgPSB3cml0ZV9lbmRfcmVjb3JkKGN0eCk7CkBAIC05NzQsNiArOTg2 LDcgQEAgaW50IHhjX2RvbWFpbl9zYXZlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgaW9fZmQsIHVp bnQzMl90IGRvbSwKICAgICAgICAgewogICAgICAgICAgICAgLnhjaCA9IHhjaCwKICAgICAgICAg ICAgIC5mZCA9IGlvX2ZkLAorICAgICAgICAgICAgLnN0cmVhbV9waGFzZSA9IHN0cmVhbV9waGFz ZQogICAgICAgICB9OwogCiAgICAgLyogR0NDIDQuNCAob2YgQ2VudE9TIDYueCB2aW50YWdlKSBj YW4nIHQgaW5pdGlhbGlzZSBhbm9ueW1vdXMgdW5pb25zLiAqLwpAQCAtOTg5LDcgKzEwMDIsOCBA QCBpbnQgeGNfZG9tYWluX3NhdmUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBpb19mZCwgdWludDMy X3QgZG9tLAogICAgICAgICAgICBzdHJlYW1fdHlwZSA9PSBYQ19NSUdfU1RSRUFNX0NPTE8pOwog CiAgICAgLyogU2FuaXR5IGNoZWNrcyBmb3IgY2FsbGJhY2tzLiAqLwotICAgIGlmICggaHZtICkK KyAgICAvKiBUaGUgcHJlIG1pcnJvciBkaXNrcyBwaGFzZSBzdHJlYW0gZG9lc24ndCBlbmFibGUv ZGlzYWJsZSBxZW11IGxvZyAqLworICAgIGlmICggaHZtICYmIGN0eC5zdHJlYW1fcGhhc2UgIT0g WENfU1RSRUFNX1BIQVNFX1BSRV9NSVJST1JfRElTS1MgKQogICAgICAgICBhc3NlcnQoY2FsbGJh Y2tzLT5zd2l0Y2hfcWVtdV9sb2dkaXJ0eSk7CiAgICAgaWYgKCBjdHguc2F2ZS5jaGVja3BvaW50 ZWQgKQogICAgICAgICBhc3NlcnQoY2FsbGJhY2tzLT5jaGVja3BvaW50ICYmIGNhbGxiYWNrcy0+ cG9zdGNvcHkpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfc3Jfc2F2ZV94ODZfaHZtLmMg Yi90b29scy9saWJ4Yy94Y19zcl9zYXZlX3g4Nl9odm0uYwppbmRleCA5N2E4YzQ5Li40MjNlZGQ3 IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19zcl9zYXZlX3g4Nl9odm0uYworKysgYi90b29s cy9saWJ4Yy94Y19zcl9zYXZlX3g4Nl9odm0uYwpAQCAtNCw2ICs0LDMyIEBACiAKICNpbmNsdWRl IDx4ZW4vaHZtL3BhcmFtcy5oPgogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHBhcmFtc1td ID0geworICAgIEhWTV9QQVJBTV9TVE9SRV9QRk4sCisgICAgSFZNX1BBUkFNX0lPUkVRX1BGTiwK KyAgICBIVk1fUEFSQU1fQlVGSU9SRVFfUEZOLAorICAgIEhWTV9QQVJBTV9QQUdJTkdfUklOR19Q Rk4sCisgICAgSFZNX1BBUkFNX01PTklUT1JfUklOR19QRk4sCisgICAgSFZNX1BBUkFNX1NIQVJJ TkdfUklOR19QRk4sCisgICAgSFZNX1BBUkFNX1ZNODZfVFNTX1NJWkVELAorICAgIEhWTV9QQVJB TV9DT05TT0xFX1BGTiwKKyAgICBIVk1fUEFSQU1fQUNQSV9JT1BPUlRTX0xPQ0FUSU9OLAorICAg IEhWTV9QQVJBTV9WSVJJRElBTiwKKyAgICBIVk1fUEFSQU1fSURFTlRfUFQsCisgICAgSFZNX1BB UkFNX1BBRV9FTkFCTEVELAorICAgIEhWTV9QQVJBTV9WTV9HRU5FUkFUSU9OX0lEX0FERFIsCisg ICAgSFZNX1BBUkFNX0lPUkVRX1NFUlZFUl9QRk4sCisgICAgSFZNX1BBUkFNX05SX0lPUkVRX1NF UlZFUl9QQUdFUywKKyAgICBIVk1fUEFSQU1fWDg3X0ZJUF9XSURUSCwKKyAgICBIVk1fUEFSQU1f TUNBX0NBUCwKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcGFyYW1zX21pcnJvcmlu Z1tdID0geworICAgIEhWTV9QQVJBTV9TVE9SRV9QRk4sCisgICAgSFZNX1BBUkFNX0lPUkVRX1BG TiwKKyAgICBIVk1fUEFSQU1fQlVGSU9SRVFfUEZOLAorfTsKKwogLyoKICAqIFF1ZXJ5IGZvciB0 aGUgSFZNIGNvbnRleHQgYW5kIHdyaXRlIGFuIEhWTV9DT05URVhUIHJlY29yZCBpbnRvIHRoZSBz dHJlYW0uCiAgKi8KQEAgLTU4LDMwICs4NCwxMSBAQCBzdGF0aWMgaW50IHdyaXRlX2h2bV9jb250 ZXh0KHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAgKiBRdWVyeSBmb3IgYSByYW5nZSBvZiBI Vk0gcGFyYW1ldGVycyBhbmQgd3JpdGUgYW4gSFZNX1BBUkFNUyByZWNvcmQgaW50byB0aGUKICAq IHN0cmVhbS4KICAqLwotc3RhdGljIGludCB3cml0ZV9odm1fcGFyYW1zKHN0cnVjdCB4Y19zcl9j b250ZXh0ICpjdHgpCitzdGF0aWMgaW50IHdyaXRlX2h2bV9wYXJhbXMoc3RydWN0IHhjX3NyX2Nv bnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBp bnQgKnBhcmFtcywgdW5zaWduZWQgaW50IG5yX3BhcmFtcykKIHsKLSAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgaW50IHBhcmFtc1tdID0gewotICAgICAgICBIVk1fUEFSQU1fU1RPUkVfUEZOLAot ICAgICAgICBIVk1fUEFSQU1fSU9SRVFfUEZOLAotICAgICAgICBIVk1fUEFSQU1fQlVGSU9SRVFf UEZOLAotICAgICAgICBIVk1fUEFSQU1fUEFHSU5HX1JJTkdfUEZOLAotICAgICAgICBIVk1fUEFS QU1fTU9OSVRPUl9SSU5HX1BGTiwKLSAgICAgICAgSFZNX1BBUkFNX1NIQVJJTkdfUklOR19QRk4s Ci0gICAgICAgIEhWTV9QQVJBTV9WTTg2X1RTU19TSVpFRCwKLSAgICAgICAgSFZNX1BBUkFNX0NP TlNPTEVfUEZOLAotICAgICAgICBIVk1fUEFSQU1fQUNQSV9JT1BPUlRTX0xPQ0FUSU9OLAotICAg ICAgICBIVk1fUEFSQU1fVklSSURJQU4sCi0gICAgICAgIEhWTV9QQVJBTV9JREVOVF9QVCwKLSAg ICAgICAgSFZNX1BBUkFNX1BBRV9FTkFCTEVELAotICAgICAgICBIVk1fUEFSQU1fVk1fR0VORVJB VElPTl9JRF9BRERSLAotICAgICAgICBIVk1fUEFSQU1fSU9SRVFfU0VSVkVSX1BGTiwKLSAgICAg ICAgSFZNX1BBUkFNX05SX0lPUkVRX1NFUlZFUl9QQUdFUywKLSAgICAgICAgSFZNX1BBUkFNX1g4 N19GSVBfV0lEVEgsCi0gICAgICAgIEhWTV9QQVJBTV9NQ0FfQ0FQLAotICAgIH07Ci0KICAgICB4 Y19pbnRlcmZhY2UgKnhjaCA9IGN0eC0+eGNoOwotICAgIHN0cnVjdCB4Y19zcl9yZWNfaHZtX3Bh cmFtc19lbnRyeSBlbnRyaWVzW0FSUkFZX1NJWkUocGFyYW1zKV07CisgICAgc3RydWN0IHhjX3Ny X3JlY19odm1fcGFyYW1zX2VudHJ5IGVudHJpZXNbbnJfcGFyYW1zXTsKICAgICBzdHJ1Y3QgeGNf c3JfcmVjX2h2bV9wYXJhbXMgaGRyID0gewogICAgICAgICAuY291bnQgPSAwLAogICAgIH07CkBA IC05Myw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2h2bV9wYXJhbXMoc3RydWN0IHhjX3Ny X2NvbnRleHQgKmN0eCkKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBpbnQgcmM7CiAKLSAgICBm b3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUocGFyYW1zKTsgaSsrICkKKyAgICBmb3IgKCBpID0g MDsgaSA8IG5yX3BhcmFtczsgaSsrICkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGluZGV4ID0g cGFyYW1zW2ldOwogICAgICAgICB1aW50NjRfdCB2YWx1ZTsKQEAgLTE2MCw3ICsxNjcsOCBAQCBz dGF0aWMgaW50IHg4Nl9odm1fc2V0dXAoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKIAogICAg IGN0eC0+c2F2ZS5wMm1fc2l6ZSA9IG5yX3BmbnM7CiAKLSAgICBpZiAoIGN0eC0+c2F2ZS5jYWxs YmFja3MtPnN3aXRjaF9xZW11X2xvZ2RpcnR5KAorICAgIGlmICggY3R4LT5zdHJlYW1fcGhhc2Ug IT0gWENfU1RSRUFNX1BIQVNFX1BSRV9NSVJST1JfRElTS1MgJiYKKyAgICAgICAgIGN0eC0+c2F2 ZS5jYWxsYmFja3MtPnN3aXRjaF9xZW11X2xvZ2RpcnR5KAogICAgICAgICAgICAgIGN0eC0+ZG9t aWQsIDEsIGN0eC0+c2F2ZS5jYWxsYmFja3MtPmRhdGEpICkKICAgICB7CiAgICAgICAgIFBFUlJP UigiQ291bGRuJ3QgZW5hYmxlIHFlbXUgbG9nLWRpcnR5IG1vZGUiKTsKQEAgLTIwNSwxOSArMjEz LDUxIEBAIHN0YXRpYyBpbnQgeDg2X2h2bV9lbmRfb2ZfY2hlY2twb2ludChzdHJ1Y3QgeGNfc3Jf Y29udGV4dCAqY3R4KQogICAgICAgICByZXR1cm4gcmM7CiAKICAgICAvKiBXcml0ZSBIVk1fUEFS QU1TIHJlY29yZCBjb250YWlucyBhcHBsaWNhYmxlIEhWTSBwYXJhbXMuICovCi0gICAgcmMgPSB3 cml0ZV9odm1fcGFyYW1zKGN0eCk7CisgICAgcmMgPSB3cml0ZV9odm1fcGFyYW1zKGN0eCwgcGFy YW1zLCBBUlJBWV9TSVpFKHBhcmFtcykpOwogICAgIGlmICggcmMgKQogICAgICAgICByZXR1cm4g cmM7CiAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCB4ODZfaHZtX3NlbmRfcHJlX21p cnJvcl9kaXNrc19wYWdlcyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQoreworICAgIHhjX2lu dGVyZmFjZSAqeGNoID0gY3R4LT54Y2g7CisgICAgdWludDY0X3QgdmFsdWU7CisgICAgdW5zaWdu ZWQgaW50IGk7CisgICAgaW50IHJjOworCisgICAgeGNfc2V0X3Byb2dyZXNzX3ByZWZpeCh4Y2gs ICJQcmUtbWlycm9yaW5nIGxvY2FsIGRpc2tzIHBoYXNlIik7CisKKyAgICBmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShwYXJhbXNfbWlycm9yaW5nKTsgaSsrKQorICAgIHsKKyAgICAgICAgcmMg PSB4Y19odm1fcGFyYW1fZ2V0KHhjaCwgY3R4LT5kb21pZCwgcGFyYW1zX21pcnJvcmluZ1tpXSwg JnZhbHVlKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAg ICAgcmMgPSBhZGRfdG9fYmF0Y2goY3R4LCB2YWx1ZSk7CisgICAgICAgIGlmICggcmMgKQorICAg ICAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmMgPSBmbHVzaF9iYXRjaChjdHgpOwor ICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gd3JpdGVfaHZtX3Bh cmFtcyhjdHgsIHBhcmFtc19taXJyb3JpbmcsIEFSUkFZX1NJWkUocGFyYW1zX21pcnJvcmluZykp OworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworIG91dDoKKyAgICByZXR1cm4g cmM7Cit9CisKIHN0YXRpYyBpbnQgeDg2X2h2bV9jbGVhbnVwKHN0cnVjdCB4Y19zcl9jb250ZXh0 ICpjdHgpCiB7CiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKIAogICAgIC8qIElm IHFlbXUgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQgbG9nZGlydHkgbW9kZSwgYXR0ZW1wdCB0byBkaXNh YmxlLiAqLwotICAgIGlmICggY3R4LT54ODZfaHZtLnNhdmUucWVtdV9lbmFibGVkX2xvZ2RpcnR5 ICYmCisgICAgaWYgKCBjdHgtPnN0cmVhbV9waGFzZSAhPSBYQ19TVFJFQU1fUEhBU0VfUFJFX01J UlJPUl9ESVNLUyAmJgorICAgICAgICAgY3R4LT54ODZfaHZtLnNhdmUucWVtdV9lbmFibGVkX2xv Z2RpcnR5ICYmCiAgICAgICAgICBjdHgtPnNhdmUuY2FsbGJhY2tzLT5zd2l0Y2hfcWVtdV9sb2dk aXJ0eSgKICAgICAgICAgICAgICBjdHgtPmRvbWlkLCAwLCBjdHgtPnNhdmUuY2FsbGJhY2tzLT5k YXRhKSApCiAgICAgewpAQCAtMjMwLDE0ICsyNzAsMTUgQEAgc3RhdGljIGludCB4ODZfaHZtX2Ns ZWFudXAoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKIAogc3RydWN0IHhjX3NyX3NhdmVfb3Bz IHNhdmVfb3BzX3g4Nl9odm0gPQogewotICAgIC5wZm5fdG9fZ2ZuICAgICAgICAgID0geDg2X2h2 bV9wZm5fdG9fZ2ZuLAotICAgIC5ub3JtYWxpc2VfcGFnZSAgICAgID0geDg2X2h2bV9ub3JtYWxp c2VfcGFnZSwKLSAgICAuc2V0dXAgICAgICAgICAgICAgICA9IHg4Nl9odm1fc2V0dXAsCi0gICAg LnN0YXJ0X29mX3N0cmVhbSAgICAgPSB4ODZfaHZtX3N0YXJ0X29mX3N0cmVhbSwKLSAgICAuc3Rh cnRfb2ZfY2hlY2twb2ludCA9IHg4Nl9odm1fc3RhcnRfb2ZfY2hlY2twb2ludCwKLSAgICAuZW5k X29mX2NoZWNrcG9pbnQgICA9IHg4Nl9odm1fZW5kX29mX2NoZWNrcG9pbnQsCi0gICAgLmNoZWNr X3ZtX3N0YXRlICAgICAgPSB4ODZfaHZtX2NoZWNrX3ZtX3N0YXRlLAotICAgIC5jbGVhbnVwICAg ICAgICAgICAgID0geDg2X2h2bV9jbGVhbnVwLAorICAgIC5wZm5fdG9fZ2ZuICAgICAgICAgICAg ICAgICAgICA9IHg4Nl9odm1fcGZuX3RvX2dmbiwKKyAgICAubm9ybWFsaXNlX3BhZ2UgICAgICAg ICAgICAgICAgPSB4ODZfaHZtX25vcm1hbGlzZV9wYWdlLAorICAgIC5zZXR1cCAgICAgICAgICAg ICAgICAgICAgICAgICA9IHg4Nl9odm1fc2V0dXAsCisgICAgLnN0YXJ0X29mX3N0cmVhbSAgICAg ICAgICAgICAgID0geDg2X2h2bV9zdGFydF9vZl9zdHJlYW0sCisgICAgLnN0YXJ0X29mX2NoZWNr cG9pbnQgICAgICAgICAgID0geDg2X2h2bV9zdGFydF9vZl9jaGVja3BvaW50LAorICAgIC5lbmRf b2ZfY2hlY2twb2ludCAgICAgICAgICAgICA9IHg4Nl9odm1fZW5kX29mX2NoZWNrcG9pbnQsCisg ICAgLmNoZWNrX3ZtX3N0YXRlICAgICAgICAgICAgICAgID0geDg2X2h2bV9jaGVja192bV9zdGF0 ZSwKKyAgICAuY2xlYW51cCAgICAgICAgICAgICAgICAgICAgICAgPSB4ODZfaHZtX2NsZWFudXAs CisgICAgLnByZV9taXJyb3JfZGlza3Nfc3RyZWFtX3BoYXNlID0geDg2X2h2bV9zZW5kX3ByZV9t aXJyb3JfZGlza3NfcGFnZXMsCiB9OwogCiAvKgotLSAKMi4zLjIgKEFwcGxlIEdpdC01NSkKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs