From: "Dziegielewski, Marcin" <marcin.dziegielewski@intel.com> To: Javier Gonzalez <javier@cnexlabs.com> Cc: Matias Bjorling <mb@lightnvm.io>, Jens Axboe <axboe@fb.com>, "linux-block@vger.kernel.org" <linux-block@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "Konopko, Igor J" <igor.j.konopko@intel.com> Subject: RE: [GIT PULL 18/20] lightnvm: pblk: handle case when mw_cunits equals to 0 Date: Mon, 4 Jun 2018 17:17:53 +0000 [thread overview] Message-ID: <9FC4315EA6BEAA449828D92CF173A10D3E38365C@IRSMSX109.ger.corp.intel.com> (raw) In-Reply-To: <3A87DF02-6471-4B92-9DDC-4E0FD98249A4@cnexlabs.com> PiBGcm9tOiBKYXZpZXIgR29uemFsZXogW21haWx0bzpqYXZpZXJAY25leGxhYnMuY29tXQ0KPiBT ZW50OiBNb25kYXksIEp1bmUgNCwgMjAxOCAxOjE2IFBNDQo+IFRvOiBEemllZ2llbGV3c2tpLCBN YXJjaW4gPG1hcmNpbi5kemllZ2llbGV3c2tpQGludGVsLmNvbT4NCj4gQ2M6IE1hdGlhcyBCasO4 cmxpbmcgPG1iQGxpZ2h0bnZtLmlvPjsgSmVucyBBeGJvZSA8YXhib2VAZmIuY29tPjsgbGludXgt DQo+IGJsb2NrQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsg S29ub3BrbywgSWdvciBKDQo+IDxpZ29yLmoua29ub3Brb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6 IFJlOiBbR0lUIFBVTEwgMTgvMjBdIGxpZ2h0bnZtOiBwYmxrOiBoYW5kbGUgY2FzZSB3aGVuIG13 X2N1bml0cw0KPiBlcXVhbHMgdG8gMA0KPiANCj4gDQo+ID4gT24gNCBKdW4gMjAxOCwgYXQgMTMu MTEsIER6aWVnaWVsZXdza2ksIE1hcmNpbg0KPiA8bWFyY2luLmR6aWVnaWVsZXdza2lAaW50ZWwu Y29tPiB3cm90ZToNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBG cm9tOiBKYXZpZXIgR29uemFsZXogW21haWx0bzpqYXZpZXJAY25leGxhYnMuY29tXQ0KPiA+PiBT ZW50OiBNb25kYXksIEp1bmUgNCwgMjAxOCAxMjoyMiBQTQ0KPiA+PiBUbzogRHppZWdpZWxld3Nr aSwgTWFyY2luIDxtYXJjaW4uZHppZWdpZWxld3NraUBpbnRlbC5jb20+DQo+ID4+IENjOiBNYXRp YXMgQmrDuHJsaW5nIDxtYkBsaWdodG52bS5pbz47IEplbnMgQXhib2UgPGF4Ym9lQGZiLmNvbT47 DQo+ID4+IGxpbnV4LSBibG9ja0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtl cm5lbC5vcmc7IEtvbm9wa28sDQo+ID4+IElnb3IgSiA8aWdvci5qLmtvbm9wa29AaW50ZWwuY29t Pg0KPiA+PiBTdWJqZWN0OiBSZTogW0dJVCBQVUxMIDE4LzIwXSBsaWdodG52bTogcGJsazogaGFu ZGxlIGNhc2Ugd2hlbg0KPiA+PiBtd19jdW5pdHMgZXF1YWxzIHRvIDANCj4gPj4NCj4gPj4+IE9u IDQgSnVuIDIwMTgsIGF0IDEyLjA5LCBEemllZ2llbGV3c2tpLCBNYXJjaW4NCj4gPj4gPG1hcmNp bi5kemllZ2llbGV3c2tpQGludGVsLmNvbT4gd3JvdGU6DQo+ID4+PiBGcmlzdCBvZiBhbGwgSSB3 YW50IHRvIHNheSBzb3JyeSBmb3IgbGF0ZSByZXNwb25zZSAtIEkgd2FzIG9uIGhvbGlkYXkuDQo+ ID4+Pg0KPiA+Pj4+IEZyb206IEphdmllciBHb256YWxleiBbbWFpbHRvOmphdmllckBjbmV4bGFi cy5jb21dDQo+ID4+Pj4gU2VudDogTW9uZGF5LCBNYXkgMjgsIDIwMTggMTowMyBQTQ0KPiA+Pj4+ IFRvOiBNYXRpYXMgQmrDuHJsaW5nIDxtYkBsaWdodG52bS5pbz4NCj4gPj4+PiBDYzogSmVucyBB eGJvZSA8YXhib2VAZmIuY29tPjsgbGludXgtYmxvY2tAdmdlci5rZXJuZWwub3JnOyBsaW51eC0N Cj4gPj4+PiBrZXJuZWxAdmdlci5rZXJuZWwub3JnOyBEemllZ2llbGV3c2tpLCBNYXJjaW4NCj4g Pj4+PiA8bWFyY2luLmR6aWVnaWVsZXdza2lAaW50ZWwuY29tPjsgS29ub3BrbywgSWdvciBKDQo+ ID4+Pj4gPGlnb3Iuai5rb25vcGtvQGludGVsLmNvbT4NCj4gPj4+PiBTdWJqZWN0OiBSZTogW0dJ VCBQVUxMIDE4LzIwXSBsaWdodG52bTogcGJsazogaGFuZGxlIGNhc2Ugd2hlbg0KPiA+Pj4+IG13 X2N1bml0cyBlcXVhbHMgdG8gMA0KPiA+Pj4+DQo+ID4+Pj4+IE9uIDI4IE1heSAyMDE4LCBhdCAx MC41OCwgTWF0aWFzIEJqw7hybGluZyA8bWJAbGlnaHRudm0uaW8+IHdyb3RlOg0KPiA+Pj4+Pg0K PiA+Pj4+PiBGcm9tOiBNYXJjaW4gRHppZWdpZWxld3NraSA8bWFyY2luLmR6aWVnaWVsZXdza2lA aW50ZWwuY29tPg0KPiA+Pj4+Pg0KPiA+Pj4+PiBTb21lIGRldmljZXMgY2FuIGV4cG9zZSBtd19j dW5pdHMgZXF1YWwgdG8gMCwgaXQgY2FuIGNhdXNlDQo+ID4+Pj4+IGNyZWF0aW9uIG9mIHRvbyBz bWFsbCB3cml0ZSBidWZmZXIgYW5kIGNhdXNlIHBlcmZvcm1hbmNlIHRvIGRyb3ANCj4gPj4+Pj4g b24gd3JpdGUgd29ya2xvYWRzLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUbyBoYW5kbGUgdGhhdCwgd2Ug dXNlIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBNTEMgYW5kIGJlYWNhdXNlIGl0DQo+ID4+Pj4+IGNv dmVycyBib3RoIDEuMiBhbmQgMi4wIE9DIHNwZWNpZmljYXRpb24sIHNldHRpbmcgdXAgbXdfY3Vu aXRzIGluDQo+ID4+Pj4+IG52bWVfbnZtX3NldHVwXzEyIGZ1bmN0aW9uIGlzbid0IGxvbmdlciBu ZWNlc3NhcnkuDQo+ID4+Pj4+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IE1hcmNpbiBEemllZ2ll bGV3c2tpDQo+ID4+Pj4+IDxtYXJjaW4uZHppZWdpZWxld3NraUBpbnRlbC5jb20+DQo+ID4+Pj4+ IFNpZ25lZC1vZmYtYnk6IElnb3IgS29ub3BrbyA8aWdvci5qLmtvbm9wa29AaW50ZWwuY29tPg0K PiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBNYXRpYXMgQmrDuHJsaW5nIDxtYkBsaWdodG52bS5pbz4N Cj4gPj4+Pj4gLS0tDQo+ID4+Pj4+IGRyaXZlcnMvbGlnaHRudm0vcGJsay1pbml0LmMgfCAxMCAr KysrKysrKystDQo+ID4+Pj4+IGRyaXZlcnMvbnZtZS9ob3N0L2xpZ2h0bnZtLmMgfCAgMSAtDQo+ ID4+Pj4+IDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0K PiA+Pj4+Pg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9saWdodG52bS9wYmxrLWluaXQu Yw0KPiA+Pj4+PiBiL2RyaXZlcnMvbGlnaHRudm0vcGJsay1pbml0LmMgaW5kZXggZDY1ZDJmOTcy Y2NmLi4wZjI3Nzc0NDI2NmINCj4gPj4+Pj4gMTAwNjQ0DQo+ID4+Pj4+IC0tLSBhL2RyaXZlcnMv bGlnaHRudm0vcGJsay1pbml0LmMNCj4gPj4+Pj4gKysrIGIvZHJpdmVycy9saWdodG52bS9wYmxr LWluaXQuYw0KPiA+Pj4+PiBAQCAtMzU2LDcgKzM1NiwxNSBAQCBzdGF0aWMgaW50IHBibGtfY29y ZV9pbml0KHN0cnVjdCBwYmxrICpwYmxrKQ0KPiA+Pj4+PiAJYXRvbWljNjRfc2V0KCZwYmxrLT5u cl9mbHVzaCwgMCk7DQo+ID4+Pj4+IAlwYmxrLT5ucl9mbHVzaF9yc3QgPSAwOw0KPiA+Pj4+Pg0K PiA+Pj4+PiAtCXBibGstPnBnc19pbl9idWZmZXIgPSBnZW8tPm13X2N1bml0cyAqIGdlby0+YWxs X2x1bnM7DQo+ID4+Pj4+ICsJaWYgKGdlby0+bXdfY3VuaXRzKSB7DQo+ID4+Pj4+ICsJCXBibGst PnBnc19pbl9idWZmZXIgPSBnZW8tPm13X2N1bml0cyAqIGdlby0NCj4gPmFsbF9sdW5zOw0KPiA+ Pj4+PiArCX0gZWxzZSB7DQo+ID4+Pj4+ICsJCXBibGstPnBnc19pbl9idWZmZXIgPSAoZ2VvLT53 c19vcHQgPDwgMykgKiBnZW8tDQo+ID5hbGxfbHVuczsNCj4gPj4+Pj4gKwkJLyoNCj4gPj4+Pj4g KwkJICogU29tZSBkZXZpY2VzIGNhbiBleHBvc2UgbXdfY3VuaXRzIGVxdWFsIHRvIDAsIHNvDQo+ IGxldCdzDQo+ID4+Pj4gdXNlDQo+ID4+Pj4+ICsJCSAqIGhlcmUgZGVmYXVsdCBzYWZlIHZhbHVl IGZvciBNTEMuDQo+ID4+Pj4+ICsJCSAqLw0KPiA+Pj4+PiArCX0NCj4gPj4+Pj4NCj4gPj4+Pj4g CXBibGstPm1pbl93cml0ZV9wZ3MgPSBnZW8tPndzX29wdCAqIChnZW8tPmNzZWNzIC8gUEFHRV9T SVpFKTsNCj4gPj4+Pj4gCW1heF93cml0ZV9wcGFzID0gcGJsay0+bWluX3dyaXRlX3BncyAqIGdl by0+YWxsX2x1bnM7IGRpZmYgLS1naXQNCj4gPj4+Pj4gYS9kcml2ZXJzL252bWUvaG9zdC9saWdo dG52bS5jIGIvZHJpdmVycy9udm1lL2hvc3QvbGlnaHRudm0uYw0KPiA+Pj4+PiBpbmRleA0KPiA+ Pj4+PiA0MTI3OWRhNzk5ZWQuLmM3NDc3OTJkYTkxNSAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvZHJp dmVycy9udm1lL2hvc3QvbGlnaHRudm0uYw0KPiA+Pj4+PiArKysgYi9kcml2ZXJzL252bWUvaG9z dC9saWdodG52bS5jDQo+ID4+Pj4+IEBAIC0zMzgsNyArMzM4LDYgQEAgc3RhdGljIGludCBudm1l X252bV9zZXR1cF8xMihzdHJ1Y3QNCj4gPj4+PiBudm1lX252bV9pZDEyDQo+ID4+Pj4+ICppZCwN Cj4gPj4+Pj4NCj4gPj4+Pj4gCWdlby0+d3NfbWluID0gc2VjX3Blcl9wZzsNCj4gPj4+Pj4gCWdl by0+d3Nfb3B0ID0gc2VjX3Blcl9wZzsNCj4gPj4+Pj4gLQlnZW8tPm13X2N1bml0cyA9IGdlby0+ d3Nfb3B0IDw8IDM7CS8qIGRlZmF1bHQgdG8gTUxDDQo+IHNhZmUgdmFsdWVzDQo+ID4+Pj4gKi8N Cj4gPj4+Pj4gLyogRG8gbm90IGltcG9zZSB2YWx1ZXMgZm9yIG1heGltdW0gbnVtYmVyIG9mIG9w ZW4gYmxvY2tzIGFzIGl0IGlzDQo+ID4+Pj4+IAkgKiB1bnNwZWNpZmllZCBpbiAxLjIuIFVzZXJz IG9mIDEuMiBtdXN0IGJlIGF3YXJlIG9mIHRoaXMgYW5kDQo+ID4+Pj4+IGV2ZW50dWFsbHkNCj4g Pj4+Pj4gLS0NCj4gPj4+Pj4gMi4xMS4wDQo+ID4+Pj4NCj4gPj4+PiBCeSBkb2luZyB0aGlzLCAx LjIgZnV0dXJlIHVzZXJzIChiZXlvbmQgcGJsayksIHdpbGwgZmFpbCB0byBoYXZlIGENCj4gPj4+ PiB2YWxpZCBtd19jdW5pdHMgdmFsdWUuIEl0J3Mgb2sgdG8gZGVhbCB3aXRoIHRoZSAwIGNhc2Ug aW4gcGJsaywgYnV0DQo+ID4+Pj4gSSBiZWxpZXZlIHRoYXQgd2Ugc2hvdWxkIGhhdmUgdGhlIGRl ZmF1bHQgdmFsdWUgZm9yIDEuMiBlaXRoZXIgd2F5Lg0KPiA+Pj4NCj4gPj4+IEknbSBub3Qgc3Vy ZS4gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCBzZXR0aW5nIG9mIGRlZmF1bHQgdmFsdWUgd2FzDQo+ ID4+PiB3b3JrYXJvdW5kIGZvciBwYmxrIGNhc2UsIGFtIEkgcmlnaHQgPy4NCj4gPj4NCj4gPj4g VGhlIGRlZmF1bHQgdmFsdWUgY292ZXJzIHRoZSBNTEMgY2FzZSBkaXJlY3RseSBhdCB0aGUgbGln aHRudm0gbGF5ZXIsDQo+ID4+IGFzIG9wcG9zZWQgdG8gZG9pbmcgaXQgZGlyZWN0bHkgaW4gcGJs ay4gU2luY2UgcGJsayBpcyB0aGUgb25seSB1c2VyDQo+ID4+IG5vdywgeW91IGNhbiBhcmd1ZSB0 aGF0IGFsbCBjaGFuZ2VzIGluIHRoZSBsaWdodG52bSBsYXllciBhcmUgdG8NCj4gPj4gc29sdmUg cGJsayBpc3N1ZXMsIGJ1dCB0aGUgaWRlYSBpcyB0aGF0IHRoZSBnZW9tZXRyeSBzaG91bGQgYmUg Z2VuZXJpYy4NCj4gPj4NCj4gPj4+IEluIG15IG9waW5pb24gYW55IHVzZXIgb2YgMS4yDQo+ID4+ PiBzcGVjIHNob3VsZCBiZSBhd2FyZSB0aGF0IHRoZXJlIGlzIG5vdCBtd19jdW5pdCB2YWx1ZS4g RnJvbSBteSBwb2ludA0KPiA+Pj4gb2YgdmlldywgbGVhdmluZyBoZXJlIDAgKGFuZCBkZWNpc2lv biB3aGF0IGRvIHdpdGggaXQgdG8gbGlnaHRudm0NCj4gPj4+IHVzZXIpIGlzIG1vcmUgc2FmZXIg d2F5LCBidXQgbWF5YmUgSSdtIHdyb25nLiBJIGJlbGlldmUgdGhhdCBpdCBpcw0KPiA+Pj4gdG9w aWMgdG8gd2lkZXIgZGlzY3Vzc2lvbiB3aXRoIG1haW50YWluZXJzLg0KPiA+Pg0KPiA+PiAxLjIg YW5kIDIuMCBoYXZlIGRpZmZlcmVudCBnZW9tZXRyaWVzLCBidXQgd2hlbiB3ZSBkZXNpZ25lZCB0 aGUNCj4gPj4gY29tbW9uIG52bV9nZW8gc3RydWN0dXJlLCB0aGUgaWRlYSB3YXMgdG8gYWJzdHJh Y3QgYm90aCBzcGVjcyBhbmQNCj4gPj4gYWxsb3cgdGhlIHVwcGVyIGxheWVycyB0byB1c2UgdGhl IGdlb21ldHJ5IHRyYW5zcGFyZW50bHkuDQo+ID4+DQo+ID4+IFNwZWNpZmljYWxseSBpbiBwYmxr LCBJIHdvdWxkIHByZWZlciB0byBrZWVwIGl0IGluIHN1Y2ggYSB3YXkgdGhhdCB3ZQ0KPiA+PiBk b24ndCBuZWVkIHRvIG1lZGlhIHNwZWNpZmljIHBvbGljaWVzIChlLmcuLCBzZXQgZGVmYXVsdCB2 YWx1ZXMgZm9yDQo+ID4+IE1MQyBtZW1vcmllcyksIGFzIGEgZ2VuZXJhbCBkZXNpZ24gcHJpbmNp cGxlLiBXZSBhbHJlYWR5IGRvIHNvbWUNCj4gPj4gZ2VvbWV0cnkgdmVyc2lvbiBjaGVja3MgdG8g YXZvaWQgZGVyZWZlcmVuY2luZyB1bm5lY2Vzc2FyeSBwb2ludGVycw0KPiA+PiBvbiB0aGUgZmFz dCBwYXRoLCB3aGljaCBJIHdvdWxkIGV2ZW50dWFsbHkgbGlrZSB0byByZW1vdmUuDQo+ID4NCj4g PiBPaywgbm93IEkgdW5kZXJzdGFuZCB5b3VyIHBvaW50IG9mIHZpZXcgYW5kIGFncmVlIHdpdGgg dGhhdCwgSSB3aWxsDQo+ID4gcHJlcGFyZSBzZWNvbmQgdmVyc2lvbiBvZiB0aGlzIHBhdGNoIHdp dGhvdXQgdGhpcyBjaGFuZ2UuDQo+IA0KPiBTb3VuZHMgZ29vZC4NCj4gDQo+ID4gVGhhbmtzIGZv cg0KPiA+IHRoZSBjbGFyaWZpY2F0aW9uLg0KPiA+DQo+IA0KPiBTdXJlIDopDQo+IA0KPiA+Pj4+ IEEgbW9yZSBnZW5lcmljIHdheSBvZiBkb2luZyB0aGlzIHdvdWxkIGJlIHRvIGhhdmUgYSBkZWZh dWx0IHZhbHVlDQo+ID4+Pj4gZm9yDQo+ID4+Pj4gMi4wIHRvbywgaW4gY2FzZSBtd19jdW5pdHMg aXMgcmVwb3J0ZWQgYXMgMC4NCj4gPj4+DQo+ID4+PiBTaW5jZSAwIGlzIGNvcnJlY3QgdmFsdWUg YW5kIHVzZXJzIGNhbiBtYWtlIGRpZmZlcmVudCBkZWNpc2lvbnMNCj4gPj4+IGJhc2VkIG9uIGl0 LCBJIHRoaW5rIHdlIHNob3VsZG4ndCBvdmVyd3JpdGUgaXQgYnkgZGVmYXVsdCB2YWx1ZS4gSXMN Cj4gPj4+IGl0IG1ha2Ugc2Vuc2U/DQo+ID4+DQo+ID4+IEhlcmUgSSBtZWFudCBhdCBhIHBibGsg bGV2ZWwgLSBJIHNob3VsZCBoYXZlIHNwZWNpZmllZCBpdC4gQXQgdGhlDQo+ID4+IGdlb21ldHJ5 IGxldmVsLCB3ZSBzaG91bGQgbm90IGNoYW5nZSBpdC4NCj4gPj4NCj4gPj4gVGhlIGNhc2UgSSBh bSB0aGlua2luZyBpcyBpZiBtd19jdWludHMgcmVwb2ludHMgMCwgYnV0IHdzX21pbiA+IDAuIElu DQo+ID4+IHRoaXMgY2FzZSwgd2Ugc3RpbGwgbmVlZCBhIGhvc3Qgc2lkZSBidWZmZXIgdG8gc2Vy dmUgPCB3c19taW4gSS9PcywNCj4gPj4gZXZlbiB0aG91Z2ggdGhlIGRldmljZSBkb2VzIG5vdCBy ZXF1aXJlIHRoZSBidWZmZXIgdG8gZ3VhcmFudGVlIHJlYWRzLg0KPiA+DQo+ID4gT2gsIG9rIG5v dyB3ZSBhcmUgb24gdGhlIHNhbWUgcGFnZS4gSW4gdGhpcyBwYXRjaCBJIHdhcyB0cnlpbmcgdG8N Cj4gPiBhZGRyZXNzIHN1Y2ggY2FzZS4gRG8geW91IGhhdmUgb3RoZXIgaWRlYSBob3cgdG8gZG8g aXQgb3IgaGVyZSBhcmUgeW91DQo+ID4gdGhpbmtpbmcgb25seSBvbiB2YWx1ZSBvZiBkZWZhdWx0 IHZhcmlhYmxlPw0KPiANCj4gSWYgZG9pbmcgdGhpcywgSSBndWVzcyB0aGF0IHNvbWV0aGluZyBp biB0aGUgbGluZSBvZiB3aGF0IHlvdSBkaWQgd2l0aA0KPiBpbmNyZWFzaW5nIHRoZSBzaXplIG9m IHRoZSB3cml0ZSBidWZmZXIgdmlhIGEgbW9kdWxlIHBhcmFtZXRlci4gRm9yIGV4YW1wbGUsDQo+ IGNoZWNraW5nIGlmIHRoZSBzaXplIG9mIHRoZSB3cml0ZSBidWZmZXIgYmFzZWQgb24gbXdfY3Vp bnRzIGlzIGVub3VnaCB0bw0KPiBjb3ZlciB3c19taW4sIHdoaWNoIG5vcm1hbGx5IHdvdWxkIG9u bHkgYmUgYW4gaXNzdWUgd2hlbiBtd19jdWludHMgPT0gMA0KPiBvciB3aGVuIHRoZSBudW1iZXIg b2YgUFVzIHVzZWQgZm9yIHRoZSBwYmxrIGluc3RhbmNlIGlzIHZlcnkgc21hbGwgYW5kDQo+IG13 X2N1aW50cyA8IG5yX2x1bnMgKiB3c19taW4uDQoNCg0KSSBzZWUgaGVyZSB0d28gY2FzZXM6DQot IHdoZW4gbXdfY3VuaXRzID4gMCAgYnVmZmVyIHNpemUgc2hvdWxkIGhhdmUgbnVtYmVyIG9mIGVu dHJpZXMgYXQgbGVhc3QgIG1heChtd19jdW5pdHMsIHdzX21pbikgKiBucl9sdW5zIGFuZCBoZXJl IHdlIGFyZSB0YWtpbmcgY2FyZSBvZiBib3RoIGNhc2VzIG13X2N1bml0cyA+IHdzX21pbiBhbmQg bXdfY3VuaXRzIDwgd3NfbWluLg0KLSB3aGVuIG13X2N1bml0ID09IDAgIGJ1ZmZlciBzaXplIHNo b3VsZCBoYXZlIG51bWJlciBvZiBlbnRyaWVzIGF0IGxlYXN0ICB3c19taW4gKiBuciBfbHVucyBh bmQgd2UgY2FuIHVzZSB0aGUgc2FtZSBwdXNldWRvY29kZSBhcyBhYm92ZS4NCg0KRG8geW91IHNl ZSBhbnkgb3RoZXIgY2FzZT8gQ291bGQgeW91IGNsYXJpZnkgc2Vjb25kIGNhc2UgbWVudGlvbmVk IGJ5IHlvdSBvciBtYXliZSBkaWQgeW91IG1lYW4gb3Bwb3NpdGUgY2FzZT8gSWYgeWVzLCBJIGJl bGlldmUgdGhhdCBhYm92ZSBwc2V1ZG8gY29kZSB3aWxsIGhhbmRsZSBzdWNoIGNhc2UgdG9vLg0K DQo+IA0KPiA+DQo+ID4+Pj4gSmF2aWVyDQo+ID4+Pg0KPiA+Pj4gVGhhbmtzLA0KPiA+Pj4gTWFy Y2luDQo+ID4+DQo+ID4+IEphdmllcg0KPiA+IFRoYW5rcywNCj4gPiBNYXJjaW4NClRoYW5rcyEs DQpNYXJjaW4NCg0KDQo=
WARNING: multiple messages have this Message-ID (diff)
From: "Dziegielewski, Marcin" <marcin.dziegielewski@intel.com> To: Javier Gonzalez <javier@cnexlabs.com> Cc: Matias Bjorling <mb@lightnvm.io>, Jens Axboe <axboe@fb.com>, "linux-block@vger.kernel.org" <linux-block@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "Konopko, Igor J" <igor.j.konopko@intel.com> Subject: RE: [GIT PULL 18/20] lightnvm: pblk: handle case when mw_cunits equals to 0 Date: Mon, 4 Jun 2018 17:17:53 +0000 [thread overview] Message-ID: <9FC4315EA6BEAA449828D92CF173A10D3E38365C@IRSMSX109.ger.corp.intel.com> (raw) In-Reply-To: <3A87DF02-6471-4B92-9DDC-4E0FD98249A4@cnexlabs.com> > From: Javier Gonzalez [mailto:javier@cnexlabs.com] > Sent: Monday, June 4, 2018 1:16 PM > To: Dziegielewski, Marcin <marcin.dziegielewski@intel.com> > Cc: Matias Bjørling <mb@lightnvm.io>; Jens Axboe <axboe@fb.com>; linux- > block@vger.kernel.org; linux-kernel@vger.kernel.org; Konopko, Igor J > <igor.j.konopko@intel.com> > Subject: Re: [GIT PULL 18/20] lightnvm: pblk: handle case when mw_cunits > equals to 0 > > > > On 4 Jun 2018, at 13.11, Dziegielewski, Marcin > <marcin.dziegielewski@intel.com> wrote: > > > >> -----Original Message----- > >> From: Javier Gonzalez [mailto:javier@cnexlabs.com] > >> Sent: Monday, June 4, 2018 12:22 PM > >> To: Dziegielewski, Marcin <marcin.dziegielewski@intel.com> > >> Cc: Matias Bjørling <mb@lightnvm.io>; Jens Axboe <axboe@fb.com>; > >> linux- block@vger.kernel.org; linux-kernel@vger.kernel.org; Konopko, > >> Igor J <igor.j.konopko@intel.com> > >> Subject: Re: [GIT PULL 18/20] lightnvm: pblk: handle case when > >> mw_cunits equals to 0 > >> > >>> On 4 Jun 2018, at 12.09, Dziegielewski, Marcin > >> <marcin.dziegielewski@intel.com> wrote: > >>> Frist of all I want to say sorry for late response - I was on holiday. > >>> > >>>> From: Javier Gonzalez [mailto:javier@cnexlabs.com] > >>>> Sent: Monday, May 28, 2018 1:03 PM > >>>> To: Matias Bjørling <mb@lightnvm.io> > >>>> Cc: Jens Axboe <axboe@fb.com>; linux-block@vger.kernel.org; linux- > >>>> kernel@vger.kernel.org; Dziegielewski, Marcin > >>>> <marcin.dziegielewski@intel.com>; Konopko, Igor J > >>>> <igor.j.konopko@intel.com> > >>>> Subject: Re: [GIT PULL 18/20] lightnvm: pblk: handle case when > >>>> mw_cunits equals to 0 > >>>> > >>>>> On 28 May 2018, at 10.58, Matias Bjørling <mb@lightnvm.io> wrote: > >>>>> > >>>>> From: Marcin Dziegielewski <marcin.dziegielewski@intel.com> > >>>>> > >>>>> Some devices can expose mw_cunits equal to 0, it can cause > >>>>> creation of too small write buffer and cause performance to drop > >>>>> on write workloads. > >>>>> > >>>>> To handle that, we use the default value for MLC and beacause it > >>>>> covers both 1.2 and 2.0 OC specification, setting up mw_cunits in > >>>>> nvme_nvm_setup_12 function isn't longer necessary. > >>>>> > >>>>> Signed-off-by: Marcin Dziegielewski > >>>>> <marcin.dziegielewski@intel.com> > >>>>> Signed-off-by: Igor Konopko <igor.j.konopko@intel.com> > >>>>> Signed-off-by: Matias Bjørling <mb@lightnvm.io> > >>>>> --- > >>>>> drivers/lightnvm/pblk-init.c | 10 +++++++++- > >>>>> drivers/nvme/host/lightnvm.c | 1 - > >>>>> 2 files changed, 9 insertions(+), 2 deletions(-) > >>>>> > >>>>> diff --git a/drivers/lightnvm/pblk-init.c > >>>>> b/drivers/lightnvm/pblk-init.c index d65d2f972ccf..0f277744266b > >>>>> 100644 > >>>>> --- a/drivers/lightnvm/pblk-init.c > >>>>> +++ b/drivers/lightnvm/pblk-init.c > >>>>> @@ -356,7 +356,15 @@ static int pblk_core_init(struct pblk *pblk) > >>>>> atomic64_set(&pblk->nr_flush, 0); > >>>>> pblk->nr_flush_rst = 0; > >>>>> > >>>>> - pblk->pgs_in_buffer = geo->mw_cunits * geo->all_luns; > >>>>> + if (geo->mw_cunits) { > >>>>> + pblk->pgs_in_buffer = geo->mw_cunits * geo- > >all_luns; > >>>>> + } else { > >>>>> + pblk->pgs_in_buffer = (geo->ws_opt << 3) * geo- > >all_luns; > >>>>> + /* > >>>>> + * Some devices can expose mw_cunits equal to 0, so > let's > >>>> use > >>>>> + * here default safe value for MLC. > >>>>> + */ > >>>>> + } > >>>>> > >>>>> pblk->min_write_pgs = geo->ws_opt * (geo->csecs / PAGE_SIZE); > >>>>> max_write_ppas = pblk->min_write_pgs * geo->all_luns; diff --git > >>>>> a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c > >>>>> index > >>>>> 41279da799ed..c747792da915 100644 > >>>>> --- a/drivers/nvme/host/lightnvm.c > >>>>> +++ b/drivers/nvme/host/lightnvm.c > >>>>> @@ -338,7 +338,6 @@ static int nvme_nvm_setup_12(struct > >>>> nvme_nvm_id12 > >>>>> *id, > >>>>> > >>>>> geo->ws_min = sec_per_pg; > >>>>> geo->ws_opt = sec_per_pg; > >>>>> - geo->mw_cunits = geo->ws_opt << 3; /* default to MLC > safe values > >>>> */ > >>>>> /* Do not impose values for maximum number of open blocks as it is > >>>>> * unspecified in 1.2. Users of 1.2 must be aware of this and > >>>>> eventually > >>>>> -- > >>>>> 2.11.0 > >>>> > >>>> By doing this, 1.2 future users (beyond pblk), will fail to have a > >>>> valid mw_cunits value. It's ok to deal with the 0 case in pblk, but > >>>> I believe that we should have the default value for 1.2 either way. > >>> > >>> I'm not sure. From my understanding, setting of default value was > >>> workaround for pblk case, am I right ?. > >> > >> The default value covers the MLC case directly at the lightnvm layer, > >> as opposed to doing it directly in pblk. Since pblk is the only user > >> now, you can argue that all changes in the lightnvm layer are to > >> solve pblk issues, but the idea is that the geometry should be generic. > >> > >>> In my opinion any user of 1.2 > >>> spec should be aware that there is not mw_cunit value. From my point > >>> of view, leaving here 0 (and decision what do with it to lightnvm > >>> user) is more safer way, but maybe I'm wrong. I believe that it is > >>> topic to wider discussion with maintainers. > >> > >> 1.2 and 2.0 have different geometries, but when we designed the > >> common nvm_geo structure, the idea was to abstract both specs and > >> allow the upper layers to use the geometry transparently. > >> > >> Specifically in pblk, I would prefer to keep it in such a way that we > >> don't need to media specific policies (e.g., set default values for > >> MLC memories), as a general design principle. We already do some > >> geometry version checks to avoid dereferencing unnecessary pointers > >> on the fast path, which I would eventually like to remove. > > > > Ok, now I understand your point of view and agree with that, I will > > prepare second version of this patch without this change. > > Sounds good. > > > Thanks for > > the clarification. > > > > Sure :) > > >>>> A more generic way of doing this would be to have a default value > >>>> for > >>>> 2.0 too, in case mw_cunits is reported as 0. > >>> > >>> Since 0 is correct value and users can make different decisions > >>> based on it, I think we shouldn't overwrite it by default value. Is > >>> it make sense? > >> > >> Here I meant at a pblk level - I should have specified it. At the > >> geometry level, we should not change it. > >> > >> The case I am thinking is if mw_cuints repoints 0, but ws_min > 0. In > >> this case, we still need a host side buffer to serve < ws_min I/Os, > >> even though the device does not require the buffer to guarantee reads. > > > > Oh, ok now we are on the same page. In this patch I was trying to > > address such case. Do you have other idea how to do it or here are you > > thinking only on value of default variable? > > If doing this, I guess that something in the line of what you did with > increasing the size of the write buffer via a module parameter. For example, > checking if the size of the write buffer based on mw_cuints is enough to > cover ws_min, which normally would only be an issue when mw_cuints == 0 > or when the number of PUs used for the pblk instance is very small and > mw_cuints < nr_luns * ws_min. I see here two cases: - when mw_cunits > 0 buffer size should have number of entries at least max(mw_cunits, ws_min) * nr_luns and here we are taking care of both cases mw_cunits > ws_min and mw_cunits < ws_min. - when mw_cunit == 0 buffer size should have number of entries at least ws_min * nr _luns and we can use the same puseudocode as above. Do you see any other case? Could you clarify second case mentioned by you or maybe did you mean opposite case? If yes, I believe that above pseudo code will handle such case too. > > > > >>>> Javier > >>> > >>> Thanks, > >>> Marcin > >> > >> Javier > > Thanks, > > Marcin Thanks!, Marcin
next prev parent reply other threads:[~2018-06-04 17:17 UTC|newest] Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-28 8:58 [GIT PULL 00/20] lightnvm updates for 4.18 Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 01/20] lightnvm: pblk: fail gracefully on line alloc. failure Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 02/20] lightnvm: pblk: recheck for bad lines at runtime Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 03/20] lightnvm: pblk: check read lba on gc path Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 04/20] lightnvm: pblk: improve error msg on corrupted LBAs Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 05/20] lightnvm: pblk: warn in case of corrupted write buffer Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 06/20] lightnvm: pblk: return NVM_ error on failed submission Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 07/20] lightnvm: pblk: remove unnecessary indirection Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 08/20] lightnvm: pblk: remove unnecessary argument Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 09/20] lightnvm: pblk: check for chunk size before allocating it Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 10/20] lightnvm: pass flag on graceful teardown to targets Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 11/20] lightnvm: pblk: remove dead function Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 12/20] lightnvm: pblk: rework write error recovery path Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 13/20] lightnvm: pblk: garbage collect lines with failed writes Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 14/20] lightnvm: pblk: fix smeta write error path Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 15/20] lightnvm: proper error handling for pblk_bio_add_pages Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 16/20] lightnvm: error handling when whole line is bad Matias Bjørling 2018-05-28 10:59 ` Javier Gonzalez 2018-05-29 13:15 ` Konopko, Igor J 2018-05-29 18:29 ` Javier Gonzalez 2018-05-28 8:58 ` [GIT PULL 17/20] lightnvm: fix partial read error path Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 18/20] lightnvm: pblk: handle case when mw_cunits equals to 0 Matias Bjørling 2018-05-28 11:02 ` Javier Gonzalez 2018-06-04 10:09 ` Dziegielewski, Marcin 2018-06-04 10:09 ` Dziegielewski, Marcin 2018-06-04 10:21 ` Javier Gonzalez 2018-06-04 10:21 ` Javier Gonzalez 2018-06-04 11:11 ` Dziegielewski, Marcin 2018-06-04 11:11 ` Dziegielewski, Marcin 2018-06-04 11:15 ` Javier Gonzalez 2018-06-04 11:15 ` Javier Gonzalez 2018-06-04 17:17 ` Dziegielewski, Marcin [this message] 2018-06-04 17:17 ` Dziegielewski, Marcin 2018-06-05 7:12 ` Javier Gonzalez 2018-06-05 9:18 ` Dziegielewski, Marcin 2018-05-28 8:58 ` [GIT PULL 19/20] lightnvm: pblk: add possibility to set write buffer size manually Matias Bjørling 2018-05-28 8:58 ` [GIT PULL 20/20] lightnvm: pblk: sync RB and RL states during GC Matias Bjørling 2018-05-28 10:51 ` Javier Gonzalez 2018-05-29 13:07 ` Konopko, Igor J 2018-05-29 17:58 ` Javier Gonzalez 2018-06-01 10:45 ` [GIT PULL 00/20] lightnvm updates for 4.18 Matias Bjørling 2018-06-01 12:36 ` Jens Axboe 2018-06-01 12:36 ` Jens Axboe
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=9FC4315EA6BEAA449828D92CF173A10D3E38365C@IRSMSX109.ger.corp.intel.com \ --to=marcin.dziegielewski@intel.com \ --cc=axboe@fb.com \ --cc=igor.j.konopko@intel.com \ --cc=javier@cnexlabs.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mb@lightnvm.io \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.