Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
20798dfe
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
20798dfe
编写于
11月 18, 2020
作者:
C
Chuck Lever
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
NFSD: Update the NFSv3 GETACL result encoder to use struct xdr_stream
Signed-off-by:
N
Chuck Lever
<
chuck.lever@oracle.com
>
上级
83d0b845
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
43 addition
and
16 deletion
+43
-16
fs/nfsd/nfs3acl.c
fs/nfsd/nfs3acl.c
+19
-14
fs/nfsd/nfs3xdr.c
fs/nfsd/nfs3xdr.c
+21
-2
fs/nfsd/xdr3.h
fs/nfsd/xdr3.h
+3
-0
未找到文件。
fs/nfsd/nfs3acl.c
浏览文件 @
20798dfe
...
...
@@ -168,22 +168,25 @@ static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p)
/* GETACL */
static
int
nfs3svc_encode_getaclres
(
struct
svc_rqst
*
rqstp
,
__be32
*
p
)
{
struct
xdr_stream
*
xdr
=
&
rqstp
->
rq_res_stream
;
struct
nfsd3_getaclres
*
resp
=
rqstp
->
rq_resp
;
struct
dentry
*
dentry
=
resp
->
fh
.
fh_dentry
;
struct
kvec
*
head
=
rqstp
->
rq_res
.
head
;
struct
inode
*
inode
=
d_inode
(
dentry
);
unsigned
int
base
;
int
n
;
int
w
;
*
p
++
=
resp
->
status
;
p
=
nfs3svc_encode_post_op_attr
(
rqstp
,
p
,
&
resp
->
fh
);
if
(
resp
->
status
==
0
&&
dentry
&&
d_really_is_positive
(
dentry
))
{
struct
inode
*
inode
=
d_inode
(
dentry
);
struct
kvec
*
head
=
rqstp
->
rq_res
.
head
;
unsigned
int
base
;
int
n
;
int
w
;
*
p
++
=
htonl
(
resp
->
mask
);
if
(
!
xdr_ressize_check
(
rqstp
,
p
))
if
(
!
svcxdr_encode_nfsstat3
(
xdr
,
resp
->
status
))
return
0
;
switch
(
resp
->
status
)
{
case
nfs_ok
:
if
(
!
svcxdr_encode_post_op_attr
(
rqstp
,
xdr
,
&
resp
->
fh
))
return
0
;
base
=
(
char
*
)
p
-
(
char
*
)
head
->
iov_base
;
if
(
xdr_stream_encode_u32
(
xdr
,
resp
->
mask
)
<
0
)
return
0
;
base
=
(
char
*
)
xdr
->
p
-
(
char
*
)
head
->
iov_base
;
rqstp
->
rq_res
.
page_len
=
w
=
nfsacl_size
(
(
resp
->
mask
&
NFS_ACL
)
?
resp
->
acl_access
:
NULL
,
...
...
@@ -204,9 +207,11 @@ static int nfs3svc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p)
NFS_ACL_DEFAULT
);
if
(
n
<=
0
)
return
0
;
}
else
if
(
!
xdr_ressize_check
(
rqstp
,
p
))
break
;
default:
if
(
!
svcxdr_encode_post_op_attr
(
rqstp
,
xdr
,
&
resp
->
fh
))
return
0
;
}
return
1
;
}
...
...
fs/nfsd/nfs3xdr.c
浏览文件 @
20798dfe
...
...
@@ -107,7 +107,16 @@ svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp)
return
true
;
}
static
bool
/**
* svcxdr_encode_nfsstat3 - Encode an NFSv3 status code
* @xdr: XDR stream
* @status: status value to encode
*
* Return values:
* %false: Send buffer space was exhausted
* %true: Success
*/
bool
svcxdr_encode_nfsstat3
(
struct
xdr_stream
*
xdr
,
__be32
status
)
{
__be32
*
p
;
...
...
@@ -464,7 +473,17 @@ svcxdr_encode_pre_op_attr(struct xdr_stream *xdr, const struct svc_fh *fhp)
return
svcxdr_encode_wcc_attr
(
xdr
,
fhp
);
}
static
bool
/**
* svcxdr_encode_post_op_attr - Encode NFSv3 post-op attributes
* @rqstp: Context of a completed RPC transaction
* @xdr: XDR stream
* @fhp: File handle to encode
*
* Return values:
* %false: Send buffer space was exhausted
* %true: Success
*/
bool
svcxdr_encode_post_op_attr
(
struct
svc_rqst
*
rqstp
,
struct
xdr_stream
*
xdr
,
const
struct
svc_fh
*
fhp
)
{
...
...
fs/nfsd/xdr3.h
浏览文件 @
20798dfe
...
...
@@ -308,5 +308,8 @@ int nfs3svc_encode_entryplus3(void *data, const char *name, int namlen,
__be32
*
nfs3svc_encode_post_op_attr
(
struct
svc_rqst
*
rqstp
,
__be32
*
p
,
struct
svc_fh
*
fhp
);
bool
svcxdr_decode_nfs_fh3
(
struct
xdr_stream
*
xdr
,
struct
svc_fh
*
fhp
);
bool
svcxdr_encode_nfsstat3
(
struct
xdr_stream
*
xdr
,
__be32
status
);
bool
svcxdr_encode_post_op_attr
(
struct
svc_rqst
*
rqstp
,
struct
xdr_stream
*
xdr
,
const
struct
svc_fh
*
fhp
);
#endif
/* _LINUX_NFSD_XDR3_H */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录