linux/fs/ceph/cache.h
<<
>>
Prefs
   1/*
   2 * Ceph cache definitions.
   3 *
   4 *  Copyright (C) 2013 by Adfin Solutions, Inc. All Rights Reserved.
   5 *  Written by Milosz Tanski (milosz@adfin.com)
   6 *
   7 *  This program is free software; you can redistribute it and/or modify
   8 *  it under the terms of the GNU General Public License version 2
   9 *  as published by the Free Software Foundation.
  10 *
  11 *  This program is distributed in the hope that it will be useful,
  12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 *  GNU General Public License for more details.
  15 *
  16 *  You should have received a copy of the GNU General Public License
  17 *  along with this program; if not, write to:
  18 *  Free Software Foundation
  19 *  51 Franklin Street, Fifth Floor
  20 *  Boston, MA  02111-1301  USA
  21 *
  22 */
  23
  24#ifndef _CEPH_CACHE_H
  25#define _CEPH_CACHE_H
  26
  27#ifdef CONFIG_CEPH_FSCACHE
  28
  29extern struct fscache_netfs ceph_cache_netfs;
  30
  31int ceph_fscache_register(void);
  32void ceph_fscache_unregister(void);
  33
  34int ceph_fscache_register_fs(struct ceph_fs_client* fsc);
  35void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc);
  36
  37void ceph_fscache_inode_init(struct ceph_inode_info *ci);
  38void ceph_fscache_register_inode_cookie(struct ceph_fs_client* fsc,
  39                                        struct ceph_inode_info* ci);
  40void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci);
  41
  42int ceph_readpage_from_fscache(struct inode *inode, struct page *page);
  43int ceph_readpages_from_fscache(struct inode *inode,
  44                                struct address_space *mapping,
  45                                struct list_head *pages,
  46                                unsigned *nr_pages);
  47void ceph_readpage_to_fscache(struct inode *inode, struct page *page);
  48void ceph_invalidate_fscache_page(struct inode* inode, struct page *page);
  49void ceph_queue_revalidate(struct inode *inode);
  50
  51static inline void ceph_fscache_invalidate(struct inode *inode)
  52{
  53        fscache_invalidate(ceph_inode(inode)->fscache);
  54}
  55
  56static inline void ceph_fscache_uncache_page(struct inode *inode,
  57                                             struct page *page)
  58{
  59        struct ceph_inode_info *ci = ceph_inode(inode);
  60        return fscache_uncache_page(ci->fscache, page);
  61}
  62
  63static inline int ceph_release_fscache_page(struct page *page, gfp_t gfp)
  64{
  65        struct inode* inode = page->mapping->host;
  66        struct ceph_inode_info *ci = ceph_inode(inode);
  67        return fscache_maybe_release_page(ci->fscache, page, gfp);
  68}
  69
  70static inline void ceph_fscache_readpages_cancel(struct inode *inode,
  71                                                 struct list_head *pages)
  72{
  73        struct ceph_inode_info *ci = ceph_inode(inode);
  74        return fscache_readpages_cancel(ci->fscache, pages);
  75}
  76
  77#else
  78
  79static inline int ceph_fscache_register(void)
  80{
  81        return 0;
  82}
  83
  84static inline void ceph_fscache_unregister(void)
  85{
  86}
  87
  88static inline int ceph_fscache_register_fs(struct ceph_fs_client* fsc)
  89{
  90        return 0;
  91}
  92
  93static inline void ceph_fscache_unregister_fs(struct ceph_fs_client* fsc)
  94{
  95}
  96
  97static inline void ceph_fscache_inode_init(struct ceph_inode_info *ci)
  98{
  99}
 100
 101static inline void ceph_fscache_register_inode_cookie(struct ceph_fs_client* parent_fsc,
 102                                                      struct ceph_inode_info* ci)
 103{
 104}
 105
 106static inline void ceph_fscache_uncache_page(struct inode *inode,
 107                                             struct page *pages)
 108{
 109}
 110
 111static inline int ceph_readpage_from_fscache(struct inode* inode,
 112                                             struct page *page)
 113{
 114        return -ENOBUFS;
 115}
 116
 117static inline int ceph_readpages_from_fscache(struct inode *inode,
 118                                              struct address_space *mapping,
 119                                              struct list_head *pages,
 120                                              unsigned *nr_pages)
 121{
 122        return -ENOBUFS;
 123}
 124
 125static inline void ceph_readpage_to_fscache(struct inode *inode,
 126                                            struct page *page)
 127{
 128}
 129
 130static inline void ceph_fscache_invalidate(struct inode *inode)
 131{
 132}
 133
 134static inline void ceph_invalidate_fscache_page(struct inode *inode,
 135                                                struct page *page)
 136{
 137}
 138
 139static inline void ceph_fscache_unregister_inode_cookie(struct ceph_inode_info* ci)
 140{
 141}
 142
 143static inline int ceph_release_fscache_page(struct page *page, gfp_t gfp)
 144{
 145        return 1;
 146}
 147
 148static inline void ceph_fscache_readpages_cancel(struct inode *inode,
 149                                                 struct list_head *pages)
 150{
 151}
 152
 153static inline void ceph_queue_revalidate(struct inode *inode)
 154{
 155}
 156
 157#endif
 158
 159#endif
 160