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 #include <linux/netfs.h> 13 14 #ifdef CONFIG_CEPH_FSCACHE 15 16 extern struct fscache_netfs ceph_cache_netfs; 17 18 int ceph_fscache_register(void); 19 void ceph_fscache_unregister(void); 20 21 int ceph_fscache_register_fs(struct ceph_fs_client* fsc, struct fs_context *fc); 22 void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc); 23 24 void ceph_fscache_register_inode_cookie(struct inode *inode); 25 void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci); 26 void ceph_fscache_file_set_cookie(struct inode *inode, struct file *filp); 27 void ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci); 28 ceph_fscache_inode_init(struct ceph_inode_info * ci)29static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci) 30 { 31 ci->fscache = NULL; 32 } 33 ceph_fscache_cookie(struct ceph_inode_info * ci)34static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci) 35 { 36 return ci->fscache; 37 } 38 ceph_fscache_invalidate(struct inode * inode)39static inline void ceph_fscache_invalidate(struct inode *inode) 40 { 41 fscache_invalidate(ceph_inode(inode)->fscache); 42 } 43 ceph_is_cache_enabled(struct inode * inode)44static inline bool ceph_is_cache_enabled(struct inode *inode) 45 { 46 struct fscache_cookie *cookie = ceph_fscache_cookie(ceph_inode(inode)); 47 48 if (!cookie) 49 return false; 50 return fscache_cookie_enabled(cookie); 51 } 52 ceph_begin_cache_operation(struct netfs_read_request * rreq)53static inline int ceph_begin_cache_operation(struct netfs_read_request *rreq) 54 { 55 struct fscache_cookie *cookie = ceph_fscache_cookie(ceph_inode(rreq->inode)); 56 57 return fscache_begin_read_operation(rreq, cookie); 58 } 59 #else 60 ceph_fscache_register(void)61static inline int ceph_fscache_register(void) 62 { 63 return 0; 64 } 65 ceph_fscache_unregister(void)66static inline void ceph_fscache_unregister(void) 67 { 68 } 69 ceph_fscache_register_fs(struct ceph_fs_client * fsc,struct fs_context * fc)70static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc, 71 struct fs_context *fc) 72 { 73 return 0; 74 } 75 ceph_fscache_unregister_fs(struct ceph_fs_client * fsc)76static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc) 77 { 78 } 79 ceph_fscache_inode_init(struct ceph_inode_info * ci)80static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci) 81 { 82 } 83 ceph_fscache_cookie(struct ceph_inode_info * ci)84static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci) 85 { 86 return NULL; 87 } 88 ceph_fscache_register_inode_cookie(struct inode * inode)89static inline void ceph_fscache_register_inode_cookie(struct inode *inode) 90 { 91 } 92 ceph_fscache_unregister_inode_cookie(struct ceph_inode_info * ci)93static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci) 94 { 95 } 96 ceph_fscache_file_set_cookie(struct inode * inode,struct file * filp)97static inline void ceph_fscache_file_set_cookie(struct inode *inode, 98 struct file *filp) 99 { 100 } 101 ceph_fscache_invalidate(struct inode * inode)102static inline void ceph_fscache_invalidate(struct inode *inode) 103 { 104 } 105 ceph_is_cache_enabled(struct inode * inode)106static inline bool ceph_is_cache_enabled(struct inode *inode) 107 { 108 return false; 109 } 110 ceph_begin_cache_operation(struct netfs_read_request * rreq)111static inline int ceph_begin_cache_operation(struct netfs_read_request *rreq) 112 { 113 return -ENOBUFS; 114 } 115 #endif 116 117 #endif /* _CEPH_CACHE_H */ 118