All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1462732956.3006.4.camel@intel.com>

diff --git a/a/1.txt b/N1/1.txt
index 8e932c2..e572a39 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,24 +1,30 @@
-T24gU3VuLCAyMDE2LTA1LTA4IGF0IDAyOjAxIC0wNzAwLCBoY2hAaW5mcmFkZWFkLm9yZyB3cm90
-ZToNCj4gT24gVGh1LCBNYXkgMDUsIDIwMTYgYXQgMDk6NDU6MDdQTSArMDAwMCwgVmVybWEsIFZp
-c2hhbCBMIHdyb3RlOg0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSBJIGNvbXBsZXRlbHkgdW5kZXJz
-dGFuZCBob3cgdGhpcyB3aWxsIHdvcms/IENhbiB5b3UNCj4gPiBleHBsYWluDQo+ID4gYSBiaXQ/
-IFdvdWxkIHdlIGhhdmUgdG8gZXhwb3J0IHJ3X2J5dGVzIHVwIHRvIGxheWVycyBhYm92ZSB0aGUg
-cG1lbQ0KPiA+IGRyaXZlcj8gV2hlcmUgZG9lcyBnZXRfdXNlcl9wYWdlcyBjb21lIGluPw0KPiBB
-IERBWCBmaWxlc3lzdGVtIGNhbiBkaXJlY3RseSB1c2UgdGhlIG52ZGltbSBsYXllciB0aGUgc2Ft
-ZSB3YXkgYnR0DQo+IGRvZSxzIHdoYXQncyB0aGUgcHJvYmxlbT8NCg0KVGhlIEJUVCBkb2VzIHJ3
-X2J5dGVzIHRocm91Z2ggYW4gaW50ZXJuYWwtdG8tbGlibnZkaW1tIG1lY2hhbmlzbSwgYnV0DQpy
-d19ieXRlcyBpc24ndCBleHBvcnRlZCB0byB0aGUgZmlsZXN5c3RlbSwgY3VycmVudGx5Li4gVG8g
-ZG8gdGhpcyB3ZSdkDQpoYXZlIHRvIGVpdGhlciBhZGQgYW4gcndfYnl0ZXMgdG8gYmxvY2sgZGV2
-aWNlIG9wZXJhdGlvbnMuLi5vcg0Kc29tZXRoaW5nLg0KDQpBbm90aGVyIHRoaW5nIGlzIHJ3X2J5
-dGVzIGN1cnJlbnRseSBkb2Vzbid0IGRvIGVycm9yIGNsZWFyaW5nIGVpdGhlci4NCldlIHN0b3Jl
-IGJhZGJsb2NrcyBhdCBzZWN0b3IgZ3JhbnVsYXJpdHksIGFuZCBsaWtlIERhbiBzYWlkIGVhcmxp
-ZXIsDQp0aGF0IGhpZGVzIHRoZSBjbGVhcl9lcnJvciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFu
-ZCB1cHBlciBsYXllcnMNCmRvbid0IGhhdmUgdG8gYmUgYXdhcmUgb2YgaXQuIFRvIG1ha2Ugcndf
-Ynl0ZXMgY2xlYXIgc3ViLXNlY3RvciBlcnJvcnMsDQp3ZSdkIGhhdmUgdG8gY2hhbmdlIHRoZSBn
-cmFudWxhcml0eSBvZiBiYWQtYmxvY2tzLCBhbmQgbWFrZSB1cHBlcg0KbGF5ZXJzIGF3YXJlIG9m
-IHRoZSBjbGVhcmluZyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLg0KDQpVc2luZyBhIGJsb2NrLXdy
-aXRlIHNlbWFudGljIGZvciBjbGVhcmluZyBoaWRlcyBhbGwgdGhpcyBhd2F5Lg0KDQo+IA0KPiBS
-ZSBnZXRfdXNlcl9wYWdlcyBteSBpZGVhIHdhcyB0byBzaW1wbHkgdXNlIHRoYXQgdG8gbG9jayBk
-b3duIHRoZQ0KPiB1c2VyDQo+IHBhZ2VzIHNvIHRoYXQgd2UgY2FuIGNhbGwgcndfYnl0ZXMgb24g
-aXQuwqDCoEhvdyBlbHNlIHdvdWxkIHlvdSBkbw0KPiBpdD/CoMKgRG8NCj4gYSBrbWFsbG9jLCBj
-b3B5X2Zyb21fdXNlciBhbmQgdGhlbiBhbm90aGVyIG1lbWNweT8=
+On Sun, 2016-05-08 at 02:01 -0700, hch@infradead.org wrote:
+> On Thu, May 05, 2016 at 09:45:07PM +0000, Verma, Vishal L wrote:
+> > 
+> > I'm not sure I completely understand how this will work? Can you
+> > explain
+> > a bit? Would we have to export rw_bytes up to layers above the pmem
+> > driver? Where does get_user_pages come in?
+> A DAX filesystem can directly use the nvdimm layer the same way btt
+> doe,s what's the problem?
+
+The BTT does rw_bytes through an internal-to-libnvdimm mechanism, but
+rw_bytes isn't exported to the filesystem, currently.. To do this we'd
+have to either add an rw_bytes to block device operations...or
+something.
+
+Another thing is rw_bytes currently doesn't do error clearing either.
+We store badblocks at sector granularity, and like Dan said earlier,
+that hides the clear_error alignment requirements and upper layers
+don't have to be aware of it. To make rw_bytes clear sub-sector errors,
+we'd have to change the granularity of bad-blocks, and make upper
+layers aware of the clearing alignment requirements.
+
+Using a block-write semantic for clearing hides all this away.
+
+> 
+> Re get_user_pages my idea was to simply use that to lock down the
+> user
+> pages so that we can call rw_bytes on it.  How else would you do
+> it?  Do
+> a kmalloc, copy_from_user and then another memcpy?
diff --git a/a/content_digest b/N1/content_digest
index 39de575..95f44f7 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -27,29 +27,35 @@
  " matthew@wil.cx <matthew@wil.cx>\0"
  "\00:1\0"
  "b\0"
