Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
3a8e3611
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看板
提交
3a8e3611
编写于
4月 15, 2018
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
d_walk(): kill 'finish' callback
no users left Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
ff17fa56
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
11 deletion
+7
-11
fs/dcache.c
fs/dcache.c
+7
-11
未找到文件。
fs/dcache.c
浏览文件 @
3a8e3611
...
...
@@ -1230,13 +1230,11 @@ enum d_walk_ret {
* @parent: start of walk
* @data: data passed to @enter() and @finish()
* @enter: callback when first entering the dentry
* @finish: callback when successfully finished the walk
*
* The @enter()
and @finish()
callbacks are called with d_lock held.
* The @enter() callbacks are called with d_lock held.
*/
static
void
d_walk
(
struct
dentry
*
parent
,
void
*
data
,
enum
d_walk_ret
(
*
enter
)(
void
*
,
struct
dentry
*
),
void
(
*
finish
)(
void
*
))
enum
d_walk_ret
(
*
enter
)(
void
*
,
struct
dentry
*
))
{
struct
dentry
*
this_parent
;
struct
list_head
*
next
;
...
...
@@ -1325,8 +1323,6 @@ static void d_walk(struct dentry *parent, void *data,
if
(
need_seqretry
(
&
rename_lock
,
seq
))
goto
rename_retry
;
rcu_read_unlock
();
if
(
finish
)
finish
(
data
);
out_unlock:
spin_unlock
(
&
this_parent
->
d_lock
);
...
...
@@ -1375,7 +1371,7 @@ int path_has_submounts(const struct path *parent)
struct
check_mount
data
=
{
.
mnt
=
parent
->
mnt
,
.
mounted
=
0
};
read_seqlock_excl
(
&
mount_lock
);
d_walk
(
parent
->
dentry
,
&
data
,
path_check_mount
,
NULL
);
d_walk
(
parent
->
dentry
,
&
data
,
path_check_mount
);
read_sequnlock_excl
(
&
mount_lock
);
return
data
.
mounted
;
...
...
@@ -1483,7 +1479,7 @@ void shrink_dcache_parent(struct dentry *parent)
data
.
start
=
parent
;
data
.
found
=
0
;
d_walk
(
parent
,
&
data
,
select_collect
,
NULL
);
d_walk
(
parent
,
&
data
,
select_collect
);
if
(
!
data
.
found
)
break
;
...
...
@@ -1518,7 +1514,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry)
static
void
do_one_tree
(
struct
dentry
*
dentry
)
{
shrink_dcache_parent
(
dentry
);
d_walk
(
dentry
,
dentry
,
umount_check
,
NULL
);
d_walk
(
dentry
,
dentry
,
umount_check
);
d_drop
(
dentry
);
dput
(
dentry
);
}
...
...
@@ -1575,7 +1571,7 @@ void d_invalidate(struct dentry *dentry)
shrink_dcache_parent
(
dentry
);
for
(;;)
{
struct
dentry
*
victim
=
NULL
;
d_walk
(
dentry
,
&
victim
,
find_submount
,
NULL
);
d_walk
(
dentry
,
&
victim
,
find_submount
);
if
(
!
victim
)
{
if
(
had_submounts
)
shrink_dcache_parent
(
dentry
);
...
...
@@ -3082,7 +3078,7 @@ static enum d_walk_ret d_genocide_kill(void *data, struct dentry *dentry)
void
d_genocide
(
struct
dentry
*
parent
)
{
d_walk
(
parent
,
parent
,
d_genocide_kill
,
NULL
);
d_walk
(
parent
,
parent
,
d_genocide_kill
);
}
EXPORT_SYMBOL
(
d_genocide
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录