Re: [PATCH 14/15] libnvdimm: support read-only btt backing devices

Dan Williams
2015-06-22T17:00:07Z

On Mon, Jun 22, 2015 at 9:57 AM, Christoph Hellwig <hch@lst.de> wrote:
> On Mon, Jun 22, 2015 at 09:54:51AM -0700, Dan Williams wrote:
>> > I don't see why you're comparing with MD and DM here. MD and DM
>> > sit cleanly ontop of any block device. If btt was independent of
>> > libnvdimm and just used ->rw_bytes we could see it as this.
>> >
>> > But it's all a giant entangled mess, where btt for example is probed
>> > by libnvdimm. At the same time pmem.c isn't really a true block
>> > driver, it's really just a trivial shim between the block API
>> > and pmem-style memcpy. Especially with the proper pmem API btt
>> > would become cleaner just calling that directly.
>>
>> The pmem api does nothing to fix torn sectors, there's no extra
>> atomicity guarantees that come from those instructions.
>
> Of course not. And neither does pmem.c help with you in any way.
>
> That's the point: btt should be a peer to pmem.c, not on top of it
> as there's no value add in pmem.c for it, and they are logically peers.
>
>> Well, let's start with per-disk btt and see where that gets us, we can
>> always ramp up complexity later. I'd just as soon make the default
>> opt-in/out a Kconfig toggle with a sysfs override.
>
> Kconfig or sysfs are both utterly horrible choices. It's a disk format
> choice so it needs to be persisted.

Of course it will be persisted with an on disk BTT superblock.
Establishing that superblock by default and deleting at on-demand are
via Kconfig and sysfs.