Blame view

fs/cifs/fscache.h 5.32 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
  #ifdef CONFIG_CIFS_FSCACHE
402cb8dda   David Howells   fscache: Attach t...
27
  /*
586598541   Steve French   smb3: extend fsca...
28
29
30
31
32
33
34
35
36
   * Auxiliary data attached to CIFS superblock within the cache
   */
  struct cifs_fscache_super_auxdata {
  	u64	resource_id;		/* unique server resource id */
  	__le64	vol_create_time;
  	u32	vol_serial_number;
  } __packed;
  
  /*
402cb8dda   David Howells   fscache: Attach t...
37
38
39
   * Auxiliary data attached to CIFS inode within the cache
   */
  struct cifs_fscache_inode_auxdata {
cbedeadf9   Arnd Bergmann   cifs: use 64-bit ...
40
41
42
43
44
  	u64 last_write_time_sec;
  	u64 last_change_time_sec;
  	u32 last_write_time_nsec;
  	u32 last_change_time_nsec;
  	u64 eof;
402cb8dda   David Howells   fscache: Attach t...
45
46
47
48
49
  };
  
  /*
   * cache.c
   */
f579cf3cf   Suresh Jayaraman   cifs: register CI...
50
  extern struct fscache_netfs cifs_fscache_netfs;
488f1d2d6   Suresh Jayaraman   cifs: define serv...
51
  extern const struct fscache_cookie_def cifs_fscache_server_index_def;
d03382ce9   Suresh Jayaraman   cifs: define supe...
52
  extern const struct fscache_cookie_def cifs_fscache_super_index_def;
9451a9a52   Suresh Jayaraman   cifs: define inod...
53
  extern const struct fscache_cookie_def cifs_fscache_inode_object_def;
f579cf3cf   Suresh Jayaraman   cifs: register CI...
54
55
  extern int cifs_fscache_register(void);
  extern void cifs_fscache_unregister(void);
402cb8dda   David Howells   fscache: Attach t...
56
  extern char *extract_sharename(const char *);
f579cf3cf   Suresh Jayaraman   cifs: register CI...
57

488f1d2d6   Suresh Jayaraman   cifs: define serv...
58
59
60
61
62
  /*
   * 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...
63
64
  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...
65

9451a9a52   Suresh Jayaraman   cifs: define inod...
66
67
68
  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...
69
70
  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 ...
71
72
73
74
75
  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 *);
54afa9905   David Howells   CIFS: FS-Cache: U...
76
  extern void __cifs_fscache_readpages_cancel(struct inode *, struct list_head *);
85f2d6b44   Suresh Jayaraman   cifs: FS-Cache pa...
77

9dc06558c   Suresh Jayaraman   cifs: store pages...
78
  extern void __cifs_readpage_to_fscache(struct inode *, struct page *);
85f2d6b44   Suresh Jayaraman   cifs: FS-Cache pa...
79
80
81
82
83
84
  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 ...
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  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...
104
105
106
107
108
109
  static inline void cifs_readpage_to_fscache(struct inode *inode,
  					    struct page *page)
  {
  	if (PageFsCache(page))
  		__cifs_readpage_to_fscache(inode, page);
  }
54afa9905   David Howells   CIFS: FS-Cache: U...
110
111
112
113
114
115
  static inline void cifs_fscache_readpages_cancel(struct inode *inode,
  						 struct list_head *pages)
  {
  	if (CIFS_I(inode)->fscache)
  		return __cifs_fscache_readpages_cancel(inode, pages);
  }
f579cf3cf   Suresh Jayaraman   cifs: register CI...
116
117
118
  #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...
119
120
121
  static inline void
  cifs_fscache_get_client_cookie(struct TCP_Server_Info *server) {}
  static inline void
c5e04a3e4   Steve French   [CIFS] Fix build ...
122
  cifs_fscache_release_client_cookie(struct TCP_Server_Info *server) {}
96daf2b09   Steve French   [CIFS] Rename thr...
123
  static inline void cifs_fscache_get_super_cookie(struct cifs_tcon *tcon) {}
d03382ce9   Suresh Jayaraman   cifs: define supe...
124
  static inline void
96daf2b09   Steve French   [CIFS] Rename thr...
125
  cifs_fscache_release_super_cookie(struct cifs_tcon *tcon) {}
488f1d2d6   Suresh Jayaraman   cifs: define serv...
126

9451a9a52   Suresh Jayaraman   cifs: define inod...
127
128
129
130
  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...
131
  static inline int cifs_fscache_release_page(struct page *page, gfp_t gfp)
85f2d6b44   Suresh Jayaraman   cifs: FS-Cache pa...
132
133
134
  {
  	return 1; /* May release page */
  }
9451a9a52   Suresh Jayaraman   cifs: define inod...
135

d0e6f44e6   Steve French   [CIFS] Missing li...
136
137
  static inline void cifs_fscache_invalidate_page(struct page *page,
  			struct inode *inode) {}
56698236e   Suresh Jayaraman   cifs: read pages ...
138
139
140
141
142
143
144
145
146
147
148
149
150
  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...
151
152
  static inline void cifs_readpage_to_fscache(struct inode *inode,
  			struct page *page) {}
9451a9a52   Suresh Jayaraman   cifs: define inod...
153

54afa9905   David Howells   CIFS: FS-Cache: U...
154
155
156
157
  static inline void cifs_fscache_readpages_cancel(struct inode *inode,
  						 struct list_head *pages)
  {
  }
f579cf3cf   Suresh Jayaraman   cifs: register CI...
158
159
160
  #endif /* CONFIG_CIFS_FSCACHE */
  
  #endif /* _CIFS_FSCACHE_H */