- "T24gU3VuLCAyMDE2LTA1LTA4IGF0IDAyOjAxIC0wNzAwLCBoY2hAaW5mcmFkZWFkLm9yZyB3cm90\n"
- "ZToNCj4gT24gVGh1LCBNYXkgMDUsIDIwMTYgYXQgMDk6NDU6MDdQTSArMDAwMCwgVmVybWEsIFZp\n"
- "c2hhbCBMIHdyb3RlOg0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSBJIGNvbXBsZXRlbHkgdW5kZXJz\n"
- "dGFuZCBob3cgdGhpcyB3aWxsIHdvcms/IENhbiB5b3UNCj4gPiBleHBsYWluDQo+ID4gYSBiaXQ/\n"
- "IFdvdWxkIHdlIGhhdmUgdG8gZXhwb3J0IHJ3X2J5dGVzIHVwIHRvIGxheWVycyBhYm92ZSB0aGUg\n"
- "cG1lbQ0KPiA+IGRyaXZlcj8gV2hlcmUgZG9lcyBnZXRfdXNlcl9wYWdlcyBjb21lIGluPw0KPiBB\n"
- "IERBWCBmaWxlc3lzdGVtIGNhbiBkaXJlY3RseSB1c2UgdGhlIG52ZGltbSBsYXllciB0aGUgc2Ft\n"
- "ZSB3YXkgYnR0DQo+IGRvZSxzIHdoYXQncyB0aGUgcHJvYmxlbT8NCg0KVGhlIEJUVCBkb2VzIHJ3\n"
- "X2J5dGVzIHRocm91Z2ggYW4gaW50ZXJuYWwtdG8tbGlibnZkaW1tIG1lY2hhbmlzbSwgYnV0DQpy\n"
- "d19ieXRlcyBpc24ndCBleHBvcnRlZCB0byB0aGUgZmlsZXN5c3RlbSwgY3VycmVudGx5Li4gVG8g\n"
- "ZG8gdGhpcyB3ZSdkDQpoYXZlIHRvIGVpdGhlciBhZGQgYW4gcndfYnl0ZXMgdG8gYmxvY2sgZGV2\n"
- "aWNlIG9wZXJhdGlvbnMuLi5vcg0Kc29tZXRoaW5nLg0KDQpBbm90aGVyIHRoaW5nIGlzIHJ3X2J5\n"
- "dGVzIGN1cnJlbnRseSBkb2Vzbid0IGRvIGVycm9yIGNsZWFyaW5nIGVpdGhlci4NCldlIHN0b3Jl\n"
- "IGJhZGJsb2NrcyBhdCBzZWN0b3IgZ3JhbnVsYXJpdHksIGFuZCBsaWtlIERhbiBzYWlkIGVhcmxp\n"
- "ZXIsDQp0aGF0IGhpZGVzIHRoZSBjbGVhcl9lcnJvciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFu\n"
- "ZCB1cHBlciBsYXllcnMNCmRvbid0IGhhdmUgdG8gYmUgYXdhcmUgb2YgaXQuIFRvIG1ha2Ugcndf\n"
- "Ynl0ZXMgY2xlYXIgc3ViLXNlY3RvciBlcnJvcnMsDQp3ZSdkIGhhdmUgdG8gY2hhbmdlIHRoZSBn\n"
- "cmFudWxhcml0eSBvZiBiYWQtYmxvY2tzLCBhbmQgbWFrZSB1cHBlcg0KbGF5ZXJzIGF3YXJlIG9m\n"
- "IHRoZSBjbGVhcmluZyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLg0KDQpVc2luZyBhIGJsb2NrLXdy\n"
- "aXRlIHNlbWFudGljIGZvciBjbGVhcmluZyBoaWRlcyBhbGwgdGhpcyBhd2F5Lg0KDQo+IA0KPiBS\n"
- "ZSBnZXRfdXNlcl9wYWdlcyBteSBpZGVhIHdhcyB0byBzaW1wbHkgdXNlIHRoYXQgdG8gbG9jayBk\n"
- "b3duIHRoZQ0KPiB1c2VyDQo+IHBhZ2VzIHNvIHRoYXQgd2UgY2FuIGNhbGwgcndfYnl0ZXMgb24g\n"
- "aXQuwqDCoEhvdyBlbHNlIHdvdWxkIHlvdSBkbw0KPiBpdD/CoMKgRG8NCj4gYSBrbWFsbG9jLCBj\n"
- b3B5X2Zyb21fdXNlciBhbmQgdGhlbiBhbm90aGVyIG1lbWNweT8=
+ "On Sun, 2016-05-08 at 02:01 -0700, hch@infradead.org wrote:\n"
+ "> On Thu, May 05, 2016 at 09:45:07PM +0000, Verma, Vishal L wrote:\n"
+ "> > \n"
+ "> > I'm not sure I completely understand how this will work? Can you\n"
+ "> > explain\n"
+ "> > a bit? Would we have to export rw_bytes up to layers above the pmem\n"
+ "> > driver? Where does get_user_pages come in?\n"
+ "> A DAX filesystem can directly use the nvdimm layer the same way btt\n"
+ "> doe,s what's the problem?\n"
+ "\n"
+ "The BTT does rw_bytes through an internal-to-libnvdimm mechanism, but\n"
+ "rw_bytes isn't exported to the filesystem, currently.. To do this we'd\n"
+ "have to either add an rw_bytes to block device operations...or\n"
+ "something.\n"
+ "\n"
+ "Another thing is rw_bytes currently doesn't do error clearing either.\n"
+ "We store badblocks at sector granularity, and like Dan said earlier,\n"
+ "that hides the clear_error alignment requirements and upper layers\n"
+ "don't have to be aware of it. To make rw_bytes clear sub-sector errors,\n"
+ "we'd have to change the granularity of bad-blocks, and make upper\n"
+ "layers aware of the clearing alignment requirements.\n"
+ "\n"
+ "Using a block-write semantic for clearing hides all this away.\n"
+ "\n"
+ "> \n"
+ "> Re get_user_pages my idea was to simply use that to lock down the\n"
+ "> user\n"
+ "> pages so that we can call rw_bytes on it.\302\240\302\240How else would you do\n"
+ "> it?\302\240\302\240Do\n"
+ > a kmalloc, copy_from_user and then another memcpy?
 
-8bbdbd487bd768ef34fa7c82f4b4982f23d8f76b215bb540554865b57d72bb37
+cb6658801814aa16b8a3efafc61fd23e5288642347e45ae441cffaf225d5513b

diff --git a/a/1.txt b/N2/1.txt
index 8e932c2..3c26035 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -1,24 +1,34 @@
-T24gU3VuLCAyMDE2LTA1LTA4IGF0IDAyOjAxIC0wNzAwLCBoY2hAaW5mcmFkZWFkLm9yZyB3cm90
-ZToNCj4gT24gVGh1LCBNYXkgMDUsIDIwMTYgYXQgMDk6NDU6MDdQTSArMDAwMCwgVmVybWEsIFZp
-c2hhbCBMIHdyb3RlOg0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSBJIGNvbXBsZXRlbHkgdW5kZXJz
-dGFuZCBob3cgdGhpcyB3aWxsIHdvcms/IENhbiB5b3UNCj4gPiBleHBsYWluDQo+ID4gYSBiaXQ/
-IFdvdWxkIHdlIGhhdmUgdG8gZXhwb3J0IHJ3X2J5dGVzIHVwIHRvIGxheWVycyBhYm92ZSB0aGUg
-cG1lbQ0KPiA+IGRyaXZlcj8gV2hlcmUgZG9lcyBnZXRfdXNlcl9wYWdlcyBjb21lIGluPw0KPiBB
-IERBWCBmaWxlc3lzdGVtIGNhbiBkaXJlY3RseSB1c2UgdGhlIG52ZGltbSBsYXllciB0aGUgc2Ft
-ZSB3YXkgYnR0DQo+IGRvZSxzIHdoYXQncyB0aGUgcHJvYmxlbT8NCg0KVGhlIEJUVCBkb2VzIHJ3
-X2J5dGVzIHRocm91Z2ggYW4gaW50ZXJuYWwtdG8tbGlibnZkaW1tIG1lY2hhbmlzbSwgYnV0DQpy
-d19ieXRlcyBpc24ndCBleHBvcnRlZCB0byB0aGUgZmlsZXN5c3RlbSwgY3VycmVudGx5Li4gVG8g
-ZG8gdGhpcyB3ZSdkDQpoYXZlIHRvIGVpdGhlciBhZGQgYW4gcndfYnl0ZXMgdG8gYmxvY2sgZGV2
-aWNlIG9wZXJhdGlvbnMuLi5vcg0Kc29tZXRoaW5nLg0KDQpBbm90aGVyIHRoaW5nIGlzIHJ3X2J5
-dGVzIGN1cnJlbnRseSBkb2Vzbid0IGRvIGVycm9yIGNsZWFyaW5nIGVpdGhlci4NCldlIHN0b3Jl
-IGJhZGJsb2NrcyBhdCBzZWN0b3IgZ3JhbnVsYXJpdHksIGFuZCBsaWtlIERhbiBzYWlkIGVhcmxp
-ZXIsDQp0aGF0IGhpZGVzIHRoZSBjbGVhcl9lcnJvciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFu
-ZCB1cHBlciBsYXllcnMNCmRvbid0IGhhdmUgdG8gYmUgYXdhcmUgb2YgaXQuIFRvIG1ha2Ugcndf
-Ynl0ZXMgY2xlYXIgc3ViLXNlY3RvciBlcnJvcnMsDQp3ZSdkIGhhdmUgdG8gY2hhbmdlIHRoZSBn
-cmFudWxhcml0eSBvZiBiYWQtYmxvY2tzLCBhbmQgbWFrZSB1cHBlcg0KbGF5ZXJzIGF3YXJlIG9m
-IHRoZSBjbGVhcmluZyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLg0KDQpVc2luZyBhIGJsb2NrLXdy
-aXRlIHNlbWFudGljIGZvciBjbGVhcmluZyBoaWRlcyBhbGwgdGhpcyBhd2F5Lg0KDQo+IA0KPiBS
-ZSBnZXRfdXNlcl9wYWdlcyBteSBpZGVhIHdhcyB0byBzaW1wbHkgdXNlIHRoYXQgdG8gbG9jayBk
-b3duIHRoZQ0KPiB1c2VyDQo+IHBhZ2VzIHNvIHRoYXQgd2UgY2FuIGNhbGwgcndfYnl0ZXMgb24g
-aXQuwqDCoEhvdyBlbHNlIHdvdWxkIHlvdSBkbw0KPiBpdD/CoMKgRG8NCj4gYSBrbWFsbG9jLCBj
-b3B5X2Zyb21fdXNlciBhbmQgdGhlbiBhbm90aGVyIG1lbWNweT8=
+On Sun, 2016-05-08 at 02:01 -0700, hch@infradead.org wrote:
+> On Thu, May 05, 2016 at 09:45:07PM +0000, Verma, Vishal L wrote:
+> > 
+> > I'm not sure I completely understand how this will work? Can you
+> > explain
+> > a bit? Would we have to export rw_bytes up to layers above the pmem
+> > driver? Where does get_user_pages come in?
+> A DAX filesystem can directly use the nvdimm layer the same way btt
+> doe,s what's the problem?
+
+The BTT does rw_bytes through an internal-to-libnvdimm mechanism, but
+rw_bytes isn't exported to the filesystem, currently.. To do this we'd
+have to either add an rw_bytes to block device operations...or
+something.
+
+Another thing is rw_bytes currently doesn't do error clearing either.
+We store badblocks at sector granularity, and like Dan said earlier,
+that hides the clear_error alignment requirements and upper layers
+don't have to be aware of it. To make rw_bytes clear sub-sector errors,
+we'd have to change the granularity of bad-blocks, and make upper
+layers aware of the clearing alignment requirements.
+
+Using a block-write semantic for clearing hides all this away.
+
+> 
+> Re get_user_pages my idea was to simply use that to lock down the
+> user
+> pages so that we can call rw_bytes on it.  How else would you do
+> it?  Do
+> a kmalloc, copy_from_user and then another memcpy?
+_______________________________________________
+xfs mailing list
+xfs@oss.sgi.com
+http://oss.sgi.com/mailman/listinfo/xfs
diff --git a/a/content_digest b/N2/content_digest
index 39de575..1077f5e 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -10,46 +10,55 @@
  "Subject\0Re: [PATCH v4 5/7] fs: prioritize and separate direct_io from dax_io\0"
  "Date\0Sun, 8 May 2016 18:42:37 +0000\0"
  "To\0hch@infradead.org <hch@infradead.org>\0"
