From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 521C17CA1 for ; Tue, 28 Jun 2016 07:32:42 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 24A058F8035 for ; Tue, 28 Jun 2016 05:32:42 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id qebSWrxlPHHNm2N7 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Tue, 28 Jun 2016 05:32:40 -0700 (PDT) Date: Tue, 28 Jun 2016 08:32:39 -0400 From: Brian Foster Subject: Re: [PATCH 018/119] xfs: enable the xfs_defer mechanism to process extents to free Message-ID: <20160628123238.GE4212@bfoster.bfoster> References: <146612627129.12839.3827886950949809165.stgit@birch.djwong.org> <146612638717.12839.11007379793448761871.stgit@birch.djwong.org> <20160627131508.GC23076@bfoster.bfoster> <20160627214145.GC4921@birch.djwong.org> <20160627220003.GA4917@birch.djwong.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20160627220003.GA4917@birch.djwong.org> 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 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: "Darrick J. Wong" Cc: linux-fsdevel@vger.kernel.org, vishal.l.verma@intel.com, xfs@oss.sgi.com T24gTW9uLCBKdW4gMjcsIDIwMTYgYXQgMDM6MDA6MDNQTSAtMDcwMCwgRGFycmljayBKLiBXb25n IHdyb3RlOgo+IE9uIE1vbiwgSnVuIDI3LCAyMDE2IGF0IDAyOjQxOjQ1UE0gLTA3MDAsIERhcnJp Y2sgSi4gV29uZyB3cm90ZToKPiA+IE9uIE1vbiwgSnVuIDI3LCAyMDE2IGF0IDA5OjE1OjA4QU0g LTA0MDAsIEJyaWFuIEZvc3RlciB3cm90ZToKPiA+ID4gT24gVGh1LCBKdW4gMTYsIDIwMTYgYXQg MDY6MTk6NDdQTSAtMDcwMCwgRGFycmljayBKLiBXb25nIHdyb3RlOgo+ID4gPiA+IENvbm5lY3Qg dGhlIHhmc19kZWZlciBtZWNoYW5pc20gd2l0aCB0aGUgcGllY2VzIHRoYXQgd2UnbGwgbmVlZCB0 bwo+ID4gPiA+IGhhbmRsZSBkZWZlcnJlZCBleHRlbnQgZnJlZWluZy4gIFdlJ2xsIHdpcmUgdXAg dGhlIGV4aXN0aW5nIGNvZGUgdG8KPiA+ID4gPiBvdXIgbmV3IGRlZmVycmVkIG1lY2hhbmlzbSBs YXRlci4KPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEYXJyaWNrIEouIFdvbmcgPGRh cnJpY2sud29uZ0BvcmFjbGUuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiAKPiA+ID4gQ291bGQgd2Ug bWVyZ2UgdGhpcyB3aXRoIHRoZSB4ZnNfdHJhbnNfKmVmaS9lZmQqIGJpdHM/IFdlJ2QgbmVlZCB0 bwo+ID4gPiBwcmVzZXJ2ZSBzb21lIGNhbGxzIGZvciByZWNvdmVyeSwgYnV0IGl0IGxvb2tzIGxp a2Ugb3RoZXIgcGFydHMgYXJlIG9ubHkKPiA+ID4gdXNlZCBieSB0aGUgZGVmZXJyZWQgb3BzIGlu ZnJhc3RydWN0dXJlIGF0IHRoaXMgcG9pbnQuCj4gPiAKPiA+IFllcywgd2UgY291bGQgcmVwbGFj ZSB4ZnNfYm1hcF9mcmVlX2NyZWF0ZV97aW50ZW50LGRvbmV9IHdpdGgKPiA+IHhmc190cmFuc19n ZXRfZWZbaWRdIGFuZCBsb3NlIHRoZSBzaWxseSBmdW5jdGlvbnMuICBJJ2xsIGdvIHRha2UKPiA+ IGNhcmUgb2YgYWxsIG9mIHRoZW0uCj4gCj4gSGFoLCBnY2MgY29tcGxhaW5zIGFib3V0IHRoZSBt aXNtYXRjaCBpbiBwb2ludGVyIHR5cGVzIGZvciB0aGUgc2Vjb25kCj4gYXJndW1lbnQuCj4gCj4g ZnMveGZzL3hmc19kZWZlcl9pdGVtLmM6NTA0OjE3OiBlcnJvcjogaW5pdGlhbGl6YXRpb24gZnJv bSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlIFstV2Vycm9yPWluY29tcGF0aWJsZS1wb2ludGVy LXR5cGVzXQo+ICAgLmNyZWF0ZV9kb25lID0geGZzX3RyYW5zX2dldF9idWQsCj4gICAgICAgICAg ICAgICAgICBeCj4gZnMveGZzL3hmc19kZWZlcl9pdGVtLmM6NTA0OjE3OiBub3RlOiAobmVhciBp bml0aWFsaXphdGlvbiBmb3Ig4oCYeGZzX2JtYXBfdXBkYXRlX2RlZmVyX3R5cGUuY3JlYXRlX2Rv bmXigJkpCj4gCj4gSSBndWVzcyBvbmUgY291bGQgcHV0IGluIGFuIHVnbHkgY2FzdCB0byBjb2Vy Y2UgdGhlIHR5cGVzIGF0IGEgY29zdCBvZgo+IHVnbGlmeWluZyB0aGUgY29kZS4gIDxzaHJ1Zz4g T3BpbmlvbnM/Cj4gCgpOb3Qgc3VyZSB3aGF0IHlvdSBtZWFuIGhlcmUuLi4gSSBzaG91bGQgYmUg bW9yZSBjbGVhci4gV2hhdCBJIHdhcwp0aGlua2luZyBpcyB0byBudWtlIHhmc19kZWZlcl9pdGVt LmMsIGRlZmluZSB0aGUgJ2NvbnN0IHN0cnVjdAp4ZnNfZGVmZXJfb3BfdHlwZSB4ZnNfZXh0ZW50 X2ZyZWVfZGVmZXJfdHlwZScgcmlnaHQgaW4KeGZzX3RyYW5zX2V4dGZyZWUuYyAocGVyaGFwcyBy ZW5hbWUgdGhlIGZpbGUpIGFuZCB3aXJlIHVwIHRoZSBmdW5jdGlvbnMKYXBwcm9wcmlhdGVseS4g SnVzdCBjaGFuZ2UgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgaWYgeW91IG5lZWQgdG8uIEZvcgpz b21ldGhpbmcgbGlrZSB4ZnNfdHJhbnNfZ2V0X2VmZCgpLCBtYXliZSByZWZhY3RvciB0aGUgZ3V0 cyBpbnRvIGEKc3RhdGljIGhlbHBlciB0aGF0IGJvdGggdGhlIGRlZmVyIGNhbGxiYWNrIGFuZCB4 ZnNfdHJhbnNfZ2V0X2VmZCgpIGNhbgp1c2UsIHNpbmNlIHdlIG5lZWQgdGhlIGxhdHRlciBmb3Ig bG9nIHJlY292ZXJ5LiBXaWxsIHNvbWV0aGluZyBsaWtlIHRoYXQKd29yaz8KClRvIHB1dCBpdCBz aW1wbHksIGl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhdCBsZWFzdCBhIGZldyBwbGFjZXMgd2hlcmUK ZGVmZXIgaXRlbSBoYXMgYSBjYWxsYmFjayB0aGF0IGNhbGxzIHlldCBhbm90aGVyIGludGVyZmFj ZSwgYnV0IGlzIHRoZQpvbmx5IGNhbGxlciBvZiB0aGUgbGF0dGVyIChlLmcuLAp4ZnNfYm1hcF9m cmVlX2NyZWF0ZV9pbnRlbnQoKS0+eGZzX3RyYW5zX2dldF9lZmkoKSkuIAoKQnJpYW4KCj4gLS1E Cj4gCj4gPiAKPiA+IC0tRAo+ID4gCj4gPiA+IAo+ID4gPiBCcmlhbgo+ID4gPiAKPiA+ID4gPiAg ZnMveGZzL2xpYnhmcy94ZnNfZGVmZXIuaCB8ICAgIDEgCj4gPiA+ID4gIGZzL3hmcy94ZnNfZGVm ZXJfaXRlbS5jICAgfCAgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspCj4gPiA+ ID4gCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2ZzL3hmcy9saWJ4ZnMveGZzX2RlZmVy LmggYi9mcy94ZnMvbGlieGZzL3hmc19kZWZlci5oCj4gPiA+ID4gaW5kZXggODVjN2EzYS4uNzQz ZmMzMiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9mcy94ZnMvbGlieGZzL3hmc19kZWZlci5oCj4gPiA+ ID4gKysrIGIvZnMveGZzL2xpYnhmcy94ZnNfZGVmZXIuaAo+ID4gPiA+IEBAIC01MSw2ICs1MSw3 IEBAIHN0cnVjdCB4ZnNfZGVmZXJfcGVuZGluZyB7Cj4gPiA+ID4gICAqIGZpbmQgYWxsIHRoZSBz cGFjZSBpdCBuZWVkcy4KPiA+ID4gPiAgICovCj4gPiA+ID4gIGVudW0geGZzX2RlZmVyX29wc190 eXBlIHsKPiA+ID4gPiArCVhGU19ERUZFUl9PUFNfVFlQRV9GUkVFLAo+ID4gPiA+ICAJWEZTX0RF RkVSX09QU19UWVBFX01BWCwKPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4gZGlmZiAtLWdp dCBhL2ZzL3hmcy94ZnNfZGVmZXJfaXRlbS5jIGIvZnMveGZzL3hmc19kZWZlcl9pdGVtLmMKPiA+ ID4gPiBpbmRleCA0YzJiYTI4Li4xMjdhNTRlIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2ZzL3hmcy94 ZnNfZGVmZXJfaXRlbS5jCj4gPiA+ID4gKysrIGIvZnMveGZzL3hmc19kZWZlcl9pdGVtLmMKPiA+ ID4gPiBAQCAtMjksOSArMjksMTE3IEBACj4gPiA+ID4gICNpbmNsdWRlICJ4ZnNfZGVmZXIuaCIK PiA+ID4gPiAgI2luY2x1ZGUgInhmc190cmFucy5oIgo+ID4gPiA+ICAjaW5jbHVkZSAieGZzX3Ry YWNlLmgiCj4gPiA+ID4gKyNpbmNsdWRlICJ4ZnNfYm1hcC5oIgo+ID4gPiA+ICsjaW5jbHVkZSAi eGZzX2V4dGZyZWVfaXRlbS5oIgo+ID4gPiA+ICsKPiA+ID4gPiArLyogRXh0ZW50IEZyZWVpbmcg Ki8KPiA+ID4gPiArCj4gPiA+ID4gKy8qIFNvcnQgYm1hcCBpdGVtcyBieSBBRy4gKi8KPiA+ID4g PiArc3RhdGljIGludAo+ID4gPiA+ICt4ZnNfYm1hcF9mcmVlX2RpZmZfaXRlbXMoCj4gPiA+ID4g Kwl2b2lkCQkJCSpwcml2LAo+ID4gPiA+ICsJc3RydWN0IGxpc3RfaGVhZAkJKmEsCj4gPiA+ID4g KwlzdHJ1Y3QgbGlzdF9oZWFkCQkqYikKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IHhmc19t b3VudAkJKm1wID0gcHJpdjsKPiA+ID4gPiArCXN0cnVjdCB4ZnNfYm1hcF9mcmVlX2l0ZW0JKnJh Owo+ID4gPiA+ICsJc3RydWN0IHhmc19ibWFwX2ZyZWVfaXRlbQkqcmI7Cj4gPiA+ID4gKwo+ID4g PiA+ICsJcmEgPSBjb250YWluZXJfb2YoYSwgc3RydWN0IHhmc19ibWFwX2ZyZWVfaXRlbSwgeGJm aV9saXN0KTsKPiA+ID4gPiArCXJiID0gY29udGFpbmVyX29mKGIsIHN0cnVjdCB4ZnNfYm1hcF9m cmVlX2l0ZW0sIHhiZmlfbGlzdCk7Cj4gPiA+ID4gKwlyZXR1cm4gIFhGU19GU0JfVE9fQUdOTyht cCwgcmEtPnhiZmlfc3RhcnRibG9jaykgLQo+ID4gPiA+ICsJCVhGU19GU0JfVE9fQUdOTyhtcCwg cmItPnhiZmlfc3RhcnRibG9jayk7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gKy8qIEdl dCBhbiBFRkkuICovCj4gPiA+ID4gK1NUQVRJQyB2b2lkICoKPiA+ID4gPiAreGZzX2JtYXBfZnJl ZV9jcmVhdGVfaW50ZW50KAo+ID4gPiA+ICsJc3RydWN0IHhmc190cmFucwkJKnRwLAo+ID4gPiA+ ICsJdW5zaWduZWQgaW50CQkJY291bnQpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXJldHVybiB4ZnNf dHJhbnNfZ2V0X2VmaSh0cCwgY291bnQpOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICsv KiBMb2cgYSBmcmVlIGV4dGVudCB0byB0aGUgaW50ZW50IGl0ZW0uICovCj4gPiA+ID4gK1NUQVRJ QyB2b2lkCj4gPiA+ID4gK3hmc19ibWFwX2ZyZWVfbG9nX2l0ZW0oCj4gPiA+ID4gKwlzdHJ1Y3Qg eGZzX3RyYW5zCQkqdHAsCj4gPiA+ID4gKwl2b2lkCQkJCSppbnRlbnQsCj4gPiA+ID4gKwlzdHJ1 Y3QgbGlzdF9oZWFkCQkqaXRlbSkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IHhmc19ibWFw X2ZyZWVfaXRlbQkqZnJlZTsKPiA+ID4gPiArCj4gPiA+ID4gKwlmcmVlID0gY29udGFpbmVyX29m KGl0ZW0sIHN0cnVjdCB4ZnNfYm1hcF9mcmVlX2l0ZW0sIHhiZmlfbGlzdCk7Cj4gPiA+ID4gKwl4 ZnNfdHJhbnNfbG9nX2VmaV9leHRlbnQodHAsIGludGVudCwgZnJlZS0+eGJmaV9zdGFydGJsb2Nr LAo+ID4gPiA+ICsJCQlmcmVlLT54YmZpX2Jsb2NrY291bnQpOwo+ID4gPiA+ICt9Cj4gPiA+ID4g Kwo+ID4gPiA+ICsvKiBHZXQgYW4gRUZEIHNvIHdlIGNhbiBwcm9jZXNzIGFsbCB0aGUgZnJlZSBl eHRlbnRzLiAqLwo+ID4gPiA+ICtTVEFUSUMgdm9pZCAqCj4gPiA+ID4gK3hmc19ibWFwX2ZyZWVf Y3JlYXRlX2RvbmUoCj4gPiA+ID4gKwlzdHJ1Y3QgeGZzX3RyYW5zCQkqdHAsCj4gPiA+ID4gKwl2 b2lkCQkJCSppbnRlbnQsCj4gPiA+ID4gKwl1bnNpZ25lZCBpbnQJCQljb3VudCkKPiA+ID4gPiAr ewo+ID4gPiA+ICsJcmV0dXJuIHhmc190cmFuc19nZXRfZWZkKHRwLCBpbnRlbnQsIGNvdW50KTsK PiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArLyogUHJvY2VzcyBhIGZyZWUgZXh0ZW50LiAq Lwo+ID4gPiA+ICtTVEFUSUMgaW50Cj4gPiA+ID4gK3hmc19ibWFwX2ZyZWVfZmluaXNoX2l0ZW0o Cj4gPiA+ID4gKwlzdHJ1Y3QgeGZzX3RyYW5zCQkqdHAsCj4gPiA+ID4gKwlzdHJ1Y3QgeGZzX2Rl ZmVyX29wcwkJKmRvcCwKPiA+ID4gPiArCXN0cnVjdCBsaXN0X2hlYWQJCSppdGVtLAo+ID4gPiA+ ICsJdm9pZAkJCQkqZG9uZV9pdGVtLAo+ID4gPiA+ICsJdm9pZAkJCQkqKnN0YXRlKQo+ID4gPiA+ ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgeGZzX2JtYXBfZnJlZV9pdGVtCSpmcmVlOwo+ID4gPiA+ICsJ aW50CQkJCWVycm9yOwo+ID4gPiA+ICsKPiA+ID4gPiArCWZyZWUgPSBjb250YWluZXJfb2YoaXRl bSwgc3RydWN0IHhmc19ibWFwX2ZyZWVfaXRlbSwgeGJmaV9saXN0KTsKPiA+ID4gPiArCWVycm9y ID0geGZzX3RyYW5zX2ZyZWVfZXh0ZW50KHRwLCBkb25lX2l0ZW0sCj4gPiA+ID4gKwkJCWZyZWUt PnhiZmlfc3RhcnRibG9jaywKPiA+ID4gPiArCQkJZnJlZS0+eGJmaV9ibG9ja2NvdW50KTsKPiA+ ID4gPiArCWttZW1fZnJlZShmcmVlKTsKPiA+ID4gPiArCXJldHVybiBlcnJvcjsKPiA+ID4gPiAr fQo+ID4gPiA+ICsKPiA+ID4gPiArLyogQWJvcnQgYWxsIHBlbmRpbmcgRUZJcy4gKi8KPiA+ID4g PiArU1RBVElDIHZvaWQKPiA+ID4gPiAreGZzX2JtYXBfZnJlZV9hYm9ydF9pbnRlbnQoCj4gPiA+ ID4gKwl2b2lkCQkJCSppbnRlbnQpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXhmc19lZmlfcmVsZWFz ZShpbnRlbnQpOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICsvKiBDYW5jZWwgYSBmcmVl IGV4dGVudC4gKi8KPiA+ID4gPiArU1RBVElDIHZvaWQKPiA+ID4gPiAreGZzX2JtYXBfZnJlZV9j YW5jZWxfaXRlbSgKPiA+ID4gPiArCXN0cnVjdCBsaXN0X2hlYWQJCSppdGVtKQo+ID4gPiA+ICt7 Cj4gPiA+ID4gKwlzdHJ1Y3QgeGZzX2JtYXBfZnJlZV9pdGVtCSpmcmVlOwo+ID4gPiA+ICsKPiA+ ID4gPiArCWZyZWUgPSBjb250YWluZXJfb2YoaXRlbSwgc3RydWN0IHhmc19ibWFwX2ZyZWVfaXRl bSwgeGJmaV9saXN0KTsKPiA+ID4gPiArCWttZW1fZnJlZShmcmVlKTsKPiA+ID4gPiArfQo+ID4g PiA+ICsKPiA+ID4gPiArY29uc3Qgc3RydWN0IHhmc19kZWZlcl9vcF90eXBlIHhmc19leHRlbnRf ZnJlZV9kZWZlcl90eXBlID0gewo+ID4gPiA+ICsJLnR5cGUJCT0gWEZTX0RFRkVSX09QU19UWVBF X0ZSRUUsCj4gPiA+ID4gKwkubWF4X2l0ZW1zCT0gWEZTX0VGSV9NQVhfRkFTVF9FWFRFTlRTLAo+ ID4gPiA+ICsJLmRpZmZfaXRlbXMJPSB4ZnNfYm1hcF9mcmVlX2RpZmZfaXRlbXMsCj4gPiA+ID4g KwkuY3JlYXRlX2ludGVudAk9IHhmc19ibWFwX2ZyZWVfY3JlYXRlX2ludGVudCwKPiA+ID4gPiAr CS5hYm9ydF9pbnRlbnQJPSB4ZnNfYm1hcF9mcmVlX2Fib3J0X2ludGVudCwKPiA+ID4gPiArCS5s b2dfaXRlbQk9IHhmc19ibWFwX2ZyZWVfbG9nX2l0ZW0sCj4gPiA+ID4gKwkuY3JlYXRlX2RvbmUJ PSB4ZnNfYm1hcF9mcmVlX2NyZWF0ZV9kb25lLAo+ID4gPiA+ICsJLmZpbmlzaF9pdGVtCT0geGZz X2JtYXBfZnJlZV9maW5pc2hfaXRlbSwKPiA+ID4gPiArCS5jYW5jZWxfaXRlbQk9IHhmc19ibWFw X2ZyZWVfY2FuY2VsX2l0ZW0sCj4gPiA+ID4gK307Cj4gPiA+ID4gKwo+ID4gPiA+ICsvKiBEZWZl cnJlZCBJdGVtIEluaXRpYWxpemF0aW9uICovCj4gPiA+ID4gIAo+ID4gPiA+ICAvKiBJbml0aWFs aXplIHRoZSBkZWZlcnJlZCBvcGVyYXRpb24gdHlwZXMuICovCj4gPiA+ID4gIHZvaWQKPiA+ID4g PiAgeGZzX2RlZmVyX2luaXRfdHlwZXModm9pZCkKPiA+ID4gPiAgewo+ID4gPiA+ICsJeGZzX2Rl ZmVyX2luaXRfb3BfdHlwZSgmeGZzX2V4dGVudF9mcmVlX2RlZmVyX3R5cGUpOwo+ID4gPiA+ICB9 Cj4gPiA+ID4gCj4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiA+ID4gPiB4ZnMgbWFpbGluZyBsaXN0Cj4gPiA+ID4geGZzQG9zcy5zZ2kuY29t Cj4gPiA+ID4gaHR0cDovL29zcy5zZ2kuY29tL21haWxtYW4vbGlzdGluZm8veGZzCj4gPiAKPiA+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiB4ZnMg bWFpbGluZyBsaXN0Cj4gPiB4ZnNAb3NzLnNnaS5jb20KPiA+IGh0dHA6Ly9vc3Muc2dpLmNvbS9t YWlsbWFuL2xpc3RpbmZvL3hmcwo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4geGZzIG1haWxpbmcgbGlzdAo+IHhmc0Bvc3Muc2dpLmNvbQo+IGh0 dHA6Ly9vc3Muc2dpLmNvbS9tYWlsbWFuL2xpc3RpbmZvL3hmcwoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KeGZzIG1haWxpbmcgbGlzdAp4ZnNAb3NzLnNn aS5jb20KaHR0cDovL29zcy5zZ2kuY29tL21haWxtYW4vbGlzdGluZm8veGZzCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com ([209.132.183.28]:43483 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932069AbcF1Mck (ORCPT ); Tue, 28 Jun 2016 08:32:40 -0400 Date: Tue, 28 Jun 2016 08:32:39 -0400 From: Brian Foster To: "Darrick J. Wong" Cc: linux-fsdevel@vger.kernel.org, vishal.l.verma@intel.com, xfs@oss.sgi.com Subject: Re: [PATCH 018/119] xfs: enable the xfs_defer mechanism to process extents to free Message-ID: <20160628123238.GE4212@bfoster.bfoster> References: <146612627129.12839.3827886950949809165.stgit@birch.djwong.org> <146612638717.12839.11007379793448761871.stgit@birch.djwong.org> <20160627131508.GC23076@bfoster.bfoster> <20160627214145.GC4921@birch.djwong.org> <20160627220003.GA4917@birch.djwong.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160627220003.GA4917@birch.djwong.org> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Mon, Jun 27, 2016 at 03:00:03PM -0700, Darrick J. Wong wrote: > On Mon, Jun 27, 2016 at 02:41:45PM -0700, Darrick J. Wong wrote: > > On Mon, Jun 27, 2016 at 09:15:08AM -0400, Brian Foster wrote: > > > On Thu, Jun 16, 2016 at 06:19:47PM -0700, Darrick J. Wong wrote: > > > > Connect the xfs_defer mechanism with the pieces that we'll need to > > > > handle deferred extent freeing. We'll wire up the existing code to > > > > our new deferred mechanism later. > > > > > > > > Signed-off-by: Darrick J. Wong > > > > --- > > > > > > Could we merge this with the xfs_trans_*efi/efd* bits? We'd need to > > > preserve some calls for recovery, but it looks like other parts are only > > > used by the deferred ops infrastructure at this point. > > > > Yes, we could replace xfs_bmap_free_create_{intent,done} with > > xfs_trans_get_ef[id] and lose the silly functions. I'll go take > > care of all of them. > > Hah, gcc complains about the mismatch in pointer types for the second > argument. > > fs/xfs/xfs_defer_item.c:504:17: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] > .create_done = xfs_trans_get_bud, > ^ > fs/xfs/xfs_defer_item.c:504:17: note: (near initialization for ‘xfs_bmap_update_defer_type.create_done’) > > I guess one could put in an ugly cast to coerce the types at a cost of > uglifying the code. Opinions? > Not sure what you mean here... I should be more clear. What I was thinking is to nuke xfs_defer_item.c, define the 'const struct xfs_defer_op_type xfs_extent_free_defer_type' right in xfs_trans_extfree.c (perhaps rename the file) and wire up the functions appropriately. Just change the function signatures if you need to. For something like xfs_trans_get_efd(), maybe refactor the guts into a static helper that both the defer callback and xfs_trans_get_efd() can use, since we need the latter for log recovery. Will something like that work? To put it simply, it looks like we have at least a few places where defer item has a callback that calls yet another interface, but is the only caller of the latter (e.g., xfs_bmap_free_create_intent()->xfs_trans_get_efi()). Brian > --D > > > > > --D > > > > > > > > Brian > > > > > > > fs/xfs/libxfs/xfs_defer.h | 1 > > > > fs/xfs/xfs_defer_item.c | 108 +++++++++++++++++++++++++++++++++++++++++++++ > > > > 2 files changed, 109 insertions(+) > > > > > > > > > > > > diff --git a/fs/xfs/libxfs/xfs_defer.h b/fs/xfs/libxfs/xfs_defer.h > > > > index 85c7a3a..743fc32 100644 > > > > --- a/fs/xfs/libxfs/xfs_defer.h > > > > +++ b/fs/xfs/libxfs/xfs_defer.h > > > > @@ -51,6 +51,7 @@ struct xfs_defer_pending { > > > > * find all the space it needs. > > > > */ > > > > enum xfs_defer_ops_type { > > > > + XFS_DEFER_OPS_TYPE_FREE, > > > > XFS_DEFER_OPS_TYPE_MAX, > > > > }; > > > > > > > > diff --git a/fs/xfs/xfs_defer_item.c b/fs/xfs/xfs_defer_item.c > > > > index 4c2ba28..127a54e 100644 > > > > --- a/fs/xfs/xfs_defer_item.c > > > > +++ b/fs/xfs/xfs_defer_item.c > > > > @@ -29,9 +29,117 @@ > > > > #include "xfs_defer.h" > > > > #include "xfs_trans.h" > > > > #include "xfs_trace.h" > > > > +#include "xfs_bmap.h" > > > > +#include "xfs_extfree_item.h" > > > > + > > > > +/* Extent Freeing */ > > > > + > > > > +/* Sort bmap items by AG. */ > > > > +static int > > > > +xfs_bmap_free_diff_items( > > > > + void *priv, > > > > + struct list_head *a, > > > > + struct list_head *b) > > > > +{ > > > > + struct xfs_mount *mp = priv; > > > > + struct xfs_bmap_free_item *ra; > > > > + struct xfs_bmap_free_item *rb; > > > > + > > > > + ra = container_of(a, struct xfs_bmap_free_item, xbfi_list); > > > > + rb = container_of(b, struct xfs_bmap_free_item, xbfi_list); > > > > + return XFS_FSB_TO_AGNO(mp, ra->xbfi_startblock) - > > > > + XFS_FSB_TO_AGNO(mp, rb->xbfi_startblock); > > > > +} > > > > + > > > > +/* Get an EFI. */ > > > > +STATIC void * > > > > +xfs_bmap_free_create_intent( > > > > + struct xfs_trans *tp, > > > > + unsigned int count) > > > > +{ > > > > + return xfs_trans_get_efi(tp, count); > > > > +} > > > > + > > > > +/* Log a free extent to the intent item. */ > > > > +STATIC void > > > > +xfs_bmap_free_log_item( > > > > + struct xfs_trans *tp, > > > > + void *intent, > > > > + struct list_head *item) > > > > +{ > > > > + struct xfs_bmap_free_item *free; > > > > + > > > > + free = container_of(item, struct xfs_bmap_free_item, xbfi_list); > > > > + xfs_trans_log_efi_extent(tp, intent, free->xbfi_startblock, > > > > + free->xbfi_blockcount); > > > > +} > > > > + > > > > +/* Get an EFD so we can process all the free extents. */ > > > > +STATIC void * > > > > +xfs_bmap_free_create_done( > > > > + struct xfs_trans *tp, > > > > + void *intent, > > > > + unsigned int count) > > > > +{ > > > > + return xfs_trans_get_efd(tp, intent, count); > > > > +} > > > > + > > > > +/* Process a free extent. */ > > > > +STATIC int > > > > +xfs_bmap_free_finish_item( > > > > + struct xfs_trans *tp, > > > > + struct xfs_defer_ops *dop, > > > > + struct list_head *item, > > > > + void *done_item, > > > > + void **state) > > > > +{ > > > > + struct xfs_bmap_free_item *free; > > > > + int error; > > > > + > > > > + free = container_of(item, struct xfs_bmap_free_item, xbfi_list); > > > > + error = xfs_trans_free_extent(tp, done_item, > > > > + free->xbfi_startblock, > > > > + free->xbfi_blockcount); > > > > + kmem_free(free); > > > > + return error; > > > > +} > > > > + > > > > +/* Abort all pending EFIs. */ > > > > +STATIC void > > > > +xfs_bmap_free_abort_intent( > > > > + void *intent) > > > > +{ > > > > + xfs_efi_release(intent); > > > > +} > > > > + > > > > +/* Cancel a free extent. */ > > > > +STATIC void > > > > +xfs_bmap_free_cancel_item( > > > > + struct list_head *item) > > > > +{ > > > > + struct xfs_bmap_free_item *free; > > > > + > > > > + free = container_of(item, struct xfs_bmap_free_item, xbfi_list); > > > > + kmem_free(free); > > > > +} > > > > + > > > > +const struct xfs_defer_op_type xfs_extent_free_defer_type = { > > > > + .type = XFS_DEFER_OPS_TYPE_FREE, > > > > + .max_items = XFS_EFI_MAX_FAST_EXTENTS, > > > > + .diff_items = xfs_bmap_free_diff_items, > > > > + .create_intent = xfs_bmap_free_create_intent, > > > > + .abort_intent = xfs_bmap_free_abort_intent, > > > > + .log_item = xfs_bmap_free_log_item, > > > > + .create_done = xfs_bmap_free_create_done, > > > > + .finish_item = xfs_bmap_free_finish_item, > > > > + .cancel_item = xfs_bmap_free_cancel_item, > > > > +}; > > > > + > > > > +/* Deferred Item Initialization */ > > > > > > > > /* Initialize the deferred operation types. */ > > > > void > > > > xfs_defer_init_types(void) > > > > { > > > > + xfs_defer_init_op_type(&xfs_extent_free_defer_type); > > > > } > > > > > > > > _______________________________________________ > > > > xfs mailing list > > > > xfs@oss.sgi.com > > > > http://oss.sgi.com/mailman/listinfo/xfs > > > > _______________________________________________ > > xfs mailing list > > xfs@oss.sgi.com > > http://oss.sgi.com/mailman/listinfo/xfs > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs