From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0236Q14053681 for ; Fri, 1 Jan 2010 21:06:26 -0600 Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 924E51DAB366 for ; Fri, 1 Jan 2010 19:07:14 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id lqvOCTqSmxAgsntj for ; Fri, 01 Jan 2010 19:07:14 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10940213-1927428 for ; Sat, 02 Jan 2010 13:37:12 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQuKd-0007yo-0Y for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:07:11 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQuHE-00057Z-8F for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:03:40 +1100 From: Dave Chinner Subject: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Date: Sat, 2 Jan 2010 14:03:36 +1100 Message-Id: <1262401416-19546-4-git-send-email-david@fromorbit.com> In-Reply-To: <1262401416-19546-1-git-send-email-david@fromorbit.com> References: <1262401416-19546-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Q3VycmVudGx5IHdoZW4gdGhlIHhmc2J1ZmQgd3JpdGVzIGRlbGF5ZWQgd3JpdGUgYnVmZmVycywg aXQgcHVzaGVzCnRoZW0gdG8gZGlzayBpbiB0aGUgb3JkZXIgdGhleSBjb21lIG9mZiB0aGUgZGVs YXllZCB3cml0ZSBsaXN0LiBJZgp0aGVyZSBhcmUgbG90cyBvZiBidWZmZXJzINGVcHJlYWQgd2lk ZWx5IG92ZXIgdGhlIGRpc2ssIHRoaXMgcmVzdWx0cwppbiBvdmVyd2hlbG1pbmcgdGhlIGVsZXZh dG9yIHNvcnQgcXVldWVzIGluIHRoZSBibG9jayBsYXllciBhbmQgd2UKZW5kIHVwIGxvc2luZyB0 aGUgcG9zaWJpbGl0eSBvZiBtZXJnaW5nIGFkamFjZW50IGJ1ZmZlcnMgdG8gbWluaW1pc2UKdGhl IG51bWJlciBvZiBJT3MuCgpBZGQgYSBzb3J0IGFycmF5IHRvIHRoZSBidWZ0YXJnIHNvIHRoYXQg d2UgY2FuIGRvIGhpZ2ggbGV2ZWwgc29ydGluZwpvZiB0aGUgYnVmZmVycyBvbmNlIHRoZXkgYXJl IHB1bGxlZCBvZmYgdGhlIGRlbHdyaSBxdWV1ZSBmb3IKd3JpdGViYWNrLiBDdXJyZW50bHkgdGhp cyBhcnJheSBjYW4gaG9sZCA0MDk2IGJ1ZmZlcnMgYXQgYSB0aW1lCndoaWNoIGdpdmVzIHVzIGEg d2luZG93IDMyIHRpbWVzIGxhcmdlciB0aGFuIHRoZSBkZWZhdWx0IGVsZXZhdG9yCm1heGltdW1z IGZvciBvcmRlcmluZyBidWZmZXJzLgoKSWRlYWxseSB0aGlzIHNob3VsZCB1c2UgYSBsaXN0IHNv cnQgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGFuCmV4dGVybmFsIGJ1ZmZlciB0byBzb3J0IHRoZSBi dWZmZXJzIGluLCBidXQgZm9yIHNpbXBsaWNpdHkKanVzdCBkbyBpdCB2aWEgc29ydCBmdW5jdGlv bi4gRm9sbG93dXAgcGF0Y2hlcyBhcmUgbmVlZGVkIHRvCnRha2UgdGhlIGxpc3Qgc29ydCBmdW5j dGlvbnMgZnJvbSB0aGUgRFJNIGFuZCBVQklGUyBjb2RlIGFuZAptYWtlIGl0IGEgY29tbW9uIGZ1 bmN0aW9uIGFuZCB0byB1dGlsaXNlIGl0LiBUaGF0IHdpbGwgYWxsb3cKc29ydGluZyB0aGUgZW50 aXJlIGRlbHdyaSBxdWV1ZSB0byBiZSB3cml0dGVuIGluIG9uZSBnby4KClNpZ25lZC1vZmYtYnk6 IERhdmUgQ2hpbm5lciA8ZGF2aWRAZnJvbW9yYml0LmNvbT4KLS0tCiBmcy94ZnMvbGludXgtMi42 L3hmc19idWYuYyB8ICAxMjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0KIGZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5oIHwgICAgNSArKwogMiBmaWxlcyBjaGFu Z2VkLCA5MyBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy94 ZnMvbGludXgtMi42L3hmc19idWYuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5jCmluZGV4 IGFhZWZjMzMuLmQ1M2QwOGIgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5j CisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5jCkBAIC0xNjQ0LDEyICsxNjQ0LDE4IEBA IHhmc19idWZfZGVsd3JpX3Byb21vdGUoCiAJc3BpbmxvY2tfdAkqZHdsayA9ICZicC0+Yl90YXJn ZXQtPmJ0X2RlbHdyaXRlX2xvY2s7CiAJbG9uZwkJYWdlID0geGZzX2J1Zl9hZ2VfY2VudGlzZWNz ICogbXNlY3NfdG9famlmZmllcygxMCkgKyAxOwogCi0Jc3Bpbl9sb2NrKGR3bGspOwogCUFTU0VS VChicC0+Yl9mbGFncyAmIFhCRl9ERUxXUkkpOwogCUFTU0VSVChicC0+Yl9mbGFncyAmIF9YQkZf REVMV1JJX1EpOwotCWxpc3RfZGVsKCZicC0+Yl9saXN0KTsKLQlsaXN0X2FkZCgmYnAtPmJfbGlz dCwgZHdxKTsKKworCS8qCisJICogQ2hlY2sgdGhlIGJ1ZmZlciBhZ2UgYmVmb3JlIGxvY2tpbmcg dGhlIGRlbGF5ZWQgd3JpdGUgcXVldWUgYXMgd2UKKwkgKiBkb24ndCBuZWVkIHRvIHByb21vdGUg YnVmZmVycyB0aGF0IGFyZSBhbHJlYWR5IHBhc3QgdGhlIGZsdXNoIGFnZS4KKwkgKi8KKwlpZiAo YnAtPmJfcXVldWV0aW1lIDwgamlmZmllcyAtIGFnZSkKKwkJcmV0dXJuOwogCWJwLT5iX3F1ZXVl dGltZSA9IGppZmZpZXMgLSBhZ2U7CisJc3Bpbl9sb2NrKGR3bGspOworCWxpc3RfbW92ZSgmYnAt PmJfbGlzdCwgZHdxKTsKIAlzcGluX3VubG9jayhkd2xrKTsKIH0KIApAQCAtMTcyMywxNCArMTcy OSw1NSBAQCB4ZnNfYnVmX2RlbHdyaV9zcGxpdCgKIAogfQogCisvKgorICogQ29tcGFyZSBmdW5j dGlvbiBpcyBtb3JlIGNvbXBsZXggdGhhbiBpdCBuZWVkcyB0byBiZSBiZWNhdXNlCisgKiB0aGUg cmV0dXJuIHZhbHVlIGlzIG9ubHkgMzIgYml0cyBhbmQgd2UgYXJlIGRvaW5nIGNvbXBhcmlzb25z CisgKiBvbiA2NCBiaXQgdmFsdWVzCisgKi8KK2ludAoreGZzX2J1Zl9jbXAoCisJY29uc3Qgdm9p ZAkqYSwKKwljb25zdCB2b2lkCSpiKQoreworCWNvbnN0IHN0cnVjdCB4ZnNfYnVmCSphcCA9ICoo Y29uc3Qgc3RydWN0IHhmc19idWYqKilhOworCWNvbnN0IHN0cnVjdCB4ZnNfYnVmCSpicCA9ICoo Y29uc3Qgc3RydWN0IHhmc19idWYqKiliOworCXhmc19kYWRkcl90CQlkaWZmOworCisJZGlmZiA9 IGFwLT5iX2JuIC0gYnAtPmJfYm47CisJaWYgKGRpZmYgPCAwKQorCQlyZXR1cm4gLTE7CisJaWYg KGRpZmYgPiAwKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworaW50Cit4ZnNfYnVmX2Rl bHdyaV9zb3J0KAorCXhmc19idWZ0YXJnX3QJKnRhcmdldCwKKwlzdHJ1Y3QgbGlzdF9oZWFkICps aXN0KQoreworCWludAlpID0gMDsKKworCXdoaWxlIChpIDwgWEZTX0JVRl9TT1JUQlVGX1NJWkUg JiYgIWxpc3RfZW1wdHkobGlzdCkpIHsKKwkJc3RydWN0IHhmc19idWYJKmJwID0gbGlzdF9lbnRy eShsaXN0LT5uZXh0LCB4ZnNfYnVmX3QsIGJfbGlzdCk7CisKKwkJQVNTRVJUKHRhcmdldCA9PSBi cC0+Yl90YXJnZXQpOworCQlsaXN0X2RlbF9pbml0KCZicC0+Yl9saXN0KTsKKwkJdGFyZ2V0LT5i dF9zb3J0YnVmW2krK10gPSBicDsKKwl9CisJc29ydCh0YXJnZXQtPmJ0X3NvcnRidWYsIGksIHNp emVvZihzdHJ1Y3QgeGZzX2J1ZiAqKSwgeGZzX2J1Zl9jbXAsIE5VTEwpOworCisJdGFyZ2V0LT5i dF9zb3J0YnVmX251bSA9IGk7CisJaWYgKCFsaXN0X2VtcHR5KGxpc3QpKQorCQlyZXR1cm4gMTsK KwlyZXR1cm4gMDsKK30KKwogU1RBVElDIGludAogeGZzYnVmZCgKIAl2b2lkCQkqZGF0YSkKIHsK LQlzdHJ1Y3QgbGlzdF9oZWFkIHRtcDsKIAl4ZnNfYnVmdGFyZ190CSp0YXJnZXQgPSAoeGZzX2J1 ZnRhcmdfdCAqKWRhdGE7Ci0JaW50CQljb3VudDsKLQl4ZnNfYnVmX3QJKmJwOwogCiAJY3VycmVu dC0+ZmxhZ3MgfD0gUEZfTUVNQUxMT0M7CiAKQEAgLTE3MzksNiArMTc4Niw5IEBAIHhmc2J1ZmQo CiAJZG8gewogCQlsb25nCWFnZSA9IHhmc19idWZfYWdlX2NlbnRpc2VjcyAqIG1zZWNzX3RvX2pp ZmZpZXMoMTApOwogCQlsb25nCXRvdXQgPSBhZ2U7CisJCWludAljb3VudCA9IDA7CisJCWludAlt b3JlID0gMDsKKwkJc3RydWN0IGxpc3RfaGVhZCB0bXA7CiAKIAkJaWYgKHVubGlrZWx5KGZyZWV6 aW5nKGN1cnJlbnQpKSkgewogCQkJc2V0X2JpdChYQlRfRk9SQ0VfU0xFRVAsICZ0YXJnZXQtPmJ0 X2ZsYWdzKTsKQEAgLTE3NTMsMTUgKzE4MDMsMTQgQEAgeGZzYnVmZCgKIAkJc2NoZWR1bGVfdGlt ZW91dF9pbnRlcnJ1cHRpYmxlKHRvdXQpOwogCiAJCXhmc19idWZfZGVsd3JpX3NwbGl0KHRhcmdl dCwgJnRtcCwgYWdlKTsKLQkJY291bnQgPSAwOwotCQl3aGlsZSAoIWxpc3RfZW1wdHkoJnRtcCkp IHsKLQkJCWJwID0gbGlzdF9lbnRyeSh0bXAubmV4dCwgeGZzX2J1Zl90LCBiX2xpc3QpOwotCQkJ QVNTRVJUKHRhcmdldCA9PSBicC0+Yl90YXJnZXQpOwotCi0JCQlsaXN0X2RlbF9pbml0KCZicC0+ Yl9saXN0KTsKLQkJCXhmc19idWZfaW9zdHJhdGVneShicCk7Ci0JCQljb3VudCsrOwotCQl9CisJ CWRvIHsKKwkJCWludAlpOworCQkJbW9yZSA9IHhmc19idWZfZGVsd3JpX3NvcnQodGFyZ2V0LCAm dG1wKTsKKwkJCWZvciAoaSA9IDA7IGkgPCB0YXJnZXQtPmJ0X3NvcnRidWZfbnVtOyBpKyspIHsK KwkJCQl4ZnNfYnVmX2lvc3RyYXRlZ3kodGFyZ2V0LT5idF9zb3J0YnVmW2ldKTsKKwkJCQljb3Vu dCsrOworCQkJfQorCQl9IHdoaWxlIChtb3JlKTsKIAogCQlpZiAoYXNfbGlzdF9sZW4gPiAwKQog CQkJcHVyZ2VfYWRkcmVzc2VzKCk7CkBAIC0xNzgzLDM4ICsxODMyLDQ0IEBAIHhmc19mbHVzaF9i dWZ0YXJnKAogCXhmc19idWZ0YXJnX3QJKnRhcmdldCwKIAlpbnQJCXdhaXQpCiB7Ci0Jc3RydWN0 IGxpc3RfaGVhZCB0bXA7Ci0JeGZzX2J1Zl90CSpicCwgKm47CisJeGZzX2J1Zl90CSpicDsKIAlp bnQJCXBpbmNvdW50ID0gMDsKKwlpbnQJCW1vcmUgPSAwOworCUxJU1RfSEVBRCh0bXBfbGlzdCk7 CisJTElTVF9IRUFEKHdhaXRfbGlzdCk7CiAKIAl4ZnNfYnVmX3J1bmFsbF9xdWV1ZXMoeGZzY29u dmVydGRfd29ya3F1ZXVlKTsKIAl4ZnNfYnVmX3J1bmFsbF9xdWV1ZXMoeGZzZGF0YWRfd29ya3F1 ZXVlKTsKIAl4ZnNfYnVmX3J1bmFsbF9xdWV1ZXMoeGZzbG9nZF93b3JrcXVldWUpOwogCiAJc2V0 X2JpdChYQlRfRk9SQ0VfRkxVU0gsICZ0YXJnZXQtPmJ0X2ZsYWdzKTsKLQlwaW5jb3VudCA9IHhm c19idWZfZGVsd3JpX3NwbGl0KHRhcmdldCwgJnRtcCwgMCk7CisJcGluY291bnQgPSB4ZnNfYnVm X2RlbHdyaV9zcGxpdCh0YXJnZXQsICZ0bXBfbGlzdCwgMCk7CiAKIAkvKgotCSAqIERyb3BwZWQg dGhlIGRlbGF5ZWQgd3JpdGUgbGlzdCBsb2NrLCBub3cgd2FsayB0aGUgdGVtcG9yYXJ5IGxpc3QK KwkgKiBEcm9wcGVkIHRoZSBkZWxheWVkIHdyaXRlIGxpc3QgbG9jaywgbm93IHdhbGsgdGhlIHRl bXBvcmFyeSBsaXN0LgorCSAqIEFsbCBJL08gaXMgaXNzdWVkIGFzeW5jIGFuZCB0aGVuIGlmIHdl IG5lZWQgdG8gd2FpdCBmb3IgY29tcGxldGlvbgorCSAqIHdlIGRvIHRoYXQgYWZ0ZXIgaXNzdWlu ZyBhbGwgdGhlIElPLgogCSAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShicCwgbiwgJnRt cCwgYl9saXN0KSB7Ci0JCUFTU0VSVCh0YXJnZXQgPT0gYnAtPmJfdGFyZ2V0KTsKLQkJaWYgKHdh aXQpCi0JCQlicC0+Yl9mbGFncyAmPSB+WEJGX0FTWU5DOwotCQllbHNlCi0JCQlsaXN0X2RlbF9p bml0KCZicC0+Yl9saXN0KTsKLQotCQl4ZnNfYnVmX2lvc3RyYXRlZ3koYnApOwotCX0KKwlkbyB7 CisJCWludAlpOworCQltb3JlID0geGZzX2J1Zl9kZWx3cmlfc29ydCh0YXJnZXQsICZ0bXBfbGlz dCk7CisJCWZvciAoaSA9IDA7IGkgPCB0YXJnZXQtPmJ0X3NvcnRidWZfbnVtOyBpKyspIHsKKwkJ CWJwID0gdGFyZ2V0LT5idF9zb3J0YnVmW2ldOworCQkJQVNTRVJUKHRhcmdldCA9PSBicC0+Yl90 YXJnZXQpOworCQkJaWYgKHdhaXQpIHsKKwkJCQlicC0+Yl9mbGFncyAmPSB+WEJGX0FTWU5DOwor CQkJCWxpc3RfYWRkKCZicC0+Yl9saXN0LCAmd2FpdF9saXN0KTsKKwkJCX0KKwkJCXhmc19idWZf aW9zdHJhdGVneShicCk7CisJCX0KKwl9IHdoaWxlIChtb3JlKTsKIAogCWlmICh3YWl0KQogCQli bGtfcnVuX2FkZHJlc3Nfc3BhY2UodGFyZ2V0LT5idF9tYXBwaW5nKTsKIAotCS8qCi0JICogUmVt YWluaW5nIGxpc3QgaXRlbXMgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSByZXR1cm5pbmcKLQkgKi8K LQl3aGlsZSAoIWxpc3RfZW1wdHkoJnRtcCkpIHsKLQkJYnAgPSBsaXN0X2VudHJ5KHRtcC5uZXh0 LCB4ZnNfYnVmX3QsIGJfbGlzdCk7CisJLyogTm93IHdhaXQgZm9yIElPIHRvIGNvbXBsZXRlIGlm IHJlcXVpcmVkLiAqLworCXdoaWxlICghbGlzdF9lbXB0eSgmd2FpdF9saXN0KSkgeworCQlicCA9 IGxpc3RfZW50cnkod2FpdF9saXN0Lm5leHQsIHhmc19idWZfdCwgYl9saXN0KTsKIAogCQlsaXN0 X2RlbF9pbml0KCZicC0+Yl9saXN0KTsKIAkJeGZzX2lvd2FpdChicCk7CmRpZmYgLS1naXQgYS9m cy94ZnMvbGludXgtMi42L3hmc19idWYuaCBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5oCmlu ZGV4IGE3YzY4OTUuLjU5OTcwOGUgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1 Zi5oCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5oCkBAIC0xMjgsNiArMTI4LDggQEAg dHlwZWRlZiBzdHJ1Y3QgeGZzX2J1Zmhhc2ggewogCXNwaW5sb2NrX3QJCWJoX2xvY2s7CiB9IHhm c19idWZoYXNoX3Q7CiAKKyNkZWZpbmUgWEZTX0JVRl9TT1JUQlVGX1NJWkUJNDA5NgorCiB0eXBl ZGVmIHN0cnVjdCB4ZnNfYnVmdGFyZyB7CiAJZGV2X3QJCQlidF9kZXY7CiAJc3RydWN0IGJsb2Nr X2RldmljZQkqYnRfYmRldjsKQEAgLTE0Nyw2ICsxNDksOSBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNf YnVmdGFyZyB7CiAJc3RydWN0IGxpc3RfaGVhZAlidF9kZWx3cml0ZV9xdWV1ZTsKIAlzcGlubG9j a190CQlidF9kZWx3cml0ZV9sb2NrOwogCXVuc2lnbmVkIGxvbmcJCWJ0X2ZsYWdzOworCWludAkJ CWJ0X3NvcnRidWZfbnVtOworCXN0cnVjdCB4ZnNfYnVmICoJYnRfc29ydGJ1ZltYRlNfQlVGX1NP UlRCVUZfU0laRV07CisKIH0geGZzX2J1ZnRhcmdfdDsKIAogLyoKLS0gCjEuNi41CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4ZnMgbWFpbGluZyBsaXN0 Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMK