Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
f884dcae
Commit
f884dcae
authored
Aug 10, 2009
by
Trond Myklebust
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'sunrpc_cache-for-2.6.32' into nfs-for-2.6.32
parents
976a6f92
8854e82d
Changes
12
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
939 additions
and
485 deletions
+939
-485
fs/nfs/idmap.c
fs/nfs/idmap.c
+3
-3
fs/nfsd/export.c
fs/nfsd/export.c
+12
-2
fs/nfsd/nfs4idmap.c
fs/nfsd/nfs4idmap.c
+16
-4
include/linux/sunrpc/cache.h
include/linux/sunrpc/cache.h
+34
-6
include/linux/sunrpc/clnt.h
include/linux/sunrpc/clnt.h
+2
-3
include/linux/sunrpc/rpc_pipe_fs.h
include/linux/sunrpc/rpc_pipe_fs.h
+14
-4
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/auth_gss/auth_gss.c
+6
-6
net/sunrpc/auth_gss/svcauth_gss.c
net/sunrpc/auth_gss/svcauth_gss.c
+6
-1
net/sunrpc/cache.c
net/sunrpc/cache.c
+401
-149
net/sunrpc/clnt.c
net/sunrpc/clnt.c
+39
-21
net/sunrpc/rpc_pipe.c
net/sunrpc/rpc_pipe.c
+394
-284
net/sunrpc/svcauth_unix.c
net/sunrpc/svcauth_unix.c
+12
-2
No files found.
fs/nfs/idmap.c
View file @
f884dcae
...
...
@@ -101,7 +101,7 @@ static void idmap_pipe_destroy_msg(struct rpc_pipe_msg *);
static
unsigned
int
fnvhash32
(
const
void
*
,
size_t
);
static
struct
rpc_pipe_ops
idmap_upcall_ops
=
{
static
const
struct
rpc_pipe_ops
idmap_upcall_ops
=
{
.
upcall
=
idmap_pipe_upcall
,
.
downcall
=
idmap_pipe_downcall
,
.
destroy_msg
=
idmap_pipe_destroy_msg
,
...
...
@@ -119,8 +119,8 @@ nfs_idmap_new(struct nfs_client *clp)
if
(
idmap
==
NULL
)
return
-
ENOMEM
;
idmap
->
idmap_dentry
=
rpc_mkpipe
(
clp
->
cl_rpcclient
->
cl_
dentry
,
"idmap"
,
idmap
,
&
idmap_upcall_ops
,
0
);
idmap
->
idmap_dentry
=
rpc_mkpipe
(
clp
->
cl_rpcclient
->
cl_
path
.
dentry
,
"idmap"
,
idmap
,
&
idmap_upcall_ops
,
0
);
if
(
IS_ERR
(
idmap
->
idmap_dentry
))
{
error
=
PTR_ERR
(
idmap
->
idmap_dentry
);
kfree
(
idmap
);
...
...
fs/nfsd/export.c
View file @
f884dcae
...
...
@@ -85,6 +85,11 @@ static void expkey_request(struct cache_detail *cd,
(
*
bpp
)[
-
1
]
=
'\n'
;
}
static
int
expkey_upcall
(
struct
cache_detail
*
cd
,
struct
cache_head
*
h
)
{
return
sunrpc_cache_pipe_upcall
(
cd
,
h
,
expkey_request
);
}
static
struct
svc_expkey
*
svc_expkey_update
(
struct
svc_expkey
*
new
,
struct
svc_expkey
*
old
);
static
struct
svc_expkey
*
svc_expkey_lookup
(
struct
svc_expkey
*
);
static
struct
cache_detail
svc_expkey_cache
;
...
...
@@ -259,7 +264,7 @@ static struct cache_detail svc_expkey_cache = {
.
hash_table
=
expkey_table
,
.
name
=
"nfsd.fh"
,
.
cache_put
=
expkey_put
,
.
cache_
request
=
expkey_request
,
.
cache_
upcall
=
expkey_upcall
,
.
cache_parse
=
expkey_parse
,
.
cache_show
=
expkey_show
,
.
match
=
expkey_match
,
...
...
@@ -355,6 +360,11 @@ static void svc_export_request(struct cache_detail *cd,
(
*
bpp
)[
-
1
]
=
'\n'
;
}
static
int
svc_export_upcall
(
struct
cache_detail
*
cd
,
struct
cache_head
*
h
)
{
return
sunrpc_cache_pipe_upcall
(
cd
,
h
,
svc_export_request
);
}
static
struct
svc_export
*
svc_export_update
(
struct
svc_export
*
new
,
struct
svc_export
*
old
);
static
struct
svc_export
*
svc_export_lookup
(
struct
svc_export
*
);
...
...
@@ -724,7 +734,7 @@ struct cache_detail svc_export_cache = {
.
hash_table
=
export_table
,
.
name
=
"nfsd.export"
,
.
cache_put
=
svc_export_put
,
.
cache_
request
=
svc_export_request
,
.
cache_
upcall
=
svc_export_upcall
,
.
cache_parse
=
svc_export_parse
,
.
cache_show
=
svc_export_show
,
.
match
=
svc_export_match
,
...
...
fs/nfsd/nfs4idmap.c
View file @
f884dcae
...
...
@@ -145,6 +145,12 @@ idtoname_request(struct cache_detail *cd, struct cache_head *ch, char **bpp,
(
*
bpp
)[
-
1
]
=
'\n'
;
}
static
int
idtoname_upcall
(
struct
cache_detail
*
cd
,
struct
cache_head
*
ch
)
{
return
sunrpc_cache_pipe_upcall
(
cd
,
ch
,
idtoname_request
);
}
static
int
idtoname_match
(
struct
cache_head
*
ca
,
struct
cache_head
*
cb
)
{
...
...
@@ -175,10 +181,10 @@ idtoname_show(struct seq_file *m, struct cache_detail *cd, struct cache_head *h)
}
static
void
warn_no_idmapd
(
struct
cache_detail
*
detail
)
warn_no_idmapd
(
struct
cache_detail
*
detail
,
int
has_died
)
{
printk
(
"nfsd: nfsv4 idmapping failing: has idmapd %s?
\n
"
,
detail
->
last_close
?
"died"
:
"not been started"
);
has_died
?
"died"
:
"not been started"
);
}
...
...
@@ -192,7 +198,7 @@ static struct cache_detail idtoname_cache = {
.
hash_table
=
idtoname_table
,
.
name
=
"nfs4.idtoname"
,
.
cache_put
=
ent_put
,
.
cache_
request
=
idtoname_request
,
.
cache_
upcall
=
idtoname_upcall
,
.
cache_parse
=
idtoname_parse
,
.
cache_show
=
idtoname_show
,
.
warn_no_listener
=
warn_no_idmapd
,
...
...
@@ -324,6 +330,12 @@ nametoid_request(struct cache_detail *cd, struct cache_head *ch, char **bpp,
(
*
bpp
)[
-
1
]
=
'\n'
;
}
static
int
nametoid_upcall
(
struct
cache_detail
*
cd
,
struct
cache_head
*
ch
)
{
return
sunrpc_cache_pipe_upcall
(
cd
,
ch
,
nametoid_request
);
}
static
int
nametoid_match
(
struct
cache_head
*
ca
,
struct
cache_head
*
cb
)
{
...
...
@@ -363,7 +375,7 @@ static struct cache_detail nametoid_cache = {
.
hash_table
=
nametoid_table
,
.
name
=
"nfs4.nametoid"
,
.
cache_put
=
ent_put
,
.
cache_
request
=
nametoid_request
,
.
cache_
upcall
=
nametoid_upcall
,
.
cache_parse
=
nametoid_parse
,
.
cache_show
=
nametoid_show
,
.
warn_no_listener
=
warn_no_idmapd
,
...
...
include/linux/sunrpc/cache.h
View file @
f884dcae
...
...
@@ -59,6 +59,15 @@ struct cache_head {
#define CACHE_NEW_EXPIRY 120
/* keep new things pending confirmation for 120 seconds */
struct
cache_detail_procfs
{
struct
proc_dir_entry
*
proc_ent
;
struct
proc_dir_entry
*
flush_ent
,
*
channel_ent
,
*
content_ent
;
};
struct
cache_detail_pipefs
{
struct
dentry
*
dir
;
};
struct
cache_detail
{
struct
module
*
owner
;
int
hash_size
;
...
...
@@ -70,15 +79,17 @@ struct cache_detail {
char
*
name
;
void
(
*
cache_put
)(
struct
kref
*
);
void
(
*
cache_request
)(
struct
cache_detail
*
cd
,
struct
cache_head
*
h
,
char
**
bpp
,
int
*
blen
);
int
(
*
cache_upcall
)(
struct
cache_detail
*
,
struct
cache_head
*
);
int
(
*
cache_parse
)(
struct
cache_detail
*
,
char
*
buf
,
int
len
);
int
(
*
cache_show
)(
struct
seq_file
*
m
,
struct
cache_detail
*
cd
,
struct
cache_head
*
h
);
void
(
*
warn_no_listener
)(
struct
cache_detail
*
cd
,
int
has_died
);
struct
cache_head
*
(
*
alloc
)(
void
);
int
(
*
match
)(
struct
cache_head
*
orig
,
struct
cache_head
*
new
);
...
...
@@ -96,13 +107,15 @@ struct cache_detail {
/* fields for communication over channel */
struct
list_head
queue
;
struct
proc_dir_entry
*
proc_ent
;
struct
proc_dir_entry
*
flush_ent
,
*
channel_ent
,
*
content_ent
;
atomic_t
readers
;
/* how many time is /chennel open */
time_t
last_close
;
/* if no readers, when did last close */
time_t
last_warn
;
/* when we last warned about no readers */
void
(
*
warn_no_listener
)(
struct
cache_detail
*
cd
);
union
{
struct
cache_detail_procfs
procfs
;
struct
cache_detail_pipefs
pipefs
;
}
u
;
};
...
...
@@ -127,6 +140,10 @@ struct cache_deferred_req {
};
extern
const
struct
file_operations
cache_file_operations_pipefs
;
extern
const
struct
file_operations
content_file_operations_pipefs
;
extern
const
struct
file_operations
cache_flush_operations_pipefs
;
extern
struct
cache_head
*
sunrpc_cache_lookup
(
struct
cache_detail
*
detail
,
struct
cache_head
*
key
,
int
hash
);
...
...
@@ -134,6 +151,13 @@ extern struct cache_head *
sunrpc_cache_update
(
struct
cache_detail
*
detail
,
struct
cache_head
*
new
,
struct
cache_head
*
old
,
int
hash
);
extern
int
sunrpc_cache_pipe_upcall
(
struct
cache_detail
*
detail
,
struct
cache_head
*
h
,
void
(
*
cache_request
)(
struct
cache_detail
*
,
struct
cache_head
*
,
char
**
,
int
*
));
extern
void
cache_clean_deferred
(
void
*
owner
);
...
...
@@ -171,6 +195,10 @@ extern void cache_purge(struct cache_detail *detail);
extern
int
cache_register
(
struct
cache_detail
*
cd
);
extern
void
cache_unregister
(
struct
cache_detail
*
cd
);
extern
int
sunrpc_cache_register_pipefs
(
struct
dentry
*
parent
,
const
char
*
,
mode_t
,
struct
cache_detail
*
);
extern
void
sunrpc_cache_unregister_pipefs
(
struct
cache_detail
*
);
extern
void
qword_add
(
char
**
bpp
,
int
*
lp
,
char
*
str
);
extern
void
qword_addhex
(
char
**
bpp
,
int
*
lp
,
char
*
buf
,
int
blen
);
extern
int
qword_get
(
char
**
bpp
,
char
*
dest
,
int
bufsize
);
...
...
include/linux/sunrpc/clnt.h
View file @
f884dcae
...
...
@@ -21,6 +21,7 @@
#include <linux/sunrpc/xdr.h>
#include <linux/sunrpc/timer.h>
#include <asm/signal.h>
#include <linux/path.h>
struct
rpc_inode
;
...
...
@@ -54,9 +55,7 @@ struct rpc_clnt {
int
cl_nodelen
;
/* nodename length */
char
cl_nodename
[
UNX_MAXNODENAME
];
char
cl_pathname
[
30
];
/* Path in rpc_pipe_fs */
struct
vfsmount
*
cl_vfsmnt
;
struct
dentry
*
cl_dentry
;
/* inode */
struct
path
cl_path
;
struct
rpc_clnt
*
cl_parent
;
/* Points to parent of clones */
struct
rpc_rtt
cl_rtt_default
;
struct
rpc_timeout
cl_timeout_default
;
...
...
include/linux/sunrpc/rpc_pipe_fs.h
View file @
f884dcae
...
...
@@ -32,8 +32,8 @@ struct rpc_inode {
wait_queue_head_t
waitq
;
#define RPC_PIPE_WAIT_FOR_OPEN 1
int
flags
;
struct
rpc_pipe_ops
*
ops
;
struct
delayed_work
queue_timeout
;
const
struct
rpc_pipe_ops
*
ops
;
};
static
inline
struct
rpc_inode
*
...
...
@@ -44,9 +44,19 @@ RPC_I(struct inode *inode)
extern
int
rpc_queue_upcall
(
struct
inode
*
,
struct
rpc_pipe_msg
*
);
extern
struct
dentry
*
rpc_mkdir
(
char
*
,
struct
rpc_clnt
*
);
extern
int
rpc_rmdir
(
struct
dentry
*
);
extern
struct
dentry
*
rpc_mkpipe
(
struct
dentry
*
,
const
char
*
,
void
*
,
struct
rpc_pipe_ops
*
,
int
flags
);
struct
rpc_clnt
;
extern
struct
dentry
*
rpc_create_client_dir
(
struct
dentry
*
,
struct
qstr
*
,
struct
rpc_clnt
*
);
extern
int
rpc_remove_client_dir
(
struct
dentry
*
);
struct
cache_detail
;
extern
struct
dentry
*
rpc_create_cache_dir
(
struct
dentry
*
,
struct
qstr
*
,
mode_t
umode
,
struct
cache_detail
*
);
extern
void
rpc_remove_cache_dir
(
struct
dentry
*
);
extern
struct
dentry
*
rpc_mkpipe
(
struct
dentry
*
,
const
char
*
,
void
*
,
const
struct
rpc_pipe_ops
*
,
int
flags
);
extern
int
rpc_unlink
(
struct
dentry
*
);
extern
struct
vfsmount
*
rpc_get_mount
(
void
);
extern
void
rpc_put_mount
(
void
);
...
...
net/sunrpc/auth_gss/auth_gss.c
View file @
f884dcae
...
...
@@ -89,8 +89,8 @@ static struct rpc_wait_queue pipe_version_rpc_waitqueue;
static
DECLARE_WAIT_QUEUE_HEAD
(
pipe_version_waitqueue
);
static
void
gss_free_ctx
(
struct
gss_cl_ctx
*
);
static
struct
rpc_pipe_ops
gss_upcall_ops_v0
;
static
struct
rpc_pipe_ops
gss_upcall_ops_v1
;
static
const
struct
rpc_pipe_ops
gss_upcall_ops_v0
;
static
const
struct
rpc_pipe_ops
gss_upcall_ops_v1
;
static
inline
struct
gss_cl_ctx
*
gss_get_ctx
(
struct
gss_cl_ctx
*
ctx
)
...
...
@@ -777,7 +777,7 @@ gss_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
* that we supported only the old pipe. So we instead create
* the new pipe first.
*/
gss_auth
->
dentry
[
1
]
=
rpc_mkpipe
(
clnt
->
cl_dentry
,
gss_auth
->
dentry
[
1
]
=
rpc_mkpipe
(
clnt
->
cl_
path
.
dentry
,
"gssd"
,
clnt
,
&
gss_upcall_ops_v1
,
RPC_PIPE_WAIT_FOR_OPEN
);
...
...
@@ -786,7 +786,7 @@ gss_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
goto
err_put_mech
;
}
gss_auth
->
dentry
[
0
]
=
rpc_mkpipe
(
clnt
->
cl_dentry
,
gss_auth
->
dentry
[
0
]
=
rpc_mkpipe
(
clnt
->
cl_
path
.
dentry
,
gss_auth
->
mech
->
gm_name
,
clnt
,
&
gss_upcall_ops_v0
,
RPC_PIPE_WAIT_FOR_OPEN
);
...
...
@@ -1507,7 +1507,7 @@ static const struct rpc_credops gss_nullops = {
.
crunwrap_resp
=
gss_unwrap_resp
,
};
static
struct
rpc_pipe_ops
gss_upcall_ops_v0
=
{
static
const
struct
rpc_pipe_ops
gss_upcall_ops_v0
=
{
.
upcall
=
gss_pipe_upcall
,
.
downcall
=
gss_pipe_downcall
,
.
destroy_msg
=
gss_pipe_destroy_msg
,
...
...
@@ -1515,7 +1515,7 @@ static struct rpc_pipe_ops gss_upcall_ops_v0 = {
.
release_pipe
=
gss_pipe_release
,
};
static
struct
rpc_pipe_ops
gss_upcall_ops_v1
=
{
static
const
struct
rpc_pipe_ops
gss_upcall_ops_v1
=
{
.
upcall
=
gss_pipe_upcall
,
.
downcall
=
gss_pipe_downcall
,
.
destroy_msg
=
gss_pipe_destroy_msg
,
...
...
net/sunrpc/auth_gss/svcauth_gss.c
View file @
f884dcae
...
...
@@ -181,6 +181,11 @@ static void rsi_request(struct cache_detail *cd,
(
*
bpp
)[
-
1
]
=
'\n'
;
}
static
int
rsi_upcall
(
struct
cache_detail
*
cd
,
struct
cache_head
*
h
)
{
return
sunrpc_cache_pipe_upcall
(
cd
,
h
,
rsi_request
);
}
static
int
rsi_parse
(
struct
cache_detail
*
cd
,
char
*
mesg
,
int
mlen
)
...
...
@@ -270,7 +275,7 @@ static struct cache_detail rsi_cache = {
.
hash_table
=
rsi_table
,
.
name
=
"auth.rpcsec.init"
,
.
cache_put
=
rsi_put
,
.
cache_
request
=
rsi_request
,
.
cache_
upcall
=
rsi_upcall
,
.
cache_parse
=
rsi_parse
,
.
match
=
rsi_match
,
.
init
=
rsi_init
,
...
...
net/sunrpc/cache.c
View file @
f884dcae
This diff is collapsed.
Click to expand it.
net/sunrpc/clnt.c
View file @
f884dcae
...
...
@@ -27,6 +27,8 @@
#include <linux/types.h>
#include <linux/kallsyms.h>
#include <linux/mm.h>
#include <linux/namei.h>
#include <linux/mount.h>
#include <linux/slab.h>
#include <linux/utsname.h>
#include <linux/workqueue.h>
...
...
@@ -97,33 +99,49 @@ static int
rpc_setup_pipedir
(
struct
rpc_clnt
*
clnt
,
char
*
dir_name
)
{
static
uint32_t
clntid
;
struct
nameidata
nd
;
struct
path
path
;
char
name
[
15
];
struct
qstr
q
=
{
.
name
=
name
,
};
int
error
;
clnt
->
cl_
vfs
mnt
=
ERR_PTR
(
-
ENOENT
);
clnt
->
cl_dentry
=
ERR_PTR
(
-
ENOENT
);
clnt
->
cl_
path
.
mnt
=
ERR_PTR
(
-
ENOENT
);
clnt
->
cl_
path
.
dentry
=
ERR_PTR
(
-
ENOENT
);
if
(
dir_name
==
NULL
)
return
0
;
clnt
->
cl_vfsmnt
=
rpc_get_mount
();
if
(
IS_ERR
(
clnt
->
cl_vfsmnt
))
return
PTR_ERR
(
clnt
->
cl_vfsmnt
);
path
.
mnt
=
rpc_get_mount
();
if
(
IS_ERR
(
path
.
mnt
))
return
PTR_ERR
(
path
.
mnt
);
error
=
vfs_path_lookup
(
path
.
mnt
->
mnt_root
,
path
.
mnt
,
dir_name
,
0
,
&
nd
);
if
(
error
)
goto
err
;
for
(;;)
{
snprintf
(
clnt
->
cl_pathname
,
sizeof
(
clnt
->
cl_pathname
),
"%s/clnt%x"
,
dir_name
,
(
unsigned
int
)
clntid
++
);
clnt
->
cl_pathname
[
sizeof
(
clnt
->
cl_pathname
)
-
1
]
=
'\0'
;
clnt
->
cl_dentry
=
rpc_mkdir
(
clnt
->
cl_pathname
,
clnt
);
if
(
!
IS_ERR
(
clnt
->
cl_dentry
))
return
0
;
error
=
PTR_ERR
(
clnt
->
cl_dentry
);
q
.
len
=
snprintf
(
name
,
sizeof
(
name
),
"clnt%x"
,
(
unsigned
int
)
clntid
++
);
name
[
sizeof
(
name
)
-
1
]
=
'\0'
;
q
.
hash
=
full_name_hash
(
q
.
name
,
q
.
len
);
path
.
dentry
=
rpc_create_client_dir
(
nd
.
path
.
dentry
,
&
q
,
clnt
);
if
(
!
IS_ERR
(
path
.
dentry
))
break
;
error
=
PTR_ERR
(
path
.
dentry
);
if
(
error
!=
-
EEXIST
)
{
printk
(
KERN_INFO
"RPC: Couldn't create pipefs entry
%s, error %d
\n
"
,
clnt
->
cl_pathname
,
error
);
rpc_put_mount
(
);
return
error
;
printk
(
KERN_INFO
"RPC: Couldn't create pipefs entry
"
" %s/%s, error %d
\n
"
,
dir_name
,
name
,
error
);
goto
err_path_put
;
}
}
path_put
(
&
nd
.
path
);
clnt
->
cl_path
=
path
;
return
0
;
err_path_put:
path_put
(
&
nd
.
path
);
err:
rpc_put_mount
();
return
error
;
}
static
struct
rpc_clnt
*
rpc_new_client
(
const
struct
rpc_create_args
*
args
,
struct
rpc_xprt
*
xprt
)
...
...
@@ -231,8 +249,8 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, stru
return
clnt
;
out_no_auth:
if
(
!
IS_ERR
(
clnt
->
cl_dentry
))
{
rpc_r
mdir
(
clnt
->
cl_
dentry
);
if
(
!
IS_ERR
(
clnt
->
cl_
path
.
dentry
))
{
rpc_r
emove_client_dir
(
clnt
->
cl_path
.
dentry
);
rpc_put_mount
();
}
out_no_path:
...
...
@@ -423,8 +441,8 @@ rpc_free_client(struct kref *kref)
dprintk
(
"RPC: destroying %s client for %s
\n
"
,
clnt
->
cl_protname
,
clnt
->
cl_server
);
if
(
!
IS_ERR
(
clnt
->
cl_dentry
))
{
rpc_r
mdir
(
clnt
->
cl_
dentry
);
if
(
!
IS_ERR
(
clnt
->
cl_
path
.
dentry
))
{
rpc_r
emove_client_dir
(
clnt
->
cl_path
.
dentry
);
rpc_put_mount
();
}
if
(
clnt
->
cl_parent
!=
clnt
)
{
...
...
net/sunrpc/rpc_pipe.c
View file @
f884dcae
This diff is collapsed.
Click to expand it.
net/sunrpc/svcauth_unix.c
View file @
f884dcae
...
...
@@ -171,6 +171,11 @@ static void ip_map_request(struct cache_detail *cd,
(
*
bpp
)[
-
1
]
=
'\n'
;
}
static
int
ip_map_upcall
(
struct
cache_detail
*
cd
,
struct
cache_head
*
h
)
{
return
sunrpc_cache_pipe_upcall
(
cd
,
h
,
ip_map_request
);
}
static
struct
ip_map
*
ip_map_lookup
(
char
*
class
,
struct
in6_addr
*
addr
);
static
int
ip_map_update
(
struct
ip_map
*
ipm
,
struct
unix_domain
*
udom
,
time_t
expiry
);
...
...
@@ -289,7 +294,7 @@ struct cache_detail ip_map_cache = {
.
hash_table
=
ip_table
,
.
name
=
"auth.unix.ip"
,
.
cache_put
=
ip_map_put
,
.
cache_
request
=
ip_map_request
,
.
cache_
upcall
=
ip_map_upcall
,
.
cache_parse
=
ip_map_parse
,
.
cache_show
=
ip_map_show
,
.
match
=
ip_map_match
,
...
...
@@ -523,6 +528,11 @@ static void unix_gid_request(struct cache_detail *cd,
(
*
bpp
)[
-
1
]
=
'\n'
;
}
static
int
unix_gid_upcall
(
struct
cache_detail
*
cd
,
struct
cache_head
*
h
)
{
return
sunrpc_cache_pipe_upcall
(
cd
,
h
,
unix_gid_request
);
}
static
struct
unix_gid
*
unix_gid_lookup
(
uid_t
uid
);
extern
struct
cache_detail
unix_gid_cache
;
...
...
@@ -622,7 +632,7 @@ struct cache_detail unix_gid_cache = {
.
hash_table
=
gid_table
,
.
name
=
"auth.unix.gid"
,
.
cache_put
=
unix_gid_put
,
.
cache_
request
=
unix_gid_request
,
.
cache_
upcall
=
unix_gid_upcall
,
.
cache_parse
=
unix_gid_parse
,
.
cache_show
=
unix_gid_show
,
.
match
=
unix_gid_match
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment