Hi Chao, Thanks for your reply. This patch originates from the our sdcardfs compatible case-insensitive lookup acceleration.
For the customized case-insensitive create operation since f2fs has no hash and it needs to decrypt all the dirent name, it is recommended to read ahead the whole dir data in advance. However I found f2fs cannot use page_cache_sync_readahead with null @file pointer as the other common Linux file system, this feature is something like a bonus and I know that Linux has no written words that we should support null @file pointer, yet page_cache_sync_readahead is an EXPORT_SYMBOL_GPL and could be used by other non-standard 3rd kernel modules and of course I think it is really no problem. Anyway, if it has no use to the community, I will apply it only on the internal branch. And I will also find some common examples of data page readahead. :) Thanks, > -----Original Message----- > From: Chao Yu [mailto:[email protected]] > Sent: Thursday, September 21, 2017 10:33 PM > To: gaoxiang (P) <[email protected]>; [email protected]; Yuchao (T) > <[email protected]> > Cc: [email protected] > Subject: Re: [f2fs-dev] [PATCH] f2fs: allow readpages with NULL file pointer > > On 2017/9/21 13:00, gaoxiang (P) wrote: > > Keep in line with the other Linux file system implementations since > > page_cache_sync_readahead supports NULL file pointer, and thus we can > > readahead data by f2fs itself without file opening (something like the > > btrfs behavior). > > Let's keep what it is until there is an example doing readahead passing @file > with NULL. > > Thanks, > > > > > Signed-off-by: Gao Xiang <[email protected]> > > --- > > fs/f2fs/data.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 95f30f0..afa12f1 > > 100644 > > --- a/fs/f2fs/data.c > > +++ b/fs/f2fs/data.c > > @@ -1333,9 +1333,11 @@ static int f2fs_read_data_pages(struct file *file, > > struct address_space *mapping, > > struct list_head *pages, unsigned nr_pages) { > > - struct inode *inode = file->f_mapping->host; > > + struct inode *inode = mapping->host; > > struct page *page = list_last_entry(pages, struct page, lru); > > > > + if (likely(file != NULL)) > > + BUG_ON(file->f_mapping != mapping); > > trace_f2fs_readpages(inode, page, nr_pages); > > > > /* If the file has inline data, skip readpages */ > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
