root/fs/9p/cache.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. v9fs_fscache_release_page
  2. v9fs_fscache_invalidate_page
  3. v9fs_readpage_from_fscache
  4. v9fs_readpages_from_fscache
  5. v9fs_readpage_to_fscache
  6. v9fs_uncache_page
  7. v9fs_fscache_wait_on_page_write
  8. v9fs_cache_inode_get_cookie
  9. v9fs_cache_inode_put_cookie
  10. v9fs_cache_inode_set_cookie
  11. v9fs_fscache_release_page
  12. v9fs_fscache_invalidate_page
  13. v9fs_readpage_from_fscache
  14. v9fs_readpages_from_fscache
  15. v9fs_readpage_to_fscache
  16. v9fs_uncache_page
  17. v9fs_fscache_wait_on_page_write

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * V9FS cache definitions.
   4  *
   5  *  Copyright (C) 2009 by Abhishek Kulkarni <adkulkar@umail.iu.edu>
   6  */
   7 
   8 #ifndef _9P_CACHE_H
   9 #define _9P_CACHE_H
  10 #ifdef CONFIG_9P_FSCACHE
  11 #include <linux/fscache.h>
  12 #include <linux/spinlock.h>
  13 
  14 extern struct fscache_netfs v9fs_cache_netfs;
  15 extern const struct fscache_cookie_def v9fs_cache_session_index_def;
  16 extern const struct fscache_cookie_def v9fs_cache_inode_index_def;
  17 
  18 extern void v9fs_cache_session_get_cookie(struct v9fs_session_info *v9ses);
  19 extern void v9fs_cache_session_put_cookie(struct v9fs_session_info *v9ses);
  20 
  21 extern void v9fs_cache_inode_get_cookie(struct inode *inode);
  22 extern void v9fs_cache_inode_put_cookie(struct inode *inode);
  23 extern void v9fs_cache_inode_flush_cookie(struct inode *inode);
  24 extern void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *filp);
  25 extern void v9fs_cache_inode_reset_cookie(struct inode *inode);
  26 
  27 extern int __v9fs_cache_register(void);
  28 extern void __v9fs_cache_unregister(void);
  29 
  30 extern int __v9fs_fscache_release_page(struct page *page, gfp_t gfp);
  31 extern void __v9fs_fscache_invalidate_page(struct page *page);
  32 extern int __v9fs_readpage_from_fscache(struct inode *inode,
  33                                         struct page *page);
  34 extern int __v9fs_readpages_from_fscache(struct inode *inode,
  35                                          struct address_space *mapping,
  36                                          struct list_head *pages,
  37                                          unsigned *nr_pages);
  38 extern void __v9fs_readpage_to_fscache(struct inode *inode, struct page *page);
  39 extern void __v9fs_fscache_wait_on_page_write(struct inode *inode,
  40                                               struct page *page);
  41 
  42 static inline int v9fs_fscache_release_page(struct page *page,
  43                                             gfp_t gfp)
  44 {
  45         return __v9fs_fscache_release_page(page, gfp);
  46 }
  47 
  48 static inline void v9fs_fscache_invalidate_page(struct page *page)
  49 {
  50         __v9fs_fscache_invalidate_page(page);
  51 }
  52 
  53 static inline int v9fs_readpage_from_fscache(struct inode *inode,
  54                                              struct page *page)
  55 {
  56         return __v9fs_readpage_from_fscache(inode, page);
  57 }
  58 
  59 static inline int v9fs_readpages_from_fscache(struct inode *inode,
  60                                               struct address_space *mapping,
  61                                               struct list_head *pages,
  62                                               unsigned *nr_pages)
  63 {
  64         return __v9fs_readpages_from_fscache(inode, mapping, pages,
  65                                              nr_pages);
  66 }
  67 
  68 static inline void v9fs_readpage_to_fscache(struct inode *inode,
  69                                             struct page *page)
  70 {
  71         if (PageFsCache(page))
  72                 __v9fs_readpage_to_fscache(inode, page);
  73 }
  74 
  75 static inline void v9fs_uncache_page(struct inode *inode, struct page *page)
  76 {
  77         struct v9fs_inode *v9inode = V9FS_I(inode);
  78         fscache_uncache_page(v9inode->fscache, page);
  79         BUG_ON(PageFsCache(page));
  80 }
  81 
  82 static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
  83                                                    struct page *page)
  84 {
  85         return __v9fs_fscache_wait_on_page_write(inode, page);
  86 }
  87 
  88 #else /* CONFIG_9P_FSCACHE */
  89 
  90 static inline void v9fs_cache_inode_get_cookie(struct inode *inode)
  91 {
  92 }
  93 
  94 static inline void v9fs_cache_inode_put_cookie(struct inode *inode)
  95 {
  96 }
  97 
  98 static inline void v9fs_cache_inode_set_cookie(struct inode *inode, struct file *file)
  99 {
 100 }
 101 
 102 static inline int v9fs_fscache_release_page(struct page *page,
 103                                             gfp_t gfp) {
 104         return 1;
 105 }
 106 
 107 static inline void v9fs_fscache_invalidate_page(struct page *page) {}
 108 
 109 static inline int v9fs_readpage_from_fscache(struct inode *inode,
 110                                              struct page *page)
 111 {
 112         return -ENOBUFS;
 113 }
 114 
 115 static inline int v9fs_readpages_from_fscache(struct inode *inode,
 116                                               struct address_space *mapping,
 117                                               struct list_head *pages,
 118                                               unsigned *nr_pages)
 119 {
 120         return -ENOBUFS;
 121 }
 122 
 123 static inline void v9fs_readpage_to_fscache(struct inode *inode,
 124                                             struct page *page)
 125 {}
 126 
 127 static inline void v9fs_uncache_page(struct inode *inode, struct page *page)
 128 {}
 129 
 130 static inline void v9fs_fscache_wait_on_page_write(struct inode *inode,
 131                                                    struct page *page)
 132 {
 133         return;
 134 }
 135 
 136 #endif /* CONFIG_9P_FSCACHE */
 137 #endif /* _9P_CACHE_H */

/* [<][>][^][v][top][bottom][index][help] */