From mboxrd@z Thu Jan 1 00:00:00 1970 From: Toshi Kani Subject: Re: [PATCH v2 1/5] dax: add dax_get_unmapped_area for pmd mappings Date: Wed, 13 Apr 2016 08:55:03 -0600 Message-ID: <1460559303.24985.52.camel@hpe.com> References: <1460493555-31611-1-git-send-email-toshi.kani@hpe.com> <1460493555-31611-2-git-send-email-toshi.kani@hpe.com> <20160413031801.GO2781@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: jack@suse.cz, linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com, adilger.kernel@dilger.ca, kirill.shutemov@linux.intel.com, linux-fsdevel@vger.kernel.org, tytso@mit.edu, akpm@linux-foundation.org, linux-ext4@vger.kernel.org, ross.zwisler@linux.intel.com, dan.j.williams@intel.com, viro@zeniv.linux.org.uk To: Matthew Wilcox Return-path: In-Reply-To: <20160413031801.GO2781@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com List-Id: linux-ext4.vger.kernel.org T24gVHVlLCAyMDE2LTA0LTEyIGF0IDIzOjE4IC0wNDAwLCBNYXR0aGV3IFdpbGNveCB3cm90ZToK PiBPbiBUdWUsIEFwciAxMiwgMjAxNiBhdCAwMjozOToxNVBNIC0wNjAwLCBUb3NoaSBLYW5pIHdy b3RlOgo+ID4gCj4gPiArICogV2hlbiB0aGUgdGFyZ2V0IGZpbGUgaXMgbm90IGEgREFYIGZpbGUs IEBhZGRyIGlzIHNwZWNpZmllZCwgdGhlCj4gPiArICogcmVxdWVzdCBpcyBub3Qgc3VpdGFibGUg Zm9yIHBtZCBtYXBwaW5ncywgb3IgbW0tCj4gPiA+Z2V0X3VubWFwcGVkX2FyZWEoKQo+ID4gKyAq IGZhaWxlZCB3aXRoIGV4dGVuZGVkIEBsZW4sIGl0IHNpbXBseSBjYWxscyB0aGUgZGVmYXVsdCBo YW5kbGVyLAo+ID4gKyAqIG1tLT5nZXRfdW5tYXBwZWRfYXJlYSgpLCB3aXRoIHRoZSBvcmlnaW5h bCBhcmd1bWVudHMuCj4KPiBJIHRoaW5rIHlvdSBjYW4gbG9zZSB0aGlzIHBhcmFncmFwaC7CoMKg SXQgZGVzY3JpYmVzIHdoYXQgdGhlIGZ1bmN0aW9uCj4gZG9lcywgbm90IHdoeSBpdCBkb2VzIGl0 IC4uLiBhbmQgd2UgY2FuIHNlZSB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIGZyb20KPiByZWFkaW5n IHRoZSBjb2RlLgoKQWdyZWVkLiDCoEkgd2lsbCByZW1vdmUgdGhpcyBwYXJhZ3JhcGguCgo+IEkg dGhpbmsgdGhpcyBpcyBvbmUgb2YgdGhvc2UgZnVuY3Rpb25zIHdoaWNoIGlzIGFjdHVhbGx5IGlt cHJvdmVkIHdpdGgKPiBnb3RvcywgcHVyZWx5IHRvIHJlZHVjZSB0aGUgaW5kZW50YXRpb24gbGV2 ZWwuCj4gCj4gdW5zaWduZWQgbG9uZyBkYXhfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUg KmZpbHAsIHVuc2lnbmVkIGxvbmcKPiBhZGRyLAo+IAkJdW5zaWduZWQgbG9uZyBsZW4sIHVuc2ln bmVkIGxvbmcgcGdvZmYsIHVuc2lnbmVkIGxvbmcKPiBmbGFncykKPiB7Cj4gCXVuc2lnbmVkIGxv bmcgb2ZmLCBvZmZfZW5kLCBvZmZfcG1kLCBsZW5fcG1kLCBhZGRyX3BtZDsKPiAKPiAJaWYgKCFJ U19FTkFCTEVEKENPTkZJR19GU19EQVhfUE1EKSB8fAo+IAnCoMKgwqDCoCFmaWxwIHx8IGFkZHIg fHwgIUlTX0RBWChmaWxwLT5mX21hcHBpbmctPmhvc3QpKQo+IAkJZ290byBvdXQ7Cj4gCj4gCW9m ZiA9IHBnb2ZmIDw8IFBBR0VfU0hJRlQ7Cj4gCW9mZl9lbmQgPSBvZmYgKyBsZW47Cj4gCW9mZl9w bWQgPSByb3VuZF91cChvZmYsIFBNRF9TSVpFKTsKPiAJaWYgKChvZmZfZW5kIDw9IG9mZl9wbWQp IHx8ICgob2ZmX2VuZCAtIG9mZl9wbWQpIDwgUE1EX1NJWkUpKQo+IAkJZ290byBvdXQ7Cj4gCj4g CWxlbl9wbWQgPSBsZW4gKyBQTURfU0laRTsKPiAJYWRkcl9wbWQgPSBjdXJyZW50LT5tbS0+Z2V0 X3VubWFwcGVkX2FyZWEoZmlscCwgYWRkciwgbGVuX3BtZCwKPiAJCQkJCQkJcGdvZmYsIGZsYWdz KTsKPiAKPiAJaWYgKCFJU19FUlJfVkFMVUUoYWRkcl9wbWQpKSB7Cj4gCQlhZGRyX3BtZCArPSAo b2ZmIC0gYWRkcl9wbWQpICYgKFBNRF9TSVpFIC0gMSk7Cj4gCQlyZXR1cm4gYWRkcl9wbWQ7Cj4g CX0KPiAKPiDCoG91dDoKPiAJcmV0dXJuIGN1cnJlbnQtPm1tLT5nZXRfdW5tYXBwZWRfYXJlYShm aWxwLCBhZGRyLCBsZW4sIHBnb2ZmLAo+IGZsYWdzKTsKPiB9CgpTb3VuZHMgZ29vZC4KCj4gTm93 IC4uLiBiYWNrIHRvIHRoZSBvcmlnaW5hbCB2ZXJzaW9uLCBzb21lIHF1ZXN0aW9uczoKPiAKPiA+ IAo+ID4gK3Vuc2lnbmVkIGxvbmcgZGF4X2dldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICpm aWxwLCB1bnNpZ25lZCBsb25nCj4gPiBhZGRyLAo+ID4gKwkJdW5zaWduZWQgbG9uZyBsZW4sIHVu c2lnbmVkIGxvbmcgcGdvZmYsIHVuc2lnbmVkIGxvbmcKPiA+IGZsYWdzKQo+ID4gK3sKPiA+ICsJ dW5zaWduZWQgbG9uZyBvZmYsIG9mZl9lbmQsIG9mZl9wbWQsIGxlbl9wbWQsIGFkZHJfcG1kOwo+ ID4gKwo+ID4gKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfRlNfREFYX1BNRCkgJiYKPiA+ICsJwqDC oMKgwqBmaWxwICYmICFhZGRyICYmIElTX0RBWChmaWxwLT5mX21hcHBpbmctPmhvc3QpKSB7Cj4g PiArCQlvZmYgPSBwZ29mZiA8PCBQQUdFX1NISUZUOwo+ID4gKwkJb2ZmX2VuZCA9IG9mZiArIGxl bjsKPgo+IENhbiBvZmYgKyBsZW4gd3JhcCBoZXJlLCBvciBkaWQgdGhhdCBnZXQgY2hlY2tlZCBl YXJsaWVyPwoKWWVzLCBkb19tbWFwKCkgaGFzIGNoZWNrZWQgdGhpcyBjb25kaXRpb24gZWFybGll ci4gwqBCdXQsIEkgdGhpbmsgSSBuZWVkIHRvCmNoZWNrIGl0IGZvciAob2ZmICsgbGVuX3BtZCku Cgo+ID4gCj4gPiArCQlvZmZfcG1kID0gcm91bmRfdXAob2ZmLCBQTURfU0laRSk7Cj4gPiArCj4g PiArCQlpZiAoKG9mZl9lbmQgPiBvZmZfcG1kKSAmJiAoKG9mZl9lbmQgLSBvZmZfcG1kKSA+PQo+ ID4gUE1EX1NJWkUpKSB7Cj4KPiBXZSdyZSBvbmx5IGdvaW5nIHRvIGxvb2sgZm9yIGEgUE1ELWFs aWduZWQgbWFwcGluZyBpZiB0aGUgbWFwcGluZyBpcyBhdAo+IGxlYXN0IGRvdWJsZSBQTURfU0la RT/CoMKgSSBkb24ndCB1bmRlcnN0YW5kIHRoYXQgZGVjaXNpb24uwqDCoFNlZW1zIHRvIG1lCj4g dGhhdCBpZiBJIGFzayB0byBtYXAgb2Zmc2V0IDRNQiwgbGVuZ3RoIDJNQiwgSSBzaG91bGQgZ2V0 IGEgUE1ELWFsaWduZWQKPiBtYXBwaW5nLgoKSXQgY2hlY2tzIGlmIHRoaXMgcmVxdWVzdCBjYW4g YmUgY292ZXJlZCBieSBhIFBNRCBwYWdlLsKgwqAnb2ZmX3BtZCcgaXMgdGhlCmZpcnN0IFBNRC1h bGlnbmVkIG9mZnNldC7CoMKgVGhlcmUgbmVlZHMgdG8gYmUgYXQgbGVhc3QgMk1CIGZyb20gdGhp cyBvZmZzZXQKdG8gdGhlIGVuZCwgJ29mZl9lbmQnLCBpbiBvcmRlciB0byBjb3ZlciB3aXRoIGEg UE1EIHBhZ2UuCgpJbiB5b3VyIGV4YW1wbGUsICdvZmZfcG1kJyBpcyBzdGlsbCA0TUIsIHdoaWNo IGhhcyAyTUIgdG8gdGhlIGVuZC7CoMKgU28sIHNvCnRoaXMgcmVxdWVzdCBjYW4gYmUgY292ZXJl ZCBieSBhIFBNRCBwYWdlLgoKQW5vdGhlciBleGFtcGxlLCBzYXksIG9mZnNldCA0S0IgYW5kIGxl bmd0aCAyTUIuIMKgJ29mZl9wbWQnIGlzIDJNQiwgd2hpY2gKaGFzIG9ubHkgNEtCIHRvIHRoZSBl bmQuwqDCoFNvLCB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGNvdmVyZWQgYnkgYSBQTUQgcGFnZS4K Cj4gU3BlYWtpbmcgb2Ygb2Zmc2V0LCB3ZSBkb24ndCBoYXZlIGFueSBjaGVja3MgdGhhdCBvZmZz ZXQgaXMgYSBtdWx0aXBsZQo+IG9mIFBNRF9TSVpFLsKgwqBJIGtub3cgdGhhdCB0aGVvcmV0aWNh bGx5IHdlIGNvdWxkIG1hcCBvZmZzZXQgMS41TUIsIGxlbmd0aAo+IDNNQiBhbmQgc2VlIHRoZSBm aXJzdCAwLjVNQiBmaWxsZWQgd2l0aCBzbWFsbCBwYWdlcywgdGhlbiB0aGUgbmV4dCAyTUIKPiBm aWxsZWQgd2l0aCBvbmUgbGFyZ2UgcGFnZSwgYW5kIHRoZSB0YWlsIGZpbGxlZCB3aXRoIHNtYWxs IHBhZ2VzLCBidXQgSQo+IHRoaW5rIHdlJ3JlIGJldHRlciBvZmYgb25seSBsb29raW5nIGZvciBQ TUQtYWxpZ25tZW50IGlmIHRoZSB1c2VyIGFza2VkCj4gZm9yIGFuIGFsaWduZWQgb2Zmc2V0IGlu IHRoZSBmaWxlLgoKWWVzLCB0aGF0J3Mgd2hhdCBpdCBjaGVja3MuIMKgSW4gdGhpcyBjYXNlLCAn b2ZmX3BtZCcgaXMgc2V0IHRvIDJNQiwgd2hpY2gKaGFzIDIuNU1CIHRvIHRoZSBlbmQuIMKgU28s IGl0IGNhbiBiZSBjb3ZlcmVkIGJ5IGEgUE1EIHBhZ2UuIMKgVGhlIG9mZnNldAppdHNlbGYgZG9l cyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkIGJ5IDJNQi4KCgo+ID4gKwkJCWxlbl9wbWQgPSBsZW4g KyBQTURfU0laRTsKPiA+ICsKPiA+ICsJCQlhZGRyX3BtZCA9IGN1cnJlbnQtPm1tLT5nZXRfdW5t YXBwZWRfYXJlYSgKPiA+ICsJCQkJCWZpbHAsIGFkZHIsIGxlbl9wbWQsIHBnb2ZmLAo+ID4gZmxh Z3MpOwo+ID4gKwo+ID4gKwkJCWlmICghSVNfRVJSX1ZBTFVFKGFkZHJfcG1kKSkgewo+ID4gKwkJ CQlhZGRyX3BtZCArPSAob2ZmIC0gYWRkcl9wbWQpICYKPiA+IChQTURfU0laRSAtIDEpOwo+Cj4g Li4uIHRoZW4geW91IHdvdWxkbid0IG5lZWQgdGhpcyBjYWxjdWxhdGlvbiA7LSkKCkFwcGxpY2F0 aW9ucyBzaG91bGQgbm90IGJlIHJlcXVpcmVkIHRvIHByb3ZpZGUgYSAyTUItYWxpZ25lZCBvZmZz ZXQuCgpUaGFua3MsCi1Ub3NoaQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KeGZzIG1haWxpbmcgbGlzdAp4ZnNAb3NzLnNnaS5jb20KaHR0cDovL29zcy5z Z2kuY29tL21haWxtYW4vbGlzdGluZm8veGZzCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from g4t3428.houston.hp.com (g4t3428.houston.hp.com [15.201.208.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 334C21A2127 for ; Wed, 13 Apr 2016 08:03:36 -0700 (PDT) Message-ID: <1460559303.24985.52.camel@hpe.com> Subject: Re: [PATCH v2 1/5] dax: add dax_get_unmapped_area for pmd mappings From: Toshi Kani Date: Wed, 13 Apr 2016 08:55:03 -0600 In-Reply-To: <20160413031801.GO2781@linux.intel.com> References: <1460493555-31611-1-git-send-email-toshi.kani@hpe.com> <1460493555-31611-2-git-send-email-toshi.kani@hpe.com> <20160413031801.GO2781@linux.intel.com> Mime-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: Matthew Wilcox Cc: jack@suse.cz, linux-nvdimm@lists.01.org, david@fromorbit.com, linux-kernel@vger.kernel.org, xfs@oss.sgi.com, adilger.kernel@dilger.ca, kirill.shutemov@linux.intel.com, linux-fsdevel@vger.kernel.org, tytso@mit.edu, akpm@linux-foundation.org, linux-ext4@vger.kernel.org, viro@zeniv.linux.org.uk List-ID: T24gVHVlLCAyMDE2LTA0LTEyIGF0IDIzOjE4IC0wNDAwLCBNYXR0aGV3IFdpbGNveCB3cm90ZToK PiBPbiBUdWUsIEFwciAxMiwgMjAxNiBhdCAwMjozOToxNVBNIC0wNjAwLCBUb3NoaSBLYW5pIHdy b3RlOgo+ID4gCj4gPiArICogV2hlbiB0aGUgdGFyZ2V0IGZpbGUgaXMgbm90IGEgREFYIGZpbGUs IEBhZGRyIGlzIHNwZWNpZmllZCwgdGhlCj4gPiArICogcmVxdWVzdCBpcyBub3Qgc3VpdGFibGUg Zm9yIHBtZCBtYXBwaW5ncywgb3IgbW0tCj4gPiA+Z2V0X3VubWFwcGVkX2FyZWEoKQo+ID4gKyAq IGZhaWxlZCB3aXRoIGV4dGVuZGVkIEBsZW4sIGl0IHNpbXBseSBjYWxscyB0aGUgZGVmYXVsdCBo YW5kbGVyLAo+ID4gKyAqIG1tLT5nZXRfdW5tYXBwZWRfYXJlYSgpLCB3aXRoIHRoZSBvcmlnaW5h bCBhcmd1bWVudHMuCj4KPiBJIHRoaW5rIHlvdSBjYW4gbG9zZSB0aGlzIHBhcmFncmFwaC7CoMKg SXQgZGVzY3JpYmVzIHdoYXQgdGhlIGZ1bmN0aW9uCj4gZG9lcywgbm90IHdoeSBpdCBkb2VzIGl0 IC4uLiBhbmQgd2UgY2FuIHNlZSB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIGZyb20KPiByZWFkaW5n IHRoZSBjb2RlLgoKQWdyZWVkLiDCoEkgd2lsbCByZW1vdmUgdGhpcyBwYXJhZ3JhcGguCgo+IEkg dGhpbmsgdGhpcyBpcyBvbmUgb2YgdGhvc2UgZnVuY3Rpb25zIHdoaWNoIGlzIGFjdHVhbGx5IGlt cHJvdmVkIHdpdGgKPiBnb3RvcywgcHVyZWx5IHRvIHJlZHVjZSB0aGUgaW5kZW50YXRpb24gbGV2 ZWwuCj4gCj4gdW5zaWduZWQgbG9uZyBkYXhfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUg KmZpbHAsIHVuc2lnbmVkIGxvbmcKPiBhZGRyLAo+IAkJdW5zaWduZWQgbG9uZyBsZW4sIHVuc2ln bmVkIGxvbmcgcGdvZmYsIHVuc2lnbmVkIGxvbmcKPiBmbGFncykKPiB7Cj4gCXVuc2lnbmVkIGxv bmcgb2ZmLCBvZmZfZW5kLCBvZmZfcG1kLCBsZW5fcG1kLCBhZGRyX3BtZDsKPiAKPiAJaWYgKCFJ U19FTkFCTEVEKENPTkZJR19GU19EQVhfUE1EKSB8fAo+IAnCoMKgwqDCoCFmaWxwIHx8IGFkZHIg fHwgIUlTX0RBWChmaWxwLT5mX21hcHBpbmctPmhvc3QpKQo+IAkJZ290byBvdXQ7Cj4gCj4gCW9m ZiA9IHBnb2ZmIDw8IFBBR0VfU0hJRlQ7Cj4gCW9mZl9lbmQgPSBvZmYgKyBsZW47Cj4gCW9mZl9w bWQgPSByb3VuZF91cChvZmYsIFBNRF9TSVpFKTsKPiAJaWYgKChvZmZfZW5kIDw9IG9mZl9wbWQp IHx8ICgob2ZmX2VuZCAtIG9mZl9wbWQpIDwgUE1EX1NJWkUpKQo+IAkJZ290byBvdXQ7Cj4gCj4g CWxlbl9wbWQgPSBsZW4gKyBQTURfU0laRTsKPiAJYWRkcl9wbWQgPSBjdXJyZW50LT5tbS0+Z2V0 X3VubWFwcGVkX2FyZWEoZmlscCwgYWRkciwgbGVuX3BtZCwKPiAJCQkJCQkJcGdvZmYsIGZsYWdz KTsKPiAKPiAJaWYgKCFJU19FUlJfVkFMVUUoYWRkcl9wbWQpKSB7Cj4gCQlhZGRyX3BtZCArPSAo b2ZmIC0gYWRkcl9wbWQpICYgKFBNRF9TSVpFIC0gMSk7Cj4gCQlyZXR1cm4gYWRkcl9wbWQ7Cj4g CX0KPiAKPiDCoG91dDoKPiAJcmV0dXJuIGN1cnJlbnQtPm1tLT5nZXRfdW5tYXBwZWRfYXJlYShm aWxwLCBhZGRyLCBsZW4sIHBnb2ZmLAo+IGZsYWdzKTsKPiB9CgpTb3VuZHMgZ29vZC4KCj4gTm93 IC4uLiBiYWNrIHRvIHRoZSBvcmlnaW5hbCB2ZXJzaW9uLCBzb21lIHF1ZXN0aW9uczoKPiAKPiA+ IAo+ID4gK3Vuc2lnbmVkIGxvbmcgZGF4X2dldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICpm aWxwLCB1bnNpZ25lZCBsb25nCj4gPiBhZGRyLAo+ID4gKwkJdW5zaWduZWQgbG9uZyBsZW4sIHVu c2lnbmVkIGxvbmcgcGdvZmYsIHVuc2lnbmVkIGxvbmcKPiA+IGZsYWdzKQo+ID4gK3sKPiA+ICsJ dW5zaWduZWQgbG9uZyBvZmYsIG9mZl9lbmQsIG9mZl9wbWQsIGxlbl9wbWQsIGFkZHJfcG1kOwo+ ID4gKwo+ID4gKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfRlNfREFYX1BNRCkgJiYKPiA+ICsJwqDC oMKgwqBmaWxwICYmICFhZGRyICYmIElTX0RBWChmaWxwLT5mX21hcHBpbmctPmhvc3QpKSB7Cj4g PiArCQlvZmYgPSBwZ29mZiA8PCBQQUdFX1NISUZUOwo+ID4gKwkJb2ZmX2VuZCA9IG9mZiArIGxl bjsKPgo+IENhbiBvZmYgKyBsZW4gd3JhcCBoZXJlLCBvciBkaWQgdGhhdCBnZXQgY2hlY2tlZCBl YXJsaWVyPwoKWWVzLCBkb19tbWFwKCkgaGFzIGNoZWNrZWQgdGhpcyBjb25kaXRpb24gZWFybGll ci4gwqBCdXQsIEkgdGhpbmsgSSBuZWVkIHRvCmNoZWNrIGl0IGZvciAob2ZmICsgbGVuX3BtZCku Cgo+ID4gCj4gPiArCQlvZmZfcG1kID0gcm91bmRfdXAob2ZmLCBQTURfU0laRSk7Cj4gPiArCj4g PiArCQlpZiAoKG9mZl9lbmQgPiBvZmZfcG1kKSAmJiAoKG9mZl9lbmQgLSBvZmZfcG1kKSA+PQo+ ID4gUE1EX1NJWkUpKSB7Cj4KPiBXZSdyZSBvbmx5IGdvaW5nIHRvIGxvb2sgZm9yIGEgUE1ELWFs aWduZWQgbWFwcGluZyBpZiB0aGUgbWFwcGluZyBpcyBhdAo+IGxlYXN0IGRvdWJsZSBQTURfU0la RT/CoMKgSSBkb24ndCB1bmRlcnN0YW5kIHRoYXQgZGVjaXNpb24uwqDCoFNlZW1zIHRvIG1lCj4g dGhhdCBpZiBJIGFzayB0byBtYXAgb2Zmc2V0IDRNQiwgbGVuZ3RoIDJNQiwgSSBzaG91bGQgZ2V0 IGEgUE1ELWFsaWduZWQKPiBtYXBwaW5nLgoKSXQgY2hlY2tzIGlmIHRoaXMgcmVxdWVzdCBjYW4g YmUgY292ZXJlZCBieSBhIFBNRCBwYWdlLsKgwqAnb2ZmX3BtZCcgaXMgdGhlCmZpcnN0IFBNRC1h bGlnbmVkIG9mZnNldC7CoMKgVGhlcmUgbmVlZHMgdG8gYmUgYXQgbGVhc3QgMk1CIGZyb20gdGhp cyBvZmZzZXQKdG8gdGhlIGVuZCwgJ29mZl9lbmQnLCBpbiBvcmRlciB0byBjb3ZlciB3aXRoIGEg UE1EIHBhZ2UuCgpJbiB5b3VyIGV4YW1wbGUsICdvZmZfcG1kJyBpcyBzdGlsbCA0TUIsIHdoaWNo IGhhcyAyTUIgdG8gdGhlIGVuZC7CoMKgU28sIHNvCnRoaXMgcmVxdWVzdCBjYW4gYmUgY292ZXJl ZCBieSBhIFBNRCBwYWdlLgoKQW5vdGhlciBleGFtcGxlLCBzYXksIG9mZnNldCA0S0IgYW5kIGxl bmd0aCAyTUIuIMKgJ29mZl9wbWQnIGlzIDJNQiwgd2hpY2gKaGFzIG9ubHkgNEtCIHRvIHRoZSBl bmQuwqDCoFNvLCB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGNvdmVyZWQgYnkgYSBQTUQgcGFnZS4K Cj4gU3BlYWtpbmcgb2Ygb2Zmc2V0LCB3ZSBkb24ndCBoYXZlIGFueSBjaGVja3MgdGhhdCBvZmZz ZXQgaXMgYSBtdWx0aXBsZQo+IG9mIFBNRF9TSVpFLsKgwqBJIGtub3cgdGhhdCB0aGVvcmV0aWNh bGx5IHdlIGNvdWxkIG1hcCBvZmZzZXQgMS41TUIsIGxlbmd0aAo+IDNNQiBhbmQgc2VlIHRoZSBm aXJzdCAwLjVNQiBmaWxsZWQgd2l0aCBzbWFsbCBwYWdlcywgdGhlbiB0aGUgbmV4dCAyTUIKPiBm aWxsZWQgd2l0aCBvbmUgbGFyZ2UgcGFnZSwgYW5kIHRoZSB0YWlsIGZpbGxlZCB3aXRoIHNtYWxs IHBhZ2VzLCBidXQgSQo+IHRoaW5rIHdlJ3JlIGJldHRlciBvZmYgb25seSBsb29raW5nIGZvciBQ TUQtYWxpZ25tZW50IGlmIHRoZSB1c2VyIGFza2VkCj4gZm9yIGFuIGFsaWduZWQgb2Zmc2V0IGlu IHRoZSBmaWxlLgoKWWVzLCB0aGF0J3Mgd2hhdCBpdCBjaGVja3MuIMKgSW4gdGhpcyBjYXNlLCAn b2ZmX3BtZCcgaXMgc2V0IHRvIDJNQiwgd2hpY2gKaGFzIDIuNU1CIHRvIHRoZSBlbmQuIMKgU28s IGl0IGNhbiBiZSBjb3ZlcmVkIGJ5IGEgUE1EIHBhZ2UuIMKgVGhlIG9mZnNldAppdHNlbGYgZG9l cyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkIGJ5IDJNQi4KCgo+ID4gKwkJCWxlbl9wbWQgPSBsZW4g KyBQTURfU0laRTsKPiA+ICsKPiA+ICsJCQlhZGRyX3BtZCA9IGN1cnJlbnQtPm1tLT5nZXRfdW5t YXBwZWRfYXJlYSgKPiA+ICsJCQkJCWZpbHAsIGFkZHIsIGxlbl9wbWQsIHBnb2ZmLAo+ID4gZmxh Z3MpOwo+ID4gKwo+ID4gKwkJCWlmICghSVNfRVJSX1ZBTFVFKGFkZHJfcG1kKSkgewo+ID4gKwkJ CQlhZGRyX3BtZCArPSAob2ZmIC0gYWRkcl9wbWQpICYKPiA+IChQTURfU0laRSAtIDEpOwo+Cj4g Li4uIHRoZW4geW91IHdvdWxkbid0IG5lZWQgdGhpcyBjYWxjdWxhdGlvbiA7LSkKCkFwcGxpY2F0 aW9ucyBzaG91bGQgbm90IGJlIHJlcXVpcmVkIHRvIHByb3ZpZGUgYSAyTUItYWxpZ25lZCBvZmZz ZXQuCgpUaGFua3MsCi1Ub3NoaQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpMaW51eC1udmRpbW0gbWFpbGluZyBsaXN0CkxpbnV4LW52ZGltbUBsaXN0cy4w MS5vcmcKaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1udmRpbW0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from g4t3428.houston.hp.com ([15.201.208.56]:26708 "EHLO g4t3428.houston.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756942AbcDMPDg (ORCPT ); Wed, 13 Apr 2016 11:03:36 -0400 Message-ID: <1460559303.24985.52.camel@hpe.com> Subject: Re: [PATCH v2 1/5] dax: add dax_get_unmapped_area for pmd mappings From: Toshi Kani To: Matthew Wilcox Cc: akpm@linux-foundation.org, dan.j.williams@intel.com, viro@zeniv.linux.org.uk, ross.zwisler@linux.intel.com, kirill.shutemov@linux.intel.com, david@fromorbit.com, jack@suse.cz, tytso@mit.edu, adilger.kernel@dilger.ca, linux-nvdimm@lists.01.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-kernel@vger.kernel.org Date: Wed, 13 Apr 2016 08:55:03 -0600 In-Reply-To: <20160413031801.GO2781@linux.intel.com> References: <1460493555-31611-1-git-send-email-toshi.kani@hpe.com> <1460493555-31611-2-git-send-email-toshi.kani@hpe.com> <20160413031801.GO2781@linux.intel.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Tue, 2016-04-12 at 23:18 -0400, Matthew Wilcox wrote: > On Tue, Apr 12, 2016 at 02:39:15PM -0600, Toshi Kani wrote: > > > > + * When the target file is not a DAX file, @addr is specified, the > > + * request is not suitable for pmd mappings, or mm- > > >get_unmapped_area() > > + * failed with extended @len, it simply calls the default handler, > > + * mm->get_unmapped_area(), with the original arguments. > > I think you can lose this paragraph.  It describes what the function > does, not why it does it ... and we can see what the function does from > reading the code. Agreed.  I will remove this paragraph. > I think this is one of those functions which is actually improved with > gotos, purely to reduce the indentation level. > > unsigned long dax_get_unmapped_area(struct file *filp, unsigned long > addr, > unsigned long len, unsigned long pgoff, unsigned long > flags) > { > unsigned long off, off_end, off_pmd, len_pmd, addr_pmd; > > if (!IS_ENABLED(CONFIG_FS_DAX_PMD) || >     !filp || addr || !IS_DAX(filp->f_mapping->host)) > goto out; > > off = pgoff << PAGE_SHIFT; > off_end = off + len; > off_pmd = round_up(off, PMD_SIZE); > if ((off_end <= off_pmd) || ((off_end - off_pmd) < PMD_SIZE)) > goto out; > > len_pmd = len + PMD_SIZE; > addr_pmd = current->mm->get_unmapped_area(filp, addr, len_pmd, > pgoff, flags); > > if (!IS_ERR_VALUE(addr_pmd)) { > addr_pmd += (off - addr_pmd) & (PMD_SIZE - 1); > return addr_pmd; > } > >  out: > return current->mm->get_unmapped_area(filp, addr, len, pgoff, > flags); > } Sounds good. > Now ... back to the original version, some questions: > > > > > +unsigned long dax_get_unmapped_area(struct file *filp, unsigned long > > addr, > > + unsigned long len, unsigned long pgoff, unsigned long > > flags) > > +{ > > + unsigned long off, off_end, off_pmd, len_pmd, addr_pmd; > > + > > + if (IS_ENABLED(CONFIG_FS_DAX_PMD) && > > +     filp && !addr && IS_DAX(filp->f_mapping->host)) { > > + off = pgoff << PAGE_SHIFT; > > + off_end = off + len; > > Can off + len wrap here, or did that get checked earlier? Yes, do_mmap() has checked this condition earlier.  But, I think I need to check it for (off + len_pmd). > > > > + off_pmd = round_up(off, PMD_SIZE); > > + > > + if ((off_end > off_pmd) && ((off_end - off_pmd) >= > > PMD_SIZE)) { > > We're only going to look for a PMD-aligned mapping if the mapping is at > least double PMD_SIZE?  I don't understand that decision.  Seems to me > that if I ask to map offset 4MB, length 2MB, I should get a PMD-aligned > mapping. It checks if this request can be covered by a PMD page.  'off_pmd' is the first PMD-aligned offset.  There needs to be at least 2MB from this offset to the end, 'off_end', in order to cover with a PMD page. In your example, 'off_pmd' is still 4MB, which has 2MB to the end.  So, so this request can be covered by a PMD page. Another example, say, offset 4KB and length 2MB.  'off_pmd' is 2MB, which has only 4KB to the end.  So, this request cannot be covered by a PMD page. > Speaking of offset, we don't have any checks that offset is a multiple > of PMD_SIZE.  I know that theoretically we could map offset 1.5MB, length > 3MB and see the first 0.5MB filled with small pages, then the next 2MB > filled with one large page, and the tail filled with small pages, but I > think we're better off only looking for PMD-alignment if the user asked > for an aligned offset in the file. Yes, that's what it checks.  In this case, 'off_pmd' is set to 2MB, which has 2.5MB to the end.  So, it can be covered by a PMD page.  The offset itself does not have to be aligned by 2MB. > > + len_pmd = len + PMD_SIZE; > > + > > + addr_pmd = current->mm->get_unmapped_area( > > + filp, addr, len_pmd, pgoff, > > flags); > > + > > + if (!IS_ERR_VALUE(addr_pmd)) { > > + addr_pmd += (off - addr_pmd) & > > (PMD_SIZE - 1); > > ... then you wouldn't need this calculation ;-) Applications should not be required to provide a 2MB-aligned offset. Thanks, -Toshi From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760164AbcDMPDj (ORCPT ); Wed, 13 Apr 2016 11:03:39 -0400 Received: from g4t3428.houston.hp.com ([15.201.208.56]:26708 "EHLO g4t3428.houston.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756942AbcDMPDg (ORCPT ); Wed, 13 Apr 2016 11:03:36 -0400 Message-ID: <1460559303.24985.52.camel@hpe.com> Subject: Re: [PATCH v2 1/5] dax: add dax_get_unmapped_area for pmd mappings From: Toshi Kani To: Matthew Wilcox Cc: akpm@linux-foundation.org, dan.j.williams@intel.com, viro@zeniv.linux.org.uk, ross.zwisler@linux.intel.com, kirill.shutemov@linux.intel.com, david@fromorbit.com, jack@suse.cz, tytso@mit.edu, adilger.kernel@dilger.ca, linux-nvdimm@ml01.01.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-kernel@vger.kernel.org Date: Wed, 13 Apr 2016 08:55:03 -0600 In-Reply-To: <20160413031801.GO2781@linux.intel.com> References: <1460493555-31611-1-git-send-email-toshi.kani@hpe.com> <1460493555-31611-2-git-send-email-toshi.kani@hpe.com> <20160413031801.GO2781@linux.intel.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.18.5.2 (3.18.5.2-1.fc23) Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2016-04-12 at 23:18 -0400, Matthew Wilcox wrote: > On Tue, Apr 12, 2016 at 02:39:15PM -0600, Toshi Kani wrote: > > > > + * When the target file is not a DAX file, @addr is specified, the > > + * request is not suitable for pmd mappings, or mm- > > >get_unmapped_area() > > + * failed with extended @len, it simply calls the default handler, > > + * mm->get_unmapped_area(), with the original arguments. > > I think you can lose this paragraph.  It describes what the function > does, not why it does it ... and we can see what the function does from > reading the code. Agreed.  I will remove this paragraph. > I think this is one of those functions which is actually improved with > gotos, purely to reduce the indentation level. > > unsigned long dax_get_unmapped_area(struct file *filp, unsigned long > addr, > unsigned long len, unsigned long pgoff, unsigned long > flags) > { > unsigned long off, off_end, off_pmd, len_pmd, addr_pmd; > > if (!IS_ENABLED(CONFIG_FS_DAX_PMD) || >     !filp || addr || !IS_DAX(filp->f_mapping->host)) > goto out; > > off = pgoff << PAGE_SHIFT; > off_end = off + len; > off_pmd = round_up(off, PMD_SIZE); > if ((off_end <= off_pmd) || ((off_end - off_pmd) < PMD_SIZE)) > goto out; > > len_pmd = len + PMD_SIZE; > addr_pmd = current->mm->get_unmapped_area(filp, addr, len_pmd, > pgoff, flags); > > if (!IS_ERR_VALUE(addr_pmd)) { > addr_pmd += (off - addr_pmd) & (PMD_SIZE - 1); > return addr_pmd; > } > >  out: > return current->mm->get_unmapped_area(filp, addr, len, pgoff, > flags); > } Sounds good. > Now ... back to the original version, some questions: > > > > > +unsigned long dax_get_unmapped_area(struct file *filp, unsigned long > > addr, > > + unsigned long len, unsigned long pgoff, unsigned long > > flags) > > +{ > > + unsigned long off, off_end, off_pmd, len_pmd, addr_pmd; > > + > > + if (IS_ENABLED(CONFIG_FS_DAX_PMD) && > > +     filp && !addr && IS_DAX(filp->f_mapping->host)) { > > + off = pgoff << PAGE_SHIFT; > > + off_end = off + len; > > Can off + len wrap here, or did that get checked earlier? Yes, do_mmap() has checked this condition earlier.  But, I think I need to check it for (off + len_pmd). > > > > + off_pmd = round_up(off, PMD_SIZE); > > + > > + if ((off_end > off_pmd) && ((off_end - off_pmd) >= > > PMD_SIZE)) { > > We're only going to look for a PMD-aligned mapping if the mapping is at > least double PMD_SIZE?  I don't understand that decision.  Seems to me > that if I ask to map offset 4MB, length 2MB, I should get a PMD-aligned > mapping. It checks if this request can be covered by a PMD page.  'off_pmd' is the first PMD-aligned offset.  There needs to be at least 2MB from this offset to the end, 'off_end', in order to cover with a PMD page. In your example, 'off_pmd' is still 4MB, which has 2MB to the end.  So, so this request can be covered by a PMD page. Another example, say, offset 4KB and length 2MB.  'off_pmd' is 2MB, which has only 4KB to the end.  So, this request cannot be covered by a PMD page. > Speaking of offset, we don't have any checks that offset is a multiple > of PMD_SIZE.  I know that theoretically we could map offset 1.5MB, length > 3MB and see the first 0.5MB filled with small pages, then the next 2MB > filled with one large page, and the tail filled with small pages, but I > think we're better off only looking for PMD-alignment if the user asked > for an aligned offset in the file. Yes, that's what it checks.  In this case, 'off_pmd' is set to 2MB, which has 2.5MB to the end.  So, it can be covered by a PMD page.  The offset itself does not have to be aligned by 2MB. > > + len_pmd = len + PMD_SIZE; > > + > > + addr_pmd = current->mm->get_unmapped_area( > > + filp, addr, len_pmd, pgoff, > > flags); > > + > > + if (!IS_ERR_VALUE(addr_pmd)) { > > + addr_pmd += (off - addr_pmd) & > > (PMD_SIZE - 1); > > ... then you wouldn't need this calculation ;-) Applications should not be required to provide a 2MB-aligned offset. Thanks, -Toshi