[PATCH v8 07/24] erofs: add directory operations

2019-08-14 Thread Gao Xiang
This adds functions for directory, mainly readdir. Signed-off-by: Gao Xiang --- fs/erofs/dir.c | 148 + 1 file changed, 148 insertions(+) create mode 100644 fs/erofs/dir.c diff --git a/fs/erofs/dir.c b/fs/erofs/dir.c new file mode 100644 index

[PATCH v8 09/24] erofs: support tracepoint

2019-08-14 Thread Gao Xiang
Add basic tracepoints for ->readpage{,s}, ->lookup, ->destroy_inode, fill_inode and map_blocks. Signed-off-by: Gao Xiang --- include/trace/events/erofs.h | 241 +++ 1 file changed, 241 insertions(+) create mode 100644 include/trace/events/erofs.h diff --git

[PATCH v8 21/24] erofs: introduce LZ4 decompression inplace

2019-08-14 Thread Gao Xiang
compressed data will be usually loaded into last pages of the extent (the last page for 4k) for in-place decompression (more specifically, in-place IO), as ilustration below, start of compressed logical extent | end of this logical extent |

[PATCH v8 15/24] erofs: introduce erofs shrinker

2019-08-14 Thread Gao Xiang
This patch adds a dedicated shrinker targeting to free unneeded memory consumed by a number of erofs in-memory data structures. Like F2FS and UBIFS, it also adds: - sbi->umount_mutex to avoid races on shrinker and put_super; - sbi->shrinker_run_no to not revisit recently scanned objects.

[PATCH v8 19/24] erofs: add erofs_allocpage()

2019-08-14 Thread Gao Xiang
This patch introduces an temporary _on-stack_ page pool to reuse the freed page directly as much as it can for better performance and release all pages at a time, it also slightly reduces the possibility of the potential memory allocation failure. Signed-off-by: Gao Xiang ---

[PATCH v8 14/24] erofs: introduce superblock registration

2019-08-14 Thread Gao Xiang
In order to introducing shrinker solution for erofs, let's manage all mounted erofs instances at first. Signed-off-by: Gao Xiang --- fs/erofs/Makefile | 2 +- fs/erofs/internal.h | 13 + fs/erofs/super.c| 9 + fs/erofs/utils.c| 32

[PATCH v8 06/24] erofs: support special inode

2019-08-14 Thread Gao Xiang
This patch adds to support special inode, such as block dev, char, socket, pipe inode. Signed-off-by: Gao Xiang --- fs/erofs/inode.c | 32 ++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index

[PATCH v8 23/24] erofs: introduce cached decompression

2019-08-14 Thread Gao Xiang
This patch adds strategies which can be selected by users in order to cache both incomplete ends of compressed physical clusters as a complement of in-place I/O in order to boost random read, but it costs more memory than the in-place I/O only. Signed-off-by: Gao Xiang --- fs/erofs/internal.h |

[PATCH v8 12/24] erofs: introduce tagged pointer

2019-08-14 Thread Gao Xiang
Currently kernel has scattered tagged pointer usages hacked by hand in plain code, without a unique and portable functionset to highlight the tagged pointer itself and wrap these hacked code in order to clean up all over meaningless magic masks. This patch introduces simple generic methods to

[PATCH v8 22/24] erofs: introduce the decompression frontend

2019-08-14 Thread Gao Xiang
This patch introduces the basic inplace fixed-sized output decompression implementation for erofs filesystem. In constant to fixed-sized input compression, it has fixed-sized capacity for each compressed cluster to contain compressed data with the following advantages: 1) improved storage

[PATCH v8 03/24] erofs: add super block operations

2019-08-14 Thread Gao Xiang
This commit adds erofs super block operations, including (u)mount, remount_fs, show_options, statfs, in addition to some private icache management functions. Signed-off-by: Gao Xiang --- fs/erofs/super.c | 437 +++ 1 file changed, 437 insertions(+)

[PATCH v8 18/24] erofs: introduce pagevec for decompression subsystem

2019-08-14 Thread Gao Xiang
For each physical cluster, there is a straight-forward way of allocating a fixed or variable-sized array to record the corresponding file pages for its decompression if we decide to decompress these pages asynchronously (eg. read-ahead case), however it will take variable-sized on-heap memory

