Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
0828170f
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
0828170f
编写于
9月 05, 2017
作者:
J
J. Bruce Fields
浏览文件
操作
浏览文件
下载
差异文件
merge nfsd 4.13 bugfixes into nfsd for-4.14 branch
上级
7075a867
eebe53e8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
6 deletion
+22
-6
fs/nfsd/nfs4xdr.c
fs/nfsd/nfs4xdr.c
+2
-4
net/sunrpc/svcsock.c
net/sunrpc/svcsock.c
+20
-2
未找到文件。
fs/nfsd/nfs4xdr.c
浏览文件 @
0828170f
...
...
@@ -144,7 +144,7 @@ static void next_decode_page(struct nfsd4_compoundargs *argp)
argp
->
p
=
page_address
(
argp
->
pagelist
[
0
]);
argp
->
pagelist
++
;
if
(
argp
->
pagelen
<
PAGE_SIZE
)
{
argp
->
end
=
argp
->
p
+
(
argp
->
pagelen
>>
2
);
argp
->
end
=
argp
->
p
+
XDR_QUADLEN
(
argp
->
pagelen
);
argp
->
pagelen
=
0
;
}
else
{
argp
->
end
=
argp
->
p
+
(
PAGE_SIZE
>>
2
);
...
...
@@ -1279,9 +1279,7 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write)
argp
->
pagelen
-=
pages
*
PAGE_SIZE
;
len
-=
pages
*
PAGE_SIZE
;
argp
->
p
=
(
__be32
*
)
page_address
(
argp
->
pagelist
[
0
]);
argp
->
pagelist
++
;
argp
->
end
=
argp
->
p
+
XDR_QUADLEN
(
PAGE_SIZE
);
next_decode_page
(
argp
);
}
argp
->
p
+=
XDR_QUADLEN
(
len
);
...
...
net/sunrpc/svcsock.c
浏览文件 @
0828170f
...
...
@@ -421,6 +421,9 @@ static void svc_data_ready(struct sock *sk)
dprintk
(
"svc: socket %p(inet %p), busy=%d
\n
"
,
svsk
,
sk
,
test_bit
(
XPT_BUSY
,
&
svsk
->
sk_xprt
.
xpt_flags
));
/* Refer to svc_setup_socket() for details. */
rmb
();
svsk
->
sk_odata
(
sk
);
if
(
!
test_and_set_bit
(
XPT_DATA
,
&
svsk
->
sk_xprt
.
xpt_flags
))
svc_xprt_enqueue
(
&
svsk
->
sk_xprt
);
...
...
@@ -437,6 +440,9 @@ static void svc_write_space(struct sock *sk)
if
(
svsk
)
{
dprintk
(
"svc: socket %p(inet %p), write_space busy=%d
\n
"
,
svsk
,
sk
,
test_bit
(
XPT_BUSY
,
&
svsk
->
sk_xprt
.
xpt_flags
));
/* Refer to svc_setup_socket() for details. */
rmb
();
svsk
->
sk_owspace
(
sk
);
svc_xprt_enqueue
(
&
svsk
->
sk_xprt
);
}
...
...
@@ -760,8 +766,12 @@ static void svc_tcp_listen_data_ready(struct sock *sk)
dprintk
(
"svc: socket %p TCP (listen) state change %d
\n
"
,
sk
,
sk
->
sk_state
);
if
(
svsk
)
if
(
svsk
)
{
/* Refer to svc_setup_socket() for details. */
rmb
();
svsk
->
sk_odata
(
sk
);
}
/*
* This callback may called twice when a new connection
* is established as a child socket inherits everything
...
...
@@ -794,6 +804,8 @@ static void svc_tcp_state_change(struct sock *sk)
if
(
!
svsk
)
printk
(
"svc: socket %p: no user data
\n
"
,
sk
);
else
{
/* Refer to svc_setup_socket() for details. */
rmb
();
svsk
->
sk_ostate
(
sk
);
if
(
sk
->
sk_state
!=
TCP_ESTABLISHED
)
{
set_bit
(
XPT_CLOSE
,
&
svsk
->
sk_xprt
.
xpt_flags
);
...
...
@@ -1381,12 +1393,18 @@ static struct svc_sock *svc_setup_socket(struct svc_serv *serv,
return
ERR_PTR
(
err
);
}
inet
->
sk_user_data
=
svsk
;
svsk
->
sk_sock
=
sock
;
svsk
->
sk_sk
=
inet
;
svsk
->
sk_ostate
=
inet
->
sk_state_change
;
svsk
->
sk_odata
=
inet
->
sk_data_ready
;
svsk
->
sk_owspace
=
inet
->
sk_write_space
;
/*
* This barrier is necessary in order to prevent race condition
* with svc_data_ready(), svc_listen_data_ready() and others
* when calling callbacks above.
*/
wmb
();
inet
->
sk_user_data
=
svsk
;
/* Initialize the socket */
if
(
sock
->
type
==
SOCK_DGRAM
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录