Re: [RFC v2 06/83] Add inode get/read methods.

2018-04-23 Thread Andiry Xu
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

Re: [RFC v2 06/83] Add inode get/read methods.

2018-04-23 Thread Andiry Xu
On Sun, Apr 22, 2018 at 11:12 PM, Darrick J. Wong 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 >> >> These routines are incomplete and currently only support reserved

Re: [RFC v2 83/83] Sysfs support.

2018-03-22 Thread Andiry Xu
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. >>

Re: [RFC v2 83/83] Sysfs support.

2018-03-22 Thread Andiry Xu
On Thu, Mar 22, 2018 at 8:00 AM, David Sterba wrote: > On Sat, Mar 10, 2018 at 10:19:04AM -0800, Andiry Xu wrote: >> From: Andiry Xu >> >> Sysfs support allows user to get/post information of running NOVA instance. >> After mount, NOVA creates four entries under proc

Re: [RFC v2 01/83] Introduction and documentation of NOVA filesystem.

2018-03-19 Thread Andiry Xu
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

Re: [RFC v2 01/83] Introduction and documentation of NOVA filesystem.

2018-03-19 Thread Andiry Xu
Thanks for all the comments. On Mon, Mar 19, 2018 at 1:43 PM, Randy Dunlap wrote: > On 03/10/2018 10:17 AM, Andiry Xu wrote: >> From: Andiry Xu >> >> NOVA is a log-structured file system tailored for byte-addressable >> non-volatile memories. >> It was

