blob: 058ea2a043762e5d40444933dde39c12db0010cb [file] [log] [blame]
Thomas Gleixner1f327612019-05-28 09:57:16 -07001/* SPDX-License-Identifier: GPL-2.0-only */
Milosz Tanski99ccbd22013-08-21 17:29:54 -04002/*
3 * Ceph cache definitions.
4 *
5 * Copyright (C) 2013 by Adfin Solutions, Inc. All Rights Reserved.
6 * Written by Milosz Tanski (milosz@adfin.com)
Milosz Tanski99ccbd22013-08-21 17:29:54 -04007 */
8
9#ifndef _CEPH_CACHE_H
10#define _CEPH_CACHE_H
11
Jeff Laytonf0702872020-06-01 10:10:21 -040012#include <linux/netfs.h>
13
Milosz Tanski99ccbd22013-08-21 17:29:54 -040014#ifdef CONFIG_CEPH_FSCACHE
15
Milosz Tanski971f0bd2013-09-06 15:13:18 +000016extern struct fscache_netfs ceph_cache_netfs;
17
Milosz Tanski99ccbd22013-08-21 17:29:54 -040018int ceph_fscache_register(void);
19void ceph_fscache_unregister(void);
20
David Howells82995cc2019-03-25 16:38:32 +000021int ceph_fscache_register_fs(struct ceph_fs_client* fsc, struct fs_context *fc);
Milosz Tanski99ccbd22013-08-21 17:29:54 -040022void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc);
23
Yan, Zheng46b59b22016-05-18 15:25:03 +080024void ceph_fscache_register_inode_cookie(struct inode *inode);
Milosz Tanski99ccbd22013-08-21 17:29:54 -040025void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci);
Yan, Zheng46b59b22016-05-18 15:25:03 +080026void ceph_fscache_file_set_cookie(struct inode *inode, struct file *filp);
Yan, Zhengf7f7e7a2016-05-18 20:31:55 +080027void ceph_fscache_revalidate_cookie(struct ceph_inode_info *ci);
Milosz Tanski99ccbd22013-08-21 17:29:54 -040028
Yan, Zhengf7f7e7a2016-05-18 20:31:55 +080029static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci)
30{
31 ci->fscache = NULL;
Yan, Zhengf7f7e7a2016-05-18 20:31:55 +080032}
Milosz Tanski99ccbd22013-08-21 17:29:54 -040033
Jeff Laytonf0702872020-06-01 10:10:21 -040034static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci)
35{
36 return ci->fscache;
37}
38
Milosz Tanski99ccbd22013-08-21 17:29:54 -040039static inline void ceph_fscache_invalidate(struct inode *inode)
40{
41 fscache_invalidate(ceph_inode(inode)->fscache);
42}
43
Jeff Laytonf0702872020-06-01 10:10:21 -040044static 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
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}
Milosz Tanski99ccbd22013-08-21 17:29:54 -040059#else
60
61static inline int ceph_fscache_register(void)
62{
63 return 0;
64}
65
66static inline void ceph_fscache_unregister(void)
67{
68}
69
David Howells82995cc2019-03-25 16:38:32 +000070static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc,
71 struct fs_context *fc)
Milosz Tanski99ccbd22013-08-21 17:29:54 -040072{
73 return 0;
74}
75
76static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc)
77{
78}
79
80static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci)
81{
82}
83
Jeff Laytonf0702872020-06-01 10:10:21 -040084static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci)
85{
86 return NULL;
87}
88
Yan, Zheng46b59b22016-05-18 15:25:03 +080089static inline void ceph_fscache_register_inode_cookie(struct inode *inode)
90{
91}
92
93static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci)
94{
95}
96
97static inline void ceph_fscache_file_set_cookie(struct inode *inode,
98 struct file *filp)
Milosz Tanski99ccbd22013-08-21 17:29:54 -040099{
100}
101
Milosz Tanski99ccbd22013-08-21 17:29:54 -0400102static inline void ceph_fscache_invalidate(struct inode *inode)
103{
104}
105
Jeff Laytonf0702872020-06-01 10:10:21 -0400106static inline bool ceph_is_cache_enabled(struct inode *inode)
107{
108 return false;
109}
110
111static inline int ceph_begin_cache_operation(struct netfs_read_request *rreq)
112{
113 return -ENOBUFS;
114}
Milosz Tanski99ccbd22013-08-21 17:29:54 -0400115#endif
116
Jeff Laytone7df4522021-01-21 12:32:05 -0500117#endif /* _CEPH_CACHE_H */