diff options
author | J. Bruce Fields <bfields@redhat.com> | 2010-08-26 13:22:27 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2010-08-26 13:22:27 -0400 |
commit | f632265d0ffb5acf331252d98c64939849d96bb2 (patch) | |
tree | 31187d9a726bf1ca6ca12e26ad8e7c609eaf4d8b /fs/cifs/fscache.h | |
parent | 7d94784293096c0a46897acdb83be5abd9278ece (diff) | |
parent | da5cabf80e2433131bf0ed8993abc0f7ea618c73 (diff) |
Merge commit 'v2.6.36-rc1' into HEAD
Diffstat (limited to 'fs/cifs/fscache.h')
-rw-r--r-- | fs/cifs/fscache.h | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/fs/cifs/fscache.h b/fs/cifs/fscache.h new file mode 100644 index 000000000000..31b88ec2341e --- /dev/null +++ b/fs/cifs/fscache.h | |||
@@ -0,0 +1,136 @@ | |||
1 | /* | ||
2 | * fs/cifs/fscache.h - CIFS filesystem cache interface definitions | ||
3 | * | ||
4 | * Copyright (c) 2010 Novell, Inc. | ||
5 | * Authors(s): Suresh Jayaraman (sjayaraman@suse.de> | ||
6 | * | ||
7 | * This library is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU Lesser General Public License as published | ||
9 | * by the Free Software Foundation; either version 2.1 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This library is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See | ||
15 | * the GNU Lesser General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU Lesser General Public License | ||
18 | * along with this library; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | #ifndef _CIFS_FSCACHE_H | ||
22 | #define _CIFS_FSCACHE_H | ||
23 | |||
24 | #include <linux/fscache.h> | ||
25 | |||
26 | #include "cifsglob.h" | ||
27 | |||
28 | #ifdef CONFIG_CIFS_FSCACHE | ||
29 | |||
30 | extern struct fscache_netfs cifs_fscache_netfs; | ||
31 | extern const struct fscache_cookie_def cifs_fscache_server_index_def; | ||
32 | extern const struct fscache_cookie_def cifs_fscache_super_index_def; | ||
33 | extern const struct fscache_cookie_def cifs_fscache_inode_object_def; | ||
34 | |||
35 | extern int cifs_fscache_register(void); | ||
36 | extern void cifs_fscache_unregister(void); | ||
37 | |||
38 | /* | ||
39 | * fscache.c | ||
40 | */ | ||
41 | extern void cifs_fscache_get_client_cookie(struct TCP_Server_Info *); | ||
42 | extern void cifs_fscache_release_client_cookie(struct TCP_Server_Info *); | ||
43 | extern void cifs_fscache_get_super_cookie(struct cifsTconInfo *); | ||
44 | extern void cifs_fscache_release_super_cookie(struct cifsTconInfo *); | ||
45 | |||
46 | extern void cifs_fscache_release_inode_cookie(struct inode *); | ||
47 | extern void cifs_fscache_set_inode_cookie(struct inode *, struct file *); | ||
48 | extern void cifs_fscache_reset_inode_cookie(struct inode *); | ||
49 | |||
50 | extern void __cifs_fscache_invalidate_page(struct page *, struct inode *); | ||
51 | extern int cifs_fscache_release_page(struct page *page, gfp_t gfp); | ||
52 | extern int __cifs_readpage_from_fscache(struct inode *, struct page *); | ||
53 | extern int __cifs_readpages_from_fscache(struct inode *, | ||
54 | struct address_space *, | ||
55 | struct list_head *, | ||
56 | unsigned *); | ||
57 | |||
58 | extern void __cifs_readpage_to_fscache(struct inode *, struct page *); | ||
59 | |||
60 | static inline void cifs_fscache_invalidate_page(struct page *page, | ||
61 | struct inode *inode) | ||
62 | { | ||
63 | if (PageFsCache(page)) | ||
64 | __cifs_fscache_invalidate_page(page, inode); | ||
65 | } | ||
66 | |||
67 | static inline int cifs_readpage_from_fscache(struct inode *inode, | ||
68 | struct page *page) | ||
69 | { | ||
70 | if (CIFS_I(inode)->fscache) | ||
71 | return __cifs_readpage_from_fscache(inode, page); | ||
72 | |||
73 | return -ENOBUFS; | ||
74 | } | ||
75 | |||
76 | static inline int cifs_readpages_from_fscache(struct inode *inode, | ||
77 | struct address_space *mapping, | ||
78 | struct list_head *pages, | ||
79 | unsigned *nr_pages) | ||
80 | { | ||
81 | if (CIFS_I(inode)->fscache) | ||
82 | return __cifs_readpages_from_fscache(inode, mapping, pages, | ||
83 | nr_pages); | ||
84 | return -ENOBUFS; | ||
85 | } | ||
86 | |||
87 | static inline void cifs_readpage_to_fscache(struct inode *inode, | ||
88 | struct page *page) | ||
89 | { | ||
90 | if (PageFsCache(page)) | ||
91 | __cifs_readpage_to_fscache(inode, page); | ||
92 | } | ||
93 | |||
94 | #else /* CONFIG_CIFS_FSCACHE */ | ||
95 | static inline int cifs_fscache_register(void) { return 0; } | ||
96 | static inline void cifs_fscache_unregister(void) {} | ||
97 | |||
98 | static inline void | ||
99 | cifs_fscache_get_client_cookie(struct TCP_Server_Info *server) {} | ||
100 | static inline void | ||
101 | cifs_fscache_release_client_cookie(struct TCP_Server_Info *server) {} | ||
102 | static inline void cifs_fscache_get_super_cookie(struct cifsTconInfo *tcon) {} | ||
103 | static inline void | ||
104 | cifs_fscache_release_super_cookie(struct cifsTconInfo *tcon) {} | ||
105 | |||
106 | static inline void cifs_fscache_release_inode_cookie(struct inode *inode) {} | ||
107 | static inline void cifs_fscache_set_inode_cookie(struct inode *inode, | ||
108 | struct file *filp) {} | ||
109 | static inline void cifs_fscache_reset_inode_cookie(struct inode *inode) {} | ||
110 | static inline int cifs_fscache_release_page(struct page *page, gfp_t gfp) | ||
111 | { | ||
112 | return 1; /* May release page */ | ||
113 | } | ||
114 | |||
115 | static inline void cifs_fscache_invalidate_page(struct page *page, | ||
116 | struct inode *inode) {} | ||
117 | static inline int | ||
118 | cifs_readpage_from_fscache(struct inode *inode, struct page *page) | ||
119 | { | ||
120 | return -ENOBUFS; | ||
121 | } | ||
122 | |||
123 | static inline int cifs_readpages_from_fscache(struct inode *inode, | ||
124 | struct address_space *mapping, | ||
125 | struct list_head *pages, | ||
126 | unsigned *nr_pages) | ||
127 | { | ||
128 | return -ENOBUFS; | ||
129 | } | ||
130 | |||
131 | static inline void cifs_readpage_to_fscache(struct inode *inode, | ||
132 | struct page *page) {} | ||
133 | |||
134 | #endif /* CONFIG_CIFS_FSCACHE */ | ||
135 | |||
136 | #endif /* _CIFS_FSCACHE_H */ | ||