Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
nfs
delegation.h
Go to the documentation of this file.
1
/*
2
* linux/fs/nfs/delegation.h
3
*
4
* Copyright (c) Trond Myklebust
5
*
6
* Definitions pertaining to NFS delegated files
7
*/
8
#ifndef FS_NFS_DELEGATION_H
9
#define FS_NFS_DELEGATION_H
10
11
#if IS_ENABLED(CONFIG_NFS_V4)
12
/*
13
* NFSv4 delegation
14
*/
15
struct
nfs_delegation {
16
struct
list_head
super_list;
17
struct
rpc_cred *
cred
;
18
struct
inode
*
inode
;
19
nfs4_stateid
stateid;
20
fmode_t
type
;
21
loff_t maxsize;
22
__u64
change_attr;
23
unsigned
long
flags
;
24
spinlock_t
lock
;
25
struct
rcu_head
rcu;
26
};
27
28
enum
{
29
NFS_DELEGATION_NEED_RECLAIM = 0,
30
NFS_DELEGATION_RETURN,
31
NFS_DELEGATION_REFERENCED,
32
};
33
34
int
nfs_inode_set_delegation
(
struct
inode
*
inode
,
struct
rpc_cred *
cred
,
struct
nfs_openres
*
res
);
35
void
nfs_inode_reclaim_delegation
(
struct
inode
*
inode
,
struct
rpc_cred *
cred
,
struct
nfs_openres
*
res
);
36
int
nfs4_inode_return_delegation
(
struct
inode
*
inode
);
37
int
nfs_async_inode_return_delegation
(
struct
inode
*
inode
,
const
nfs4_stateid
*stateid);
38
void
nfs_inode_return_delegation_noreclaim
(
struct
inode
*
inode
);
39
40
struct
inode
*
nfs_delegation_find_inode
(
struct
nfs_client
*clp,
const
struct
nfs_fh
*fhandle);
41
void
nfs_server_return_all_delegations
(
struct
nfs_server
*);
42
void
nfs_expire_all_delegations
(
struct
nfs_client
*clp);
43
void
nfs_expire_all_delegation_types
(
struct
nfs_client
*clp,
fmode_t
flags
);
44
void
nfs_expire_unreferenced_delegations
(
struct
nfs_client
*clp);
45
int
nfs_client_return_marked_delegations
(
struct
nfs_client
*clp);
46
int
nfs_delegations_present
(
struct
nfs_client
*clp);
47
void
nfs_remove_bad_delegation
(
struct
inode
*
inode
);
48
49
void
nfs_delegation_mark_reclaim
(
struct
nfs_client
*clp);
50
void
nfs_delegation_reap_unclaimed
(
struct
nfs_client
*clp);
51
52
/* NFSv4 delegation-related procedures */
53
int
nfs4_proc_delegreturn
(
struct
inode
*
inode
,
struct
rpc_cred *
cred
,
const
nfs4_stateid
*stateid,
int
issync);
54
int
nfs4_open_delegation_recall
(
struct
nfs_open_context
*
ctx
,
struct
nfs4_state *
state
,
const
nfs4_stateid
*stateid);
55
int
nfs4_lock_delegation_recall
(
struct
nfs4_state *
state
,
struct
file_lock
*
fl
);
56
bool
nfs4_copy_delegation_stateid
(
nfs4_stateid
*
dst
,
struct
inode
*
inode
,
fmode_t
flags
);
57
58
void
nfs_mark_delegation_referenced
(
struct
nfs_delegation *delegation);
59
int
nfs4_have_delegation
(
struct
inode
*
inode
,
fmode_t
flags
);
60
61
#endif
62
63
static
inline
int
nfs_have_delegated_attributes(
struct
inode
*
inode
)
64
{
65
return
NFS_PROTO(inode)->have_delegation(inode,
FMODE_READ
) &&
66
!(NFS_I(inode)->cache_validity &
NFS_INO_REVAL_FORCED
);
67
}
68
69
#endif
Generated on Thu Jan 10 2013 14:48:24 for Linux Kernel by
1.8.2