- "Cc\0linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>"
-  linux-block@vger.kernel.org <linux-block@vger.kernel.org>
-  xfs@oss.sgi.com <xfs@oss.sgi.com>
+ "Cc\0axboe@fb.com <axboe@fb.com>"
+  jack@suse.cz <jack@suse.cz>
+  matthew@wil.cx <matthew@wil.cx>
   linux-nvdimm@ml01.01.org <linux-nvdimm@ml01.01.org>
+  linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
+  xfs@oss.sgi.com <xfs@oss.sgi.com>
+  linux-block@vger.kernel.org <linux-block@vger.kernel.org>
   linux-mm@kvack.org <linux-mm@kvack.org>
   viro@zeniv.linux.org.uk <viro@zeniv.linux.org.uk>
+  linux-fsdevel@vger.kernel.org <linux-fsdevel@vger.kernel.org>
   Williams
   Dan J <dan.j.williams@intel.com>
-  axboe@fb.com <axboe@fb.com>
-  akpm@linux-foundation.org <akpm@linux-foundation.org>
-  linux-fsdevel@vger.kernel.org <linux-fsdevel@vger.kernel.org>
   linux-ext4@vger.kernel.org <linux-ext4@vger.kernel.org>
-  david@fromorbit.com <david@fromorbit.com>
-  jack@suse.cz <jack@suse.cz>
- " matthew@wil.cx <matthew@wil.cx>\0"
+ " akpm@linux-foundation.org <akpm@linux-foundation.org>\0"
  "\00:1\0"
  "b\0"
