118 lines · c
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_H10#define _CEPH_CACHE_H11 12#include <linux/netfs.h>13 14#ifdef CONFIG_CEPH_FSCACHE15#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_folio53 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_folio110 111static inline bool ceph_is_cache_enabled(struct inode *inode)112{113 return false;114}115#endif /* CONFIG_CEPH_FSCACHE */116 117#endif118