Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  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 */