From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bombadil.infradead.org ([198.137.202.9]:34347 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752340AbcHHNLa (ORCPT ); Mon, 8 Aug 2016 09:11:30 -0400 Date: Mon, 8 Aug 2016 06:11:26 -0700 From: Christoph Hellwig To: "Boylston, Brian" Cc: Jan Kara , Dave Chinner , "Kani, Toshimitsu" , "linux-nvdimm@lists.01.org" , "xfs@oss.sgi.com" , "linux-fsdevel@vger.kernel.org" , "linux-ext4@vger.kernel.org" , Ross Zwisler Subject: Re: Subtle races between DAX mmap fault and write path Message-ID: <20160808131126.GA14464@infradead.org> References: <20160729022152.GZ16044@dastard> <20160730001249.GE16044@dastard> <579F20D9.80107@plexistor.com> <20160802002144.GL16044@dastard> <1470335997.8908.128.camel@hpe.com> <20160805112739.GG16044@dastard> <20160808092655.GA29128@quack2.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Mon, Aug 08, 2016 at 12:30:18PM +0000, Boylston, Brian wrote: > I used NVML 1.1 for the measurements. In this version and with the hardware > that I used, the pmem_persist() flow is: Please don't use crap like NVML, given that the people behind it don't seem to understand persistency at all. > Perhaps you mean pmem_msync() here? pmem_msync() calls msync(), but > pmem_persist() does not. pmem_persist is misnamed then, don't use it. > > At which point > > you've lost most of the advantages using movnt. Ross researches into > > possibilities of allowing more efficient userspace implementation but > > currently there are none. > > Apart from the current performance discussion, if the metadata for a file > is already established (file created, space allocated by explicit writes(), > and everything synced), then if I map it and do pmem_memcpy_persist(), > are there any "ongoing" metadata updates that would need to be flushed > (besides timestamps)? Yes. For example because every write might mean a new space allocating if using reflinks or a COW file system.