- "T24gU3VuLCAyMDE2LTA1LTA4IGF0IDAyOjAxIC0wNzAwLCBoY2hAaW5mcmFkZWFkLm9yZyB3cm90\n"
- "ZToNCj4gT24gVGh1LCBNYXkgMDUsIDIwMTYgYXQgMDk6NDU6MDdQTSArMDAwMCwgVmVybWEsIFZp\n"
- "c2hhbCBMIHdyb3RlOg0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSBJIGNvbXBsZXRlbHkgdW5kZXJz\n"
- "dGFuZCBob3cgdGhpcyB3aWxsIHdvcms/IENhbiB5b3UNCj4gPiBleHBsYWluDQo+ID4gYSBiaXQ/\n"
- "IFdvdWxkIHdlIGhhdmUgdG8gZXhwb3J0IHJ3X2J5dGVzIHVwIHRvIGxheWVycyBhYm92ZSB0aGUg\n"
- "cG1lbQ0KPiA+IGRyaXZlcj8gV2hlcmUgZG9lcyBnZXRfdXNlcl9wYWdlcyBjb21lIGluPw0KPiBB\n"
- "IERBWCBmaWxlc3lzdGVtIGNhbiBkaXJlY3RseSB1c2UgdGhlIG52ZGltbSBsYXllciB0aGUgc2Ft\n"
- "ZSB3YXkgYnR0DQo+IGRvZSxzIHdoYXQncyB0aGUgcHJvYmxlbT8NCg0KVGhlIEJUVCBkb2VzIHJ3\n"
- "X2J5dGVzIHRocm91Z2ggYW4gaW50ZXJuYWwtdG8tbGlibnZkaW1tIG1lY2hhbmlzbSwgYnV0DQpy\n"
- "d19ieXRlcyBpc24ndCBleHBvcnRlZCB0byB0aGUgZmlsZXN5c3RlbSwgY3VycmVudGx5Li4gVG8g\n"
- "ZG8gdGhpcyB3ZSdkDQpoYXZlIHRvIGVpdGhlciBhZGQgYW4gcndfYnl0ZXMgdG8gYmxvY2sgZGV2\n"
- "aWNlIG9wZXJhdGlvbnMuLi5vcg0Kc29tZXRoaW5nLg0KDQpBbm90aGVyIHRoaW5nIGlzIHJ3X2J5\n"
- "dGVzIGN1cnJlbnRseSBkb2Vzbid0IGRvIGVycm9yIGNsZWFyaW5nIGVpdGhlci4NCldlIHN0b3Jl\n"
- "IGJhZGJsb2NrcyBhdCBzZWN0b3IgZ3JhbnVsYXJpdHksIGFuZCBsaWtlIERhbiBzYWlkIGVhcmxp\n"
- "ZXIsDQp0aGF0IGhpZGVzIHRoZSBjbGVhcl9lcnJvciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFu\n"
- "ZCB1cHBlciBsYXllcnMNCmRvbid0IGhhdmUgdG8gYmUgYXdhcmUgb2YgaXQuIFRvIG1ha2Ugcndf\n"
- "Ynl0ZXMgY2xlYXIgc3ViLXNlY3RvciBlcnJvcnMsDQp3ZSdkIGhhdmUgdG8gY2hhbmdlIHRoZSBn\n"
- "cmFudWxhcml0eSBvZiBiYWQtYmxvY2tzLCBhbmQgbWFrZSB1cHBlcg0KbGF5ZXJzIGF3YXJlIG9m\n"
- "IHRoZSBjbGVhcmluZyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLg0KDQpVc2luZyBhIGJsb2NrLXdy\n"
- "aXRlIHNlbWFudGljIGZvciBjbGVhcmluZyBoaWRlcyBhbGwgdGhpcyBhd2F5Lg0KDQo+IA0KPiBS\n"
- "ZSBnZXRfdXNlcl9wYWdlcyBteSBpZGVhIHdhcyB0byBzaW1wbHkgdXNlIHRoYXQgdG8gbG9jayBk\n"
- "b3duIHRoZQ0KPiB1c2VyDQo+IHBhZ2VzIHNvIHRoYXQgd2UgY2FuIGNhbGwgcndfYnl0ZXMgb24g\n"
- "aXQuwqDCoEhvdyBlbHNlIHdvdWxkIHlvdSBkbw0KPiBpdD/CoMKgRG8NCj4gYSBrbWFsbG9jLCBj\n"
- b3B5X2Zyb21fdXNlciBhbmQgdGhlbiBhbm90aGVyIG1lbWNweT8=
+ "On Sun, 2016-05-08 at 02:01 -0700, hch@infradead.org wrote:\n"
+ "> On Thu, May 05, 2016 at 09:45:07PM +0000, Verma, Vishal L wrote:\n"
+ "> > \n"
+ "> > I'm not sure I completely understand how this will work? Can you\n"
+ "> > explain\n"
+ "> > a bit? Would we have to export rw_bytes up to layers above the pmem\n"
+ "> > driver? Where does get_user_pages come in?\n"
+ "> A DAX filesystem can directly use the nvdimm layer the same way btt\n"
+ "> doe,s what's the problem?\n"
+ "\n"
+ "The BTT does rw_bytes through an internal-to-libnvdimm mechanism, but\n"
+ "rw_bytes isn't exported to the filesystem, currently.. To do this we'd\n"
+ "have to either add an rw_bytes to block device operations...or\n"
+ "something.\n"
+ "\n"
+ "Another thing is rw_bytes currently doesn't do error clearing either.\n"
+ "We store badblocks at sector granularity, and like Dan said earlier,\n"
+ "that hides the clear_error alignment requirements and upper layers\n"
+ "don't have to be aware of it. To make rw_bytes clear sub-sector errors,\n"
+ "we'd have to change the granularity of bad-blocks, and make upper\n"
+ "layers aware of the clearing alignment requirements.\n"
+ "\n"
+ "Using a block-write semantic for clearing hides all this away.\n"
+ "\n"
+ "> \n"
+ "> Re get_user_pages my idea was to simply use that to lock down the\n"
+ "> user\n"
+ "> pages so that we can call rw_bytes on it.\302\240\302\240How else would you do\n"
+ "> it?\302\240\302\240Do\n"
+ "> a kmalloc, copy_from_user and then another memcpy?\n"
+ "_______________________________________________\n"
+ "xfs mailing list\n"
+ "xfs@oss.sgi.com\n"
+ http://oss.sgi.com/mailman/listinfo/xfs
 
