Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
a4773c08
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a4773c08
编写于
2月 02, 2009
作者:
J
J. Bruce Fields
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
nfsd4: use helper for copying filehandles for replay
Signed-off-by:
N
J. Bruce Fields
<
bfields@citi.umich.edu
>
上级
13024b7b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
13 deletion
+14
-13
fs/nfsd/nfs4proc.c
fs/nfsd/nfs4proc.c
+6
-11
include/linux/nfsd/nfsfh.h
include/linux/nfsd/nfsfh.h
+7
-0
include/linux/nfsd/state.h
include/linux/nfsd/state.h
+1
-2
未找到文件。
fs/nfsd/nfs4proc.c
浏览文件 @
a4773c08
...
...
@@ -123,10 +123,8 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_o
fh_dup2
(
current_fh
,
&
resfh
);
/* set reply cache */
open
->
op_stateowner
->
so_replay
.
rp_openfh_len
=
resfh
.
fh_handle
.
fh_size
;
memcpy
(
open
->
op_stateowner
->
so_replay
.
rp_openfh
,
&
resfh
.
fh_handle
.
fh_base
,
resfh
.
fh_handle
.
fh_size
);
fh_copy_shallow
(
&
open
->
op_stateowner
->
so_replay
.
rp_openfh
,
&
resfh
.
fh_handle
);
if
(
!
created
)
status
=
do_open_permission
(
rqstp
,
current_fh
,
open
,
NFSD_MAY_NOP
);
...
...
@@ -152,10 +150,8 @@ do_open_fhandle(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_
memset
(
&
open
->
op_cinfo
,
0
,
sizeof
(
struct
nfsd4_change_info
));
/* set replay cache */
open
->
op_stateowner
->
so_replay
.
rp_openfh_len
=
current_fh
->
fh_handle
.
fh_size
;
memcpy
(
open
->
op_stateowner
->
so_replay
.
rp_openfh
,
&
current_fh
->
fh_handle
.
fh_base
,
current_fh
->
fh_handle
.
fh_size
);
fh_copy_shallow
(
&
open
->
op_stateowner
->
so_replay
.
rp_openfh
,
&
current_fh
->
fh_handle
);
open
->
op_truncate
=
(
open
->
op_iattr
.
ia_valid
&
ATTR_SIZE
)
&&
(
open
->
op_iattr
.
ia_size
==
0
);
...
...
@@ -187,9 +183,8 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
if
(
status
==
nfserr_replay_me
)
{
struct
nfs4_replay
*
rp
=
&
open
->
op_stateowner
->
so_replay
;
fh_put
(
&
cstate
->
current_fh
);
cstate
->
current_fh
.
fh_handle
.
fh_size
=
rp
->
rp_openfh_len
;
memcpy
(
&
cstate
->
current_fh
.
fh_handle
.
fh_base
,
rp
->
rp_openfh
,
rp
->
rp_openfh_len
);
fh_copy_shallow
(
&
cstate
->
current_fh
.
fh_handle
,
&
rp
->
rp_openfh
);
status
=
fh_verify
(
rqstp
,
&
cstate
->
current_fh
,
0
,
NFSD_MAY_NOP
);
if
(
status
)
dprintk
(
"nfsd4_open: replay failed"
...
...
include/linux/nfsd/nfsfh.h
浏览文件 @
a4773c08
...
...
@@ -269,6 +269,13 @@ fh_copy(struct svc_fh *dst, struct svc_fh *src)
return
dst
;
}
static
inline
void
fh_copy_shallow
(
struct
knfsd_fh
*
dst
,
struct
knfsd_fh
*
src
)
{
dst
->
fh_size
=
src
->
fh_size
;
memcpy
(
&
dst
->
fh_base
,
&
src
->
fh_base
,
src
->
fh_size
);
}
static
__inline__
struct
svc_fh
*
fh_init
(
struct
svc_fh
*
fhp
,
int
maxsize
)
{
...
...
include/linux/nfsd/state.h
浏览文件 @
a4773c08
...
...
@@ -168,8 +168,7 @@ struct nfs4_replay {
unsigned
int
rp_buflen
;
char
*
rp_buf
;
unsigned
intrp_allocated
;
int
rp_openfh_len
;
char
rp_openfh
[
NFS4_FHSIZE
];
struct
knfsd_fh
rp_openfh
;
char
rp_ibuf
[
NFSD4_REPLAY_ISIZE
];
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录