Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0-only */ 2 : : /* 3 : : * V9FS cache definitions. 4 : : * 5 : : * Copyright (C) 2009 by Abhishek Kulkarni <adkulkar@umail.iu.edu> 6 : : */ 7 : : 8 : : #ifndef _9P_CACHE_H 9 : : #define _9P_CACHE_H 10 : : #ifdef CONFIG_9P_FSCACHE 11 : : #include <linux/fscache.h> 12 : : #include <linux/spinlock.h> 13 : : 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; 17 : : 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); 20 : : 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); 26 : : 27 : : extern int __v9fs_cache_register(void); 28 : : extern void __v9fs_cache_unregister(void); 29 : : 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, 33 : : struct page *page); 34 : : extern int __v9fs_readpages_from_fscache(struct inode *inode, 35 : : struct address_space *mapping, 36 : : struct list_head *pages, 37 : : unsigned *nr_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, 40 : : struct page *page); 41 : : 42 : : static inline int v9fs_fscache_release_page(struct page *page, 43 : : gfp_t gfp) 44 : : { 45 : : return __v9fs_fscache_release_page(page, gfp); 46 : : } 47 : : 48 : : static inline void v9fs_fscache_invalidate_page(struct page *page) 49 : : { 50 : : __v9fs_fscache_invalidate_page(page); 51 : : } 52 : : 53 : : static inline int v9fs_readpage_from_fscache(struct inode *inode, 54 : : struct page *page) 55 : : { 56 : : return __v9fs_readpage_from_fscache(inode, page); 57 : : } 58 : : 59 : : static inline int v9fs_readpages_from_fscache(struct inode *inode, 60 : : struct address_space *mapping, 61 : : struct list_head *pages, 62 : : unsigned *nr_pages) 63 : : { 64 : : return __v9fs_readpages_from_fscache(inode, mapping, pages, 65 : : nr_pages); 66 : : } 67 : : 68 : : static inline void v9fs_readpage_to_fscache(struct inode *inode, 69 : : struct page *page) 70 : : { 71 : : if (PageFsCache(page)) 72 : : __v9fs_readpage_to_fscache(inode, page); 73 : : } 74 : : 75 : : static inline void v9fs_uncache_page(struct inode *inode, struct page *page) 76 : : { 77 : : struct v9fs_inode *v9inode = V9FS_I(inode); 78 : : fscache_uncache_page(v9inode->fscache, page); 79 : : BUG_ON(PageFsCache(page)); 80 : : } 81 : : 82 : : static inline void v9fs_fscache_wait_on_page_write(struct inode *inode, 83 : : struct page *page) 84 : : { 85 : : return __v9fs_fscache_wait_on_page_write(inode, page); 86 : : } 87 : : 88 : : #else /* CONFIG_9P_FSCACHE */ 89 : : 90 : : static inline void v9fs_cache_inode_get_cookie(struct inode *inode) 91 : : { 92 : : } 93 : : 94 : 0 : static inline void v9fs_cache_inode_put_cookie(struct inode *inode) 95 : : { 96 [ # # ]: 0 : } 97 : : 98 : : static inline void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *file) 99 : : { 100 : : } 101 : : 102 : : static inline int v9fs_fscache_release_page(struct page *page, 103 : : gfp_t gfp) { 104 : : return 1; 105 : : } 106 : : 107 : : static inline void v9fs_fscache_invalidate_page(struct page *page) {} 108 : : 109 : 0 : static inline int v9fs_readpage_from_fscache(struct inode *inode, 110 : : struct page *page) 111 : : { 112 : 0 : return -ENOBUFS; 113 : : } 114 : : 115 : 0 : static inline int v9fs_readpages_from_fscache(struct inode *inode, 116 : : struct address_space *mapping, 117 : : struct list_head *pages, 118 : : unsigned *nr_pages) 119 : : { 120 : 0 : return -ENOBUFS; 121 : : } 122 : : 123 : 0 : static inline void v9fs_readpage_to_fscache(struct inode *inode, 124 : : struct page *page) 125 : 0 : {} 126 : : 127 : 0 : static inline void v9fs_uncache_page(struct inode *inode, struct page *page) 128 : 0 : {} 129 : : 130 : 0 : static inline void v9fs_fscache_wait_on_page_write(struct inode *inode, 131 : : struct page *page) 132 : : { 133 [ # # ]: 0 : return; 134 : : } 135 : : 136 : : #endif /* CONFIG_9P_FSCACHE */ 137 : : #endif /* _9P_CACHE_H */