-8bbdbd487bd768ef34fa7c82f4b4982f23d8f76b215bb540554865b57d72bb37
+64af619002276241637190f964667b06a6fc03c4fa3f23e82f3eae6b44d2e56d

diff --git a/a/1.txt b/N3/1.txt
index 8e932c2..e572a39 100644
--- a/a/1.txt
+++ b/N3/1.txt
@@ -1,24 +1,30 @@
-T24gU3VuLCAyMDE2LTA1LTA4IGF0IDAyOjAxIC0wNzAwLCBoY2hAaW5mcmFkZWFkLm9yZyB3cm90
-ZToNCj4gT24gVGh1LCBNYXkgMDUsIDIwMTYgYXQgMDk6NDU6MDdQTSArMDAwMCwgVmVybWEsIFZp
-c2hhbCBMIHdyb3RlOg0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSBJIGNvbXBsZXRlbHkgdW5kZXJz
-dGFuZCBob3cgdGhpcyB3aWxsIHdvcms/IENhbiB5b3UNCj4gPiBleHBsYWluDQo+ID4gYSBiaXQ/
-IFdvdWxkIHdlIGhhdmUgdG8gZXhwb3J0IHJ3X2J5dGVzIHVwIHRvIGxheWVycyBhYm92ZSB0aGUg
-cG1lbQ0KPiA+IGRyaXZlcj8gV2hlcmUgZG9lcyBnZXRfdXNlcl9wYWdlcyBjb21lIGluPw0KPiBB
-IERBWCBmaWxlc3lzdGVtIGNhbiBkaXJlY3RseSB1c2UgdGhlIG52ZGltbSBsYXllciB0aGUgc2Ft
-ZSB3YXkgYnR0DQo+IGRvZSxzIHdoYXQncyB0aGUgcHJvYmxlbT8NCg0KVGhlIEJUVCBkb2VzIHJ3
-X2J5dGVzIHRocm91Z2ggYW4gaW50ZXJuYWwtdG8tbGlibnZkaW1tIG1lY2hhbmlzbSwgYnV0DQpy
-d19ieXRlcyBpc24ndCBleHBvcnRlZCB0byB0aGUgZmlsZXN5c3RlbSwgY3VycmVudGx5Li4gVG8g
-ZG8gdGhpcyB3ZSdkDQpoYXZlIHRvIGVpdGhlciBhZGQgYW4gcndfYnl0ZXMgdG8gYmxvY2sgZGV2
-aWNlIG9wZXJhdGlvbnMuLi5vcg0Kc29tZXRoaW5nLg0KDQpBbm90aGVyIHRoaW5nIGlzIHJ3X2J5
-dGVzIGN1cnJlbnRseSBkb2Vzbid0IGRvIGVycm9yIGNsZWFyaW5nIGVpdGhlci4NCldlIHN0b3Jl
-IGJhZGJsb2NrcyBhdCBzZWN0b3IgZ3JhbnVsYXJpdHksIGFuZCBsaWtlIERhbiBzYWlkIGVhcmxp
-ZXIsDQp0aGF0IGhpZGVzIHRoZSBjbGVhcl9lcnJvciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFu
-ZCB1cHBlciBsYXllcnMNCmRvbid0IGhhdmUgdG8gYmUgYXdhcmUgb2YgaXQuIFRvIG1ha2Ugcndf
-Ynl0ZXMgY2xlYXIgc3ViLXNlY3RvciBlcnJvcnMsDQp3ZSdkIGhhdmUgdG8gY2hhbmdlIHRoZSBn
-cmFudWxhcml0eSBvZiBiYWQtYmxvY2tzLCBhbmQgbWFrZSB1cHBlcg0KbGF5ZXJzIGF3YXJlIG9m
-IHRoZSBjbGVhcmluZyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLg0KDQpVc2luZyBhIGJsb2NrLXdy
-aXRlIHNlbWFudGljIGZvciBjbGVhcmluZyBoaWRlcyBhbGwgdGhpcyBhd2F5Lg0KDQo+IA0KPiBS
-ZSBnZXRfdXNlcl9wYWdlcyBteSBpZGVhIHdhcyB0byBzaW1wbHkgdXNlIHRoYXQgdG8gbG9jayBk
-b3duIHRoZQ0KPiB1c2VyDQo+IHBhZ2VzIHNvIHRoYXQgd2UgY2FuIGNhbGwgcndfYnl0ZXMgb24g
-aXQuwqDCoEhvdyBlbHNlIHdvdWxkIHlvdSBkbw0KPiBpdD/CoMKgRG8NCj4gYSBrbWFsbG9jLCBj
-b3B5X2Zyb21fdXNlciBhbmQgdGhlbiBhbm90aGVyIG1lbWNweT8=
+On Sun, 2016-05-08 at 02:01 -0700, hch@infradead.org wrote:
+> On Thu, May 05, 2016 at 09:45:07PM +0000, Verma, Vishal L wrote:
+> > 
+> > I'm not sure I completely understand how this will work? Can you
+> > explain
+> > a bit? Would we have to export rw_bytes up to layers above the pmem
+> > driver? Where does get_user_pages come in?
+> A DAX filesystem can directly use the nvdimm layer the same way btt
+> doe,s what's the problem?
+
+The BTT does rw_bytes through an internal-to-libnvdimm mechanism, but
+rw_bytes isn't exported to the filesystem, currently.. To do this we'd
+have to either add an rw_bytes to block device operations...or
+something.
+
+Another thing is rw_bytes currently doesn't do error clearing either.
+We store badblocks at sector granularity, and like Dan said earlier,
+that hides the clear_error alignment requirements and upper layers
+don't have to be aware of it. To make rw_bytes clear sub-sector errors,
+we'd have to change the granularity of bad-blocks, and make upper
+layers aware of the clearing alignment requirements.
+
+Using a block-write semantic for clearing hides all this away.
+
+> 
+> Re get_user_pages my idea was to simply use that to lock down the
+> user
+> pages so that we can call rw_bytes on it.  How else would you do
+> it?  Do
+> a kmalloc, copy_from_user and then another memcpy?
diff --git a/a/content_digest b/N3/content_digest
index 39de575..b01ba2d 100644
--- a/a/content_digest
+++ b/N3/content_digest
@@ -24,32 +24,38 @@
   linux-ext4@vger.kernel.org <linux-ext4@vger.kernel.org>
   david@fromorbit.com <david@fromorbit.com>
   jack@suse.cz <jack@suse.cz>
