at v5.2 4.2 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Ceph cache definitions. 4 * 5 * Copyright (C) 2013 by Adfin Solutions, Inc. All Rights Reserved. 6 * Written by Milosz Tanski (milosz@adfin.com) 7 */ 8 9#ifndef _CEPH_CACHE_H 10#define _CEPH_CACHE_H 11 12#ifdef CONFIG_CEPH_FSCACHE 13 14extern struct fscache_netfs ceph_cache_netfs; 15 16int ceph_fscache_register(void); 17void ceph_fscache_unregister(void); 18 19int ceph_fscache_register_fs(struct ceph_fs_client* fsc); 20void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc); 21 22void ceph_fscache_register_inode_cookie(struct inode *inode); 23void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci); 24void ceph_fscache_file_set_cookie(struct inode *inode, struct file *filp); 25void ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci); 26 27int ceph_readpage_from_fscache(struct inode *inode, struct page *page); 28int ceph_readpages_from_fscache(struct inode *inode, 29 struct address_space *mapping, 30 struct list_head *pages, 31 unsigned *nr_pages); 32void ceph_readpage_to_fscache(struct inode *inode, struct page *page); 33void ceph_invalidate_fscache_page(struct inode* inode, struct page *page); 34 35static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci) 36{ 37 ci->fscache = NULL; 38 ci->i_fscache_gen = 0; 39} 40 41static inline void ceph_fscache_invalidate(struct inode *inode) 42{ 43 fscache_invalidate(ceph_inode(inode)->fscache); 44} 45 46static inline void ceph_fscache_uncache_page(struct inode *inode, 47 struct page *page) 48{ 49 struct ceph_inode_info *ci = ceph_inode(inode); 50 return fscache_uncache_page(ci->fscache, page); 51} 52 53static inline int ceph_release_fscache_page(struct page *page, gfp_t gfp) 54{ 55 struct inode* inode = page->mapping->host; 56 struct ceph_inode_info *ci = ceph_inode(inode); 57 return fscache_maybe_release_page(ci->fscache, page, gfp); 58} 59 60static inline void ceph_fscache_readpage_cancel(struct inode *inode, 61 struct page *page) 62{ 63 struct ceph_inode_info *ci = ceph_inode(inode); 64 if (fscache_cookie_valid(ci->fscache) && PageFsCache(page)) 65 __fscache_uncache_page(ci->fscache, page); 66} 67 68static inline void ceph_fscache_readpages_cancel(struct inode *inode, 69 struct list_head *pages) 70{ 71 struct ceph_inode_info *ci = ceph_inode(inode); 72 return fscache_readpages_cancel(ci->fscache, pages); 73} 74 75static inline void ceph_disable_fscache_readpage(struct ceph_inode_info *ci) 76{ 77 ci->i_fscache_gen = ci->i_rdcache_gen - 1; 78} 79 80#else 81 82static inline int ceph_fscache_register(void) 83{ 84 return 0; 85} 86 87static inline void ceph_fscache_unregister(void) 88{ 89} 90 91static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc) 92{ 93 return 0; 94} 95 96static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc) 97{ 98} 99 100static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci) 101{ 102} 103 104static inline void ceph_fscache_register_inode_cookie(struct inode *inode) 105{ 106} 107 108static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci) 109{ 110} 111 112static inline void ceph_fscache_file_set_cookie(struct inode *inode, 113 struct file *filp) 114{ 115} 116 117static inline void ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci) 118{ 119} 120 121static inline void ceph_fscache_uncache_page(struct inode *inode, 122 struct page *pages) 123{ 124} 125 126static inline int ceph_readpage_from_fscache(struct inode* inode, 127 struct page *page) 128{ 129 return -ENOBUFS; 130} 131 132static inline int ceph_readpages_from_fscache(struct inode *inode, 133 struct address_space *mapping, 134 struct list_head *pages, 135 unsigned *nr_pages) 136{ 137 return -ENOBUFS; 138} 139 140static inline void ceph_readpage_to_fscache(struct inode *inode, 141 struct page *page) 142{ 143} 144 145static inline void ceph_fscache_invalidate(struct inode *inode) 146{ 147} 148 149static inline void ceph_invalidate_fscache_page(struct inode *inode, 150 struct page *page) 151{ 152} 153 154static inline int ceph_release_fscache_page(struct page *page, gfp_t gfp) 155{ 156 return 1; 157} 158 159static inline void ceph_fscache_readpage_cancel(struct inode *inode, 160 struct page *page) 161{ 162} 163 164static inline void ceph_fscache_readpages_cancel(struct inode *inode, 165 struct list_head *pages) 166{ 167} 168 169static inline void ceph_disable_fscache_readpage(struct ceph_inode_info *ci) 170{ 171} 172 173#endif 174 175#endif