Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
8d9266ff
L
linux
项目概览
xiphi1978
/
linux
通知
2
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,发现更多精彩内容 >>
提交
8d9266ff
编写于
7月 17, 2011
作者:
T
Trond Myklebust
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
SUNRPC: Initalise the struct xprt upon allocation
Signed-off-by:
N
Trond Myklebust
<
Trond.Myklebust@netapp.com
>
上级
43cedbf0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
37 addition
and
30 deletion
+37
-30
net/sunrpc/xprt.c
net/sunrpc/xprt.c
+37
-30
未找到文件。
net/sunrpc/xprt.c
浏览文件 @
8d9266ff
...
...
@@ -1091,38 +1091,9 @@ void xprt_release(struct rpc_task *task)
xprt_free_bc_request
(
req
);
}
/**
* xprt_create_transport - create an RPC transport
* @args: rpc transport creation arguments
*
*/
struct
rpc_xprt
*
xprt_create_transport
(
struct
xprt_create
*
args
)
static
void
xprt_init
(
struct
rpc_xprt
*
xprt
)
{
struct
rpc_xprt
*
xprt
;
struct
rpc_rqst
*
req
;
struct
xprt_class
*
t
;
spin_lock
(
&
xprt_list_lock
);
list_for_each_entry
(
t
,
&
xprt_list
,
list
)
{
if
(
t
->
ident
==
args
->
ident
)
{
spin_unlock
(
&
xprt_list_lock
);
goto
found
;
}
}
spin_unlock
(
&
xprt_list_lock
);
printk
(
KERN_ERR
"RPC: transport (%d) not supported
\n
"
,
args
->
ident
);
return
ERR_PTR
(
-
EIO
);
found:
xprt
=
t
->
setup
(
args
);
if
(
IS_ERR
(
xprt
))
{
dprintk
(
"RPC: xprt_create_transport: failed, %ld
\n
"
,
-
PTR_ERR
(
xprt
));
return
xprt
;
}
if
(
test_and_set_bit
(
XPRT_INITIALIZED
,
&
xprt
->
state
))
/* ->setup returned a pre-initialized xprt: */
return
xprt
;
spin_lock_init
(
&
xprt
->
transport_lock
);
spin_lock_init
(
&
xprt
->
reserve_lock
);
...
...
@@ -1156,6 +1127,42 @@ struct rpc_xprt *xprt_create_transport(struct xprt_create *args)
xprt_init_xid
(
xprt
);
}
/**
* xprt_create_transport - create an RPC transport
* @args: rpc transport creation arguments
*
*/
struct
rpc_xprt
*
xprt_create_transport
(
struct
xprt_create
*
args
)
{
struct
rpc_xprt
*
xprt
;
struct
xprt_class
*
t
;
spin_lock
(
&
xprt_list_lock
);
list_for_each_entry
(
t
,
&
xprt_list
,
list
)
{
if
(
t
->
ident
==
args
->
ident
)
{
spin_unlock
(
&
xprt_list_lock
);
goto
found
;
}
}
spin_unlock
(
&
xprt_list_lock
);
printk
(
KERN_ERR
"RPC: transport (%d) not supported
\n
"
,
args
->
ident
);
return
ERR_PTR
(
-
EIO
);
found:
xprt
=
t
->
setup
(
args
);
if
(
IS_ERR
(
xprt
))
{
dprintk
(
"RPC: xprt_create_transport: failed, %ld
\n
"
,
-
PTR_ERR
(
xprt
));
return
xprt
;
}
if
(
test_and_set_bit
(
XPRT_INITIALIZED
,
&
xprt
->
state
))
/* ->setup returned a pre-initialized xprt: */
return
xprt
;
xprt_init
(
xprt
);
dprintk
(
"RPC: created transport %p with %u slots
\n
"
,
xprt
,
xprt
->
max_reqs
);
return
xprt
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录