On Sun, Apr 22, 2018 at 11:12 PM, Darrick J. Wong
<darrick.w...@oracle.com> wrote:
> [haaa, I finally found time to read more of these]
>
> On Sat, Mar 10, 2018 at 10:17:47AM -0800, Andiry Xu wrote:
>> From: Andiry Xu <jix...@cs.ucsd.edu>
>>
>> These rou
On Thu, Mar 22, 2018 at 8:00 AM, David Sterba <dste...@suse.cz> wrote:
> On Sat, Mar 10, 2018 at 10:19:04AM -0800, Andiry Xu wrote:
>> From: Andiry Xu <jix...@cs.ucsd.edu>
>>
>> Sysfs support allows user to get/post information of running NOVA instance.
>>
Thanks for all the comments.
On Mon, Mar 19, 2018 at 1:43 PM, Randy Dunlap <rdun...@infradead.org> wrote:
> On 03/10/2018 10:17 AM, Andiry Xu wrote:
>> From: Andiry Xu <jix...@cs.ucsd.edu>
>>
>> NOVA is a log-structured file system tailored for byte-addr
On Mon, Mar 19, 2018 at 1:30 PM, Eric Biggers <ebigge...@gmail.com> wrote:
> On Mon, Mar 19, 2018 at 12:39:55PM -0700, Andiry Xu wrote:
>> On Sun, Mar 11, 2018 at 12:22 PM, Eric Biggers <ebigge...@gmail.com> wrote:
>> > On Sun, Mar 11, 2018 at 02:00:13PM +0200, Nikola
On Sun, Mar 11, 2018 at 12:22 PM, Eric Biggers <ebigge...@gmail.com> wrote:
> On Sun, Mar 11, 2018 at 02:00:13PM +0200, Nikolay Borisov wrote:
>> [Adding Herbert Xu to CC since he is the maintainer of the crypto subsys
>> maintainer]
>>
>> On 10.03.2018 20:17, And
On Thu, Mar 15, 2018 at 7:59 PM, Theodore Y. Ts'o wrote:
> On Thu, Mar 15, 2018 at 09:38:29PM +0100, Arnd Bergmann wrote:
>>
>> You could also have a resolution of less than a nanosecond. Note
>> that today, the file time stamps generated by the kernel are in
>> jiffies resolution,
On Thu, Mar 15, 2018 at 2:05 AM, Arnd Bergmann <a...@arndb.de> wrote:
> On Thu, Mar 15, 2018 at 7:11 AM, Andiry Xu <jix...@eng.ucsd.edu> wrote:
>> On Wed, Mar 14, 2018 at 9:54 PM, Darrick J. Wong
>> <darrick.w...@oracle.com> wrote:
>>> On Sat, Mar 10,
On Wed, Mar 14, 2018 at 10:06 PM, Darrick J. Wong
<darrick.w...@oracle.com> wrote:
> On Sat, Mar 10, 2018 at 10:17:45AM -0800, Andiry Xu wrote:
>> From: Andiry Xu <jix...@cs.ucsd.edu>
>>
>> inode.h defines the non-volatile and volatile NOVA inode data structures.
On Sun, Mar 11, 2018 at 12:22 PM, Eric Biggers <ebigge...@gmail.com> wrote:
> On Sun, Mar 11, 2018 at 02:00:13PM +0200, Nikolay Borisov wrote:
>> [Adding Herbert Xu to CC since he is the maintainer of the crypto subsys
>> maintainer]
>>
>> On 10.03.2018 20:17, And
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA mkdir is similar to create. The difference is NOVA will
allocate log page for the newly created directory, and append
init dentries.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/
From: Andiry Xu <jix...@cs.ucsd.edu>
Fallocate works similar as writes, allocating zeroed blocked
for the holes in the request region.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/file.c | 148 +
fs/nova/nova.h
From: Andiry Xu <jix...@cs.ucsd.edu>
Upon system failure, NOVA needs to scan all the inode logs
to rebuild the allocator. During the scanning, NOVA stores allocated
log/data pages in a bitmap, and uses the bitmap to rebuild the allocator
once scan finishes.
Signed-off-by: Andiry X
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA uses the iomap framework to support mmap operation.
Currently it does not support huge page mmap.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/dax.c | 53 +
fs/nova
From: Andiry Xu <jix...@cs.ucsd.edu>
Upon umount, NOVA stores the allocator information and the inuse
inode list in reserved inodes. During remount, NOVA reads these
information and rebuild the allocator and inuse inode list DRAM
data structures.
Signed-off-by: Andiry Xu <jix...@cs
From: Andiry Xu <jix...@cs.ucsd.edu>
For each inode, NOVA traverses the inode log and records the pages
allocated in the bitmap. For directory inode, NOVA only set the log pages.
For file and symlink inodes, NOVA needs to set the data pages.
NOVA divides the file into 1GB zones, and r
From: Andiry Xu <jix...@cs.ucsd.edu>
Sysfs support allows user to get/post information of running NOVA instance.
After mount, NOVA creates four entries under proc directory
/proc/fs/nova/pmem#/:
timing_statsIO_statsallocator gc
Show NOVA file operation timing statistic
From: Andiry Xu <jix...@cs.ucsd.edu>
If the user specifies inplace updates, or the file is mmaped,
NOVA performs inplace writes.
The trick is dax page fault can occur concurrently with inplace writes,
and allocate new blocks. Also, inplace write memcpy may trigger page fault
(xfstes
From: Andiry Xu <jix...@cs.ucsd.edu>
Given a list of file write items, NOVA commits them by appending
each file write entry to the log, and then updates the radix tree
to point to these new entries, and updates log tail pointer to
commit all the writes atomically.
If the items are all
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA alloates two blocks for symlink inode: One for inode log,
and the other one is a data block, storing symname.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/Makefile | 2 +-
fs/nova/inode.c | 2 +
fs/nova/nam
From: Andiry Xu <jix...@cs.ucsd.edu>
They use the iomap framework to do read/write. Due to software overheads
they are slower than dax read/write.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/file.c | 65 ++
1 file
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA appends link change entry to the inode log to implement
SETFLAGS and SETVERSION.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/Makefile | 4 +-
fs/nova/dir.c| 4 ++
fs/nova/file.c | 4 ++
fs/nova/inode.h | 2 +
fs/
From: Andiry Xu <jix...@cs.ucsd.edu>
After fast gc, if the valid log entries still account for less
than the half of the log size, NOVA starts thorough garbage collection,
allocates a new log, copies the live log entries to it, and switches
to the new log atomically. The radix tree
From: Andiry Xu <jix...@cs.ucsd.edu>
nova_file_write_item combines a file write item with a list head.
NOVA uses a linked list of file write items to describe a write operation.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA cleans and compacts the log when the log is full.
The log is a linked list of 4KB pmem pages, and NOVA performs
fast garbage collection by deleting dead log pages (all the entries are invalid)
from the linked list.
Example:
I = Invalid, V = Valid
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA uses Hash to quickly locate dentry in the directory inode log.
The key is the hash of the filename, the value is the dentry.
Currently hash collision is ignored, and the radix tree may occupy
large memory space with huge directories. Consi
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA persists file metadata and data before returning to the user space.
Hence, fsync is a no-op if the file is not mmaped.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/file.c | 50 ++
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.c | 2 ++
fs/nova/namei.c | 5 +
fs/nova/nova.h | 1 +
3 files changed, 8 insertions(+)
diff --git a/fs/nova/inode.c b/fs/nova/inode.c
index 2092a55..0e9ab4b 100644
--- a/fs/
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/super.c | 48
1 file changed, 48 insertions(+)
diff --git a/fs/nova/super.c b/fs/nova/super.c
index daf3270..0847e57 100644
--- a/fs/nova/s
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA uses per-CPU spinlock to protect the journals.
Lite journal initialization consists of two parts:
for a new NOVA instance, hard_init allocates the journal pages.
soft_init initializes the locks and performs journal recovery.
Signed-off-by: Andiry X
From: Andiry Xu <jix...@cs.ucsd.edu>
Add notify_change for setattr operations. Truncate the file blocks
if the file is shrunk.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.c | 180
fs/nova/inode.h |
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/nova.h | 3 +
fs/nova/stats.c | 234
2 files changed, 237 insertions(+)
diff --git a/fs/nova/nova.h b/fs/nova/nova.h
index bf4b
From: Andiry Xu <jix...@cs.ucsd.edu>
This routine allocates and initializes a new vfs inode, and setup
the attributes of corresponding NOVA inode and inode_info.
inode operations are missing now.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/i
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA allocates and initializes a new inode, and appends a dentry
to the directory's log. Then NOVA creates a transaction to
commit both changes atomically: update the directory log tail
pointer and validate the new inode.
Signed-off-by: Andiry X
From: Andiry Xu <jix...@cs.ucsd.edu>
After NOVA appends file write entry to commit new writes,
it updates the file offset radix tree, finds the old entries (if overwrite)
and reclaims the stale data blocks.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA performs writes by appending file write entries to the log.
A file write entry is the metadata of a write operation, and
contains pointers to the data blocks. A single write operation
may append multiple file write entries to the log, if the
all
From: Andiry Xu <jix...@cs.ucsd.edu>
Provide inplace data updates option if people prefer inplace
updates to copy-on-write.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/nova.h | 1 +
fs/nova/super.c | 7 ++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --g
From: Andiry Xu <jix...@cs.ucsd.edu>
Rename is the most cpmplex namei operation. The target dir may be
different from the source dir, and the target inode may exist.
Rename involves up to four inodes, and NOVA uses rename transation
to atomically update all the affected inodes.
Sign
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/journal.c | 55 +++
1 file changed, 55 insertions(+)
diff --git a/fs/nova/journal.c b/fs/nova/journal.c
index 75d590f..f31de97 100644
-
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA uses per-CPU lite journals to provide fast atomicity guarantees
for multi-log appending and multi-word inplace updates.
NOVA uses undo journaling. Each journal is a circular buffer
of 4KB pmem page. Two pointers, journal_head and journal_tail
From: Andiry Xu <jix...@cs.ucsd.edu>
To in-place update a log entry, NOVA starts a lite transaction
to journal the log entry, then performs update and commits the transaction.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.h | 12
fs/nova/l
From: Andiry Xu <jix...@cs.ucsd.edu>
When vfs issues a read inode command, or when the inode is newly allocated,
walk through the inode log to rebuild inode information and the radix tree.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.h | 15 +++
fs/nova/nov
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA lookup the inode number by searching the radix tree with
the filename hash value and locating the corresponding dentry on the log.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/Makefile | 3 +-
fs/nova/inode.c | 2 ++
fs/
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA appends log entries to the inode log upon metadata change.
NOVA has four kinds of log entries:
File write entry describes a write to a contiguous range of pmem pages,
Dentry describes a file/directory being added or removed from a directory,
S
From: Andiry Xu <jix...@cs.ucsd.edu>
For link change operations, NOVA appends a link change entry
to the affected inode's log, and uses lite transaction to
atomically commit changes to multiple logs.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/n
From: Andiry Xu <jix...@cs.ucsd.edu>
Search the file radix tree to find hold or data.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/file.c | 47 +++
fs/nova/inode.c | 113
fs/nova/inode.h |
From: Andiry Xu <jix...@cs.ucsd.edu>
If the file is not mmaped, NOVA performs copy-on-write.
The CoW is composed of parts:
1. Allocate contiguous data pages.
2. Copy data from user buffer to the data pages.
If the write is not aligned to page size, also copy data from existing
pmem
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA uses lite journal to perform light weight transaction.
Instead of journaling metadata/data changes directly,
NOVA first append updates to each inode's log, and then
journal the log tail pointers to make sure all the logs
are updated atomically. For
From: Andiry Xu <jix...@cs.ucsd.edu>
If the inode still have links, release the DRAM resource (radix tree, etc).
Otherwise reclaim data pages and log pages.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.c | 257 +
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA appends link change entries to atomically update link count and ctime.
This occurs in link, unlink and rmdir.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/log.c | 52
fs/nov
From: Andiry Xu <jix...@cs.ucsd.edu>
Rebuild file inode metadata and radix tree on read_inode.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/log.h | 4 ++
fs/nova/rebuild.c | 124 ++
2 files changed, 128 inserti
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA appends a setattr entry to the log upon inode modification operations:
set size, chmod, etc.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/log.c | 64 +++
1 file changed, 6
From: Andiry Xu <jix...@cs.ucsd.edu>
For root directory and newly created directory via mkdir(),
we append . and .. dentries to the directory inode log.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/dir.c | 82 ++
From: Andiry Xu <jix...@cs.ucsd.edu>
After new log entries are appended to the log, old log entries
can be marked invalid to faciliate garbage collection.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/log.c | 160 ++
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA reads the directory by traversing the log and reports
the valid dentries. Valid dentris have inode number greater than zero,
meaning it's a create dentry.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/d
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA performs atomic log appending by first appending the entry
to the tail of the log, and then atomically update the log tail pointer.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/Makefile | 2 +-
fs/nova/journal.c | 108 ++
2 files changed, 109 insertions(+), 1 deletion(-)
create mode 100644 fs/nova/journal.c
From: Andiry Xu <jix...@cs.ucsd.edu>
Incomplete nova_rebuild_inode() implemenation.
nova_rebuild_inode() will go through the inode log and rebuild
radix tree and metadata. Leave for later patches.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/bb
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/Makefile | 2 +-
fs/nova/nova.h | 12 +++
fs/nova/stats.c | 263 +++
fs/nova/stats.h | 178 ++
From: Andiry Xu <jix...@cs.ucsd.edu>
Inode table is a singly linked list of 2MB pages.
Each CPU has one inode table with initial size 2MB.
The inode table addresses are stored in the
INODE_TABLE_START of the pmem range.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/
From: Andiry Xu <jix...@cs.ucsd.edu>
Inodes are assigned to per-CPU inode tables in a round-robin way:
If there are four cores, then
CPU 0's inode table contains inode 0, inode 4, inode 8, ...
CPU 1's inode table contains inode 1, inode 5, inode 9, ...
CPU 2's inode table contains i
From: Andiry Xu <jix...@cs.ucsd.edu>
This header file defines NOVA persistent and volatile superblock
data structures.
It also defines NOVA block layout:
Page 0: Superblock
Page 1: Reserved inodes
Page 2 - 15: Reserved
Page 16 - 31: Inode table pointers
Page 32 - 47: Journal address po
From: Andiry Xu <jix...@cs.ucsd.edu>
direct_IO and writepages support.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.c | 24
fs/nova/inode.h | 1 +
2 files changed, 25 insertions(+)
diff --git a/fs/nova/inode.c b/fs/nova/inode.c
i
From: Andiry Xu <jix...@cs.ucsd.edu>
These routines are incomplete and currently only support reserved inodes,
whose addresses are fixed. This is necessary for fill_super to work.
File/dir operations are left NULL.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/i
From: Andiry Xu <jix...@cs.ucsd.edu>
Allocate the new inode in a round-robin way.
Extend the inode table if needed.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.c | 40
fs/nova/inode.h | 1 +
2 files changed, 41 inserti
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/bbuild.c | 48
fs/nova/bbuild.h | 1 +
fs/nova/super.c | 1 +
3 files changed, 50 insertions(+)
diff --git a/fs/nova/bbuild.c b/fs/n
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA allocates/frees log pages and data pages in the same way.
For block free, NOVA first gets the corresponding free list by
checking the block number, and then inserts the freed range in
the red-black tree. NOVA always merge adjacent free ranges if po
From: Andiry Xu <jix...@cs.ucsd.edu>
This file defines NOVA filesystem macros and routines to persist updates
by using Intel persistent memory instruction CLWB or clflush.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/nova
From: Andiry Xu <jix...@cs.ucsd.edu>
Repair broken primary superblock with redundant superblock.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/super.c | 102
1 file changed, 102 insertions(+)
diff --git a/fs/nova/
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/balloc.c | 18 ++
fs/nova/balloc.h | 1 +
fs/nova/super.c | 19 +++
3 files changed, 38 insertions(+)
diff --git a/fs/nova/balloc.c b/fs/nova/balloc.c
i
From: Andiry Xu <jix...@cs.ucsd.edu>
Upon a allocation request, NOVA first try the free list on current CPU.
If there are not enough blocks to allocate, NOVA will go to the
free list with the most free blocks.
Caller can specify allocation direction: from low address or from
high address.
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA allocates one log page for each new inode. When the log is full,
NOVA allocates new log pages, extends the log by either doubling the log size
or increasing by fixed length, depends on log size.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/inode.c | 33 +
fs/nova/inode.h | 2 ++
fs/nova/super.c | 2 ++
3 files changed, 37 insertions(+)
diff --git a/fs/nova/inode.c b/fs/nova/inode.c
i
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/super.c | 55 +++
1 file changed, 55 insertions(+)
diff --git a/fs/nova/super.c b/fs/nova/super.c
index 3efb560..f41cc04 100644
-
From: Andiry Xu <jix...@cs.ucsd.edu>
This is the entry point for NOVA filesystem mount and umount.
NOVA works on DAX devices. During initialization it gets the
device information, such as physical/virtual addresses and device size.
It does not access the DAX device during runtime.
From: Andiry Xu <jix...@cs.ucsd.edu>
This is the second version of RFC patch series that impements
NOVA (NOn-Volatile memory Accelerated file system), a new file system built for
PMEM.
NOVA's goal is to provide a high performance, production-ready
file system tailored for byte-addressab
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/nova.h | 1 +
fs/nova/stats.c | 103
2 files changed, 104 insertions(+)
diff --git a/fs/nova/nova.h b/fs/nova/nova.h
index c4ab
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA divides the pmem range equally among per-CPU free lists,
and format the red-black trees by inserting the initial free range.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/ba
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA uses per-CPU inode map to track inuse inodes.
It works in the same way as the allocator, the only difference is that inode map
tracks in-use inodes, while free list contains free ranges. NOVA always try
to allocate the first available inode
From: Andiry Xu <jix...@cs.ucsd.edu>
Free list is the data structure that NOVA uses to manage free pmem blocks.
Each CPU has its own free list to avoid contention.
Free list manages free pmem blocks (represented in range node) with red-black
tree.
Signed-off-by: Andiry Xu <jix...@cs
From: Andiry Xu <jix...@cs.ucsd.edu>
Range node specifies a range of [start, end]. and is managed by a red-black
tree.
NOVA uses range node to manage NVM allocator and inodes being used.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/nova.h | 8
fs/nova/
From: Andiry Xu <jix...@cs.ucsd.edu>
We allocate log pages and append free range node to the log of the reserved
blocknode inode.
We can recover the allocator status by reading the log upon normal recovery.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/bb
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA log is a singly linked list of 4KB pmem pages.
Each log page consists of two parts: 4064 bytes for log entries,
and 32 bytes for page tail structure. Page tail contains metadata
about the log page and the address of the next log page in the
linke
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/super.c | 25 ++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/fs/nova/super.c b/fs/nova/super.c
index 9295d23..3efb560 100644
--- a/fs/nova/supe
From: Andiry Xu <jix...@cs.ucsd.edu>
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/Kconfig | 2 ++
fs/Makefile | 1 +
fs/nova/Kconfig | 15 +++
fs/nova/Makefile | 7 +++
4 files changed, 25 insertions(+)
create mode 100644 fs/nova/Kconfig
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA is a log-structured file system tailored for byte-addressable non-volatile
memories.
It was designed and developed at the Non-Volatile Systems Laboratory in the
Computer
Science and Engineering Department at the University of California, San Dieg
From: Andiry Xu <jix...@cs.ucsd.edu>
inode.h defines the non-volatile and volatile NOVA inode data structures.
The non-volatile NOVA inode (nova_inode) is aligned to 128 bytes and contains
file/directory metadata information. The most important fields
are log_head and log_tail. log_head
From: Andiry Xu <jix...@cs.ucsd.edu>
NOVA stores offset rather than absolute addresses in pmem.
nova_get_block() and nova_get_addr_off() provide transitions
between these two kinds of addresses.
Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu>
---
fs/nova/
On Tue, Feb 27, 2018 at 1:41 PM, Dave Chinner <da...@fromorbit.com> wrote:
> On Tue, Feb 27, 2018 at 11:15:55AM -0800, Andiry Xu wrote:
>> Hi,
>>
>> I encounter a problem when running xfstests on NOVA. I appreciate your
>> help very much.
>>
>> Som
Hi,
I encounter a problem when running xfstests on NOVA. I appreciate your
help very much.
Some background: NOVA adopts a per-inode logging design. Metadata
changes are appended to the log and persisted before returning to the
user space. For example, a write() in NOVA works like this:
Allocate
PMEM/DAX should allow for significant improvements in file system
performance and enable new programming models that allow direct,
efficient access to PMEM from userspace. Achieving these gains in
existing file systems built for block devices (e.g., XFS and EXT4…)
presents a range of challenges
On Tue, Jan 17, 2017 at 4:16 PM, Andreas Dilger <adil...@dilger.ca> wrote:
> On Jan 17, 2017, at 3:15 PM, Andiry Xu <and...@gmail.com> wrote:
>> On Tue, Jan 17, 2017 at 1:35 PM, Vishal Verma <vishal.l.ve...@intel.com>
>> wrote:
>>> On 01/16, Darrick J. W
On Tue, Jan 17, 2017 at 3:51 PM, Vishal Verma <vishal.l.ve...@intel.com> wrote:
> On 01/17, Andiry Xu wrote:
>
>
>
>> >>
>> >> The pmem_do_bvec() read logic is like this:
>> >>
>> >> pmem_do_bvec()
>
On Tue, Jan 17, 2017 at 2:37 PM, Vishal Verma <vishal.l.ve...@intel.com> wrote:
> On 01/17, Andiry Xu wrote:
>> Hi,
>>
>> On Tue, Jan 17, 2017 at 1:35 PM, Vishal Verma <vishal.l.ve...@intel.com>
>> wrote:
>> > On 01/16, Darrick J. Wong wrote:
>&g
Hi,
On Tue, Jan 17, 2017 at 1:35 PM, Vishal Verma wrote:
> On 01/16, Darrick J. Wong wrote:
>> On Fri, Jan 13, 2017 at 05:49:10PM -0700, Vishal Verma wrote:
>> > On 01/14, Slava Dubeyko wrote:
>> > >
>> > > Original Message
>> > > Subject: [LSF/MM TOPIC]
94 matches
Mail list logo