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

Reply via email to