All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: "Christoph Hellwig" <hch@lst.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Paul Mackerras" <paulus@samba.org>,
	"Michael Ellerman" <mpe@ellerman.id.au>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Martin Schwidefsky" <schwidefsky@de.ibm.com>,
	"Heiko Carstens" <heiko.carstens@de.ibm.com>,
	linux390@de.ibm.com, "Alexander Viro" <viro@zeniv.linux.org.uk>,
	"Matthew Wilcox" <willy@linux.intel.com>,
	"Jeff Layton" <jlayton@primarydata.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Omar Sandoval" <osandov@osandov.com>,
	"Boaz Harrosh" <boaz@plexistor.com>,
	"Miklos Szeredi" <mszeredi@suse.cz>, "Jan Kara" <jack@suse.cz>,
	"Wolfram Sang" <wsa@the-dreams.de>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Gerald Schaefer" <gerald.schaefer@de.ibm.com>,
	"Ameen Ali" <ameenali023@gmail.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	"Sagi Grimberg" <sagig@mellanox.com>,
	"Mike Snitzer" <snitzer@redhat.com>, "Tejun Heo" <tj@kernel.org>,
	"Shaohua Li" <shli@fb.com>, "Ming Lei" <ming.lei@canonical.com>,
	linux-doc@vger.kernel.org,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	linux-s390@vger.kernel.org,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	"Dave Chinner" <david@fromorbit.com>
Subject: Re: [PATCH v2 7/7] pmem, dax: have direct_access use __pmem annotation
Date: Mon, 17 Aug 2015 14:07:18 -0600	[thread overview]
Message-ID: <1439842038.11296.1.camel@linux.intel.com> (raw)
In-Reply-To: <CAPcyv4gHatJxtJ_Utc07L-EiX0f=SnkEoAVsB9PNDhtwmxrobQ@mail.gmail.com>

On Sat, 2015-08-15 at 08:44 -0700, Dan Williams wrote:
> On Sat, Aug 15, 2015 at 2:19 AM, Christoph Hellwig <hch@lst.de> wrote:
> > On Thu, Aug 13, 2015 at 10:51:11AM -0600, Ross Zwisler wrote:
> >> Update the annotation for the kaddr pointer returned by direct_access()
> >> so that it is a __pmem pointer.  This is consistent with the PMEM driver
> >> and with how this direct_access() pointer is used in the DAX code.
> >
> > IFF we stick to the __pmem annotations this looks good.
> >
> > That beeing said I start to really dislike them.  We don't special
> > accesors to read/write from pmem, we just need to explicitly commit
> > it if we want to make it persistent.  So I really don't see the need
> > to treat it special and require all the force casts to and from the
> > attribute.
> 
> I'm not going to put up much of a fight if it's really getting in the way....
> 
> That said, while we don't need special accessors we do need guarantees
> that anything that has written to a persistent memory address has done
> so in a way that wmb_pmem() is able to flush it.  It's more of a "I've
> audited this code path for wmb_pmem() compatibility so use this api to
> write to pmem."
> 
> Perhaps a better way to statically check for missed flushes might be
> to have acquire_pmem_for_write() + release() annotations and the final
> release does a wmb_pmem(), but as far as I can tell the sparse
> acquire/release annotations don't stack.

FWIW I've been on the fence about the __pmem annotations, but my current
thought is that we really do need a way of saying that stores to these
pointers need special care for wmb_pmem() to do its thing and that __pmem does
a reasonably good job of that.  If we can figure out a cooler way, such as the
write() + release() flow Dan is talking about, great.  But I think we need
something to keep us from making errors by storing to PMEM pointers and
leaving data in the processor cache.



WARNING: multiple messages have this Message-ID (diff)
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: "Christoph Hellwig" <hch@lst.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Paul Mackerras" <paulus@samba.org>,
	"Michael Ellerman" <mpe@ellerman.id.au>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Martin Schwidefsky" <schwidefsky@de.ibm.com>,
	"Heiko Carstens" <heiko.carstens@de.ibm.com>,
	linux390@de.ibm.com, "Alexander Viro" <viro@zeniv.linux.org.uk>,
	"Matthew Wilcox" <willy@linux.intel.com>,
	"Jeff Layton" <jlayton@primarydata.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Omar Sandoval" <osandov@osandov.com>,
	"Boaz Harrosh" <boaz@plexistor.com>,
	"Miklos Szeredi" <mszeredi@suse.cz>, "Jan Kara" <jack@suse.cz>,
	"Wolfram Sang" <wsa@the-dreams.de>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Subject: Re: [PATCH v2 7/7] pmem, dax: have direct_access use __pmem annotation
Date: Mon, 17 Aug 2015 14:07:18 -0600	[thread overview]
Message-ID: <1439842038.11296.1.camel@linux.intel.com> (raw)
In-Reply-To: <CAPcyv4gHatJxtJ_Utc07L-EiX0f=SnkEoAVsB9PNDhtwmxrobQ@mail.gmail.com>

