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 oA88t33f089567 for ; Mon, 8 Nov 2010 02:55:03 -0600 Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E69B1DA9D94 for ; Mon, 8 Nov 2010 00:56:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail20.adl6.internode.on.net [150.101.137.105]) by cuda.sgi.com with ESMTP id OT4GlMN0eAOJ6MfZ for ; Mon, 08 Nov 2010 00:56:29 -0800 (PST) Received: from dastard (unverified [121.44.100.105]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 428266-1927428 for ; Mon, 08 Nov 2010 19:26:28 +1030 (CDT) Received: from chute ([192.168.1.1] helo=disappointment) by dastard with esmtp (Exim 4.71) (envelope-from ) id 1PFNWS-0001Ce-Id for xfs@oss.sgi.com; Mon, 08 Nov 2010 19:56:16 +1100 Received: from dave by disappointment with local (Exim 4.72) (envelope-from ) id 1PFNVa-0004nR-O4 for xfs@oss.sgi.com; Mon, 08 Nov 2010 19:55:22 +1100 From: Dave Chinner Subject: [PATCH 04/16] xfs: dynamic speculative EOF preallocation Date: Mon, 8 Nov 2010 19:55:07 +1100 Message-Id: <1289206519-18377-5-git-send-email-david@fromorbit.com> In-Reply-To: <1289206519-18377-1-git-send-email-david@fromorbit.com> References: <1289206519-18377-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 RnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgoKQ3VycmVudGx5IHRoZSBz aXplIG9mIHRoZSBzcGVjdWxhdGl2ZSBwcmVhbGxvY2F0aW9uIGR1cmluZyBkZWxheWVkCmFsbG9j YXRpb24gaXMgZml4ZWQgYnkgZWl0aGVyIHRoZSBhbGxvY3NpemUgbW91bnQgb3B0aW9uIG9mIGEK ZGVmYXVsdCBzaXplLiBXZSBhcmUgc2VlaW5nIGEgbG90IG9mIGNhc2VzIHdoZXJlIHdlIG5lZWQg dG8KcmVjb21tZW5kIHVzaW5nIHRoZSBhbGxvY3NpemUgbW91bnQgb3B0aW9uIHRvIHByZXZlbnQg ZnJhZ21lbnRhdGlvbgp3aGVuIGJ1ZmZlcmVkIHdyaXRlcyBsYW5kIGluIHRoZSBzYW1lIEFHLgoK UmF0aGVyIHRoYW4gdXNpbmcgYSBmaXhlZCBwcmVhbGxvY2F0aW9uIHNpemUgYnkgZGVmYXVsdCAo dXAgdG8gNjRrKSwKbWFrZSBpdCBkeW5hbWljIGJ5IGJhc2luZyBpdCBvbiB0aGUgY3VycmVudCBp bm9kZSBzaXplLiBUaGF0IHdheSB0aGUKRU9GIHByZWFsbG9jYXRpb24gd2lsbCBpbmNyZWFzZSBh cyB0aGUgZmlsZSBzaXplIGluY3JlYXNlcy4gIEhlbmNlCmZvciBzdHJlYW1pbmcgd3JpdGVzIHdl IGFyZSBtdWNoIG1vcmUgbGlrZWx5IHRvIGdldCBsYXJnZQpwcmVhbGxvY2F0aW9ucyBleGFjdGx5 IHdoZW4gd2UgbmVlZCBpdCB0byByZWR1Y2UgZnJhZ2VtZW50YXRpb24uCgpGb3IgZGVmYXVsdCBz ZXR0aW5ncywg44GyZSBzaXplIGFuZCB0aGUgaW5pdGlhbCBleHRlbnRzIGlzIGRldGVybWluZWQK YnkgdGhlIG51bWJlciBvZiBwYXJhbGxlbCB3cml0ZXJzIGFuZCB0aGUgYW1vdW50IG9mIG1lbW9y eSBpbiB0aGUKbWFjaGluZS4gRm9yIDRHQiBSQU0gYW5kIDQgY29uY3VycmVudCAzMkdCIGZpbGUg d3JpdGVzOgoKRVhUOiBGSUxFLU9GRlNFVCAgICAgICAgICAgQkxPQ0stUkFOR0UgICAgICAgICAg QUcgQUctT0ZGU0VUICAgICAgICAgICAgICAgICBUT1RBTAogICAwOiBbMC4uMTA0ODU3NV06ICAg ICAgICAgMTA0ODY3Mi4uMjA5NzI0NyAgICAgIDAgKDEwNDg2NzIuLjIwOTcyNDcpICAgICAgMTA0 ODU3NgogICAxOiBbMTA0ODU3Ni4uMjA5NzE1MV06ICAgNTI0Mjk3Ni4uNjI5MTU1MSAgICAgIDAg KDUyNDI5NzYuLjYyOTE1NTEpICAgICAgMTA0ODU3NgogICAyOiBbMjA5NzE1Mi4uNDE5NDMwM106 ICAgMTI1ODMwMDguLjE0NjgwMTU5ICAgIDAgKDEyNTgzMDA4Li4xNDY4MDE1OSkgICAgMjA5NzE1 MgogICAzOiBbNDE5NDMwNC4uODM4ODYwN106ICAgMjUxNjU5MjAuLjI5MzYwMjIzICAgIDAgKDI1 MTY1OTIwLi4yOTM2MDIyMykgICAgNDE5NDMwNAogICA0OiBbODM4ODYwOC4uMTY3NzcyMTVdOiAg NTg3MjAzNTIuLjY3MTA4OTU5ICAgIDAgKDU4NzIwMzUyLi42NzEwODk1OSkgICAgODM4ODYwOAog ICA1OiBbMTY3NzcyMTYuLjMzNTU0NDIzXTogMTE3NDQwNTg0Li4xMzQyMTc3OTEgIDAgKDExNzQ0 MDU4NC4uMTM0MjE3NzkxKSAxNjc3NzIwOAogICA2OiBbMzM1NTQ0MjQuLjUwMzMxNTExXTogMTg0 NTQ5MDU2Li4yMDEzMjYxNDMgIDAgKDE4NDU0OTA1Ni4uMjAxMzI2MTQzKSAxNjc3NzA4OAogICA3 OiBbNTAzMzE1MTIuLjY3MTA4NTk5XTogMjUxNjU3NDA4Li4yNjg0MzQ0OTUgIDAgKDI1MTY1NzQw OC4uMjY4NDM0NDk1KSAxNjc3NzA4OAoKYW5kIGZvciAxNiBjb25jdXJyZW50IDE2R0IgZmlsZSB3 cml0ZXM6CgogRVhUOiBGSUxFLU9GRlNFVCAgICAgICAgICAgQkxPQ0stUkFOR0UgICAgICAgICAg QUcgQUctT0ZGU0VUICAgICAgICAgICAgICAgICBUT1RBTAogICAwOiBbMC4uMjYyMTQzXTogICAg ICAgICAgMjQ5MDQ3Mi4uMjc1MjYxNSAgICAgIDAgKDI0OTA0NzIuLjI3NTI2MTUpICAgICAgIDI2 MjE0NAogICAxOiBbMjYyMTQ0Li41MjQyODddOiAgICAgNjI5MTU2MC4uNjU1MzcwMyAgICAgIDAg KDYyOTE1NjAuLjY1NTM3MDMpICAgICAgIDI2MjE0NAogICAyOiBbNTI0Mjg4Li4xMDQ4NTc1XTog ICAgMTM2MzE1OTIuLjE0MTU1ODc5ICAgIDAgKDEzNjMxNTkyLi4xNDE1NTg3OSkgICAgIDUyNDI4 OAogICAzOiBbMTA0ODU3Ni4uMjA5NzE1MV06ICAgMzA0MDg4MDguLjMxNDU3MzgzICAgIDAgKDMw NDA4ODA4Li4zMTQ1NzM4MykgICAgMTA0ODU3NgogICA0OiBbMjA5NzE1Mi4uNDE5NDMwM106ICAg NTI0Mjg5MDQuLjU0NTI2MDU1ICAgIDAgKDUyNDI4OTA0Li41NDUyNjA1NSkgICAgMjA5NzE1Mgog ICA1OiBbNDE5NDMwNC4uODM4ODYwN106ICAgMTA0ODU3NzA0Li4xMDkwNTIwMDcgIDAgKDEwNDg1 NzcwNC4uMTA5MDUyMDA3KSAgNDE5NDMwNAogICA2OiBbODM4ODYwOC4uMTY3NzcyMTVdOiAgMjA5 NzE1MzA0Li4yMTgxMDM5MTEgIDAgKDIwOTcxNTMwNC4uMjE4MTAzOTExKSAgODM4ODYwOAogICA3 OiBbMTY3NzcyMTYuLjMzNTU0NDIzXTogNDUyOTg0ODQ4Li40Njk3NjIwNTUgIDAgKDQ1Mjk4NDg0 OC4uNDY5NzYyMDU1KSAxNjc3NzIwOAoKVGhlIGFsbG9jc2l6ZSBtb3VudCBvcHRpb24gc3RpbGwg Y29udHJvbHMgdGhlIG1pbmltdW0gcHJlYWxsb2NhdGlvbiBzaXplLCBzbwp0aGUgc21hbGxlc3Qg ZXh0ZW50IHNpemUgY2FuIHN0aWwgYmUgYm91bmQgaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGlzIGJl aGF2aW91cgppcyBub3Qgc3VmZmljaWVudC4KClNpZ25lZC1vZmYtYnk6IERhdmUgQ2hpbm5lciA8 ZGNoaW5uZXJAcmVkaGF0LmNvbT4KLS0tCiBmcy94ZnMveGZzX2lvbWFwLmMgfCAgIDUzICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlcyBj aGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9m cy94ZnMveGZzX2lvbWFwLmMgYi9mcy94ZnMveGZzX2lvbWFwLmMKaW5kZXggMjA1NzYxNC4uMDIy N2FjMSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pb21hcC5jCisrKyBiL2ZzL3hmcy94ZnNfaW9t YXAuYwpAQCAtMzg5LDYgKzM4OSw5IEBAIGVycm9yX291dDoKICAqIElmIHRoZSBjYWxsZXIgaXMg ZG9pbmcgYSB3cml0ZSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLCB0aGVuIGV4dGVuZCB0aGUKICAq IGFsbG9jYXRpb24gb3V0IHRvIHRoZSBmaWxlIHN5c3RlbSdzIHdyaXRlIGlvc2l6ZS4gIFdlIGNs ZWFuIHVwIGFueSBleHRyYQogICogc3BhY2UgbGVmdCBvdmVyIHdoZW4gdGhlIGZpbGUgaXMgY2xv c2VkIGluIHhmc19pbmFjdGl2ZSgpLgorICoKKyAqIElmIHdlIGZpbmQgd2UgYWxyZWFkeSBoYXZl IGRlbGFsbG9jIHByZWFsbG9jYXRpb24gYmV5b25kIEVPRiwgZG9uJ3QgZG8gbW9yZQorICogcHJl YWxsb2NhdGlvbiBhcyBpdCBpdCBub3QgbmVlZGVkLgogICovCiBTVEFUSUMgaW50CiB4ZnNfaW9t YXBfZW9mX3dhbnRfcHJlYWxsb2NhdGUoCkBAIC00MDUsNiArNDA4LDcgQEAgeGZzX2lvbWFwX2Vv Zl93YW50X3ByZWFsbG9jYXRlKAogCXhmc19maWxibGtzX3QgICBjb3VudF9mc2I7CiAJeGZzX2Zz YmxvY2tfdAlmaXJzdGJsb2NrOwogCWludAkJbiwgZXJyb3IsIGltYXBzOworCWludAkJZm91bmRf ZGVsYWxsb2MgPSAwOwogCiAJKnByZWFsbG9jID0gMDsKIAlpZiAoKG9mZnNldCArIGNvdW50KSA8 PSBpcC0+aV9zaXplKQpAQCAtNDI3LDExICs0MzEsMTYgQEAgeGZzX2lvbWFwX2VvZl93YW50X3By ZWFsbG9jYXRlKAogCQkJaWYgKChpbWFwW25dLmJyX3N0YXJ0YmxvY2sgIT0gSE9MRVNUQVJUQkxP Q0spICYmCiAJCQkgICAgKGltYXBbbl0uYnJfc3RhcnRibG9jayAhPSBERUxBWVNUQVJUQkxPQ0sp KQogCQkJCXJldHVybiAwOworCiAJCQlzdGFydF9mc2IgKz0gaW1hcFtuXS5icl9ibG9ja2NvdW50 OwogCQkJY291bnRfZnNiIC09IGltYXBbbl0uYnJfYmxvY2tjb3VudDsKKworCQkJaWYgKGltYXBb bl0uYnJfc3RhcnRibG9jayA9PSBERUxBWVNUQVJUQkxPQ0spCisJCQkJZm91bmRfZGVsYWxsb2Mg PSAxOwogCQl9CiAJfQotCSpwcmVhbGxvYyA9IDE7CisJaWYgKCFmb3VuZF9kZWxhbGxvYykKKwkJ KnByZWFsbG9jID0gMTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDY5LDYgKzQ3OCw3IEBAIHhmc19p b21hcF93cml0ZV9kZWxheSgKIAlleHRzeiA9IHhmc19nZXRfZXh0c3pfaGludChpcCk7CiAJb2Zm c2V0X2ZzYiA9IFhGU19CX1RPX0ZTQlQobXAsIG9mZnNldCk7CiAKKwogCWVycm9yID0geGZzX2lv bWFwX2VvZl93YW50X3ByZWFsbG9jYXRlKG1wLCBpcCwgb2Zmc2V0LCBjb3VudCwKIAkJCQlpb2Zs YWcsIGltYXAsIFhGU19XUklURV9JTUFQUywgJnByZWFsbG9jKTsKIAlpZiAoZXJyb3IpCkBAIC00 NzYsOSArNDg2LDIzIEBAIHhmc19pb21hcF93cml0ZV9kZWxheSgKIAogcmV0cnk6CiAJaWYgKHBy ZWFsbG9jKSB7CisJCXhmc19maWxlb2ZmX3QJYWxsb2NfYmxvY2tzID0gMDsKKwkJLyoKKwkJICog SWYgd2UgZG9uJ3QgaGF2ZSBhIHVzZXIgc3BlY2lmaWVkIHByZWFsbG9jYXRpb24gc2l6ZSwgZHlu YW1pY2FsbHkKKwkJICogaW5jcmVhc2UgdGhlIHByZWFsbG9jYXRpb24gc2l6ZSBhcyB0aGUgc2l6 ZSBvZiB0aGUgZmlsZQorCQkgKiBncm93cy4gQ2FwIHRoZSBtYXhpbXVtIHNpemUgYXQgYSBzaW5n bGUgZXh0ZW50LgorCQkgKi8KKwkJaWYgKCEobXAtPm1fZmxhZ3MgJiBYRlNfTU9VTlRfREZMVF9J T1NJWkUpKSB7CisJCQlhbGxvY19ibG9ja3MgPSBYRlNfQl9UT19GU0IobXAsIGlwLT5pX3NpemUp OworCQkJYWxsb2NfYmxvY2tzID0gWEZTX0ZJTEVPRkZfTUlOKE1BWEVYVExFTiwKKwkJCQkJcm91 bmRkb3duX3Bvd19vZl90d28oYWxsb2NfYmxvY2tzKSk7CisJCX0KKwkJaWYgKGFsbG9jX2Jsb2Nr cyA8IG1wLT5tX3dyaXRlaW9fYmxvY2tzKQorCQkJYWxsb2NfYmxvY2tzID0gbXAtPm1fd3JpdGVp b19ibG9ja3M7CisKIAkJYWxpZ25lZF9vZmZzZXQgPSBYRlNfV1JJVEVJT19BTElHTihtcCwgKG9m ZnNldCArIGNvdW50IC0gMSkpOwogCQlpb2FsaWduID0gWEZTX0JfVE9fRlNCVChtcCwgYWxpZ25l ZF9vZmZzZXQpOwotCQlsYXN0X2ZzYiA9IGlvYWxpZ24gKyBtcC0+bV93cml0ZWlvX2Jsb2NrczsK KwkJbGFzdF9mc2IgPSBpb2FsaWduICsgYWxsb2NfYmxvY2tzOwogCX0gZWxzZSB7CiAJCWxhc3Rf ZnNiID0gWEZTX0JfVE9fRlNCKG1wLCAoKHhmc191ZnNpemVfdCkob2Zmc2V0ICsgY291bnQpKSk7 CiAJfQpAQCAtNDk2LDIyICs1MjAsMzEgQEAgcmV0cnk6CiAJCQkgIFhGU19CTUFQSV9ERUxBWSB8 IFhGU19CTUFQSV9XUklURSB8CiAJCQkgIFhGU19CTUFQSV9FTlRJUkUsICZmaXJzdGJsb2NrLCAx LCBpbWFwLAogCQkJICAmbmltYXBzLCBOVUxMKTsKLQlpZiAoZXJyb3IgJiYgKGVycm9yICE9IEVO T1NQQykpCisJc3dpdGNoIChlcnJvcikgeworCWNhc2UgMDoKKwljYXNlIEVOT1NQQzoKKwljYXNl IEVEUVVPVDoKKwkJYnJlYWs7CisJZGVmYXVsdDoKIAkJcmV0dXJuIFhGU19FUlJPUihlcnJvcik7 CisJfQogCiAJLyoKLQkgKiBJZiBibWFwaSByZXR1cm5lZCB1cyBub3RoaW5nLCBhbmQgaWYgd2Ug ZGlkbid0IGdldCBiYWNrIEVEUVVPVCwKLQkgKiB0aGVuIHdlIG11c3QgaGF2ZSBydW4gb3V0IG9m IHNwYWNlIC0gZmx1c2ggYWxsIG90aGVyIGlub2RlcyB3aXRoCi0JICogZGVsYWxsb2MgYmxvY2tz IGFuZCByZXRyeSB3aXRob3V0IEVPRiBwcmVhbGxvY2F0aW9uLgorCSAqIElmIGJtYXBpIHJldHVy bmVkIHVzIG5vdGhpbmcsIHdlIGdvdCBlaXRoZXIgRU5PU1BDIG9yIEVEUVVPVC4gIEZvcgorCSAq IEVOT1NQQywgKiBmbHVzaCBhbGwgb3RoZXIgaW5vZGVzIHdpdGggZGVsYWxsb2MgYmxvY2tzIHRv IGZyZWUgdXAKKwkgKiBzb21lIG9mIHRoZSBleGNlc3MgcmVzZXJ2ZWQgbWV0YWRhdGEgc3BhY2Uu IEZvciBib3RoIGNhc2VzLCByZXRyeQorCSAqIHdpdGhvdXQgRU9GIHByZWFsbG9jYXRpb24uCiAJ ICovCiAJaWYgKG5pbWFwcyA9PSAwKSB7CiAJCXRyYWNlX3hmc19kZWxhbGxvY19lbm9zcGMoaXAs IG9mZnNldCwgY291bnQpOwogCQlpZiAoZmx1c2hlZCkKLQkJCXJldHVybiBYRlNfRVJST1IoRU5P U1BDKTsKKwkJCXJldHVybiBYRlNfRVJST1IoZXJyb3IgPyBlcnJvciA6IEVOT1NQQyk7CiAKLQkJ eGZzX2l1bmxvY2soaXAsIFhGU19JTE9DS19FWENMKTsKLQkJeGZzX2ZsdXNoX2lub2RlcyhpcCk7 Ci0JCXhmc19pbG9jayhpcCwgWEZTX0lMT0NLX0VYQ0wpOworCQlpZiAoZXJyb3IgPT0gRU5PU1BD KSB7CisJCQl4ZnNfaXVubG9jayhpcCwgWEZTX0lMT0NLX0VYQ0wpOworCQkJeGZzX2ZsdXNoX2lu b2RlcyhpcCk7CisJCQl4ZnNfaWxvY2soaXAsIFhGU19JTE9DS19FWENMKTsKKwkJfQogCiAJCWZs dXNoZWQgPSAxOwogCQllcnJvciA9IDA7Ci0tIAoxLjcuMi4zCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dp LmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMK