From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shirish Pargaonkar Subject: Re: lookup intent patch Date: Fri, 27 Mar 2009 10:15:21 -0500 Message-ID: <4a4634330903270815j415947f6ja190b884583de055@mail.gmail.com> References: <4a4634330902271134h3f334febke42b67ceab7e16eb@mail.gmail.com> <4a4634330903191336n54758971r2ff809ba31a80791@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e644c2ce87464e04661b33b9 Cc: "linux-cifs-client@lists.samba.org" , linux-fsdevel To: Steve French , Jeff Layton , Suresh Jayaraman Return-path: Received: from an-out-0708.google.com ([209.85.132.242]:54010 "EHLO an-out-0708.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752757AbZC0PPY (ORCPT ); Fri, 27 Mar 2009 11:15:24 -0400 Received: by an-out-0708.google.com with SMTP id d14so821363and.1 for ; Fri, 27 Mar 2009 08:15:21 -0700 (PDT) In-Reply-To: <4a4634330903191336n54758971r2ff809ba31a80791@mail.gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: --0016e644c2ce87464e04661b33b9 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Thu, Mar 19, 2009 at 3:36 PM, Shirish Pargaonkar wrote: > On Fri, Feb 27, 2009 at 2:34 PM, Shirish Pargaonkar > wrote: >> While there are pending issues related to broken Samba server posix >> code/behaviour, >> I thought I will run by you the patch for lookup intent nonetheless. >> >> It worked on 2.6.29-rc3 kernel with some of the testing I have done, I >> just downloaded >> the git sources from Steve's tree and ported the patch, that is what thi= s is. >> I am building those sources and should boot with that kernel and test >> the patch and post >> the results here. >> >> Regards, >> >> Shirish >> > > Here is the second version of the lookup intent patch that takes into > consideration the samba posix open bug. > > I ran modified connectathon test1 to create 5000 files. > I am not sure whether existing code when does not send SET_PATH_INFO > with info level > SMB_SET_FILE_END_OF_FILE_INFO2 =A0for O_TRUNC flag to a file open/creat > is a bug or not, > looking into it. > > > With the cthon test1 test, the files are created using > creat(, 0666) meaning flags of > O_WRONLY, O_CREAT, O_TRUNC. > > With the current code, the O_TRUNC is not honoured i.e. I do not > see SMB_SET_FILE_END_OF_FILE_INFO2 info level going over the wire, > hence the faster creation of the files. > > I changed the code in test1.c by changing the call > =A0creat(name, CHMOD_RW) > to > =A0open(name, O_WRONLY | O_CREAT, CHMOD_RW) > and I can see open with lookup intent is definitely faster (28%). > > > > ---------------------- lookup intent and cifs_posix_open with creat > -------------------- > > + date > Thu Mar 19 11:26:03 CDT 2009 > + ./test1 -f > ./test1: File and directory creation test > =A0test1 files 2 =A0created 5000 files 1 directories 1 levels deep > =A0 =A0 =A0 =A0./test1 ok. > + date > Thu Mar 19 11:26:29 CDT 2009 > > > SMB_POSIX_OPEN > SMB_SET_FILE_END_OF_FILE_INFO2 > SMB_SET_FILE_UNIX_BASIC > > > ---------------------- no lookup intent and cifs_posix_open with creat > ------------------ > > + date > Thu Mar 19 11:28:43 CDT 2009 > + ./test1 -f > > ./test1: File and directory creation test > =A0test1 files 2 =A0created 5000 files 1 directories 1 levels deep > =A0 =A0 =A0 =A0./test1 ok. > + date > Thu Mar 19 11:29:01 CDT 2009 > > SMB_POSIX_OPEN > > -------------------------------------------------------------------------= ---- > > > > > ---------------------- lookup intent and cifs_posix_open with open > -------------------- > > + date > Thu Mar 19 15:19:32 CDT 2009 > + ./test1 -f > ./test1: File and directory creation test > =A0test1 files 2 =A0created 5000 files 0 directories 1 levels deep > =A0 =A0 =A0 =A0./test1 ok. > + date > Thu Mar 19 15:19:45 CDT 2009 > > > ---------------------- no lookup intent and cifs_posix_open with open > ------------------ > > + date > Thu Mar 19 15:21:07 CDT 2009 > + ./test1 -f > ./test1: File and directory creation test > =A0test1 files 2 =A0created 5000 files 0 directories 1 levels deep > =A0 =A0 =A0 =A0./test1 ok. > + date > Thu Mar 19 15:21:25 CDT 2009 > > > -------------------------------------------------------------------------= ---- > Here is the third iteration of the lookup intent patch for cifs, this time mode is set with taking umaks into consideration. Regards, Shirish --0016e644c2ce87464e04661b33b9 Content-Type: application/octet-stream; name="li.3.patch" Content-Disposition: attachment; filename="li.3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fst0k1iu1 ZGlmZiAtLWdpdCBhL2ZzL2NpZnMvZGlyLmMgYi9mcy9jaWZzL2Rpci5jCmluZGV4IGY5YjZmNjgu LjAxMWQwYWMgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvZGlyLmMKKysrIGIvZnMvY2lmcy9kaXIuYwpA QCAtMTI5LDEyICsxMjksNjcgQEAgY2lmc19icF9yZW5hbWVfcmV0cnk6CiAJcmV0dXJuIGZ1bGxf cGF0aDsKIH0KIAorc3RhdGljIHZvaWQKK2NpZnNfZmlsbF9maWxlaW5mbyhzdHJ1Y3QgaW5vZGUg Km5ld2lub2RlLCBfX3UxNiBmaWxlSGFuZGxlLCAKKwkJCXN0cnVjdCBjaWZzVGNvbkluZm8gKnRj b24sIGJvb2wgd3JpdGVfb25seSkKK3sKKwlpbnQgb3Bsb2NrID0gMDsKKwlzdHJ1Y3QgY2lmc0Zp bGVJbmZvICpwQ2lmc0ZpbGU7CisJc3RydWN0IGNpZnNJbm9kZUluZm8gKnBDaWZzSW5vZGU7CisK KwljRVJST1IoMSwgKCJjaWZzX2ZpbGxfZmlsZWluZm8gZW50ZXJcbiIpKTsKKworCXBDaWZzRmls ZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBjaWZzRmlsZUluZm8pLCBHRlBfS0VSTkVMKTsKKwor CWlmIChwQ2lmc0ZpbGUgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaWYgKG9wbG9ja0VuYWJsZWQp CisJCW9wbG9jayA9IFJFUV9PUExPQ0s7CisKKwlwQ2lmc0ZpbGUtPm5ldGZpZCA9IGZpbGVIYW5k bGU7CisJcENpZnNGaWxlLT5waWQgPSBjdXJyZW50LT50Z2lkOworCXBDaWZzRmlsZS0+cElub2Rl ID0gbmV3aW5vZGU7CisJcENpZnNGaWxlLT5pbnZhbGlkSGFuZGxlID0gZmFsc2U7CisJcENpZnNG aWxlLT5jbG9zZVBlbmQgICAgID0gZmFsc2U7CisJaW5pdF9NVVRFWCgmcENpZnNGaWxlLT5maF9z ZW0pOworCW11dGV4X2luaXQoJnBDaWZzRmlsZS0+bG9ja19tdXRleCk7CisJSU5JVF9MSVNUX0hF QUQoJnBDaWZzRmlsZS0+bGxpc3QpOworCWF0b21pY19zZXQoJnBDaWZzRmlsZS0+d3J0UGVuZGlu ZywgMCk7CisKKwkvKiBzZXQgdGhlIGZvbGxvd2luZyBpbiBvcGVuIG5vdworCQkJcENpZnNGaWxl LT5wZmlsZSA9IGZpbGU7ICovCisJd3JpdGVfbG9jaygmR2xvYmFsU01CU2VzbG9jayk7CisJbGlz dF9hZGQoJnBDaWZzRmlsZS0+dGxpc3QsICZ0Y29uLT5vcGVuRmlsZUxpc3QpOworCXBDaWZzSW5v ZGUgPSBDSUZTX0kobmV3aW5vZGUpOworCWlmIChwQ2lmc0lub2RlKSB7CisJCS8qIGlmIHJlYWRh YmxlIGZpbGUgaW5zdGFuY2UgcHV0IGZpcnN0IGluIGxpc3QqLworCQlpZiAod3JpdGVfb25seSkg eworCQkJbGlzdF9hZGRfdGFpbCgmcENpZnNGaWxlLT5mbGlzdCwKKwkJCQkgICAgICAmcENpZnNJ bm9kZS0+b3BlbkZpbGVMaXN0KTsKKwkJfSBlbHNlIHsKKwkJCWxpc3RfYWRkKCZwQ2lmc0ZpbGUt PmZsaXN0LAorCQkJCSAmcENpZnNJbm9kZS0+b3BlbkZpbGVMaXN0KTsKKwkJfQorCQlpZiAoKG9w bG9jayAmIDB4RikgPT0gT1BMT0NLX0VYQ0xVU0lWRSkgeworCQkJcENpZnNJbm9kZS0+Y2xpZW50 Q2FuQ2FjaGVBbGwgPSB0cnVlOworCQkJcENpZnNJbm9kZS0+Y2xpZW50Q2FuQ2FjaGVSZWFkID0g dHJ1ZTsKKwkJCWNGWUkoMSwgKCJFeGNsdXNpdmUgT3Bsb2NrIGlub2RlICVwIiwKKwkJCQluZXdp bm9kZSkpOworCQl9IGVsc2UgaWYgKChvcGxvY2sgJiAweEYpID09IE9QTE9DS19SRUFEKQorCQkJ cENpZnNJbm9kZS0+Y2xpZW50Q2FuQ2FjaGVSZWFkID0gdHJ1ZTsKKwl9CisJd3JpdGVfdW5sb2Nr KCZHbG9iYWxTTUJTZXNsb2NrKTsKKwljRVJST1IoMSwgKCJjaWZzX2ZpbGxfZmlsZWluZm8gZXhp dFxuIikpOworfQorCiBpbnQgY2lmc19wb3NpeF9vcGVuKGNoYXIgKmZ1bGxfcGF0aCwgc3RydWN0 IGlub2RlICoqcGlub2RlLAogCQkgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IG1vZGUs IGludCBvZmxhZ3MsCiAJCSAgICBpbnQgKnBvcGxvY2ssIF9fdTE2ICpwbmV0ZmlkLCBpbnQgeGlk KQogewogCWludCByYzsKIAlfX3UzMiBvcGxvY2s7CisJYm9vbCB3cml0ZV9vbmx5ID0gZmFsc2U7 CiAJRklMRV9VTklYX0JBU0lDX0lORk8gKnByZXNwX2RhdGE7CiAJX191MzIgcG9zaXhfZmxhZ3Mg PSAwOwogCXN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IgPSBDSUZTX1NCKHNiKTsKQEAgLTE3 Miw2ICsyMjcsOCBAQCBpbnQgY2lmc19wb3NpeF9vcGVuKGNoYXIgKmZ1bGxfcGF0aCwgc3RydWN0 IGlub2RlICoqcGlub2RlLAogCWlmIChvZmxhZ3MgJiBPX0RJUkVDVCkKIAkJcG9zaXhfZmxhZ3Mg fD0gU01CX09fRElSRUNUOwogCisgICAgICAgIGlmICghKG9mbGFncyAmIEZNT0RFX1JFQUQpKQor ICAgICAgICAgICAgICAgIHdyaXRlX29ubHkgPSB0cnVlOwogCiAJcmMgPSBDSUZTUE9TSVhDcmVh dGUoeGlkLCBjaWZzX3NiLT50Y29uLCBwb3NpeF9mbGFncywgbW9kZSwKIAkJCXBuZXRmaWQsIHBy ZXNwX2RhdGEsICZvcGxvY2ssIGZ1bGxfcGF0aCwKQEAgLTE5OCw2ICsyNTUsOCBAQCBpbnQgY2lm c19wb3NpeF9vcGVuKGNoYXIgKmZ1bGxfcGF0aCwgc3RydWN0IGlub2RlICoqcGlub2RlLAogCiAJ cG9zaXhfZmlsbF9pbl9pbm9kZSgqcGlub2RlLCBwcmVzcF9kYXRhLCAxKTsKIAorCWNpZnNfZmls bF9maWxlaW5mbygqcGlub2RlLCAqcG5ldGZpZCwgY2lmc19zYi0+dGNvbiwgd3JpdGVfb25seSk7 CisKIHBvc2l4X29wZW5fcmV0OgogCWtmcmVlKHByZXNwX2RhdGEpOwogCXJldHVybiByYzsKQEAg LTIzOSw3ICsyOTgsNiBAQCBjaWZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZGVudHJ5ICpkaXJlbnRyeSwgaW50IG1vZGUsCiAJY2hhciAqZnVsbF9wYXRoID0gTlVMTDsKIAlG SUxFX0FMTF9JTkZPICpidWYgPSBOVUxMOwogCXN0cnVjdCBpbm9kZSAqbmV3aW5vZGUgPSBOVUxM OwotCXN0cnVjdCBjaWZzSW5vZGVJbmZvICpwQ2lmc0lub2RlOwogCWludCBkaXNwb3NpdGlvbiA9 IEZJTEVfT1ZFUldSSVRFX0lGOwogCWJvb2wgd3JpdGVfb25seSA9IGZhbHNlOwogCkBAIC00MTAs NDQgKzQ2OCw4IEBAIGNpZnNfY3JlYXRlX3NldF9kZW50cnk6CiAJCS8qIG1rbm9kIGNhc2UgLSBk byBub3QgbGVhdmUgZmlsZSBvcGVuICovCiAJCUNJRlNTTUJDbG9zZSh4aWQsIHRjb24sIGZpbGVI YW5kbGUpOwogCX0gZWxzZSBpZiAobmV3aW5vZGUpIHsKLQkJc3RydWN0IGNpZnNGaWxlSW5mbyAq cENpZnNGaWxlID0KLQkJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBjaWZzRmlsZUluZm8pLCBHRlBf S0VSTkVMKTsKLQotCQlpZiAocENpZnNGaWxlID09IE5VTEwpCi0JCQlnb3RvIGNpZnNfY3JlYXRl X291dDsKLQkJcENpZnNGaWxlLT5uZXRmaWQgPSBmaWxlSGFuZGxlOwotCQlwQ2lmc0ZpbGUtPnBp ZCA9IGN1cnJlbnQtPnRnaWQ7Ci0JCXBDaWZzRmlsZS0+cElub2RlID0gbmV3aW5vZGU7Ci0JCXBD aWZzRmlsZS0+aW52YWxpZEhhbmRsZSA9IGZhbHNlOwotCQlwQ2lmc0ZpbGUtPmNsb3NlUGVuZCAg ICAgPSBmYWxzZTsKLQkJaW5pdF9NVVRFWCgmcENpZnNGaWxlLT5maF9zZW0pOwotCQltdXRleF9p bml0KCZwQ2lmc0ZpbGUtPmxvY2tfbXV0ZXgpOwotCQlJTklUX0xJU1RfSEVBRCgmcENpZnNGaWxl LT5sbGlzdCk7Ci0JCWF0b21pY19zZXQoJnBDaWZzRmlsZS0+d3J0UGVuZGluZywgMCk7Ci0KLQkJ Lyogc2V0IHRoZSBmb2xsb3dpbmcgaW4gb3BlbiBub3cKLQkJCQlwQ2lmc0ZpbGUtPnBmaWxlID0g ZmlsZTsgKi8KLQkJd3JpdGVfbG9jaygmR2xvYmFsU01CU2VzbG9jayk7Ci0JCWxpc3RfYWRkKCZw Q2lmc0ZpbGUtPnRsaXN0LCAmdGNvbi0+b3BlbkZpbGVMaXN0KTsKLQkJcENpZnNJbm9kZSA9IENJ RlNfSShuZXdpbm9kZSk7Ci0JCWlmIChwQ2lmc0lub2RlKSB7Ci0JCQkvKiBpZiByZWFkYWJsZSBm aWxlIGluc3RhbmNlIHB1dCBmaXJzdCBpbiBsaXN0Ki8KLQkJCWlmICh3cml0ZV9vbmx5KSB7Ci0J CQkJbGlzdF9hZGRfdGFpbCgmcENpZnNGaWxlLT5mbGlzdCwKLQkJCQkJICAgICAgJnBDaWZzSW5v ZGUtPm9wZW5GaWxlTGlzdCk7Ci0JCQl9IGVsc2UgewotCQkJCWxpc3RfYWRkKCZwQ2lmc0ZpbGUt PmZsaXN0LAotCQkJCQkgJnBDaWZzSW5vZGUtPm9wZW5GaWxlTGlzdCk7Ci0JCQl9Ci0JCQlpZiAo KG9wbG9jayAmIDB4RikgPT0gT1BMT0NLX0VYQ0xVU0lWRSkgewotCQkJCXBDaWZzSW5vZGUtPmNs aWVudENhbkNhY2hlQWxsID0gdHJ1ZTsKLQkJCQlwQ2lmc0lub2RlLT5jbGllbnRDYW5DYWNoZVJl YWQgPSB0cnVlOwotCQkJCWNGWUkoMSwgKCJFeGNsdXNpdmUgT3Bsb2NrIGlub2RlICVwIiwKLQkJ CQkJbmV3aW5vZGUpKTsKLQkJCX0gZWxzZSBpZiAoKG9wbG9jayAmIDB4RikgPT0gT1BMT0NLX1JF QUQpCi0JCQkJcENpZnNJbm9kZS0+Y2xpZW50Q2FuQ2FjaGVSZWFkID0gdHJ1ZTsKLQkJfQotCQl3 cml0ZV91bmxvY2soJkdsb2JhbFNNQlNlc2xvY2spOworCQkJY2lmc19maWxsX2ZpbGVpbmZvKG5l d2lub2RlLCBmaWxlSGFuZGxlLAorCQkJCQljaWZzX3NiLT50Y29uLCB3cml0ZV9vbmx5KTsKIAl9 CiBjaWZzX2NyZWF0ZV9vdXQ6CiAJa2ZyZWUoYnVmKTsKQEAgLTU4MCwxMyArNjAyLDE2IEBAIGlu dCBjaWZzX21rbm9kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5 LCBpbnQgbW9kZSwKIAlyZXR1cm4gcmM7CiB9CiAKLQogc3RydWN0IGRlbnRyeSAqCiBjaWZzX2xv b2t1cChzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXJfaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRpcmVu dHJ5LAogCSAgICBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKIHsKIAlpbnQgeGlkOwogCWludCByYyA9 IDA7IC8qIHRvIGdldCBhcm91bmQgc3B1cmlvdXMgZ2NjIHdhcm5pbmcsIHNldCB0byB6ZXJvIGhl cmUgKi8KKwlpbnQgb3Bsb2NrID0gMDsKKwlpbnQgbW9kZTsKKwlfX3UxNiBmaWxlSGFuZGxlID0g MDsKKwlib29sIHBvc2l4X29wZW4gPSBmYWxzZTsKIAlzdHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZz X3NiOwogCXN0cnVjdCBjaWZzVGNvbkluZm8gKnBUY29uOwogCXN0cnVjdCBpbm9kZSAqbmV3SW5v ZGUgPSBOVUxMOwpAQCAtNjMyLDEyICs2NTcsMjYgQEAgY2lmc19sb29rdXAoc3RydWN0IGlub2Rl ICpwYXJlbnRfZGlyX2lub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkaXJlbnRyeSwKIAl9CiAJY0ZZSSgx LCAoIkZ1bGwgcGF0aDogJXMgaW5vZGUgPSAweCVwIiwgZnVsbF9wYXRoLCBkaXJlbnRyeS0+ZF9p bm9kZSkpOwogCi0JaWYgKHBUY29uLT51bml4X2V4dCkKLQkJcmMgPSBjaWZzX2dldF9pbm9kZV9p bmZvX3VuaXgoJm5ld0lub2RlLCBmdWxsX3BhdGgsCi0JCQkJCSAgICAgIHBhcmVudF9kaXJfaW5v ZGUtPmlfc2IsIHhpZCk7Ci0JZWxzZQorCWlmIChwVGNvbi0+dW5peF9leHQpIHsKKwkJaWYgKCEo bmQtPmZsYWdzICYgKExPT0tVUF9QQVJFTlQgfCBMT09LVVBfRElSRUNUT1JZKSkgJiYKKwkJCQko bmQtPmZsYWdzICYgTE9PS1VQX09QRU4pKSB7CisJCQlpZiAoISgobmQtPmludGVudC5vcGVuLmZs YWdzICYgT19DUkVBVCApICYmCisJCQkJCShuZC0+aW50ZW50Lm9wZW4uZmxhZ3MgJiBPX0VYQ0wp KSkgeworCQkJCW1vZGUgPSBuZC0+aW50ZW50Lm9wZW4uY3JlYXRlX21vZGUgJgorCQkJCQkJfmN1 cnJlbnQtPmZzLT51bWFzazsKKwkJCQlyYyA9IGNpZnNfcG9zaXhfb3BlbihmdWxsX3BhdGgsICZu ZXdJbm9kZSwKKwkJCQkJcGFyZW50X2Rpcl9pbm9kZS0+aV9zYiwgbW9kZSwKKwkJCQkJbmQtPmlu dGVudC5vcGVuLmZsYWdzLCAmb3Bsb2NrLAorCQkJCQkmZmlsZUhhbmRsZSwgeGlkKTsKKwkJCQlw b3NpeF9vcGVuID0gdHJ1ZTsKKwkJCX0KKwkJfQorCQlpZiAoIXBvc2l4X29wZW4gfHwgKChyYyA9 PSAtRUlOVkFMKSB8fCAocmMgPT0gLUVPUE5PVFNVUFApKSkKKwkJCXJjID0gY2lmc19nZXRfaW5v ZGVfaW5mb191bml4KCZuZXdJbm9kZSwgZnVsbF9wYXRoLAorCQkgCQkJCXBhcmVudF9kaXJfaW5v ZGUtPmlfc2IsIHhpZCk7CisJfSBlbHNlCiAJCXJjID0gY2lmc19nZXRfaW5vZGVfaW5mbygmbmV3 SW5vZGUsIGZ1bGxfcGF0aCwgTlVMTCwKLQkJCQkJIHBhcmVudF9kaXJfaW5vZGUtPmlfc2IsIHhp ZCwgTlVMTCk7CisJCQkJcGFyZW50X2Rpcl9pbm9kZS0+aV9zYiwgeGlkLCBOVUxMKTsKIAogCWlm ICgocmMgPT0gMCkgJiYgKG5ld0lub2RlICE9IE5VTEwpKSB7CiAJCWlmIChwVGNvbi0+bm9jYXNl KQpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9maWxlLmMgYi9mcy9jaWZzL2ZpbGUuYwppbmRleCA4MTc0 N2FjLi40YTdjODg2IDEwMDY0NAotLS0gYS9mcy9jaWZzL2ZpbGUuYworKysgYi9mcy9jaWZzL2Zp bGUuYwpAQCAtMjg0LDM1ICsyODQsMzQgQEAgaW50IGNpZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAljaWZzX3NiID0gQ0lGU19TQihpbm9kZS0+aV9zYik7 CiAJdGNvbiA9IGNpZnNfc2ItPnRjb247CiAKLQlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fQ1JFQVQp IHsKLQkJLyogc2VhcmNoIGlub2RlIGZvciB0aGlzIGZpbGUgYW5kIGZpbGwgaW4gZmlsZS0+cHJp dmF0ZV9kYXRhICovCi0JCXBDaWZzSW5vZGUgPSBDSUZTX0koZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ ZF9pbm9kZSk7Ci0JCXJlYWRfbG9jaygmR2xvYmFsU01CU2VzbG9jayk7Ci0JCWxpc3RfZm9yX2Vh Y2godG1wLCAmcENpZnNJbm9kZS0+b3BlbkZpbGVMaXN0KSB7Ci0JCQlwQ2lmc0ZpbGUgPSBsaXN0 X2VudHJ5KHRtcCwgc3RydWN0IGNpZnNGaWxlSW5mbywKLQkJCQkJICAgICAgIGZsaXN0KTsKLQkJ CWlmICgocENpZnNGaWxlLT5wZmlsZSA9PSBOVUxMKSAmJgotCQkJICAgIChwQ2lmc0ZpbGUtPnBp ZCA9PSBjdXJyZW50LT50Z2lkKSkgewotCQkJCS8qIG1vZGUgc2V0IGluIGNpZnNfY3JlYXRlICov Ci0KLQkJCQkvKiBuZWVkZWQgZm9yIHdyaXRlcGFnZSAqLwotCQkJCXBDaWZzRmlsZS0+cGZpbGUg PSBmaWxlOwotCi0JCQkJZmlsZS0+cHJpdmF0ZV9kYXRhID0gcENpZnNGaWxlOwotCQkJCWJyZWFr OwotCQkJfQotCQl9Ci0JCXJlYWRfdW5sb2NrKCZHbG9iYWxTTUJTZXNsb2NrKTsKLQkJaWYgKGZp bGUtPnByaXZhdGVfZGF0YSAhPSBOVUxMKSB7Ci0JCQlyYyA9IDA7Ci0JCQlGcmVlWGlkKHhpZCk7 Ci0JCQlyZXR1cm4gcmM7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fRVhD TCkKLQkJCQljRVJST1IoMSwgKCJjb3VsZCBub3QgZmluZCBmaWxlIGluc3RhbmNlIGZvciAiCi0J CQkJCSAgICJuZXcgZmlsZSAlcCIsIGZpbGUpKTsKKwkvKiBzZWFyY2ggaW5vZGUgZm9yIHRoaXMg ZmlsZSBhbmQgZmlsbCBpbiBmaWxlLT5wcml2YXRlX2RhdGEgKi8KKwlwQ2lmc0lub2RlID0gQ0lG U19JKGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUpOworCXJlYWRfbG9jaygmR2xvYmFsU01C U2VzbG9jayk7CisJbGlzdF9mb3JfZWFjaCh0bXAsICZwQ2lmc0lub2RlLT5vcGVuRmlsZUxpc3Qp IHsKKwkJcENpZnNGaWxlID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBjaWZzRmlsZUluZm8sCisJ CQkJICAgICAgIGZsaXN0KTsKKwkJaWYgKChwQ2lmc0ZpbGUtPnBmaWxlID09IE5VTEwpICYmCisJ CSAgICAocENpZnNGaWxlLT5waWQgPT0gY3VycmVudC0+dGdpZCkpIHsKKwkJCS8qIG1vZGUgc2V0 IGluIGNpZnNfY3JlYXRlICovCisKKwkJCS8qIG5lZWRlZCBmb3Igd3JpdGVwYWdlICovCisJCQlw Q2lmc0ZpbGUtPnBmaWxlID0gZmlsZTsKKworCQkJZmlsZS0+cHJpdmF0ZV9kYXRhID0gcENpZnNG aWxlOworCQkJYnJlYWs7CiAJCX0KIAl9CisJcmVhZF91bmxvY2soJkdsb2JhbFNNQlNlc2xvY2sp OworCisJaWYgKGZpbGUtPnByaXZhdGVfZGF0YSAhPSBOVUxMKSB7CisJCXJjID0gMDsKKwkJRnJl ZVhpZCh4aWQpOworCQlyZXR1cm4gcmM7CisJfSBlbHNlIHsKKwkJaWYgKChmaWxlLT5mX2ZsYWdz ICYgT19DUkVBVCkgJiYgKGZpbGUtPmZfZmxhZ3MgJiBPX0VYQ0wpKQorCQkJY0VSUk9SKDEsICgi Y291bGQgbm90IGZpbmQgZmlsZSBpbnN0YW5jZSBmb3IgIgorCQkJCSAgICJuZXcgZmlsZSAlcCIs IGZpbGUpKTsKKwl9CiAKIAlmdWxsX3BhdGggPSBidWlsZF9wYXRoX2Zyb21fZGVudHJ5KGZpbGUt PmZfcGF0aC5kZW50cnkpOwogCWlmIChmdWxsX3BhdGggPT0gTlVMTCkgewo= --0016e644c2ce87464e04661b33b9--