Re: [RFC 01/16] NOVA: Documentation

2017-08-05 Thread Steven Swanson
-- Composed on (and maybe dictated to) my phone. > On Aug 4, 2017, at 08:09, Bart Van Assche 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 >>

[RFC 05/16] NOVA: Log data structures and operations

2017-08-03 Thread Steven Swanson
-+ | ...| ++ | tail | | metadata | | -> next block | ++ Signed-off-by: Steven Swanson --- fs/nova/log.c | 1411 + fs/nova/log.h | 333 + 2 files changed, 1744 in

[RFC 03/16] NOVA: PMEM allocation system

2017-08-03 Thread Steven Swanson
caller to provide some control over where the blocks come from. Nova uses this to allocate replicas of metadata far from one another. Signed-off-by: Steven Swanson --- fs/nova/balloc.c | 827 ++ fs/nova/balloc.h | 118 2 files ch

[RFC 06/16] NOVA: Lite-weight journaling for complex ops

2017-08-03 Thread Steven Swanson
near the beginning of the file system. During recovery, Nova scans the journals and undoes the operations described by each entry. Signed-off-by: Steven Swanson --- fs/nova/journal.c | 474 + fs/nova/journal.h | 61 +++ 2 files changed

[RFC 07/16] NOVA: File and directory operations

2017-08-03 Thread Steven Swanson
file or directory is opened by scanning its log. Signed-off-by: Steven Swanson --- fs/nova/dir.c | 760 +++ fs/nova/file.c| 943 + fs/nova/namei.c | 919

[RFC 10/16] NOVA: File data protection

2017-08-03 Thread Steven Swanson
_pmem. There is probably a better approach to achieving this goal. The changes to nd_pmem are included in a later patch in this series. Signed-off-by: Steven Swanson --- fs/nova/checksum.c | 912 fs/nova/mprotect.c |

[RFC 11/16] NOVA: Snapshot support

2017-08-03 Thread Steven Swanson
+++ +--+ +++ | cpu 1 | | snap | snap | | head |-->| write | write | | | | entry | entry | | | +++ +--+ |... | +--+ ++ | cpu 128 | | snap | | head |-->| ino

[RFC 12/16] NOVA: Recovery code

2017-08-03 Thread Steven Swanson
is process completes, the file system is ready to accept new requests. During the same scan, it rebuilds the snapshot information and the list available inodes. Signed-off-by: Steven Swanson --- fs/nova/bbuild.c | 1602 + fs/nova/rebuil

[RFC 14/16] NOVA: Read-only pmem devices

2017-08-03 Thread Steven Swanson
Add (and implement) a module command line option to nd_pmem to support read-only pmem devices. Signed-off-by: Steven Swanson --- arch/x86/include/asm/io.h |1 + arch/x86/mm/ioremap.c | 25 ++--- drivers/nvdimm/pmem.c | 14 -- include/linux/io.h

[RFC 15/16] NOVA: Performance measurement

2017-08-03 Thread Steven Swanson
Signed-off-by: Steven Swanson --- fs/nova/perf.c | 594 fs/nova/perf.h | 96 fs/nova/stats.c | 685 +++ fs/nova/stats.h | 218 ++ 4 files changed, 1593 insertions

[RFC 16/16] NOVA: Build infrastructure

2017-08-03 Thread Steven Swanson
Signed-off-by: Steven Swanson --- fs/Kconfig |2 ++ fs/Makefile |1 + fs/nova/Kconfig | 15 +++ fs/nova/Makefile |9 + 4 files changed, 27 insertions(+) create mode 100644 fs/nova/Kconfig create mode 100644 fs/nova/Makefile diff --git a/fs/Kconfig

[RFC 13/16] NOVA: Sysfs and ioctl

2017-08-03 Thread Steven Swanson
Nova provides the normal ioctls for setting file attributes and provides a /proc-based interface for taking snapshots. Signed-off-by: Steven Swanson --- fs/nova/ioctl.c | 185 +++ fs/nova/sysfs.c | 543 +++ 2 files changed

[RFC 08/16] NOVA: Garbage collection

2017-08-03 Thread Steven Swanson
| V | +---+ +---+ | I | fast GC | I | +---+ > +---+ | I | | I | +---+ +---+ | I | | V | +---+ +---+ | V +---+ | V | +---+ | I | +---+ | I | +---+ | V | +---+ Signed-off-by: Steven Swanson --- fs/nova/gc.c

[RFC 04/16] NOVA: Inode operations and structures

2017-08-03 Thread Steven Swanson
numbers. Signed-off-by: Steven Swanson --- fs/nova/inode.c | 1467 +++ fs/nova/inode.h | 389 +++ 2 files changed, 1856 insertions(+) create mode 100644 fs/nova/inode.c create mode 100644 fs/nova/inode.h diff --git a/fs/nova/inode.c

[RFC 09/16] NOVA: DAX code

2017-08-03 Thread Steven Swanson
NOVA leverages the kernel's DAX mechanisms for mmap and file data access. Nova maintains a red-black tree in DRAM (nova_inode_info_header.vma_tree) to track which portions of a file have been mapped. Signed-off-by: Steven Swanson --- fs/nova/dax.c |

[RFC 02/16] NOVA: Superblock and fs layout

2017-08-03 Thread Steven Swanson
. These include reserved inodes, a table of pointers to the journals Nova uses for complex operations, and pointers to inodes tables. Nova maintains replicas of the super block and reserved inodes in the last two blocks of the PMEM area. Signed-off-by: Steven Swanson --- fs/nova/nova.h | 1137

[RFC 01/16] NOVA: Documentation

2017-08-03 Thread Steven Swanson
ories (http://cseweb.ucsd.edu/~swanson/papers/FAST2016NOVA.pdf) Hardening the NOVA File System (http://cseweb.ucsd.edu/~swanson/papers/TechReport2017HardenedNOVA.pdf) Signed-off-by: Steven Swanson --- Documentation/filesystems/00-INDEX |2 Documentation/filesystems/nova.txt |

[RFC 00/16] NOVA: a new file system for persistent memory

2017-08-03 Thread Steven Swanson
riority in NOVA's design. NOVA was developed at the Non-Volatile Systems Laboratory in the Computer Science and Engineering Department at the University of California, San Diego. Its primary authors are Andiry Xu , Lu Zhang , and Steven Swanson . NOVA is stable enough to run complex application