Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
daccbded
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
daccbded
编写于
6月 25, 2010
作者:
T
Trond Myklebust
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
NFSv4: Clean up for lockowner XDR encoding
Signed-off-by:
N
Trond Myklebust
<
Trond.Myklebust@netapp.com
>
上级
f11ac8db
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
12 deletion
+20
-12
fs/nfs/nfs4xdr.c
fs/nfs/nfs4xdr.c
+20
-12
未找到文件。
fs/nfs/nfs4xdr.c
浏览文件 @
daccbded
...
...
@@ -202,14 +202,17 @@ static int nfs4_stat_to_errno(int);
#define encode_link_maxsz (op_encode_hdr_maxsz + \
nfs4_name_maxsz)
#define decode_link_maxsz (op_decode_hdr_maxsz + decode_change_info_maxsz)
#define encode_lockowner_maxsz (7)
#define encode_lock_maxsz (op_encode_hdr_maxsz + \
7 + \
1 + encode_stateid_maxsz + 8)
1 + encode_stateid_maxsz + 1 + \
encode_lockowner_maxsz)
#define decode_lock_denied_maxsz \
(8 + decode_lockowner_maxsz)
#define decode_lock_maxsz (op_decode_hdr_maxsz + \
decode_lock_denied_maxsz)
#define encode_lockt_maxsz (op_encode_hdr_maxsz + 12)
#define encode_lockt_maxsz (op_encode_hdr_maxsz + 5 + \
encode_lockowner_maxsz)
#define decode_lockt_maxsz (op_decode_hdr_maxsz + \
decode_lock_denied_maxsz)
#define encode_locku_maxsz (op_encode_hdr_maxsz + 3 + \
...
...
@@ -1042,6 +1045,17 @@ static inline uint64_t nfs4_lock_length(struct file_lock *fl)
return
fl
->
fl_end
-
fl
->
fl_start
+
1
;
}
static
void
encode_lockowner
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_lowner
*
lowner
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
28
);
p
=
xdr_encode_hyper
(
p
,
lowner
->
clientid
);
*
p
++
=
cpu_to_be32
(
16
);
p
=
xdr_encode_opaque_fixed
(
p
,
"lock id:"
,
8
);
xdr_encode_hyper
(
p
,
lowner
->
id
);
}
/*
* opcode,type,reclaim,offset,length,new_lock_owner = 32
* open_seqid,open_stateid,lock_seqid,lock_owner.clientid, lock_owner.id = 40
...
...
@@ -1058,14 +1072,11 @@ static void encode_lock(struct xdr_stream *xdr, const struct nfs_lock_args *args
p
=
xdr_encode_hyper
(
p
,
nfs4_lock_length
(
args
->
fl
));
*
p
=
cpu_to_be32
(
args
->
new_lock_owner
);
if
(
args
->
new_lock_owner
){
p
=
reserve_space
(
xdr
,
4
+
NFS4_STATEID_SIZE
+
32
);
p
=
reserve_space
(
xdr
,
4
+
NFS4_STATEID_SIZE
+
4
);
*
p
++
=
cpu_to_be32
(
args
->
open_seqid
->
sequence
->
counter
);
p
=
xdr_encode_opaque_fixed
(
p
,
args
->
open_stateid
->
data
,
NFS4_STATEID_SIZE
);
*
p
++
=
cpu_to_be32
(
args
->
lock_seqid
->
sequence
->
counter
);
p
=
xdr_encode_hyper
(
p
,
args
->
lock_owner
.
clientid
);
*
p
++
=
cpu_to_be32
(
16
);
p
=
xdr_encode_opaque_fixed
(
p
,
"lock id:"
,
8
);
xdr_encode_hyper
(
p
,
args
->
lock_owner
.
id
);
encode_lockowner
(
xdr
,
&
args
->
lock_owner
);
}
else
{
p
=
reserve_space
(
xdr
,
NFS4_STATEID_SIZE
+
4
);
...
...
@@ -1080,15 +1091,12 @@ static void encode_lockt(struct xdr_stream *xdr, const struct nfs_lockt_args *ar
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
52
);
p
=
reserve_space
(
xdr
,
24
);
*
p
++
=
cpu_to_be32
(
OP_LOCKT
);
*
p
++
=
cpu_to_be32
(
nfs4_lock_type
(
args
->
fl
,
0
));
p
=
xdr_encode_hyper
(
p
,
args
->
fl
->
fl_start
);
p
=
xdr_encode_hyper
(
p
,
nfs4_lock_length
(
args
->
fl
));
p
=
xdr_encode_hyper
(
p
,
args
->
lock_owner
.
clientid
);
*
p
++
=
cpu_to_be32
(
16
);
p
=
xdr_encode_opaque_fixed
(
p
,
"lock id:"
,
8
);
xdr_encode_hyper
(
p
,
args
->
lock_owner
.
id
);
encode_lockowner
(
xdr
,
&
args
->
lock_owner
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_lockt_maxsz
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录