Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/fs/ceph/cache.h
26282 views
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 ([email protected])
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
17
int ceph_fscache_register_fs(struct ceph_fs_client* fsc, struct fs_context *fc);
18
void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc);
19
20
void ceph_fscache_register_inode_cookie(struct inode *inode);
21
void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci);
22
23
void ceph_fscache_use_cookie(struct inode *inode, bool will_modify);
24
void ceph_fscache_unuse_cookie(struct inode *inode, bool update);
25
26
void ceph_fscache_update(struct inode *inode);
27
void ceph_fscache_invalidate(struct inode *inode, bool dio_write);
28
29
static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci)
30
{
31
return netfs_i_cookie(&ci->netfs);
32
}
33
34
static 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
46
static 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
54
static 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 */
60
static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc,
61
struct fs_context *fc)
62
{
63
return 0;
64
}
65
66
static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc)
67
{
68
}
69
70
static inline void ceph_fscache_register_inode_cookie(struct inode *inode)
71
{
72
}
73
74
static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci)
75
{
76
}
77
78
static inline void ceph_fscache_use_cookie(struct inode *inode, bool will_modify)
79
{
80
}
81
82
static inline void ceph_fscache_unuse_cookie(struct inode *inode, bool update)
83
{
84
}
85
86
static inline void ceph_fscache_update(struct inode *inode)
87
{
88
}
89
90
static inline void ceph_fscache_invalidate(struct inode *inode, bool dio_write)
91
{
92
}
93
94
static inline struct fscache_cookie *ceph_fscache_cookie(struct ceph_inode_info *ci)
95
{
96
return NULL;
97
}
98
99
static inline void ceph_fscache_resize(struct inode *inode, loff_t to)
100
{
101
}
102
103
static 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
111
static inline bool ceph_is_cache_enabled(struct inode *inode)
112
{
113
return false;
114
}
115
#endif /* CONFIG_CEPH_FSCACHE */
116
117
#endif
118
119