On Sat, 2015-08-15 at 08:44 -0700, Dan Williams wrote:
> On Sat, Aug 15, 2015 at 2:19 AM, Christoph Hellwig <hch@lst.de> wrote:
> > On Thu, Aug 13, 2015 at 10:51:11AM -0600, Ross Zwisler wrote:
> >> Update the annotation for the kaddr pointer returned by direct_access()
> >> so that it is a __pmem pointer.  This is consistent with the PMEM driver
> >> and with how this direct_access() pointer is used in the DAX code.
> >
> > IFF we stick to the __pmem annotations this looks good.
> >
> > That beeing said I start to really dislike them.  We don't special
> > accesors to read/write from pmem, we just need to explicitly commit
> > it if we want to make it persistent.  So I really don't see the need
> > to treat it special and require all the force casts to and from the
> > attribute.
> 
> I'm not going to put up much of a fight if it's really getting in the way....
> 
> That said, while we don't need special accessors we do need guarantees
> that anything that has written to a persistent memory address has done
> so in a way that wmb_pmem() is able to flush it.  It's more of a "I've
> audited this code path for wmb_pmem() compatibility so use this api to
> write to pmem."
> 
> Perhaps a better way to statically check for missed flushes might be
> to have acquire_pmem_for_write() + release() annotations and the final
> release does a wmb_pmem(), but as far as I can tell the sparse
> acquire/release annotations don't stack.

FWIW I've been on the fence about the __pmem annotations, but my current
thought is that we really do need a way of saying that stores to these
pointers need special care for wmb_pmem() to do its thing and that __pmem does
a reasonably good job of that.  If we can figure out a cooler way, such as the
write() + release() flow Dan is talking about, great.  But I think we need
something to keep us from making errors by storing to PMEM pointers and
leaving data in the processor cache.

WARNING: multiple messages have this Message-ID (diff)
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: "Christoph Hellwig" <hch@lst.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Paul Mackerras" <paulus@samba.org>,
	"Michael Ellerman" <mpe@ellerman.id.au>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Martin Schwidefsky" <schwidefsky@de.ibm.com>,
	"Heiko Carstens" <heiko.carstens@de.ibm.com>,
	linux390@de.ibm.com, "Alexander Viro" <viro@zeniv.linux.org.uk>,
	"Matthew Wilcox" <willy@linux.intel.com>,
	"Jeff Layton" <jlayton@primarydata.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Omar Sandoval" <osandov@osandov.com>,
	"Boaz Harrosh" <boaz@plexistor.com>,
	"Miklos Szeredi" <mszeredi@suse.cz>, "Jan Kara" <jack@suse.cz>,
	"Wolfram Sang" <wsa@the-dreams.de>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Gerald Schaefer" <gerald.schaefer@de.ibm.com>,
	"Ameen Ali" <ameenali023@gmail.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	"Sagi Grimberg" <sagig@mellanox.com>,
	"Mike Snitzer" <snitzer@redhat.com>, "Tejun Heo" <tj@kernel.org>,
	"Shaohua Li" <shli@fb.com>, "Ming Lei" <ming.lei@canonical.com>,
	linux-doc@vger.kernel.org,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	linux-s390@vger.kernel.org,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	"Dave Chinner" <david@fromorbit.com>
Subject: Re: [PATCH v2 7/7] pmem, dax: have direct_access use __pmem annotation
Date: Mon, 17 Aug 2015 14:07:18 -0600	[thread overview]
Message-ID: <1439842038.11296.1.camel@linux.intel.com> (raw)
In-Reply-To: <CAPcyv4gHatJxtJ_Utc07L-EiX0f=SnkEoAVsB9PNDhtwmxrobQ@mail.gmail.com>

On Sat, 2015-08-15 at 08:44 -0700, Dan Williams wrote:
> On Sat, Aug 15, 2015 at 2:19 AM, Christoph Hellwig <hch@lst.de> wrote:
> > On Thu, Aug 13, 2015 at 10:51:11AM -0600, Ross Zwisler wrote:
> >> Update the annotation for the kaddr pointer returned by direct_access()
> >> so that it is a __pmem pointer.  This is consistent with the PMEM driver
> >> and with how this direct_access() pointer is used in the DAX code.
> >
> > IFF we stick to the __pmem annotations this looks good.
> >
> > That beeing said I start to really dislike them.  We don't special
> > accesors to read/write from pmem, we just need to explicitly commit
> > it if we want to make it persistent.  So I really don't see the need
> > to treat it special and require all the force casts to and from the
> > attribute.
> 
> I'm not going to put up much of a fight if it's really getting in the way....
> 
> That said, while we don't need special accessors we do need guarantees
> that anything that has written to a persistent memory address has done
> so in a way that wmb_pmem() is able to flush it.  It's more of a "I've
> audited this code path for wmb_pmem() compatibility so use this api to
> write to pmem."
> 
> Perhaps a better way to statically check for missed flushes might be
> to have acquire_pmem_for_write() + release() annotations and the final
> release does a wmb_pmem(), but as far as I can tell the sparse
> acquire/release annotations don't stack.

