Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
d5477a8d
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d5477a8d
编写于
9月 08, 2011
作者:
J
J. Bruce Fields
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
nfsd4: add common dl_stid field to delegation
Signed-off-by:
N
J. Bruce Fields
<
bfields@redhat.com
>
上级
dcef0413
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
20 deletion
+22
-20
fs/nfsd/nfs4callback.c
fs/nfsd/nfs4callback.c
+1
-1
fs/nfsd/nfs4state.c
fs/nfsd/nfs4state.c
+10
-10
fs/nfsd/state.h
fs/nfsd/state.h
+11
-9
未找到文件。
fs/nfsd/nfs4callback.c
浏览文件 @
d5477a8d
...
...
@@ -351,7 +351,7 @@ static void encode_cb_recall4args(struct xdr_stream *xdr,
__be32
*
p
;
encode_nfs_cb_opnum4
(
xdr
,
OP_CB_RECALL
);
encode_stateid4
(
xdr
,
&
dp
->
dl_stateid
);
encode_stateid4
(
xdr
,
&
dp
->
dl_st
id
.
sc_st
ateid
);
p
=
xdr_reserve_space
(
xdr
,
4
);
*
p
++
=
xdr_zero
;
/* truncate */
...
...
fs/nfsd/nfs4state.c
浏览文件 @
d5477a8d
...
...
@@ -247,10 +247,10 @@ alloc_init_deleg(struct nfs4_client *clp, struct nfs4_ol_stateid *stp, struct sv
get_nfs4_file
(
fp
);
dp
->
dl_file
=
fp
;
dp
->
dl_type
=
type
;
dp
->
dl_stateid
.
si_boot
=
boot_time
;
dp
->
dl_stateid
.
si_stateownerid
=
current_delegid
++
;
dp
->
dl_stateid
.
si_fileid
=
0
;
dp
->
dl_stateid
.
si_generation
=
1
;
dp
->
dl_st
id
.
sc_st
ateid
.
si_boot
=
boot_time
;
dp
->
dl_st
id
.
sc_st
ateid
.
si_stateownerid
=
current_delegid
++
;
dp
->
dl_st
id
.
sc_st
ateid
.
si_fileid
=
0
;
dp
->
dl_st
id
.
sc_st
ateid
.
si_generation
=
1
;
fh_copy_shallow
(
&
dp
->
dl_fh
,
&
current_fh
->
fh_handle
);
dp
->
dl_time
=
0
;
atomic_set
(
&
dp
->
dl_count
,
1
);
...
...
@@ -2572,7 +2572,7 @@ find_delegation_file(struct nfs4_file *fp, stateid_t *stid)
spin_lock
(
&
recall_lock
);
list_for_each_entry
(
dp
,
&
fp
->
fi_delegations
,
dl_perfile
)
if
(
dp
->
dl_stateid
.
si_stateownerid
==
stid
->
si_stateownerid
)
{
if
(
dp
->
dl_st
id
.
sc_st
ateid
.
si_stateownerid
==
stid
->
si_stateownerid
)
{
spin_unlock
(
&
recall_lock
);
return
dp
;
}
...
...
@@ -2861,10 +2861,10 @@ nfs4_open_delegation(struct svc_fh *fh, struct nfsd4_open *open, struct nfs4_ol_
if
(
status
)
goto
out_free
;
memcpy
(
&
open
->
op_delegate_stateid
,
&
dp
->
dl_st
ateid
,
sizeof
(
dp
->
dl
_stateid
));
memcpy
(
&
open
->
op_delegate_stateid
,
&
dp
->
dl_st
id
.
sc_stateid
,
sizeof
(
dp
->
dl_stid
.
sc
_stateid
));
dprintk
(
"NFSD: delegation stateid="
STATEID_FMT
"
\n
"
,
STATEID_VAL
(
&
dp
->
dl_stateid
));
STATEID_VAL
(
&
dp
->
dl_st
id
.
sc_st
ateid
));
out:
if
(
open
->
op_claim_type
==
NFS4_OPEN_CLAIM_PREVIOUS
&&
flag
==
NFS4_OPEN_DELEGATE_NONE
...
...
@@ -3296,7 +3296,7 @@ nfs4_preprocess_stateid_op(struct nfsd4_compound_state *cstate,
dp
=
find_delegation_stateid
(
ino
,
stateid
);
if
(
!
dp
)
goto
out
;
status
=
check_stateid_generation
(
stateid
,
&
dp
->
dl_stateid
,
nfsd4_has_session
(
cstate
));
status
=
check_stateid_generation
(
stateid
,
&
dp
->
dl_st
id
.
sc_st
ateid
,
nfsd4_has_session
(
cstate
));
if
(
status
)
goto
out
;
status
=
nfs4_check_delegmode
(
dp
,
flags
);
...
...
@@ -3667,7 +3667,7 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
dp
=
find_delegation_stateid
(
inode
,
stateid
);
if
(
!
dp
)
goto
out
;
status
=
check_stateid_generation
(
stateid
,
&
dp
->
dl_stateid
,
nfsd4_has_session
(
cstate
));
status
=
check_stateid_generation
(
stateid
,
&
dp
->
dl_st
id
.
sc_st
ateid
,
nfsd4_has_session
(
cstate
));
if
(
status
)
goto
out
;
renew_client
(
dp
->
dl_client
);
...
...
@@ -3737,7 +3737,7 @@ search_for_delegation(stateid_t *stid)
list_for_each_entry
(
fp
,
&
file_hashtbl
[
i
],
fi_hash
)
{
list_for_each
(
pos
,
&
fp
->
fi_delegations
)
{
dp
=
list_entry
(
pos
,
struct
nfs4_delegation
,
dl_perfile
);
if
(
same_stateid
(
&
dp
->
dl_stateid
,
stid
))
if
(
same_stateid
(
&
dp
->
dl_st
id
.
sc_st
ateid
,
stid
))
return
dp
;
}
}
...
...
fs/nfsd/state.h
浏览文件 @
d5477a8d
...
...
@@ -76,6 +76,15 @@ struct nfsd4_callback {
bool
cb_done
;
};
struct
nfs4_stid
{
#define NFS4_OPEN_STID 1
#define NFS4_LOCK_STID 2
#define NFS4_DELEG_STID 4
char
sc_type
;
struct
list_head
sc_hash
;
stateid_t
sc_stateid
;
};
struct
nfs4_delegation
{
struct
list_head
dl_perfile
;
struct
list_head
dl_perclnt
;
...
...
@@ -86,7 +95,7 @@ struct nfs4_delegation {
u32
dl_type
;
time_t
dl_time
;
/* For recall: */
st
ateid_t
dl_state
id
;
st
ruct
nfs4_stid
dl_st
id
;
struct
knfsd_fh
dl_fh
;
int
dl_retries
;
struct
nfsd4_callback
dl_recall
;
...
...
@@ -446,14 +455,7 @@ static inline struct file *find_any_file(struct nfs4_file *f)
* we should consider defining separate structs for the two cases.
*/
struct
nfs4_stid
{
#define NFS4_OPEN_STID 1
#define NFS4_LOCK_STID 2
char
sc_type
;
struct
list_head
sc_hash
;
stateid_t
sc_stateid
;
};
/* "ol" stands for "Open or Lock". Better suggestions welcome. */
struct
nfs4_ol_stateid
{
struct
nfs4_stid
st_stid
;
struct
list_head
st_perfile
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录