aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs
diff options
context:
space:
mode:
authorSuresh Jayaraman <sjayaraman@suse.de>2010-07-05 08:41:50 -0400
committerSteve French <sfrench@us.ibm.com>2010-08-02 08:40:33 -0400
commitf579cf3cfd1e19ae5aab6929679d0c04bf1a6284 (patch)
tree19773895c06b9f3a251745f9c449051e4e0934c1 /fs/cifs
parentc21dfb699f35b6b5508fb808bb0ca211a865f2c9 (diff)
cifs: register CIFS for caching
Define CIFS for FS-Cache and register for caching. Upon registration the top-level index object cookie will be stuck to the netfs definition by FS-Cache. Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de> Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r--fs/cifs/Makefile2
-rw-r--r--fs/cifs/cache.c46
-rw-r--r--fs/cifs/cifsfs.c8
-rw-r--r--fs/cifs/fscache.h39
4 files changed, 95 insertions, 0 deletions
diff --git a/fs/cifs/Makefile b/fs/cifs/Makefile
index 9948c0030e86..e2de709a6e5d 100644
--- a/fs/cifs/Makefile
+++ b/fs/cifs/Makefile
@@ -11,3 +11,5 @@ cifs-y := cifsfs.o cifssmb.o cifs_debug.o connect.o dir.o file.o inode.o \
11cifs-$(CONFIG_CIFS_UPCALL) += cifs_spnego.o 11cifs-$(CONFIG_CIFS_UPCALL) += cifs_spnego.o
12 12
13cifs-$(CONFIG_CIFS_DFS_UPCALL) += dns_resolve.o cifs_dfs_ref.o 13cifs-$(CONFIG_CIFS_DFS_UPCALL) += dns_resolve.o cifs_dfs_ref.o
14
15cifs-$(CONFIG_CIFS_FSCACHE) += cache.o
diff --git a/fs/cifs/cache.c b/fs/cifs/cache.c
new file mode 100644
index 000000000000..1cb5ffb017f1
--- /dev/null
+++ b/fs/cifs/cache.c
@@ -0,0 +1,46 @@
1/*
2 * fs/cifs/cache.c - CIFS filesystem cache index structure 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#include "fscache.h"
22
23/*
24 * CIFS filesystem definition for FS-Cache
25 */
26struct fscache_netfs cifs_fscache_netfs = {
27 .name = "cifs",
28 .version = 0,
29};
30
31/*
32 * Register CIFS for caching with FS-Cache
33 */
34int cifs_fscache_register(void)
35{
36 return fscache_register_netfs(&cifs_fscache_netfs);
37}
38
39/*
40 * Unregister CIFS for caching
41 */
42void cifs_fscache_unregister(void)
43{
44 fscache_unregister_netfs(&cifs_fscache_netfs);
45}
46
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 2cb1a70214d7..24d7f4ab3b65 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -47,6 +47,7 @@
47#include <linux/key-type.h> 47#include <linux/key-type.h>
48#include "dns_resolve.h" 48#include "dns_resolve.h"
49#include "cifs_spnego.h" 49#include "cifs_spnego.h"
50#include "fscache.h"
50#define CIFS_MAGIC_NUMBER 0xFF534D42 /* the first four bytes of SMB PDUs */ 51#define CIFS_MAGIC_NUMBER 0xFF534D42 /* the first four bytes of SMB PDUs */
51 52
52int cifsFYI = 0; 53int cifsFYI = 0;
@@ -902,6 +903,10 @@ init_cifs(void)
902 cFYI(1, "cifs_max_pending set to max of 256"); 903 cFYI(1, "cifs_max_pending set to max of 256");
903 } 904 }
904 905
906 rc = cifs_fscache_register();
907 if (rc)
908 goto out;
909
905 rc = cifs_init_inodecache(); 910 rc = cifs_init_inodecache();
906 if (rc) 911 if (rc)
907 goto out_clean_proc; 912 goto out_clean_proc;
@@ -951,6 +956,8 @@ init_cifs(void)
951 cifs_destroy_inodecache(); 956 cifs_destroy_inodecache();
952 out_clean_proc: 957 out_clean_proc:
953 cifs_proc_clean(); 958 cifs_proc_clean();
959 cifs_fscache_unregister();
960 out:
954 return rc; 961 return rc;
955} 962}
956 963
@@ -959,6 +966,7 @@ exit_cifs(void)
959{ 966{
960 cFYI(DBG2, "exit_cifs"); 967 cFYI(DBG2, "exit_cifs");
961 cifs_proc_clean(); 968 cifs_proc_clean();
969 cifs_fscache_unregister();
962#ifdef CONFIG_CIFS_DFS_UPCALL 970#ifdef CONFIG_CIFS_DFS_UPCALL
963 cifs_dfs_release_automount_timer(); 971 cifs_dfs_release_automount_timer();
964 cifs_exit_dns_resolver(); 972 cifs_exit_dns_resolver();
diff --git a/fs/cifs/fscache.h b/fs/cifs/fscache.h
new file mode 100644
index 000000000000..14dae1975d78
--- /dev/null
+++ b/fs/cifs/fscache.h
@@ -0,0 +1,39 @@
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#ifdef CONFIG_CIFS_FSCACHE
27
28extern struct fscache_netfs cifs_fscache_netfs;
29
30extern int cifs_fscache_register(void);
31extern void cifs_fscache_unregister(void);
32
33#else /* CONFIG_CIFS_FSCACHE */
34static inline int cifs_fscache_register(void) { return 0; }
35static inline void cifs_fscache_unregister(void) {}
36
37#endif /* CONFIG_CIFS_FSCACHE */
38
39#endif /* _CIFS_FSCACHE_H */