FWIW I've been on the fence about the __pmem annotations, but my current
thought is that we really do need a way of saying that stores to these
pointers need special care for wmb_pmem() to do its thing and that __pmem does
a reasonably good job of that.  If we can figure out a cooler way, such as the
write() + release() flow Dan is talking about, great.  But I think we need
something to keep us from making errors by storing to PMEM pointers and
leaving data in the processor cache.



  parent reply	other threads:[~2015-08-17 20:07 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-13 16:51 [PATCH v2 0/7] dax: I/O path enhancements Ross Zwisler
2015-08-13 16:51 ` Ross Zwisler
2015-08-13 16:51 ` Ross Zwisler
2015-08-13 16:51 ` [PATCH v2 1/7] brd: make rd_size static Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-13 16:51 ` [PATCH v2 2/7] pmem, x86: move x86 PMEM API to new pmem.h header Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-15  8:58   ` Christoph Hellwig
2015-08-15  8:58     ` Christoph Hellwig
2015-08-13 16:51 ` [PATCH v2 3/7] pmem: remove layer when calling arch_has_wmb_pmem() Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-13 16:51 ` [PATCH v2 4/7] pmem, x86: clean up conditional pmem includes Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-13 16:51 ` [PATCH v2 5/7] pmem: add wb_cache_pmem() and clear_pmem() Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-13 16:51 ` [PATCH v2 6/7] dax: update I/O path to do proper PMEM flushing Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-13 21:11   ` Dan Williams
2015-08-13 21:11     ` Dan Williams
2015-08-14 16:48     ` Ross Zwisler
2015-08-14 16:48       ` Ross Zwisler
2015-08-13 16:51 ` [PATCH v2 7/7] pmem, dax: have direct_access use __pmem annotation Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-13 16:51   ` Ross Zwisler
2015-08-13 21:20   ` Dan Williams
2015-08-13 21:20     ` Dan Williams
2015-08-13 21:20     ` Dan Williams
2015-08-14 16:55     ` Ross Zwisler
2015-08-14 16:55       ` Ross Zwisler
2015-08-14 16:55       ` Ross Zwisler
2015-08-14 16:58       ` Dan Williams
2015-08-14 16:58         ` Dan Williams
2015-08-14 16:58         ` Dan Williams
2015-08-15  9:11         ` Christoph Hellwig
2015-08-15  9:11           ` Christoph Hellwig
2015-08-15  9:11           ` Christoph Hellwig
2015-08-15 15:49           ` Dan Williams
2015-08-15 15:49             ` Dan Williams
2015-08-15 15:49             ` Dan Williams
2015-08-15  9:19   ` Christoph Hellwig
2015-08-15  9:19     ` Christoph Hellwig
2015-08-15  9:19     ` Christoph Hellwig
2015-08-15 15:44     ` Dan Williams
2015-08-15 15:44       ` Dan Williams
2015-08-15 15:44       ` Dan Williams
2015-08-15 16:00       ` Christoph Hellwig
2015-08-15 16:00         ` Christoph Hellwig
2015-08-15 16:00         ` Christoph Hellwig
2015-08-15 18:05         ` Dan Williams
2015-08-15 18:05           ` Dan Williams
2015-08-15 18:05           ` Dan Williams
2015-08-17 20:07       ` Ross Zwisler [this message]
2015-08-17 20:07         ` Ross Zwisler
2015-08-17 20:07         ` Ross Zwisler

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=1439842038.11296.1.camel@linux.intel.com \
    --to=ross.zwisler@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=ameenali023@gmail.com \
    --cc=axboe@kernel.dk \
    --cc=benh@kernel.crashing.org \
    --cc=boaz@plexistor.com \
    --cc=corbet@lwn.net \
    --cc=dan.j.williams@intel.com \
    --cc=david@fromorbit.com \
    --cc=gerald.schaefer@de.ibm.com \
    --cc=hch@lst.de \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jack@suse.cz \
    --cc=jlayton@primarydata.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux390@de.ibm.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=martin.petersen@oracle.com \
    --cc=ming.lei@canonical.com \
    --cc=mpe@ellerman.id.au \
    --cc=mszeredi@suse.cz \
    --cc=osandov@osandov.com \
    --cc=paulus@samba.org \
    --cc=sagig@mellanox.com \
    --cc=schwidefsky@de.ibm.com \
    --cc=shli@fb.com \
    --cc=snitzer@redhat.com \
    --cc=tj@kernel.org \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@linux.intel.com \
    --cc=wsa@the-dreams.de \
    /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 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.