From: Steven Swanson <steven.swanson@gmail.com>
To: Bart Van Assche <Bart.VanAssche@wdc.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>,
"swanson@eng.ucsd.edu" <swanson@eng.ucsd.edu>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
"dan.j.williams@intel.com" <dan.j.williams@intel.com>
Subject: Re: [RFC 01/16] NOVA: Documentation
Date: Sat, 5 Aug 2017 20:28:08 -0700 [thread overview]
Message-ID: <873FD9AB-8E7B-495B-A74C-D2AAA4305432@gmail.com> (raw)
In-Reply-To: <1501859388.2757.1.camel@wdc.com>
There is nothing impossible COW for mapped files, but it is not a good match for the expected usage model for DAX.
The idea is that programs can mmap files and the build interesting data structures in them, just like they do in DRAM. This means lots of small updatEs, and that would be very slow if each of them required a COW.
The reason we use COW for normal accesses is to provide atomicity. Programs will probably want doe form of atomicity for their mmaped data structures, but part of the DAX bargain is that programmer are responsible for this rather than the FS.
-steve
--
Composed on (and maybe dictated to) my phone.
> On Aug 4, 2017, at 08:09, Bart Van Assche <Bart.VanAssche@wdc.com> wrote:
>
>> On Thu, 2017-08-03 at 00:48 -0700, Steven Swanson wrote:
>> +### DAX Support
>> +
>> +Supporting DAX efficiently is a core feature of NOVA and one of the challenges
>> +in designing NOVA is reconciling DAX support which aims to avoid file system
>> +intervention when file data changes, and other features that require such
>> +intervention.
>> +
>> +NOVA's philosophy with respect to DAX is that when a program uses DAX mmap to
>> +to modify a file, the program must take full responsibility for that data and
>> +NOVA must ensure that the memory will behave as expected. At other times, the
>> +file system provides protection. This approach has several implications:
>> +
>> +1. Implementing `msync()` in user space works fine.
>> +
>> +2. While a file is mmap'd, it is not protected by NOVA's RAID-style parity
>> +mechanism, because protecting it would be too expensive. When the file is
>> +unmapped and/or during file system recovery, protection is restored.
>> +
>> +3. The snapshot mechanism must be careful about the order in which in adds
>> +pages to the file's snapshot image.
>
> Hello Steven,
>
> Thank you for having shared this very interesting work. After having read the
> NOVA paper and patch 01/16 I have a question for you. Does the above mean that
> COW is disabled for writable mmap-ed files? If so, what is the reason behind
> this? Is there a fundamental issue that does not allow to implement COW for
> writable mmap-ed files? Or have you perhaps tried to implement this and was the
> performance not sufficient? Please note that I'm neither a filesystem nor a
> persistent memory expert.
>
> Thanks,
>
> Bart.
next prev parent reply other threads:[~2017-08-06 3:28 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-03 7:48 [RFC 00/16] NOVA: a new file system for persistent memory Steven Swanson
2017-08-03 7:48 ` [RFC 01/16] NOVA: Documentation Steven Swanson
2017-08-03 22:38 ` Randy Dunlap
2017-08-04 15:09 ` Bart Van Assche
2017-08-06 3:28 ` Steven Swanson [this message]
2017-08-03 7:48 ` [RFC 02/16] NOVA: Superblock and fs layout Steven Swanson
2017-08-03 7:48 ` [RFC 03/16] NOVA: PMEM allocation system Steven Swanson
2017-08-03 7:48 ` [RFC 04/16] NOVA: Inode operations and structures Steven Swanson
2017-08-03 7:48 ` [RFC 05/16] NOVA: Log data structures and operations Steven Swanson
2017-08-03 7:48 ` [RFC 06/16] NOVA: Lite-weight journaling for complex ops Steven Swanson
2017-08-03 7:48 ` [RFC 07/16] NOVA: File and directory operations Steven Swanson
2017-08-03 7:49 ` [RFC 08/16] NOVA: Garbage collection Steven Swanson
2017-08-03 7:49 ` [RFC 09/16] NOVA: DAX code Steven Swanson
2017-08-03 7:49 ` [RFC 10/16] NOVA: File data protection Steven Swanson
2017-08-03 7:49 ` [RFC 11/16] NOVA: Snapshot support Steven Swanson
2017-08-03 7:49 ` [RFC 12/16] NOVA: Recovery code Steven Swanson
2017-08-03 7:49 ` [RFC 13/16] NOVA: Sysfs and ioctl Steven Swanson
2017-08-03 7:49 ` [RFC 14/16] NOVA: Read-only pmem devices Steven Swanson
2017-08-03 7:49 ` [RFC 15/16] NOVA: Performance measurement Steven Swanson
2017-08-03 7:50 ` [RFC 16/16] NOVA: Build infrastructure Steven Swanson
2017-10-09 15:32 ` [RFC 00/16] NOVA: a new file system for persistent memory Miklos Szeredi
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=873FD9AB-8E7B-495B-A74C-D2AAA4305432@gmail.com \
--to=steven.swanson@gmail.com \
--cc=Bart.VanAssche@wdc.com \
--cc=dan.j.williams@intel.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvdimm@lists.01.org \
--cc=swanson@eng.ucsd.edu \
/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;
as well as URLs for NNTP newsgroup(s).