From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boaz Harrosh Subject: [PATCHSET 0/9 ver7] exofs for 2.6.30 (really) Date: Wed, 01 Apr 2009 17:05:21 +0300 Message-ID: <49D374A1.5010303@panasas.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000607050404050007040402" Cc: Avishay Traeger To: Andrew Morton , Randy Dunlap , Jeff Garzik , Evgeniy Polyakov , Marcin Slusarz Received: from gw-ca.panasas.com ([209.116.51.66]:30618 "EHLO laguna.int.panasas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932534AbZDAOIq (ORCPT ); Wed, 1 Apr 2009 10:08:46 -0400 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------000607050404050007040402 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Posting the final exofs patchset for the Linux 2.6.30 merge window. Unless something critical is found, any new comments, clean-ups, enhancements, I will apply ontop of this code for the next Kernel. So please do comment away. I have squashed all comments changes and fixes, including Randy Dunlap's patch into their respective patch below. Attached are the grand diff from last time with annotations below important changes about what was changed. Thank you for every one that participated and help to make this a better code. exofs is a fully usable and exportable filesystem by now. About stability, well it was not used that much. These patches are available in the git repository at: git://git.open-osd.org/linux-open-osd.git for-linus Boaz Harrosh (9): exofs: Kbuild, Headers and osd utils exofs: file and file_inode operations exofs: symlink_inode and fast_symlink_inode operations exofs: address_space_operations exofs: dir_inode and directory operations exofs: super_operations and file_system_type exofs: export_operations exofs: Documentation fs: Add exofs to Kernel build Documentation/filesystems/exofs.txt | 176 +++++ fs/Kconfig | 2 + fs/Makefile | 1 + fs/exofs/BUGS | 3 + fs/exofs/Kbuild | 16 + fs/exofs/Kconfig | 13 + fs/exofs/common.h | 184 +++++ fs/exofs/dir.c | 672 ++++++++++++++++++ fs/exofs/exofs.h | 180 +++++ fs/exofs/file.c | 87 +++ fs/exofs/inode.c | 1303 +++++++++++++++++++++++++++++++++++ fs/exofs/namei.c | 342 +++++++++ fs/exofs/osd.c | 153 ++++ fs/exofs/super.c | 584 ++++++++++++++++ fs/exofs/symlink.c | 57 ++ 15 files changed, 3773 insertions(+), 0 deletions(-) create mode 100644 Documentation/filesystems/exofs.txt create mode 100644 fs/exofs/BUGS create mode 100644 fs/exofs/Kbuild create mode 100644 fs/exofs/Kconfig create mode 100644 fs/exofs/common.h create mode 100644 fs/exofs/dir.c create mode 100644 fs/exofs/exofs.h create mode 100644 fs/exofs/file.c create mode 100644 fs/exofs/inode.c create mode 100644 fs/exofs/namei.c create mode 100644 fs/exofs/osd.c create mode 100644 fs/exofs/super.c create mode 100644 fs/exofs/symlink.c Boaz --------------000607050404050007040402 Content-Type: text/plain; name="exofs-ver6-to-ver7.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exofs-ver6-to-ver7.patch" ClNlZSBjb21tZW50cyBlbWJlZGRlZCBpbnNpZGUgdGhlIHBhdGNoCgpnaXQgZGlmZiAtLXN0 YXQgLXAgb28tZXhwZXJpbWVudGFsIEhFQUQgLS0gZnMvZXhvZnMvCiBmcy9leG9mcy9jb21t b24uaCB8ICAgIDUgKy0tCiBmcy9leG9mcy9kaXIuYyAgICB8ICAgIDMgKy0KIGZzL2V4b2Zz L2V4b2ZzLmggIHwgICAxNCArKystLS0tLQogZnMvZXhvZnMvZmlsZS5jICAgfCAgIDExICsr Ky0tLQogZnMvZXhvZnMvaW5vZGUuYyAgfCAgIDg5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBmcy9leG9mcy9zdXBlci5jICB8ICAg MTEgKysrKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDY0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2V4b2ZzL2NvbW1vbi5oIGIvZnMvZXhvZnMvY29t bW9uLmgKaW5kZXggOGE1NjMzOC4uMjQ2NjdlZSAxMDA2NDQKLS0tIGEvZnMvZXhvZnMvY29t bW9uLmgKKysrIGIvZnMvZXhvZnMvY29tbW9uLmgKQEAgLTYzLDkgKzYzLDggQEAKICAqIE9i amVjdCBJRHMgMCwgMSwgYW5kIDIgYXJlIGFsd2F5cyBpbiB1c2UgKHNlZSBhYm92ZSBkZWZp bmVzKS4KICAqLwogZW51bSB7Ci0JRVhPRlNfVUlOVDY0X01BWCA9ICh+MExMKSwKLQlFWE9G U19NQVhfSU5PX0lEID0gKHNpemVvZihpbm9fdCkgKiA4ID09IDY0KSA/IEVYT0ZTX1VJTlQ2 NF9NQVggOgotCQkJCQkoMUxMIDw8IChzaXplb2YoaW5vX3QpICogOCAtIDEpKSwKKwlFWE9G U19NQVhfSU5PX0lEID0gKHNpemVvZihpbm9fdCkgKiA4ID09IDY0KSA/IFVMTE9OR19NQVgg OgorCQkJCQkoMVVMTCA8PCAoc2l6ZW9mKGlub190KSAqIDhVTEwgLSAxVUxMKSksCiAJRVhP RlNfTUFYX0lECSA9IChFWE9GU19NQVhfSU5PX0lEIC0gMSAtIEVYT0ZTX09CSl9PRkYpLAog fTsKCkZvciBub3cgVUxMT05HX01BWCA9PSBVSU5UNjRfTUFYIHVudGlsIDEyOCBiaXQgbWFj aGluZXMgY29tZSB1cC4KUGVyaGFwcyBpbiBmdXR1cmUgSSB3aWxsIHN1Ym1pdCBhIHBhdGNo IHRvIGtlcm5lbC5oIHRoYXQgYWRkczoKVUlOVDY0X01BWCwgVUlOVDMyX01BWCwgVUlOVDE2 X01BWCwgYW5kIFVJTlQ4X01BWCBpbiBhIHBsYXRmb3JtCmluZGVwZW5kZW50IHdheQoKZGlm ZiAtLWdpdCBhL2ZzL2V4b2ZzL2Rpci5jIGIvZnMvZXhvZnMvZGlyLmMKaW5kZXggNTVlYmJi MS4uNjViMGM4YyAxMDA2NDQKLS0tIGEvZnMvZXhvZnMvZGlyLmMKKysrIGIvZnMvZXhvZnMv ZGlyLmMKQEAgLTQ2LDYgKzQ2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV4b2ZzX3B1dF9w YWdlKHN0cnVjdCBwYWdlICpwYWdlKQogCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsKIH0K IAorLyogQWNjZXNzZXMgZGlyJ3MgaW5vZGUtPmlfc2l6ZSBtdXN0IGJlIGNhbGxlZCB1bmRl ciBpbm9kZSBsb2NrICovCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZGlyX3BhZ2Vz KHN0cnVjdCBpbm9kZSAqaW5vZGUpCiB7CiAJcmV0dXJuIChpbm9kZS0+aV9zaXplICsgUEFH RV9DQUNIRV9TSVpFIC0gMSkgPj4gUEFHRV9DQUNIRV9TSElGVDsKQEAgLTUzLDcgKzU0LDcg QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGRpcl9wYWdlcyhzdHJ1Y3QgaW5vZGUg Kmlub2RlKQogCiBzdGF0aWMgdW5zaWduZWQgZXhvZnNfbGFzdF9ieXRlKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgcGFnZV9ucikKIHsKLQl1bnNpZ25lZCBsYXN0X2J5 dGUgPSBpbm9kZS0+aV9zaXplOworCWxvZmZfdCBsYXN0X2J5dGUgPSBpbm9kZS0+aV9zaXpl OwogCiAJbGFzdF9ieXRlIC09IHBhZ2VfbnIgPDwgUEFHRV9DQUNIRV9TSElGVDsKIAlpZiAo bGFzdF9ieXRlID4gUEFHRV9DQUNIRV9TSVpFKQpkaWZmIC0tZ2l0IGEvZnMvZXhvZnMvZXhv ZnMuaCBiL2ZzL2V4b2ZzL2V4b2ZzLmgKaW5kZXggZGExMzk3YS4uMGZkNGM3OCAxMDA2NDQK LS0tIGEvZnMvZXhvZnMvZXhvZnMuaAorKysgYi9mcy9leG9mcy9leG9mcy5oCkBAIC00Nyw3 ICs0Nyw3IEBACiAJcHJpbnRrKEtFUk5fTk9USUNFICJleG9mcyBAJXM6JWQ6ICIgZm10LCBf X2Z1bmNfXywgX19MSU5FX18sICMjYSkKICNlbHNlCiAjZGVmaW5lIEVYT0ZTX0RCR01TRyhm bXQsIGEuLi4pIFwKLQlkbyB7fSB3aGlsZSAoMCkKKwlkbyB7IGlmICgwKSBwcmludGsoZm10 LCAjI2EpOyB9IHdoaWxlICgwKQogI2VuZGlmCiAKIC8qIHU2NCBoYXMgcHJvYmxlbXMgd2l0 aCBwcmludGsgdGhpcyB3aWxsIGNhc3QgaXQgdG8gdW5zaWduZWQgbG9uZyBsb25nICovCgpI ZXJlIEkgYWxzbyBsZXQgY29tcGlsZSBFWE9GU19EQkdNU0cgZXZlbiBpZiBPRkYuIFRvIGNh dGNoIGNvbXBpbGF0aW9uIGVycm9ycwoKQEAgLTg5LDIyICs4OSwyMiBAQCBzdHJ1Y3QgZXhv ZnNfaV9pbmZvIHsKIAogc3RhdGljIGlubGluZSBpbnQgb2JqXzJiY3JlYXRlZChzdHJ1Y3Qg ZXhvZnNfaV9pbmZvICpvaSkKIHsKLQlyZXR1cm4gdGVzdF9iaXQoT0JKXzJCQ1JFQVRFRCwg JihvaS0+aV9mbGFncykpOworCXJldHVybiB0ZXN0X2JpdChPQkpfMkJDUkVBVEVELCAmb2kt PmlfZmxhZ3MpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X29ial8yYmNyZWF0ZWQo c3RydWN0IGV4b2ZzX2lfaW5mbyAqb2kpCiB7Ci0Jc2V0X2JpdChPQkpfMkJDUkVBVEVELCAm KG9pLT5pX2ZsYWdzKSk7CisJc2V0X2JpdChPQkpfMkJDUkVBVEVELCAmb2ktPmlfZmxhZ3Mp OwogfQogCiBzdGF0aWMgaW5saW5lIGludCBvYmpfY3JlYXRlZChzdHJ1Y3QgZXhvZnNfaV9p bmZvICpvaSkKIHsKLQlyZXR1cm4gdGVzdF9iaXQoT0JKX0NSRUFURUQsICYob2ktPmlfZmxh Z3MpKTsKKwlyZXR1cm4gdGVzdF9iaXQoT0JKX0NSRUFURUQsICZvaS0+aV9mbGFncyk7CiB9 CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfb2JqX2NyZWF0ZWQoc3RydWN0IGV4b2ZzX2lf aW5mbyAqb2kpCiB7Ci0Jc2V0X2JpdChPQkpfQ1JFQVRFRCwgJihvaS0+aV9mbGFncykpOwor CXNldF9iaXQoT0JKX0NSRUFURUQsICZvaS0+aV9mbGFncyk7CiB9CiAKIGludCBfX2V4b2Zz X3dhaXRfb2JqX2NyZWF0ZWQoc3RydWN0IGV4b2ZzX2lfaW5mbyAqb2kpOwpAQCAtMTczLDEw ICsxNzMsNiBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9u cyBleG9mc19hb3BzOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGV4 b2ZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbm9kZV9v cGVyYXRpb25zIGV4b2ZzX3NwZWNpYWxfaW5vZGVfb3BlcmF0aW9uczsKIAotLyogc3VwZXIu YyAgICAgICAgICAgKi8KLWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBl eG9mc19zb3BzOwotZXh0ZXJuIGNvbnN0IHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyBleG9m c19leHBvcnRfb3BzOwotCiAvKiBzeW1saW5rLmMgICAgICAgICAqLwogZXh0ZXJuIGNvbnN0 IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGV4b2ZzX3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9u czsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleG9mc19mYXN0X3N5 bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsKZGlmZiAtLWdpdCBhL2ZzL2V4b2ZzL2ZpbGUuYyBi L2ZzL2V4b2ZzL2ZpbGUuYwppbmRleCAyNzEyZjY4Li42ZWQ3ZmU0IDEwMDY0NAotLS0gYS9m cy9leG9mcy9maWxlLmMKKysrIGIvZnMvZXhvZnMvZmlsZS5jCkBAIC00NSwxNyArNDUsMTgg QEAgc3RhdGljIGludCBleG9mc19yZWxlYXNlX2ZpbGUoc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IGZpbGUgKmZpbHApCiBzdGF0aWMgaW50IGV4b2ZzX2ZpbGVfZnN5bmMoc3RydWN0 IGZpbGUgKmZpbHAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAkJCSAgICBpbnQgZGF0YXN5 bmMpCiB7Ci0JaW50IHJldDEsIHJldDI7CisJaW50IHJldDsKIAlzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqbWFwcGluZyA9IGZpbHAtPmZfbWFwcGluZzsKIAotCXJldDEgPSBmaWxlbWFwX3dy aXRlX2FuZF93YWl0KG1hcHBpbmcpOworCXJldCA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXQo bWFwcGluZyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCS8qTm90ZTogZmlsZV9m c3luYyBiZWxvdyBhbHNvIGNhbGxlcyBzeW5jX2Jsb2NrZGV2LCB3aGljaCBpcyBhIG5vLW9w CiAJICogICAgICBmb3IgZXhvZnMsIGJ1dCBvdGhlciB0aGVuIHRoYXQgaXQgZG9lcyBzeW5j X2lub2RlIGFuZAogCSAqICAgICAgc3luY19zdXBlcmJsb2NrIHdoaWNoIGlzIHdoYXQgd2Ug bmVlZCBoZXJlLgogCSAqLwotCXJldDIgPSBmaWxlX2ZzeW5jKGZpbHAsIGRlbnRyeSwgZGF0 YXN5bmMpOwotCi0JcmV0dXJuIHJldDEgPyByZXQxIDogcmV0MjsKKwlyZXR1cm4gZmlsZV9m c3luYyhmaWxwLCBkZW50cnksIGRhdGFzeW5jKTsKIH0KIAogc3RhdGljIGludCBleG9mc19m bHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZCkKCkFzIG5vdGVkIGJ5IEFu ZHJldywgdGltZW91dHMgaGVyZSBjYW4ga2lsbCB5b3UuCgpkaWZmIC0tZ2l0IGEvZnMvZXhv ZnMvaW5vZGUuYyBiL2ZzL2V4b2ZzL2lub2RlLmMKaW5kZXggYjc3YzE5Ny4uYmE4ZDlmYSAx MDA2NDQKLS0tIGEvZnMvZXhvZnMvaW5vZGUuYworKysgYi9mcy9leG9mcy9pbm9kZS5jCkBA IC01Miw3ICs1Miw3IEBAIHN0cnVjdCBwYWdlX2NvbGxlY3QgewogCXN0cnVjdCBiaW8gKmJp bzsKIAl1bnNpZ25lZCBucl9wYWdlczsKIAl1bnNpZ25lZCBsb25nIGxlbmd0aDsKLQlsb25n IHBnX2ZpcnN0OworCWxvZmZfdCBwZ19maXJzdDsgLyoga2VlcCA2NGJpdCBhbHNvIGluIDMy LWFyY2hlcyAqLwogfTsKIAogc3RhdGljIHZvaWQgX3Bjb2xfaW5pdChzdHJ1Y3QgcGFnZV9j b2xsZWN0ICpwY29sLCB1bnNpZ25lZCBleHBlY3RlZF9wYWdlcywKQEAgLTE2MSw4ICsxNjEs OSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfd3JpdGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwg aW50IHJldCkKIAllbmRfcGFnZV93cml0ZWJhY2socGFnZSk7CiB9CiAKLXN0YXRpYyBpbnQg X3JlYWRwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBib29sIGlzX3N5bmMpOwotCisvKiBDYWxs ZWQgYXQgdGhlIGVuZCBvZiByZWFkcywgdG8gb3B0aW9uYWxseSB1bmxvY2sgcGFnZXMgYW5k IHVwZGF0ZSB0aGVpcgorICogc3RhdHVzLgorICovCiBzdGF0aWMgaW50IF9fcmVhZHBhZ2Vz X2RvbmUoc3RydWN0IG9zZF9yZXF1ZXN0ICpvciwgc3RydWN0IHBhZ2VfY29sbGVjdCAqcGNv bCwKIAkJCSAgICBib29sIGRvX3VubG9jaykKIHsKQEAgLTE4MywzNSArMTg0LDMwIEBAIHN0 YXRpYyBpbnQgX19yZWFkcGFnZXNfZG9uZShzdHJ1Y3Qgb3NkX3JlcXVlc3QgKm9yLCBzdHJ1 Y3QgcGFnZV9jb2xsZWN0ICpwY29sLAogCQlnb29kX2J5dGVzID0gcGNvbC0+bGVuZ3RoIC0g cmVzaWQ7CiAKIAlFWE9GU19EQkdNU0coInJlYWRwYWdlc19kb25lKDB4JWx4KSBnb29kX2J5 dGVzPTB4JWxseCIKLQkJICAgICAiIGxlbmd0aD0weCV6eCBucl9wYWdlcz0ldVxuIiwKKwkJ ICAgICAiIGxlbmd0aD0weCVseCBucl9wYWdlcz0ldVxuIiwKIAkJICAgICBwY29sLT5pbm9k ZS0+aV9pbm8sIF9MTFUoZ29vZF9ieXRlcyksIHBjb2wtPmxlbmd0aCwKIAkJICAgICBwY29s LT5ucl9wYWdlcyk7CiAKIAlfX2Jpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIHBjb2wtPmJp bywgaSwgMCkgewogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGJ2ZWMtPmJ2X3BhZ2U7CiAJCXN0 cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0OworCQlpbnQgcGFnZV9z dGF0OwogCiAJCWlmIChpbm9kZSAhPSBwY29sLT5pbm9kZSkKIAkJCWNvbnRpbnVlOyAvKiBv c2QgbWlnaHQgYWRkIG1vcmUgcGFnZXMgYXQgZW5kICovCiAKLQkJaWYgKChsZW5ndGggPCBn b29kX2J5dGVzKSB8fCAoaSA9PSAwKSkgewotCQkJcmV0ID0gdXBkYXRlX3JlYWRfcGFnZShw YWdlLCAoaSA9PSAwKSA/IHJldCA6IDApOwotCQkJaWYgKGRvX3VubG9jaykKLQkJCQl1bmxv Y2tfcGFnZShwYWdlKTsKLQkJCUVYT0ZTX0RCR01TRygiICAgIHJlYWRwYWdlc19kb25lKDB4 JWx4LCAweCVseClcbiIsCi0JCQkJICAgICBpbm9kZS0+aV9pbm8sIHBhZ2UtPmluZGV4KTsK LQkJfSBlbHNlIHsKLQkJCS8qIGNhbiBub3QgaGFwcGVuIG9uIHNpbmdsZSBzeW5jX3JlYWRw YWdlICovCi0JCQlCVUdfT04oIWRvX3VubG9jayk7CisJCWlmIChsaWtlbHkobGVuZ3RoIDwg Z29vZF9ieXRlcykpCisJCQlwYWdlX3N0YXQgPSAwOworCQllbHNlCisJCQlwYWdlX3N0YXQg PSByZXQ7CiAKLQkJCS8qIHRyeSBhIHNpbmdsZSBwYWdlIHJlYWQgYW5kIG9ubHkgdGhlbiBp dCBpcwotCQkJICogbWFya2VkIGFzIFNldFBhZ2VFcnJvcigpCi0JCQkgKi8KLQkJCUVYT0ZT X0VSUigiICAgIHJlYWRwYWdlc19kb25lKDB4JWx4LCAweCVseCkiCi0JCQkJICAiIGJhZF9i eXRlc1xuIiwgaW5vZGUtPmlfaW5vLCBwYWdlLT5pbmRleCk7Ci0JCQlfcmVhZHBhZ2UocGFn ZSwgZmFsc2UpOwotCQl9CisJCUVYT0ZTX0RCR01TRygiICAgIHJlYWRwYWdlc19kb25lKDB4 JWx4LCAweCVseCkgJXNcbiIsCisJCQkgIGlub2RlLT5pX2lubywgcGFnZS0+aW5kZXgsCisJ CQkgIHBhZ2Vfc3RhdCA/ICJiYWRfYnl0ZXMiIDogImdvb2RfYnl0ZXMiKTsKIAorCQlyZXQg PSB1cGRhdGVfcmVhZF9wYWdlKHBhZ2UsIHBhZ2Vfc3RhdCk7CisJCWlmIChkb191bmxvY2sp CisJCQl1bmxvY2tfcGFnZShwYWdlKTsKIAkJbGVuZ3RoICs9IGJ2ZWMtPmJ2X2xlbjsKIAl9 CiAKCldoYXQgaGFwcGVuZWQgYWJvdmUgd2FzOiBCZWZvcmUgSSB3YW50ZWQgdG8gcmV0cnkg YW5kIHJlYWQgcGFnZS1ieS1wYWdlCnRob3NlIHBhZ2VzIHRoYXQgZmFpbGVkLiAoRG9pbmcg QkxPQ0tfUEMgY29tbWFuZHMga2luZCBvZiBmYWlscyBlYXJseQp3aXRob3V0IHJldHJpZXMp LiBUaGlzIGNhbiBub3Qgd29yayBhcyBpdCBpcywgYmVjYXVzZSBjdXJyZW50IGNvZGUgd2ls bAppc3N1ZSBhbGwgY29tbWFuZHMgR0ZQX0tFUk5FTCBidXQgdGhlIGNhbGxiYWNrIGlzIGNh bGxlZCBmcm9tIGludGVydXB0LgooSXQgY2FuIGJlIGZpeGVkIGJ1dCBub3Qgc28gdHJpdmlh bGx5KS4gQWxzbyBhIG1vcmUgZGV0YWlsZWQgYW5hbHlzaXMKc2hvdWxkIGJlIHByZWZvcm1l ZCBvbiB3aGVuIHdlIGNhbiByZXRyeSBhbmQgd2hlbiB3ZSBzaG91bGQgbm90LgoKTGVhdmUg dGhpcyBmaXh0dXJlIG9uIFRPRE8gc3RhdHVzLgooSXQgd2FzIGFjdHVhbGx5IGZhaWxpbmcg aW4gdGVzdHMpCgpAQCAtMjIwLDYgKzIxNiw3IEBAIHN0YXRpYyBpbnQgX19yZWFkcGFnZXNf ZG9uZShzdHJ1Y3Qgb3NkX3JlcXVlc3QgKm9yLCBzdHJ1Y3QgcGFnZV9jb2xsZWN0ICpwY29s LAogCXJldHVybiByZXQ7CiB9CiAKKy8qIGNhbGxiYWNrIG9mIGFzeW5jIHJlYWRzICovCiBz dGF0aWMgdm9pZCByZWFkcGFnZXNfZG9uZShzdHJ1Y3Qgb3NkX3JlcXVlc3QgKm9yLCB2b2lk ICpwKQogewogCXN0cnVjdCBwYWdlX2NvbGxlY3QgKnBjb2wgPSBwOwpAQCAtMjg5LDcgKzI4 Niw3IEBAIHN0YXRpYyBpbnQgcmVhZF9leGVjKHN0cnVjdCBwYWdlX2NvbGxlY3QgKnBjb2ws IGJvb2wgaXNfc3luYykKIAogCWF0b21pY19pbmMoJnBjb2wtPnNiaS0+c19jdXJyX3BlbmRp bmcpOwogCi0JRVhPRlNfREJHTVNHKCJyZWFkX2V4ZWMgb2JqPTB4JWxseCBzdGFydD0weCVs bHggbGVuZ3RoPTB4JXp4XG4iLAorCUVYT0ZTX0RCR01TRygicmVhZF9leGVjIG9iaj0weCVs bHggc3RhcnQ9MHglbGx4IGxlbmd0aD0weCVseFxuIiwKIAkJICBvYmouaWQsIF9MTFUoaV9z dGFydCksIHBjb2wtPmxlbmd0aCk7CiAKIAkvKiBwYWdlcyBvd25lcnNoaXAgd2FzIHBhc3Nl ZCB0byBwY29sX2NvcHkgKi8KQEAgLTMwNSw2ICszMDIsMTMgQEAgZXJyOgogCXJldHVybiBy ZXQ7CiB9CiAKKy8qIHJlYWRwYWdlX3N0cmlwIGlzIGNhbGxlZCBlaXRoZXIgZGlyZWN0bHkg ZnJvbSByZWFkcGFnZSgpIG9yIGJ5IHRoZSBWRlMgZnJvbQorICogd2l0aGluIHJlYWRfY2Fj aGVfcGFnZXMoKSwgdG8gYWRkIG9uZSBtb3JlIHBhZ2UgdG8gYmUgcmVhZC4gSXQgd2lsbCB0 cnkgdG8KKyAqIGNvbGxlY3QgYXMgbWFueSBjb250aWd1b3VzIHBhZ2VzIGFzIHBvc2libGUu IElmIGEgZGlzY29udGludWl0eSBpcworICogZW5jb3VudGVyZWQsIG9yIGl0IHJ1bnMgb3V0 IG9mIHJlc291cmNlcywgaXQgd2lsbCBzdWJtaXQgdGhlIHByZXZpb3VzIHNlZ21lbnQKKyAq IGFuZCB3aWxsIHN0YXJ0IGEgbmV3IGNvbGxlY3Rpb24uIEV2ZW50dWFsbHkgY2FsbGVyIG11 c3Qgc3VibWl0IHRoZSBsYXN0CisgKiBzZWdtZW50IGlmIHByZXNlbnQuCisgKi8KIHN0YXRp YyBpbnQgcmVhZHBhZ2Vfc3RyaXAodm9pZCAqZGF0YSwgc3RydWN0IHBhZ2UgKnBhZ2UpCiB7 CiAJc3RydWN0IHBhZ2VfY29sbGVjdCAqcGNvbCA9IGRhdGE7CkBAIC0zNzIsNyArMzc2LDcg QEAgdHJ5X2FnYWluOgogCXJldCA9IHBjb2xfYWRkX3BhZ2UocGNvbCwgcGFnZSwgbGVuKTsK IAlpZiAocmV0KSB7CiAJCUVYT0ZTX0RCR01TRygiRmFpbGVkIHBjb2xfYWRkX3BhZ2UgcGFn ZXNbaV09JXAgIgotCQkJICAidGhpc19sZW49MHglenggbnJfcGFnZXM9JXUgbGVuZ3RoPTB4 JXp4XG4iLAorCQkJICAidGhpc19sZW49MHglenggbnJfcGFnZXM9JXUgbGVuZ3RoPTB4JWx4 XG4iLAogCQkJICBwYWdlLCBsZW4sIHBjb2wtPm5yX3BhZ2VzLCBwY29sLT5sZW5ndGgpOwog CiAJCS8qIHNwbGl0IHRoZSByZXF1ZXN0LCBhbmQgc3RhcnQgYWdhaW4gd2l0aCBjdXJyZW50 IHBhZ2UgKi8KQEAgLTQzNiw4ICs0NDAsNyBAQCBzdGF0aWMgaW50IGV4b2ZzX3JlYWRwYWdl KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgcGFnZSAqcGFnZSkKIAlyZXR1cm4gX3JlYWRw YWdlKHBhZ2UsIGZhbHNlKTsKIH0KIAotc3RhdGljIGludCBleG9mc193cml0ZXBhZ2Uoc3Ry dWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjMik7Ci0KKy8q IENhbGxiYWNrIGZvciBvc2Rfd3JpdGUuIEFsbCB3cml0ZXMgYXJlIGFzeW5jaHJvbm91c2Ug Ki8KIHN0YXRpYyB2b2lkIHdyaXRlcGFnZXNfZG9uZShzdHJ1Y3Qgb3NkX3JlcXVlc3QgKm9y LCB2b2lkICpwKQogewogCXN0cnVjdCBwYWdlX2NvbGxlY3QgKnBjb2wgPSBwOwpAQCAtNDYw LDMyICs0NjMsMjcgQEAgc3RhdGljIHZvaWQgd3JpdGVwYWdlc19kb25lKHN0cnVjdCBvc2Rf cmVxdWVzdCAqb3IsIHZvaWQgKnApCiAJCWdvb2RfYnl0ZXMgPSBwY29sLT5sZW5ndGggLSBy ZXNpZDsKIAogCUVYT0ZTX0RCR01TRygid3JpdGVwYWdlc19kb25lKDB4JWx4KSBnb29kX2J5 dGVzPTB4JWxseCIKLQkJICAgICAiIGxlbmd0aD0weCV6eCBucl9wYWdlcz0ldVxuIiwKKwkJ ICAgICAiIGxlbmd0aD0weCVseCBucl9wYWdlcz0ldVxuIiwKIAkJICAgICBwY29sLT5pbm9k ZS0+aV9pbm8sIF9MTFUoZ29vZF9ieXRlcyksIHBjb2wtPmxlbmd0aCwKIAkJICAgICBwY29s LT5ucl9wYWdlcyk7CiAKIAlfX2Jpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIHBjb2wtPmJp bywgaSwgMCkgewogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGJ2ZWMtPmJ2X3BhZ2U7CiAJCXN0 cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0OworCQlpbnQgcGFnZV9z dGF0OwogCiAJCWlmIChpbm9kZSAhPSBwY29sLT5pbm9kZSkKIAkJCWNvbnRpbnVlOyAvKiBv c2QgbWlnaHQgYWRkIG1vcmUgcGFnZXMgdG8gYSBiaW8gKi8KIAotCQlpZiAoKGxlbmd0aCA8 IGdvb2RfYnl0ZXMpIHx8IChpID09IDApKSB7Ci0JCQl1cGRhdGVfd3JpdGVfcGFnZShwYWdl LCByZXQpOwotCQkJdW5sb2NrX3BhZ2UocGFnZSk7Ci0JCQlFWE9GU19EQkdNU0coIiAgICB3 cml0ZXBhZ2VzX2RvbmUoMHglbHgsIDB4JWx4KSIKLQkJCQkgICAgICIgZ29vZF9ieXRlcyBy ZXQ9JWRcbiIsCi0JCQkJICAgICBpbm9kZS0+aV9pbm8sIHBhZ2UtPmluZGV4LCByZXQpOwot CQl9IGVsc2UgewotCQkJLyogdHJ5IGEgc2luZ2xlIHBhZ2Ugd3JpdGUgYW5kIG9ubHkgdGhl biBpdCBpcwotCQkJICogbWFya2VkIGFzIFNldFBhZ2VFcnJvcigpCi0JCQkgKi8KLQkJCUVY T0ZTX0VSUigiICAgIHdyaXRlcGFnZXNfZG9uZSgweCVseCwgMHglbHgpIgotCQkJCSAgIiBi YWRfYnl0ZXNcbiIsIGlub2RlLT5pX2lubywgcGFnZS0+aW5kZXgpOworCQlpZiAobGlrZWx5 KGxlbmd0aCA8IGdvb2RfYnl0ZXMpKQorCQkJcGFnZV9zdGF0ID0gMDsKKwkJZWxzZQorCQkJ cGFnZV9zdGF0ID0gcmV0OwogCi0JCQlleG9mc193cml0ZXBhZ2UocGFnZSwgTlVMTCk7Ci0J CX0KKwkJdXBkYXRlX3dyaXRlX3BhZ2UocGFnZSwgcGFnZV9zdGF0KTsKKwkJdW5sb2NrX3Bh Z2UocGFnZSk7CisJCUVYT0ZTX0RCR01TRygiICAgIHdyaXRlcGFnZXNfZG9uZSgweCVseCwg MHglbHgpIHN0YXR1cz0lZFxuIiwKKwkJCSAgICAgaW5vZGUtPmlfaW5vLCBwYWdlLT5pbmRl eCwgcGFnZV9zdGF0KTsKIAogCQlsZW5ndGggKz0gYnZlYy0+YnZfbGVuOwogCX0KClNhbWUg dGhpbmcgYXMgYWJvdmUgYnV0IGZvciB3cml0ZXMuCgpAQCAtNTMyLDcgKzUzMCw3IEBAIHN0 YXRpYyBpbnQgd3JpdGVfZXhlYyhzdHJ1Y3QgcGFnZV9jb2xsZWN0ICpwY29sKQogCX0KIAog CWF0b21pY19pbmMoJnBjb2wtPnNiaS0+c19jdXJyX3BlbmRpbmcpOwotCUVYT0ZTX0RCR01T Rygid3JpdGVfZXhlYygweCVseCwgMHglbHgpIHN0YXJ0PTB4JWxseCBsZW5ndGg9MHglenhc biIsCisJRVhPRlNfREJHTVNHKCJ3cml0ZV9leGVjKDB4JWx4LCAweCVsbHgpIHN0YXJ0PTB4 JWxseCBsZW5ndGg9MHglbHhcbiIsCiAJCSAgcGNvbC0+aW5vZGUtPmlfaW5vLCBwY29sLT5w Z19maXJzdCwgX0xMVShpX3N0YXJ0KSwKIAkJICBwY29sLT5sZW5ndGgpOwogCS8qIHBhZ2Vz IG93bmVyc2hpcCB3YXMgcGFzc2VkIHRvIHBjb2xfY29weSAqLwpAQCAtNTQ3LDYgKzU0NSwx MyBAQCBlcnI6CiAJcmV0dXJuIHJldDsKIH0KIAorLyogd3JpdGVwYWdlX3N0cmlwIGlzIGNh bGxlZCBlaXRoZXIgZGlyZWN0bHkgZnJvbSB3cml0ZXBhZ2UoKSBvciBieSB0aGUgVkZTIGZy b20KKyAqIHdpdGhpbiB3cml0ZV9jYWNoZV9wYWdlcygpLCB0byBhZGQgb25lIG1vcmUgcGFn ZSB0byBiZSB3cml0dGVuIHRvIHN0b3JhZ2UuCisgKiBJdCB3aWxsIHRyeSB0byBjb2xsZWN0 IGFzIG1hbnkgY29udGlndW91cyBwYWdlcyBhcyBwb3NzaWJsZS4gSWYgYQorICogZGlzY29u dGludWl0eSBpcyBlbmNvdW50ZXJlZCBvciBpdCBydW5zIG91dCBvZiByZXNvdXJjZXMgaXQg d2lsbCBzdWJtaXQgdGhlCisgKiBwcmV2aW91cyBzZWdtZW50IGFuZCB3aWxsIHN0YXJ0IGEg bmV3IGNvbGxlY3Rpb24uCisgKiBFdmVudHVhbGx5IGNhbGxlciBtdXN0IHN1Ym1pdCB0aGUg bGFzdCBzZWdtZW50IGlmIHByZXNlbnQuCisgKi8KIHN0YXRpYyBpbnQgd3JpdGVwYWdlX3N0 cmlwKHN0cnVjdCBwYWdlICpwYWdlLAogCQkJICAgc3RydWN0IHdyaXRlYmFja19jb250cm9s ICp3YmNfdW51c2VkLCB2b2lkICpkYXRhKQogewpAQCAtNjA5LDcgKzYxNCw3IEBAIHRyeV9h Z2FpbjoKIAlyZXQgPSBwY29sX2FkZF9wYWdlKHBjb2wsIHBhZ2UsIGxlbik7CiAJaWYgKHVu bGlrZWx5KHJldCkpIHsKIAkJRVhPRlNfREJHTVNHKCJGYWlsZWQgcGNvbF9hZGRfcGFnZSAi Ci0JCQkgICAgICJucl9wYWdlcz0ldSB0b3RhbF9sZW5ndGg9MHglenhcbiIsCisJCQkgICAg ICJucl9wYWdlcz0ldSB0b3RhbF9sZW5ndGg9MHglbHhcbiIsCiAJCQkgICAgIHBjb2wtPm5y X3BhZ2VzLCBwY29sLT5sZW5ndGgpOwogCiAJCS8qIHNwbGl0IHRoZSByZXF1ZXN0LCBuZXh0 IGxvb3Agd2lsbCBzdGFydCBhZ2FpbiAqLwpkaWZmIC0tZ2l0IGEvZnMvZXhvZnMvc3VwZXIu YyBiL2ZzL2V4b2ZzL3N1cGVyLmMKaW5kZXggOGEwN2Q2ZC4uOWYxOTg1ZSAxMDA2NDQKLS0t IGEvZnMvZXhvZnMvc3VwZXIuYworKysgYi9mcy9leG9mcy9zdXBlci5jCkBAIC0xOTQsNiAr MTk0LDggQEAgc3RhdGljIHZvaWQgZGVzdHJveV9pbm9kZWNhY2hlKHZvaWQpCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAgKiBTVVBFUkJMT0NLIEZVTkNUSU9OUwogICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworc3RhdGljIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25z IGV4b2ZzX3NvcHM7CitzdGF0aWMgY29uc3Qgc3RydWN0IGV4cG9ydF9vcGVyYXRpb25zIGV4 b2ZzX2V4cG9ydF9vcHM7CiAKIC8qCiAgKiBXcml0ZSB0aGUgc3VwZXJibG9jayB0byB0aGUg T1NECkBAIC00MjcsOCArNDI5LDggQEAgc3RhdGljIGludCBleG9mc19zdGF0ZnMoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogCQlBVFRSX0RFRihPU0Rf QVBBR0VfUEFSVElUSU9OX0lORk9STUFUSU9OLAogCQkJT1NEX0FUVFJfUElfVVNFRF9DQVBB Q0lUWSwgc2l6ZW9mKF9fYmU2NCkpLAogCX07Ci0JdWludDY0X3QgY2FwYWNpdHkgPSB+MDsK LQl1aW50NjRfdCB1c2VkID0gfjA7CisJdWludDY0X3QgY2FwYWNpdHkgPSBVTExPTkdfTUFY OworCXVpbnQ2NF90IHVzZWQgPSBVTExPTkdfTUFYOwogCXN0cnVjdCBvc2RfcmVxdWVzdCAq b3I7CiAJdWludDhfdCBjcmVkX2FbT1NEX0NBUF9MRU5dOwogCWludCByZXQ7CkBAIC00NzUs NyArNDc3LDcgQEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKLWNvbnN0IHN0cnVjdCBzdXBl cl9vcGVyYXRpb25zIGV4b2ZzX3NvcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IHN1cGVy X29wZXJhdGlvbnMgZXhvZnNfc29wcyA9IHsKIAkuYWxsb2NfaW5vZGUgICAgPSBleG9mc19h bGxvY19pbm9kZSwKIAkuZGVzdHJveV9pbm9kZSAgPSBleG9mc19kZXN0cm95X2lub2RlLAog CS53cml0ZV9pbm9kZSAgICA9IGV4b2ZzX3dyaXRlX2lub2RlLApAQCAtNDg4LDYgKzQ5MCw3 IEBAIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIGV4b2ZzX3NvcHMgPSB7CiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAgKiBFWFBPUlQgT1BFUkFUSU9OUwogICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCiBzdHJ1Y3QgZGVudHJ5ICpleG9mc19nZXRfcGFyZW50KHN0 cnVjdCBkZW50cnkgKmNoaWxkKQogewogCXVuc2lnbmVkIGxvbmcgaW5vID0gZXhvZnNfcGFy ZW50X2lubyhjaGlsZCk7CkBAIC01MjgsNyArNTMxLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50 cnkgKmV4b2ZzX2ZoX3RvX3BhcmVudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCQkJCSAg ICBleG9mc19uZnNfZ2V0X2lub2RlKTsKIH0KIAotY29uc3Qgc3RydWN0IGV4cG9ydF9vcGVy YXRpb25zIGV4b2ZzX2V4cG9ydF9vcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGV4cG9y dF9vcGVyYXRpb25zIGV4b2ZzX2V4cG9ydF9vcHMgPSB7CiAJLmZoX3RvX2RlbnRyeSA9IGV4 b2ZzX2ZoX3RvX2RlbnRyeSwKIAkuZmhfdG9fcGFyZW50ID0gZXhvZnNfZmhfdG9fcGFyZW50 LAogCS5nZXRfcGFyZW50ID0gZXhvZnNfZ2V0X3BhcmVudCwK --------------000607050404050007040402--