Re: [RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-19 Thread Andiry Xu
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

Re: [RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-19 Thread Andiry Xu
On Mon, Mar 19, 2018 at 1:30 PM, Eric Biggers 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 wrote: >> > On Sun, Mar 11, 2018 at 02:00:13PM +0200, Nikolay Borisov wrote: >> >> [Ad

Re: [RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-19 Thread Andiry Xu
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

Re: [RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-19 Thread Andiry Xu
On Sun, Mar 11, 2018 at 12:22 PM, Eric Biggers 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, Andiry Xu wrote: >

Re: [RFC v2 03/83] Add super.h.

2018-03-16 Thread Andiry Xu
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,

Re: [RFC v2 03/83] Add super.h.

2018-03-16 Thread Andiry Xu
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, so at best one

Re: [RFC v2 03/83] Add super.h.

2018-03-15 Thread Andiry Xu
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,

Re: [RFC v2 03/83] Add super.h.

2018-03-15 Thread Andiry Xu
On Thu, Mar 15, 2018 at 2:05 AM, Arnd Bergmann wrote: > On Thu, Mar 15, 2018 at 7:11 AM, Andiry Xu wrote: >> On Wed, Mar 14, 2018 at 9:54 PM, Darrick J. Wong >> wrote: >>> On Sat, Mar 10, 2018 at 10:17:44AM -0800, Andiry Xu wrote: > >>>> + /*

Re: [RFC v2 04/83] NOVA inode definition.

2018-03-15 Thread Andiry Xu
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.

Re: [RFC v2 04/83] NOVA inode definition.

2018-03-15 Thread Andiry Xu
On Wed, Mar 14, 2018 at 10:06 PM, Darrick J. Wong wrote: > On Sat, Mar 10, 2018 at 10:17:45AM -0800, Andiry Xu wrote: >> From: Andiry Xu >> >> inode.h defines the non-volatile and volatile NOVA inode data structures. >> >> The non-volatile NOVA inode (no

Re: [RFC v2 03/83] Add super.h.

2018-03-15 Thread Andiry Xu
On Wed, Mar 14, 2018 at 9:54 PM, Darrick J. Wong <darrick.w...@oracle.com> wrote: > On Sat, Mar 10, 2018 at 10:17:44AM -0800, Andiry Xu wrote: >> From: Andiry Xu <jix...@cs.ucsd.edu> >> >> This header file defines NOVA persistent and volatile superblock >>

Re: [RFC v2 03/83] Add super.h.

2018-03-15 Thread Andiry Xu
On Wed, Mar 14, 2018 at 9:54 PM, Darrick J. Wong wrote: > On Sat, Mar 10, 2018 at 10:17:44AM -0800, Andiry Xu wrote: >> From: Andiry Xu >> >> This header file defines NOVA persistent and volatile superblock >> data structures. >> >> It also defines NOVA

Re: [RFC v2 83/83] Sysfs support.

2018-03-15 Thread Andiry Xu
On Wed, Mar 14, 2018 at 5:33 PM, Randy Dunlap <rdun...@infradead.org> wrote: > On 03/10/2018 10:19 AM, Andiry Xu wrote: >> Sysfs support allows user to get/post information of running NOVA instance. >> After mount, NOVA creates four entries under proc directory

Re: [RFC v2 83/83] Sysfs support.

2018-03-15 Thread Andiry Xu
On Wed, Mar 14, 2018 at 5:33 PM, Randy Dunlap wrote: > On 03/10/2018 10:19 AM, Andiry Xu wrote: >> 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#/: >>

Re: [RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-11 Thread Andiry Xu
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

Re: [RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-11 Thread Andiry Xu
On Sun, Mar 11, 2018 at 12:22 PM, Eric Biggers 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, Andiry Xu wrote: >

Re: [RFC v2 09/83] Add Kconfig and Makefile

2018-03-11 Thread Andiry Xu
On Sun, Mar 11, 2018 at 5:15 AM, Nikolay Borisov <n.borisov.l...@gmail.com> wrote: > > > On 10.03.2018 20:17, Andiry Xu wrote: >> From: Andiry Xu <jix...@cs.ucsd.edu> >> >> Signed-off-by: Andiry Xu <jix...@cs.ucsd.edu> >> --- >> fs/Kcon

Re: [RFC v2 09/83] Add Kconfig and Makefile

2018-03-11 Thread Andiry Xu
On Sun, Mar 11, 2018 at 5:15 AM, Nikolay Borisov wrote: > > > On 10.03.2018 20:17, Andiry Xu wrote: >> From: Andiry Xu >> >> Signed-off-by: Andiry Xu >> --- >> fs/Kconfig | 2 ++ >> fs/Makefile | 1 + >> fs/nova/Kconfig | 15

Re: [RFC v2 14/83] Add range node kmem cache.

2018-03-11 Thread Andiry Xu
On Sun, Mar 11, 2018 at 4:55 AM, Nikolay Borisov <n.borisov.l...@gmail.com> wrote: > > > On 10.03.2018 20:17, Andiry Xu wrote: >> From: Andiry Xu <jix...@cs.ucsd.edu> >> >> Range node specifies a range of [start, end]. and is managed by a red-black >>

Re: [RFC v2 14/83] Add range node kmem cache.

2018-03-11 Thread Andiry Xu
On Sun, Mar 11, 2018 at 4:55 AM, Nikolay Borisov wrote: > > > On 10.03.2018 20:17, Andiry Xu wrote: >> From: Andiry Xu >> >> Range node specifies a range of [start, end]. and is managed by a red-black >> tree. >> NOVA uses range node to manage NVM alloca

Re: [RFC v2 16/83] Initialize block map and free lists in nova_init().

2018-03-11 Thread Andiry Xu
On Sun, Mar 11, 2018 at 5:12 AM, Nikolay Borisov <n.borisov.l...@gmail.com> wrote: > > > On 10.03.2018 20:17, Andiry Xu wrote: >> From: Andiry Xu <jix...@cs.ucsd.edu> >> >> NOVA divides the pmem range equally among per-CPU free lists, >> and format the

Re: [RFC v2 16/83] Initialize block map and free lists in nova_init().

2018-03-11 Thread Andiry Xu
On Sun, Mar 11, 2018 at 5:12 AM, Nikolay Borisov wrote: > > > On 10.03.2018 20:17, Andiry Xu wrote: >> From: Andiry Xu >> >> NOVA divides the pmem range equally among per-CPU free lists, >> and format the red-black trees by inserting the initial free rang

Re: [RFC v2 00/83] NOVA: a new file system for persistent memory

2018-03-10 Thread Andiry Xu
On Sat, Mar 10, 2018 at 6:14 PM, Theodore Y. Ts'o wrote: > FYI, your patch set doesn't even compile for me without these fixups. > I'm not sure why you were trying to declare inline functions in a > header file without the function body? > Thanks for catching this. I will fix it

Re: [RFC v2 00/83] NOVA: a new file system for persistent memory

2018-03-10 Thread Andiry Xu
On Sat, Mar 10, 2018 at 6:14 PM, Theodore Y. Ts'o wrote: > FYI, your patch set doesn't even compile for me without these fixups. > I'm not sure why you were trying to declare inline functions in a > header file without the function body? > Thanks for catching this. I will fix it in the next

[RFC v2 04/83] NOVA inode definition.

2018-03-10 Thread Andiry Xu
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

[RFC v2 04/83] NOVA inode definition.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 points to the start

[RFC v2 03/83] Add super.h.

2018-03-10 Thread Andiry Xu
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

[RFC v2 03/83] Add super.h.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 pointers Page 48 - 63: Reserved

[RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-10 Thread Andiry Xu
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/

[RFC v2 05/83] Add NOVA filesystem definitions and useful helper routines.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/nova.h | 299 + 1 file

[RFC v2 06/83] Add inode get/read methods.

2018-03-10 Thread Andiry Xu
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

[RFC v2 06/83] Add inode get/read methods.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/inode.c | 176

[RFC v2 02/83] Add nova_def.h.

2018-03-10 Thread Andiry Xu
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

[RFC v2 02/83] Add nova_def.h.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/nova_def.h | 128 + 1 file changed, 128 insertions

[RFC v2 08/83] NOVA superblock operations.

2018-03-10 Thread Andiry Xu
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.

[RFC v2 08/83] NOVA superblock operations.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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. During initialization NOVA also

[RFC v2 09/83] Add Kconfig and Makefile

2018-03-10 Thread Andiry Xu
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

[RFC v2 09/83] Add Kconfig and Makefile

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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 create mode 100644 fs/nova/Makefile diff --git a/fs

[RFC v2 15/83] Add free list data structure.

2018-03-10 Thread Andiry Xu
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

[RFC v2 07/83] Initialize inode_info and rebuild inode information in nova_iget().

2018-03-10 Thread Andiry Xu
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

[RFC v2 15/83] Add free list data structure.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/Makefile | 2 +- fs/nova

[RFC v2 07/83] Initialize inode_info and rebuild inode information in nova_iget().

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/bbuild.c | 53 + fs/nova

[RFC v2 11/83] Add timing and I/O statistics for performance analysis and profiling.

2018-03-10 Thread Andiry Xu
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 ++

[RFC v2 11/83] Add timing and I/O statistics for performance analysis and profiling.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- fs/nova/Makefile | 2 +- fs/nova/nova.h | 12 +++ fs/nova/stats.c | 263 +++ fs/nova/stats.h | 178 + fs/nova/super.c | 6 ++ 5 files changed, 460

[RFC v2 12/83] Add timing for mount and init.

2018-03-10 Thread Andiry Xu
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

[RFC v2 12/83] Add timing for mount and init.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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/super.c +++ b/fs/nova/super.c @@ -347,6 +347,9 @@ static

[RFC v2 14/83] Add range node kmem cache.

2018-03-10 Thread Andiry Xu
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/

[RFC v2 14/83] Add range node kmem cache.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/nova.h | 8 fs/nova/super.c | 45

[RFC v2 16/83] Initialize block map and free lists in nova_init().

2018-03-10 Thread Andiry Xu
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

[RFC v2 16/83] Initialize block map and free lists in nova_init().

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/balloc.c | 161 +++ fs/nova/balloc.h | 13 - fs/nova

[RFC v2 19/83] Add pmem block free routines.

2018-03-10 Thread Andiry Xu
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

[RFC v2 17/83] Add statfs support.

2018-03-10 Thread Andiry Xu
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

[RFC v2 13/83] Add remount_fs and show_options methods.

2018-03-10 Thread Andiry Xu
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 -

[RFC v2 17/83] Add statfs support.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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 index cb627db..0742fe0 100644 --- a/fs/nova/balloc.c

[RFC v2 13/83] Add remount_fs and show_options methods.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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 --- a/fs/nova/super.c +++ b/fs/nova/super.c @@ -617,6

[RFC v2 19/83] Add pmem block free routines.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 possible. Signed-off

[RFC v2 20/83] Pmem block allocation routines.

2018-03-10 Thread Andiry Xu
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.

[RFC v2 20/83] Pmem block allocation routines.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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. Signed-off-by: Andiry Xu

[RFC v2 18/83] Add freelist statistics printing.

2018-03-10 Thread Andiry Xu
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

[RFC v2 18/83] Add freelist statistics printing.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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 c4abdd8..404e133 100644 --- a/fs/nova/nova.h +++ b/fs

[RFC v2 23/83] Save allocator to pmem in put_super.

2018-03-10 Thread Andiry Xu
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

[RFC v2 23/83] Save allocator to pmem in put_super.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/bbuild.c | 114

[RFC v2 22/83] Inode log pages allocation and reclaimation.

2018-03-10 Thread Andiry Xu
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>

[RFC v2 22/83] Inode log pages allocation and reclaimation.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/Makefile | 2 +- fs/nova/log.c

[RFC v2 21/83] Add log structure.

2018-03-10 Thread Andiry Xu
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

[RFC v2 21/83] Add log structure.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 linked list. Signed-off

[RFC v2 26/83] Add inode_map to track inuse inodes.

2018-03-10 Thread Andiry Xu
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

[RFC v2 26/83] Add inode_map to track inuse inodes.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 number. Signed-off-by: Andiry Xu

[RFC v2 24/83] Initialize and allocate inode table.

2018-03-10 Thread Andiry Xu
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/

[RFC v2 24/83] Initialize and allocate inode table.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/inode.c | 55

[RFC v2 27/83] Save the inode inuse list to pmem upon umount

2018-03-10 Thread Andiry Xu
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

[RFC v2 27/83] Save the inode inuse list to pmem upon umount

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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/nova/bbuild.c index 12a2f11..66053cb 100644 --- a/fs/nova

[RFC v2 25/83] Support get normal inode address and inode table extentsion.

2018-03-10 Thread Andiry Xu
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

[RFC v2 25/83] Support get normal inode address and inode table extentsion.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 inode 2, inode 6, inode 10

[RFC v2 31/83] Add new vfs inode allocation.

2018-03-10 Thread Andiry Xu
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

[RFC v2 28/83] Add NOVA address space operations

2018-03-10 Thread Andiry Xu
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

[RFC v2 31/83] Add new vfs inode allocation.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/inode.c | 144 +++- fs/nova

[RFC v2 28/83] Add NOVA address space operations

2018-03-10 Thread Andiry Xu
From: Andiry Xu direct_IO and writepages support. Signed-off-by: Andiry Xu --- 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 index 7c10d0e..a30b6aa 100644 --- a/fs/nova/inode.c +++ b/fs

[RFC v2 29/83] Add write_inode and dirty_inode routines.

2018-03-10 Thread Andiry Xu
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

[RFC v2 32/83] Add log entry definitions.

2018-03-10 Thread Andiry Xu
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

[RFC v2 29/83] Add write_inode and dirty_inode routines.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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 index a30b6aa..29d172a 100644 --- a/fs/nova/inode.c +++ b/fs

[RFC v2 32/83] Add log entry definitions.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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, Setattr entry is used

[RFC v2 33/83] Inode log and entry printing for debug purpose.

2018-03-10 Thread Andiry Xu
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

[RFC v2 33/83] Inode log and entry printing for debug purpose.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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 bf4b6ac..03c4991 100644 --- a/fs/nova/nova.h +++ b/fs

[RFC v2 36/83] Journal: Lite journal recovery.

2018-03-10 Thread Andiry Xu
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 -

[RFC v2 34/83] Journal: NOVA light weight journal definitions.

2018-03-10 Thread Andiry Xu
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

[RFC v2 36/83] Journal: Lite journal recovery.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Signed-off-by: Andiry Xu --- 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 --- a/fs/nova/journal.c +++ b/fs/nova/journal.c

[RFC v2 34/83] Journal: NOVA light weight journal definitions.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 reside in the reserved journal

[RFC v2 38/83] Journal: NOVA lite journal initialization.

2018-03-10 Thread Andiry Xu
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

[RFC v2 30/83] New NOVA inode allocation.

2018-03-10 Thread Andiry Xu
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

[RFC v2 38/83] Journal: NOVA lite journal initialization.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 Xu --- fs/nova/journal.c

[RFC v2 30/83] New NOVA inode allocation.

2018-03-10 Thread Andiry Xu
From: Andiry Xu Allocate the new inode in a round-robin way. Extend the inode table if needed. Signed-off-by: Andiry Xu --- fs/nova/inode.c | 40 fs/nova/inode.h | 1 + 2 files changed, 41 insertions(+) diff --git a/fs/nova/inode.c b/fs/nova/inode.c

[RFC v2 39/83] Log operation: dentry append.

2018-03-10 Thread Andiry Xu
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

[RFC v2 39/83] Log operation: dentry append.

2018-03-10 Thread Andiry Xu
From: Andiry Xu 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 --- fs/nova/log.c | 162 ++ fs/nova/log.h | 4 ++ 2 files

  1   2   3   >