blob: c3f056f8947736512f07248feb1f4dc281dfc71a [file] [log] [blame]
David Howells14727282009-04-03 16:42:42 +01001/* NFS filesystem cache interface
2 *
3 * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11
12#include <linux/init.h>
13#include <linux/kernel.h>
14#include <linux/sched.h>
15#include <linux/mm.h>
16#include <linux/nfs_fs.h>
17#include <linux/nfs_fs_sb.h>
18#include <linux/in6.h>
19#include <linux/seq_file.h>
20
21#include "internal.h"
22#include "fscache.h"
23
24#define NFSDBG_FACILITY NFSDBG_FSCACHE
25
26/*
27 * Get the per-client index cookie for an NFS client if the appropriate mount
28 * flag was set
29 * - We always try and get an index cookie for the client, but get filehandle
30 * cookies on a per-superblock basis, depending on the mount flags
31 */
32void nfs_fscache_get_client_cookie(struct nfs_client *clp)
33{
34 /* create a cache index for looking up filehandles */
35 clp->fscache = fscache_acquire_cookie(nfs_fscache_netfs.primary_index,
36 &nfs_fscache_server_index_def,
37 clp);
38 dfprintk(FSCACHE, "NFS: get client cookie (0x%p/0x%p)\n",
39 clp, clp->fscache);
40}
41
42/*
43 * Dispose of a per-client cookie
44 */
45void nfs_fscache_release_client_cookie(struct nfs_client *clp)
46{
47 dfprintk(FSCACHE, "NFS: releasing client cookie (0x%p/0x%p)\n",
48 clp, clp->fscache);
49
50 fscache_relinquish_cookie(clp->fscache, 0);
51 clp->fscache = NULL;
52}