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