From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v4,72/73] xfs: Convert mru cache to XArray From: Matthew Wilcox Message-Id: <20171211042315.GA25236@bombadil.infradead.org> Date: Sun, 10 Dec 2017 20:23:15 -0800 To: Dave Chinner Cc: Matthew Wilcox , Ross Zwisler , Jens Axboe , Rehas Sachdeva , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-nilfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-xfs@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: T24gTW9uLCBEZWMgMTEsIDIwMTcgYXQgMTA6NTc6NDVBTSArMTEwMCwgRGF2ZSBDaGlubmVyIHdy b3RlOgo+IGkuZS4gIHRoZSBmYWN0IHRoZSBjbXB4Y2hnIGZhaWxlZCBtYXkgbm90IGhhdmUgYW55 dGhpbmcgdG8gZG8gd2l0aCBhCj4gcmFjZSBjb25kdGlvbiAtIGl0IGZhaWxlZCBiZWNhdXNlIHRo ZSBzbG90IHdhc24ndCBlbXB0eSBsaWtlIHdlCj4gZXhwZWN0ZWQgaXQgdG8gYmUuIFRoZXJlIGNh biBiZSBhbnkgbnVtYmVyIG9mIHJlYXNvbnMgdGhlIHNsb3QgaXNuJ3QKPiBlbXB0eSAtIHRoZSBB UEkgc2hvdWxkIG5vdCAiZG9jdW1lbnQiIHRoYXQgdGhlIHJlYXNvbiB0aGUgaW5zZXJ0Cj4gZmFp bGVkIHdhcyBhIHJhY2UgY29uZGl0aW9uLiBJdCBzaG91bGQgZG9jdW1lbnQgdGhlIGNhc2UgdGhh dCB3ZQo+ICJjb3VsZG4ndCBpbnNlcnQgYmVjYXVzZSB0aGVyZSB3YXMgYW4gZXhpc3RpbmcgZW50 cnkgaW4gdGhlIHNsb3QiLgo+IExldCB0aGUgc3Vycm91bmRpbmcgY29kZSBkb2N1bWVudCB0aGUg cmVhc29uIHdoeSB0aGF0IG1pZ2h0IGhhdmUKPiBoYXBwZW5lZCAtIGl0J3Mgbm90IGZvciB0aGUg QVBJIHRvIGFzc3VtZSByZWFzb25zIGZvciBmYWlsdXJlLgo+IAo+IGkuZS4gdGhpcyBBUEkgYW5k IHBvdGVudGlhbCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBtYWtlcyBtdWNoCj4gbW9yZSBzZW5z ZToKPiAKPiBpbnQKPiB4YV9zdG9yZV9pZmZfZW1wdHkoLi4uKQo+IHsKPiAJY3VyciA9IHhhX2Nt cHhjaGcoJnBhZy0+cGFnX2ljaV94YSwgYWdpbm8sIE5VTEwsIGlwLCBHRlBfTk9GUyk7Cj4gCWlm ICghY3VycikKPiAJCXJldHVybiAwOwkvKiBzdWNjZXNzISAqLwo+IAlpZiAoIUlTX0VSUihjdXJy KSkKPiAJCXJldHVybiAtRUVYSVNUOwkvKiBmYWlsZWQgLSBzbG90IG5vdCBlbXB0eSAqLwo+IAly ZXR1cm4gUFRSX0VSUihjdXJyKTsJLyogZmFpbGVkIC0gWEEgaW50ZXJuYWwgaXNzdWUgKi8KPiB9 Cj4gCj4gYXMgaXQgcmVwbGFjZXMgdGhlIGV4aXN0aW5nIHByZWxvYWQgYW5kIGluc2VydCBjb2Rl IGluIHRoZSBYRlMgY29kZQo+IHBhdGhzIHdoaWxzdCBsZXR0aW5nIHVzIGhhbmRsZSBhbmQgZG9j dW1lbnQgdGhlICJpbnNlcnQgZmFpbGVkCj4gYmVjYXVzZSBzbG90IG5vdCBlbXB0eSIgY2FzZSBo b3dldmVyIHdlIHdhbnQuIEl0IGltcGxpZXMgbm90aGluZwo+IGFib3V0ICp3aHkqIHRoZSBzbG90 IHdhc24ndCBlbXB0eSwganVzdCB0aGF0IHdlIGNvdWxkbid0IGRvIHRoZQo+IGluc2VydCBiZWNh dXNlIGl0IHdhc24ndCBlbXB0eS4KClllYWgsIE9LLiAgU28sIG92ZXIgdGhlIHRvcCBvZiB0aGUg cmVjZW50IGNoYW5nZXMgSSdtIGxvb2tpbmcgYXQgdGhpczoKCkknbSBub3QgaW4gbG92ZSB3aXRo IHhhX3N0b3JlX2VtcHR5KCkgYXMgYSBuYW1lLiAgSSBhbG1vc3Qgd2FudAp4YV9zdG9yZV93ZWFr KCksIGJ1dCBhZnRlciBteSBNQVBfRklYRURfV0VBSyBwcm9wb3NlZCBuYW1lIGdvdCBzaG90CmRv d24sIEknbSBsZWVyeSBvZiBpdC4gICJlbXB0eSIgaXMgYXQgbGVhc3QgYSBjb25jZXB0IHdlIGFs cmVhZHkgaGF2ZQppbiB0aGUgQVBJIHdpdGggdGhlIGNvbW1lbnQgZm9yIHhhX2luaXQoKSB0YWxr aW5nIGFib3V0IGFuIGVtcHR5IGFycmF5CmFuZCB4YV9lbXB0eSgpLiAgSSBhbHNvIGNvbnNpZGVy ZWQgeGFfc3RvcmVfbnVsbCBhbmQgeGFfb3ZlcndyaXRlX251bGwKYW5kIHhhX3JlcGxhY2VfbnVs bCgpLiAgTmFtaW5nIHJlbWFpbnMgaGFyZC4KLS0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBs aXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC11c2IiIGluCnRoZSBib2R5IG9m IGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGlu Zm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAoKZGlmZiAt LWdpdCBhL2ZzL3hmcy94ZnNfaWNhY2hlLmMgYi9mcy94ZnMveGZzX2ljYWNoZS5jCmluZGV4IDk0 MWYzOGJiOTRhNC4uNTg2YjQzODM2OTA1IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2ljYWNoZS5j CisrKyBiL2ZzL3hmcy94ZnNfaWNhY2hlLmMKQEAgLTQ1MSw3ICs0NTEsNyBAQCB4ZnNfaWdldF9j YWNoZV9taXNzKAogCWludAkJCWZsYWdzLAogCWludAkJCWxvY2tfZmxhZ3MpCiB7Ci0Jc3RydWN0 IHhmc19pbm9kZQkqaXAsICpjdXJyOworCXN0cnVjdCB4ZnNfaW5vZGUJKmlwOwogCWludAkJCWVy cm9yOwogCXhmc19hZ2lub190CQlhZ2lubyA9IFhGU19JTk9fVE9fQUdJTk8obXAsIGlubyk7CiAJ aW50CQkJaWZsYWdzOwpAQCAtNDk4LDggKzQ5OCw3IEBAIHhmc19pZ2V0X2NhY2hlX21pc3MoCiAJ eGZzX2lmbGFnc19zZXQoaXAsIGlmbGFncyk7CiAKIAkvKiBpbnNlcnQgdGhlIG5ldyBpbm9kZSAq LwotCWN1cnIgPSB4YV9jbXB4Y2hnKCZwYWctPnBhZ19pY2lfeGEsIGFnaW5vLCBOVUxMLCBpcCwg R0ZQX05PRlMpOwotCWVycm9yID0gX194YV9yYWNlKGN1cnIsIC1FQUdBSU4pOworCWVycm9yID0g eGFfc3RvcmVfZW1wdHkoJnBhZy0+cGFnX2ljaV94YSwgYWdpbm8sIGlwLCBHRlBfTk9GUywgLUVB R0FJTik7CiAJaWYgKGVycm9yKQogCQlnb3RvIG91dF91bmxvY2s7CiAKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgveGFycmF5LmggYi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oCmluZGV4IDU3OTJi NmRiYjA0MC4uY2M3Y2M1MjUzYTY3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3hhcnJheS5o CisrKyBiL2luY2x1ZGUvbGludXgveGFycmF5LmgKQEAgLTI3MSw0MyArMjcxLDMwIEBAIHN0YXRp YyBpbmxpbmUgaW50IHhhX2Vycih2b2lkICplbnRyeSkKIH0KIAogLyoqCi0gKiBfX3hhX3JhY2Uo KSAtIFR1cm4gYSBjbXB4Y2hnIHJlc3VsdCBpbnRvIGFuIGVycm5vLgotICogQGVudHJ5OiBSZXN1 bHQgZnJvbSBjYWxsaW5nIGFuIFhBcnJheSBmdW5jdGlvbi4KLSAqIEBlcnJubzogRXJyb3IgbnVt YmVyIHRvIHJldHVybiBpZiB3ZSBsb3N0IHRoZSByYWNlLgorICogeGFfc3RvcmVfZW1wdHkoKSAt IFN0b3JlIHRoaXMgZW50cnkgaW4gdGhlIFhBcnJheSB1bmxlc3MgYW5vdGhlciBlbnRyeSBpcwor ICogCQkJYWxyZWFkeSBwcmVzZW50LgorICogQHhhOiBYQXJyYXkuCisgKiBAaW5kZXg6IEluZGV4 IGludG8gYXJyYXkuCisgKiBAZW50cnk6IE5ldyBlbnRyeS4KKyAqIEBnZnA6IE1lbW9yeSBhbGxv Y2F0aW9uIGZsYWdzLgorICogQHJjOiBOdW1iZXIgdG8gcmV0dXJuIGlmIGFub3RoZXIgZW50cnkg d2FzIHByZXNlbnQuCiAgKgotICogTGlrZSB4YV9yYWNlKCksIGJ1dCByZXR1cm5zIHRoZSBlcnJv ciBudW1iZXIgb2YgeW91ciBjaG9pY2UuICBDYWxsaW5nCi0gKiBfX3hhX3JhY2UoZW50cnksIDAp IGhhcyB0aGUgc2FtZSByZXN1bHQgKGJ1dCBpcyBsZXNzIGVmZmljaWVudCkgYXMKLSAqIGNhbGxp bmcgeGFfZXJyKCkuCisgKiBMaWtlIHhhX3N0b3JlKCksIGJ1dCB3aWxsIGZhaWwgYW5kIHJldHVy biB0aGUgc3VwcGxpZWQgZXJyb3IgbnVtYmVyIGlmCisgKiB0aGUgZXhpc3RpbmcgZW50cnkgYXQg QGluZGV4IGlzIG5vdCAlTlVMTC4KICAqCiAgKiBSZXR1cm46IEEgbmVnYXRpdmUgZXJybm8gb3Ig MC4KICAqLwotc3RhdGljIGlubGluZSBpbnQgX194YV9yYWNlKHZvaWQgKmVudHJ5LCBpbnQgZXJy bm8pCitzdGF0aWMgaW5saW5lIGludCB4YV9zdG9yZV9lbXB0eShzdHJ1Y3QgeGFycmF5ICp4YSwg dW5zaWduZWQgbG9uZyBpbmRleCwKKwkJdm9pZCAqZW50cnksIGdmcF90IGdmcCwgaW50IGVycm5v KQogewotCWlmICghZW50cnkpCisJdm9pZCAqY3VyciA9IHhhX2NtcHhjaGcoeGEsIGluZGV4LCBO VUxMLCBlbnRyeSwgZ2ZwKTsKKwlpZiAoIWN1cnIpCiAJCXJldHVybiAwOwotCWlmICh4YV9pc19l cnIoZW50cnkpKQotCQlyZXR1cm4gKGxvbmcpZW50cnkgPj4gMjsKKwlpZiAoeGFfaXNfZXJyKGN1 cnIpKQorCQlyZXR1cm4geGFfZXJyKGN1cnIpOwogCXJldHVybiBlcnJubzsKIH0KIAotLyoqCi0g KiB4YV9yYWNlKCkgLSBUdXJuIGEgY21weGNoZyByZXN1bHQgaW50byBhbiBlcnJuby4KLSAqIEBl bnRyeTogUmVzdWx0IGZyb20gY2FsbGluZyBhbiBYQXJyYXkgZnVuY3Rpb24uCi0gKgotICogSXQg aXMgY29tbW9uIHRvIHVzZSB4YV9jbXB4Y2hnKCkgdG8gZW5zdXJlIHRoYXQgb25seSBvbmUgdGhy ZWFkIGFzc2lnbnMKLSAqIGEgdmFsdWUgdG8gYW4gaW5kZXguICBQYXNzIHRoZSByZXN1bHQgZnJv bSB4YV9jbXB4Y2hnKCkgdG8geGFfcmFjZSgpIHRvCi0gKiBnZXQgYW4gZXJybm8gYmFjay4gIFRo aXMgZnVuY3Rpb24gYWxzbyBoYW5kbGVzIGFueSBvdGhlciBlcnJvciB3aGljaAotICogbWF5IGhh dmUgYmVlbiByZXR1cm5lZCBieSB4YV9jbXB4Y2hnKCkgc3VjaCBhcyBFTk9NRU0uCi0gKgotICog SWYgeW91IGRvbid0IGNhcmUgdGhhdCB5b3UgbG9zdCB0aGUgcmFjZSwgeW91IGNhbiB1c2UgeGFf ZXJyKCkgaW5zdGVhZC4KLSAqCi0gKiBSZXR1cm46IEEgbmVnYXRpdmUgZXJybm8gb3IgMC4KLSAq Lwotc3RhdGljIGlubGluZSBpbnQgeGFfcmFjZSh2b2lkICplbnRyeSkKLXsKLQlyZXR1cm4gX194 YV9yYWNlKGVudHJ5LCAtRUVYSVNUKTsKLX0KLQogLyogRXZlcnl0aGluZyBiZWxvdyBoZXJlIGlz IHRoZSBBZHZhbmNlZCBBUEkuICBQcm9jZWVkIHdpdGggY2F1dGlvbi4gKi8KIAogI2RlZmluZSB4 YV90cnlsb2NrKHhhKQkJc3Bpbl90cnlsb2NrKCYoeGEpLT54YV9sb2NrKQpkaWZmIC0tZ2l0IGEv bW0vYmFja2luZy1kZXYuYyBiL21tL2JhY2tpbmctZGV2LmMKaW5kZXggODVkMWJjOTYzYWI2Li44 N2VkNTVhZjgyM2UgMTAwNjQ0Ci0tLSBhL21tL2JhY2tpbmctZGV2LmMKKysrIGIvbW0vYmFja2lu Zy1kZXYuYwpAQCAtNjE0LDggKzYxNCw4IEBAIHN0YXRpYyBpbnQgY2d3Yl9jcmVhdGUoc3RydWN0 IGJhY2tpbmdfZGV2X2luZm8gKmJkaSwKIAlzcGluX2xvY2tfaXJxc2F2ZSgmY2d3Yl9sb2NrLCBm bGFncyk7CiAJaWYgKHRlc3RfYml0KFdCX3JlZ2lzdGVyZWQsICZiZGktPndiLnN0YXRlKSAmJgog CSAgICBibGtjZ19jZ3diX2xpc3QtPm5leHQgJiYgbWVtY2dfY2d3Yl9saXN0LT5uZXh0KSB7Ci0J CXJldCA9IHhhX3JhY2UoeGFfY21weGNoZygmYmRpLT5jZ3diX3hhLCBtZW1jZ19jc3MtPmlkLCBO VUxMLAotCQkJCQkJd2IsIEdGUF9BVE9NSUMpKTsKKwkJcmV0ID0geGFfc3RvcmVfZW1wdHkoJmJk aS0+Y2d3Yl94YSwgbWVtY2dfY3NzLT5pZCwgd2IsCisJCQkJCUdGUF9BVE9NSUMsIC1FRVhJU1Qp OwogCQlpZiAoIXJldCkgewogCQkJbGlzdF9hZGRfdGFpbF9yY3UoJndiLT5iZGlfbm9kZSwgJmJk aS0+d2JfbGlzdCk7CiAJCQlsaXN0X2FkZCgmd2ItPm1lbWNnX25vZGUsIG1lbWNnX2Nnd2JfbGlz dCk7Cg==