at v6.19-rc4 2.8 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#include <linux/fscache.h> 16 17int ceph_fscache_register_fs(struct ceph_fs_client* fsc, struct fs_context *fc); 18void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc); 19 20void ceph_fscache_register_inode_cookie(struct inode *inode); 21void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci); 22 23void ceph_fscache_use_cookie(struct inode *inode, bool will_modify); 24void ceph_fscache_unuse_cookie(struct inode *inode, bool update); 25 26void ceph_fscache_update(struct inode *inode); 27void ceph_fscache_invalidate(struct inode *inode, bool dio_write); 28 29static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci) 30{ 31 return netfs_i_cookie(&ci->netfs); 32} 33 34static inline void ceph_fscache_resize(struct inode *inode, loff_t to) 35{ 36 struct ceph_inode_info *ci = ceph_inode(inode); 37 struct fscache_cookie *cookie = ceph_fscache_cookie(ci); 38 39 if (cookie) { 40 ceph_fscache_use_cookie(inode, true); 41 fscache_resize_cookie(cookie, to); 42 ceph_fscache_unuse_cookie(inode, true); 43 } 44} 45 46static inline int ceph_fscache_unpin_writeback(struct inode *inode, 47 struct writeback_control *wbc) 48{ 49 return netfs_unpin_writeback(inode, wbc); 50} 51 52#define ceph_fscache_dirty_folio netfs_dirty_folio 53 54static inline bool ceph_is_cache_enabled(struct inode *inode) 55{ 56 return fscache_cookie_enabled(ceph_fscache_cookie(ceph_inode(inode))); 57} 58 59#else /* CONFIG_CEPH_FSCACHE */ 60static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc, 61 struct fs_context *fc) 62{ 63 return 0; 64} 65 66static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc) 67{ 68} 69 70static inline void ceph_fscache_register_inode_cookie(struct inode *inode) 71{ 72} 73 74static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci) 75{ 76} 77 78static inline void ceph_fscache_use_cookie(struct inode *inode, bool will_modify) 79{ 80} 81 82static inline void ceph_fscache_unuse_cookie(struct inode *inode, bool update) 83{ 84} 85 86static inline void ceph_fscache_update(struct inode *inode) 87{ 88} 89 90static inline void ceph_fscache_invalidate(struct inode *inode, bool dio_write) 91{ 92} 93 94static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci) 95{ 96 return NULL; 97} 98 99static inline void ceph_fscache_resize(struct inode *inode, loff_t to) 100{ 101} 102 103static inline int ceph_fscache_unpin_writeback(struct inode *inode, 104 struct writeback_control *wbc) 105{ 106 return 0; 107} 108 109#define ceph_fscache_dirty_folio filemap_dirty_folio 110 111static inline bool ceph_is_cache_enabled(struct inode *inode) 112{ 113 return false; 114} 115#endif /* CONFIG_CEPH_FSCACHE */ 116 117#endif