- " matthew@wil.cx <matthew@wil.cx>\0"
+ " matthew@wil.cx <matthew@freeurl.abc188.com>\0"
  "\00:1\0"
  "b\0"
- "T24gU3VuLCAyMDE2LTA1LTA4IGF0IDAyOjAxIC0wNzAwLCBoY2hAaW5mcmFkZWFkLm9yZyB3cm90\n"
- "ZToNCj4gT24gVGh1LCBNYXkgMDUsIDIwMTYgYXQgMDk6NDU6MDdQTSArMDAwMCwgVmVybWEsIFZp\n"
- "c2hhbCBMIHdyb3RlOg0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSBJIGNvbXBsZXRlbHkgdW5kZXJz\n"
- "dGFuZCBob3cgdGhpcyB3aWxsIHdvcms/IENhbiB5b3UNCj4gPiBleHBsYWluDQo+ID4gYSBiaXQ/\n"
- "IFdvdWxkIHdlIGhhdmUgdG8gZXhwb3J0IHJ3X2J5dGVzIHVwIHRvIGxheWVycyBhYm92ZSB0aGUg\n"
- "cG1lbQ0KPiA+IGRyaXZlcj8gV2hlcmUgZG9lcyBnZXRfdXNlcl9wYWdlcyBjb21lIGluPw0KPiBB\n"
- "IERBWCBmaWxlc3lzdGVtIGNhbiBkaXJlY3RseSB1c2UgdGhlIG52ZGltbSBsYXllciB0aGUgc2Ft\n"
- "ZSB3YXkgYnR0DQo+IGRvZSxzIHdoYXQncyB0aGUgcHJvYmxlbT8NCg0KVGhlIEJUVCBkb2VzIHJ3\n"
- "X2J5dGVzIHRocm91Z2ggYW4gaW50ZXJuYWwtdG8tbGlibnZkaW1tIG1lY2hhbmlzbSwgYnV0DQpy\n"
- "d19ieXRlcyBpc24ndCBleHBvcnRlZCB0byB0aGUgZmlsZXN5c3RlbSwgY3VycmVudGx5Li4gVG8g\n"
- "ZG8gdGhpcyB3ZSdkDQpoYXZlIHRvIGVpdGhlciBhZGQgYW4gcndfYnl0ZXMgdG8gYmxvY2sgZGV2\n"
- "aWNlIG9wZXJhdGlvbnMuLi5vcg0Kc29tZXRoaW5nLg0KDQpBbm90aGVyIHRoaW5nIGlzIHJ3X2J5\n"
- "dGVzIGN1cnJlbnRseSBkb2Vzbid0IGRvIGVycm9yIGNsZWFyaW5nIGVpdGhlci4NCldlIHN0b3Jl\n"
- "IGJhZGJsb2NrcyBhdCBzZWN0b3IgZ3JhbnVsYXJpdHksIGFuZCBsaWtlIERhbiBzYWlkIGVhcmxp\n"
- "ZXIsDQp0aGF0IGhpZGVzIHRoZSBjbGVhcl9lcnJvciBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIGFu\n"
- "ZCB1cHBlciBsYXllcnMNCmRvbid0IGhhdmUgdG8gYmUgYXdhcmUgb2YgaXQuIFRvIG1ha2Ugcndf\n"
- "Ynl0ZXMgY2xlYXIgc3ViLXNlY3RvciBlcnJvcnMsDQp3ZSdkIGhhdmUgdG8gY2hhbmdlIHRoZSBn\n"
- "cmFudWxhcml0eSBvZiBiYWQtYmxvY2tzLCBhbmQgbWFrZSB1cHBlcg0KbGF5ZXJzIGF3YXJlIG9m\n"
- "IHRoZSBjbGVhcmluZyBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzLg0KDQpVc2luZyBhIGJsb2NrLXdy\n"
- "aXRlIHNlbWFudGljIGZvciBjbGVhcmluZyBoaWRlcyBhbGwgdGhpcyBhd2F5Lg0KDQo+IA0KPiBS\n"
- "ZSBnZXRfdXNlcl9wYWdlcyBteSBpZGVhIHdhcyB0byBzaW1wbHkgdXNlIHRoYXQgdG8gbG9jayBk\n"
- "b3duIHRoZQ0KPiB1c2VyDQo+IHBhZ2VzIHNvIHRoYXQgd2UgY2FuIGNhbGwgcndfYnl0ZXMgb24g\n"
- "aXQuwqDCoEhvdyBlbHNlIHdvdWxkIHlvdSBkbw0KPiBpdD/CoMKgRG8NCj4gYSBrbWFsbG9jLCBj\n"
- b3B5X2Zyb21fdXNlciBhbmQgdGhlbiBhbm90aGVyIG1lbWNweT8=
+ "On Sun, 2016-05-08 at 02:01 -0700, hch@infradead.org wrote:\n"
+ "> On Thu, May 05, 2016 at 09:45:07PM +0000, Verma, Vishal L wrote:\n"
+ "> > \n"
+ "> > I'm not sure I completely understand how this will work? Can you\n"
+ "> > explain\n"
+ "> > a bit? Would we have to export rw_bytes up to layers above the pmem\n"
+ "> > driver? Where does get_user_pages come in?\n"
+ "> A DAX filesystem can directly use the nvdimm layer the same way btt\n"
+ "> doe,s what's the problem?\n"
+ "\n"
+ "The BTT does rw_bytes through an internal-to-libnvdimm mechanism, but\n"
+ "rw_bytes isn't exported to the filesystem, currently.. To do this we'd\n"
+ "have to either add an rw_bytes to block device operations...or\n"
+ "something.\n"
+ "\n"
+ "Another thing is rw_bytes currently doesn't do error clearing either.\n"
+ "We store badblocks at sector granularity, and like Dan said earlier,\n"
+ "that hides the clear_error alignment requirements and upper layers\n"
+ "don't have to be aware of it. To make rw_bytes clear sub-sector errors,\n"
+ "we'd have to change the granularity of bad-blocks, and make upper\n"
+ "layers aware of the clearing alignment requirements.\n"
+ "\n"
+ "Using a block-write semantic for clearing hides all this away.\n"
+ "\n"
+ "> \n"
+ "> Re get_user_pages my idea was to simply use that to lock down the\n"
+ "> user\n"
+ "> pages so that we can call rw_bytes on it.\302\240\302\240How else would you do\n"
+ "> it?\302\240\302\240Do\n"
+ > a kmalloc, copy_from_user and then another memcpy?
 
-8bbdbd487bd768ef34fa7c82f4b4982f23d8f76b215bb540554865b57d72bb37
+21eb95e11239544a07c00f3014a8b68e2d6eecd3f86e5f715e1b3ba746f65118

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.