1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * V9FS cache definitions.
5 * Copyright (C) 2009 by Abhishek Kulkarni <adkulkar@umail.iu.edu>
10 #ifdef CONFIG_9P_FSCACHE
11 #include <linux/fscache.h>
12 #include <linux/spinlock.h>
14 extern struct fscache_netfs v9fs_cache_netfs;
15 extern const struct fscache_cookie_def v9fs_cache_session_index_def;
16 extern const struct fscache_cookie_def v9fs_cache_inode_index_def;
18 extern void v9fs_cache_session_get_cookie(struct v9fs_session_info *v9ses);
19 extern void v9fs_cache_session_put_cookie(struct v9fs_session_info *v9ses);
21 extern void v9fs_cache_inode_get_cookie(struct inode *inode);
22 extern void v9fs_cache_inode_put_cookie(struct inode *inode);
23 extern void v9fs_cache_inode_flush_cookie(struct inode *inode);
24 extern void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *filp);
25 extern void v9fs_cache_inode_reset_cookie(struct inode *inode);
27 extern int __v9fs_cache_register(void);
28 extern void __v9fs_cache_unregister(void);
30 extern int __v9fs_fscache_release_page(struct page *page, gfp_t gfp);
31 extern void __v9fs_fscache_invalidate_page(struct page *page);
32 extern int __v9fs_readpage_from_fscache(struct inode *inode,
34 extern int __v9fs_readpages_from_fscache(struct inode *inode,
35 struct address_space *mapping,
36 struct list_head *pages,
38 extern void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page);
39 extern void __v9fs_fscache_wait_on_page_write(struct inode *inode,
42 static inline int v9fs_fscache_release_page(struct page *page,
45 return __v9fs_fscache_release_page(page, gfp);
48 static inline void v9fs_fscache_invalidate_page(struct page *page)
50 __v9fs_fscache_invalidate_page(page);
53 static inline int v9fs_readpage_from_fscache(struct inode *inode,
56 return __v9fs_readpage_from_fscache(inode, page);
59 static inline int v9fs_readpages_from_fscache(struct inode *inode,
60 struct address_space *mapping,
61 struct list_head *pages,
64 return __v9fs_readpages_from_fscache(inode, mapping, pages,
68 static inline void v9fs_readpage_to_fscache(struct inode *inode,
71 if (PageFsCache(page))
72 __v9fs_readpage_to_fscache(inode, page);
75 static inline void v9fs_uncache_page(struct inode *inode, struct page *page)
77 struct v9fs_inode *v9inode = V9FS_I(inode);
78 fscache_uncache_page(v9inode->fscache, page);
79 BUG_ON(PageFsCache(page));
82 static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
85 return __v9fs_fscache_wait_on_page_write(inode, page);
88 #else /* CONFIG_9P_FSCACHE */
90 static inline void v9fs_cache_inode_get_cookie(struct inode *inode)
94 static inline void v9fs_cache_inode_put_cookie(struct inode *inode)
98 static inline void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *file)
102 static inline int v9fs_fscache_release_page(struct page *page,
107 static inline void v9fs_fscache_invalidate_page(struct page *page) {}
109 static inline int v9fs_readpage_from_fscache(struct inode *inode,
115 static inline int v9fs_readpages_from_fscache(struct inode *inode,
116 struct address_space *mapping,
117 struct list_head *pages,
123 static inline void v9fs_readpage_to_fscache(struct inode *inode,
127 static inline void v9fs_uncache_page(struct inode *inode, struct page *page)
130 static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
136 #endif /* CONFIG_9P_FSCACHE */
137 #endif /* _9P_CACHE_H */