Blame view

fs/cifs/fscache.h 4.46 KB
f579cf3cf   Suresh Jayaraman   cifs: register CI...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  /*
   *   fs/cifs/fscache.h - CIFS filesystem cache interface definitions
   *
   *   Copyright (c) 2010 Novell, Inc.
   *   Authors(s): Suresh Jayaraman (sjayaraman@suse.de>
   *
   *   This library is free software; you can redistribute it and/or modify
   *   it under the terms of the GNU Lesser General Public License as published
   *   by the Free Software Foundation; either version 2.1 of the License, or
   *   (at your option) any later version.
   *
   *   This library is distributed in the hope that it will be useful,
   *   but WITHOUT ANY WARRANTY; without even the implied warranty of
   *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
   *   the GNU Lesser General Public License for more details.
   *
   *   You should have received a copy of the GNU Lesser General Public License
   *   along with this library; if not, write to the Free Software
   *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
   */
  #ifndef _CIFS_FSCACHE_H
  #define _CIFS_FSCACHE_H
  
  #include <linux/fscache.h>
488f1d2d6   Suresh Jayaraman   cifs: define serv...
25
  #include "cifsglob.h"
f579cf3cf   Suresh Jayaraman   cifs: register CI...
26
27
28
  #ifdef CONFIG_CIFS_FSCACHE
  
  extern struct fscache_netfs cifs_fscache_netfs;
488f1d2d6   Suresh Jayaraman   cifs: define serv...
29
  extern const struct fscache_cookie_def cifs_fscache_server_index_def;
d03382ce9   Suresh Jayaraman   cifs: define supe...
30
  extern const struct fscache_cookie_def cifs_fscache_super_index_def;
9451a9a52   Suresh Jayaraman   cifs: define inod...
31
  extern const struct fscache_cookie_def cifs_fscache_inode_object_def;
f579cf3cf   Suresh Jayaraman   cifs: register CI...
32
33
  extern int cifs_fscache_register(void);
  extern void cifs_fscache_unregister(void);
488f1d2d6   Suresh Jayaraman   cifs: define serv...
34
35
36
37
38
  /*
   * fscache.c
   */
  extern void cifs_fscache_get_client_cookie(struct TCP_Server_Info *);
  extern void cifs_fscache_release_client_cookie(struct TCP_Server_Info *);
96daf2b09   Steve French   [CIFS] Rename thr...
39
40
  extern void cifs_fscache_get_super_cookie(struct cifs_tcon *);
  extern void cifs_fscache_release_super_cookie(struct cifs_tcon *);
488f1d2d6   Suresh Jayaraman   cifs: define serv...
41

9451a9a52   Suresh Jayaraman   cifs: define inod...
42
43
44
  extern void cifs_fscache_release_inode_cookie(struct inode *);
  extern void cifs_fscache_set_inode_cookie(struct inode *, struct file *);
  extern void cifs_fscache_reset_inode_cookie(struct inode *);
85f2d6b44   Suresh Jayaraman   cifs: FS-Cache pa...
45
46
  extern void __cifs_fscache_invalidate_page(struct page *, struct inode *);
  extern int cifs_fscache_release_page(struct page *page, gfp_t gfp);
56698236e   Suresh Jayaraman   cifs: read pages ...
47
48
49
50
51
  extern int __cifs_readpage_from_fscache(struct inode *, struct page *);
  extern int __cifs_readpages_from_fscache(struct inode *,
  					 struct address_space *,
  					 struct list_head *,
  					 unsigned *);
85f2d6b44   Suresh Jayaraman   cifs: FS-Cache pa...
52

9dc06558c   Suresh Jayaraman   cifs: store pages...
53
  extern void __cifs_readpage_to_fscache(struct inode *, struct page *);
85f2d6b44   Suresh Jayaraman   cifs: FS-Cache pa...
54
55
56
57
58
59
  static inline void cifs_fscache_invalidate_page(struct page *page,
  					       struct inode *inode)
  {
  	if (PageFsCache(page))
  		__cifs_fscache_invalidate_page(page, inode);
  }
56698236e   Suresh Jayaraman   cifs: read pages ...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  static inline int cifs_readpage_from_fscache(struct inode *inode,
  					     struct page *page)
  {
  	if (CIFS_I(inode)->fscache)
  		return __cifs_readpage_from_fscache(inode, page);
  
  	return -ENOBUFS;
  }
  
  static inline int cifs_readpages_from_fscache(struct inode *inode,
  					      struct address_space *mapping,
  					      struct list_head *pages,
  					      unsigned *nr_pages)
  {
  	if (CIFS_I(inode)->fscache)
  		return __cifs_readpages_from_fscache(inode, mapping, pages,
  						     nr_pages);
  	return -ENOBUFS;
  }
9dc06558c   Suresh Jayaraman   cifs: store pages...
79
80
81
82
83
84
  static inline void cifs_readpage_to_fscache(struct inode *inode,
  					    struct page *page)
  {
  	if (PageFsCache(page))
  		__cifs_readpage_to_fscache(inode, page);
  }
f579cf3cf   Suresh Jayaraman   cifs: register CI...
85
86
87
  #else /* CONFIG_CIFS_FSCACHE */
  static inline int cifs_fscache_register(void) { return 0; }
  static inline void cifs_fscache_unregister(void) {}
488f1d2d6   Suresh Jayaraman   cifs: define serv...
88
89
90
  static inline void
  cifs_fscache_get_client_cookie(struct TCP_Server_Info *server) {}
  static inline void
c5e04a3e4   Steve French   [CIFS] Fix build ...
91
  cifs_fscache_release_client_cookie(struct TCP_Server_Info *server) {}
96daf2b09   Steve French   [CIFS] Rename thr...
92
  static inline void cifs_fscache_get_super_cookie(struct cifs_tcon *tcon) {}
d03382ce9   Suresh Jayaraman   cifs: define supe...
93
  static inline void
96daf2b09   Steve French   [CIFS] Rename thr...
94
  cifs_fscache_release_super_cookie(struct cifs_tcon *tcon) {}
488f1d2d6   Suresh Jayaraman   cifs: define serv...
95

9451a9a52   Suresh Jayaraman   cifs: define inod...
96
97
98
99
  static inline void cifs_fscache_release_inode_cookie(struct inode *inode) {}
  static inline void cifs_fscache_set_inode_cookie(struct inode *inode,
  						 struct file *filp) {}
  static inline void cifs_fscache_reset_inode_cookie(struct inode *inode) {}
d0e6f44e6   Steve French   [CIFS] Missing li...
100
  static inline int cifs_fscache_release_page(struct page *page, gfp_t gfp)
85f2d6b44   Suresh Jayaraman   cifs: FS-Cache pa...
101
102
103
  {
  	return 1; /* May release page */
  }
9451a9a52   Suresh Jayaraman   cifs: define inod...
104

d0e6f44e6   Steve French   [CIFS] Missing li...
105
106
  static inline void cifs_fscache_invalidate_page(struct page *page,
  			struct inode *inode) {}
56698236e   Suresh Jayaraman   cifs: read pages ...
107
108
109
110
111
112
113
114
115
116
117
118
119
  static inline int
  cifs_readpage_from_fscache(struct inode *inode, struct page *page)
  {
  	return -ENOBUFS;
  }
  
  static inline int cifs_readpages_from_fscache(struct inode *inode,
  					      struct address_space *mapping,
  					      struct list_head *pages,
  					      unsigned *nr_pages)
  {
  	return -ENOBUFS;
  }
9dc06558c   Suresh Jayaraman   cifs: store pages...
120
121
  static inline void cifs_readpage_to_fscache(struct inode *inode,
  			struct page *page) {}
9451a9a52   Suresh Jayaraman   cifs: define inod...
122

f579cf3cf   Suresh Jayaraman   cifs: register CI...
123
124
125
  #endif /* CONFIG_CIFS_FSCACHE */
  
  #endif /* _CIFS_FSCACHE_H */