mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jeff Moyer <jmoyer@redhat.com>
To: Matthew Wilcox <willy@linux.intel.com>
Cc: rob.gittins@linux.intel.com, linux-pmfs@lists.infradead.org,
	linux-fsdevel@veger.org, linux-kernel@vger.kernel.org
Subject: Re: RFC Block Layer Extensions to Support NV-DIMMs
Date: Thu, 05 Sep 2013 13:15:40 -0400	[thread overview]
Message-ID: <x49zjrr8a0z.fsf@segfault.boston.devel.redhat.com> (raw)
In-Reply-To: <20130905153447.GB20931@linux.intel.com> (Matthew Wilcox's message of "Thu, 5 Sep 2013 11:34:47 -0400")

Matthew Wilcox <willy@linux.intel.com> writes:

> On Thu, Sep 05, 2013 at 08:12:05AM -0400, Jeff Moyer wrote:
>> If the memory is available to be mapped into the address space of the
>> kernel or a user process, then I don't see why we should have a block
>> device at all.  I think it would make more sense to have a different
>> driver class for these persistent memory devices.
>
> We already have at least two block devices in the tree that provide
> this kind of functionality (arch/powerpc/sysdev/axonram.c and
> drivers/s390/block/dcssblk.c).  Looking at how they're written, it
> seems like implementing either of them as a block device on top of a
> character device that extended their functionality in the direction we
> want would be a pretty major bloating factor for no real benefit (not
> even a particularly cleaner architecture).

Fun examples to read, thanks for the pointers.  I'll note that neither
required extensions to the block device operations.  ;-)  I do agree with
you that neither would benefit from changing.

There are a couple of things in this proposal that cause me grief,
centered around the commitpmem call:

>>    void (*commitpmem)(struct block_device *bdev, void *addr);

For block devices, when you want to flush something out, you submit a
bio with REQ_FLUSH set.  Or, you could have submitted one or more I/Os
with REQ_FUA.  Here, you want to add another method to accomplish the
same thing, but outside of the data path.  So, who would the caller of
this commitpmem function be?  Let's assume that we have a file system
layered on top of this block device.  Will the file system need to call
commitpmem in addition to sending down the appropriate flags with the
I/Os?

This brings me to the other thing.  If the caller of commitpmem is a
persistent memory-aware file system, then it seems awkward to call into
a block driver at all.  You are basically turning the block device into
a sort of hybrid thing, where you can access stuff behind it in myriad
ways.  That's the part that doesn't make sense to me.

So, that's why I suggested that maybe pmem is different from a block
device, but a block device could certainly be layered on top of it.

Hopefully that clears up my concerns with the approach.

Cheers,
Jeff

  reply	other threads:[~2013-09-05 17:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-04 21:54 Rob Gittins
2013-09-05 12:12 ` Jeff Moyer
2013-09-05 15:34   ` Matthew Wilcox
2013-09-05 17:15     ` Jeff Moyer [this message]
2013-09-05 17:57       ` Matthew Wilcox
2013-09-05 19:46       ` Zuckerman, Boris
2013-09-05 20:43         ` Gittins, Rob
2013-09-05 21:02           ` Zuckerman, Boris
2013-09-05 16:33   ` Rob Gittins
2013-09-05 17:19     ` Jeff Moyer
2013-09-07  5:12 ` Vladislav Bolkhovitin
2013-09-23 22:51   ` Rob Gittins
2013-09-26  6:58     ` Vladislav Bolkhovitin
2013-09-26 14:56       ` Zuckerman, Boris
2013-09-26 17:56         ` Matthew Wilcox
2013-09-26 19:36           ` Zuckerman, Boris
2013-09-28  7:44             ` Vladislav Bolkhovitin

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=x49zjrr8a0z.fsf@segfault.boston.devel.redhat.com \
    --to=jmoyer@redhat.com \
    --cc=linux-fsdevel@veger.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pmfs@lists.infradead.org \
    --cc=rob.gittins@linux.intel.com \
    --cc=willy@linux.intel.com \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®