NFS: Read pages from FS-Cache into an NFS inode
Read pages from an FS-Cache data storage object representing an inode into an NFS inode. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Steve Dickson <steved@redhat.com> Acked-by: Trond Myklebust <Trond.Myklebust@netapp.com> Acked-by: Al Viro <viro@zeniv.linux.org.uk> Tested-by: Daire Byrne <Daire.Byrne@framestore.com>
This commit is contained in:
@@ -86,6 +86,12 @@ extern void nfs_fscache_reset_inode_cookie(struct inode *);
|
||||
extern void __nfs_fscache_invalidate_page(struct page *, struct inode *);
|
||||
extern int nfs_fscache_release_page(struct page *, gfp_t);
|
||||
|
||||
extern int __nfs_readpage_from_fscache(struct nfs_open_context *,
|
||||
struct inode *, struct page *);
|
||||
extern int __nfs_readpages_from_fscache(struct nfs_open_context *,
|
||||
struct inode *, struct address_space *,
|
||||
struct list_head *, unsigned *);
|
||||
|
||||
/*
|
||||
* wait for a page to complete writing to the cache
|
||||
*/
|
||||
@@ -107,6 +113,32 @@ static inline void nfs_fscache_invalidate_page(struct page *page,
|
||||
__nfs_fscache_invalidate_page(page, inode);
|
||||
}
|
||||
|
||||
/*
|
||||
* Retrieve a page from an inode data storage object.
|
||||
*/
|
||||
static inline int nfs_readpage_from_fscache(struct nfs_open_context *ctx,
|
||||
struct inode *inode,
|
||||
struct page *page)
|
||||
{
|
||||
if (NFS_I(inode)->fscache)
|
||||
return __nfs_readpage_from_fscache(ctx, inode, page);
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
/*
|
||||
* Retrieve a set of pages from an inode data storage object.
|
||||
*/
|
||||
static inline int nfs_readpages_from_fscache(struct nfs_open_context *ctx,
|
||||
struct inode *inode,
|
||||
struct address_space *mapping,
|
||||
struct list_head *pages,
|
||||
unsigned *nr_pages)
|
||||
{
|
||||
if (NFS_I(inode)->fscache)
|
||||
return __nfs_readpages_from_fscache(ctx, inode, mapping, pages,
|
||||
nr_pages);
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
#else /* CONFIG_NFS_FSCACHE */
|
||||
static inline int nfs_fscache_register(void) { return 0; }
|
||||
@@ -138,5 +170,20 @@ static inline void nfs_fscache_invalidate_page(struct page *page,
|
||||
static inline void nfs_fscache_wait_on_page_write(struct nfs_inode *nfsi,
|
||||
struct page *page) {}
|
||||
|
||||
static inline int nfs_readpage_from_fscache(struct nfs_open_context *ctx,
|
||||
struct inode *inode,
|
||||
struct page *page)
|
||||
{
|
||||
return -ENOBUFS;
|
||||
}
|
||||
static inline int nfs_readpages_from_fscache(struct nfs_open_context *ctx,
|
||||
struct inode *inode,
|
||||
struct address_space *mapping,
|
||||
struct list_head *pages,
|
||||
unsigned *nr_pages)
|
||||
{
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_NFS_FSCACHE */
|
||||
#endif /* _NFS_FSCACHE_H */
|
||||
|
Reference in New Issue
Block a user