[PATCH v8 01/24] erofs: add on-disk layout

2019-08-14 Thread Gao Xiang
This commit adds the on-disk layout header file of erofs. On-disk format is compatible with erofs-staging added in 4.19. In addition, add EROFS_SUPER_MAGIC_V1 to magic.h. Signed-off-by: Gao Xiang --- fs/erofs/erofs_fs.h| 316 +

[PATCH v8 04/24] erofs: add raw address_space operations

2019-08-14 Thread Gao Xiang
This commit adds functions for meta and raw data, and also provides address_space_operations for raw data access. Signed-off-by: Gao Xiang --- fs/erofs/data.c | 419 1 file changed, 419 insertions(+) create mode 100644 fs/erofs/data.c diff

[PATCH v8 24/24] erofs: add document

2019-08-14 Thread Gao Xiang
This documents key features, usage, and on-disk design of erofs. Signed-off-by: Gao Xiang --- Documentation/filesystems/erofs.txt | 225 1 file changed, 225 insertions(+) create mode 100644 Documentation/filesystems/erofs.txt diff --git

[PATCH v8 00/24] erofs: promote erofs from staging v8

2019-08-14 Thread Gao Xiang
[I strip the previous cover letter, the old one can be found in v6: https://lore.kernel.org/r/20190802125347.166018-1-gaoxian...@huawei.com/] We'd like to submit a formal moving patch applied to staging tree for 5.4, before that we'd like to hear if there are some ACKs, suggestions or NAKs,

Re: [PATCH v2] Add flags option to get xattr method paired to __vfs_getxattr

2019-08-14 Thread kbuild test robot
-Salyzyn/Add-flags-option-to-get-xattr-method-paired-to-__vfs_getxattr/20190814-124805 config: nds32-allmodconfig (attached as .config) compiler: nds32le-linux-gcc (GCC) 8.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross

Re: [PATCH v2] Add flags option to get xattr method paired to __vfs_getxattr

2019-08-14 Thread Jan Kara
On Tue 13-08-19 07:55:06, Mark Salyzyn wrote: ... > diff --git a/fs/xattr.c b/fs/xattr.c > index 90dd78f0eb27..71f887518d6f 100644 > --- a/fs/xattr.c > +++ b/fs/xattr.c ... > ssize_t > __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, > -void *value, size_t

[PATCH v2 2/3] staging: erofs: differentiate unsupported on-disk format

2019-08-14 Thread Gao Xiang
For some specific fields, use EOPNOTSUPP instead of EIO for values which look sane but aren't supported right now. Reviewed-by: Chao Yu Signed-off-by: Gao Xiang --- change log from v1: - use EOPNOTSUPP rather than ENOTSUPP pointed by Chao; drivers/staging/erofs/inode.c | 4 ++--

Re: [PATCH RESEND 2/2] staging: erofs: differentiate unsupported on-disk format

2019-08-14 Thread Chao Yu
On 2019/8/14 12:32, Gao Xiang wrote: > For some specific fields, use ENOTSUPP instead of EIO > for values which look sane but aren't supported right now. > > Signed-off-by: Gao Xiang Reviewed-by: Chao Yu > + return -ENOTSUPP; A little bit confused about when we need to use

Re: [PATCH RESEND 1/2] staging: erofs: introduce EFSCORRUPTED and more logs

2019-08-14 Thread Chao Yu
On 2019/8/14 12:32, Gao Xiang wrote: > Previously, EROFS uses EIO to indicate that filesystem is > corrupted as well, but other filesystems tend to use > EUCLEAN instead, let's follow what others do right now. > > Also, add some more prints to the syslog. > > Suggested-by: Pavel Machek >

Re: [PATCH] staging: erofs: removing an extra call to iloc() in fill_inode()

2019-08-14 Thread Gao Xiang
On Wed, Aug 14, 2019 at 09:22:53AM +0530, Pratik Shinde wrote: > Yes.since we already have a function with same name (and we are using it in > same context). > 'inode_loc' was the most meaningful name I could come up with :) > > --Pratik. And one more small suggestion... see the following,