Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
be182bff
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
be182bff
编写于
1月 07, 2011
作者:
N
Nick Piggin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fs: reduce dcache_inode_lock width in lru scanning
Signed-off-by:
N
Nick Piggin
<
npiggin@kernel.dk
>
上级
89e60548
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
8 deletion
+8
-8
fs/dcache.c
fs/dcache.c
+8
-8
未找到文件。
fs/dcache.c
浏览文件 @
be182bff
...
...
@@ -621,7 +621,7 @@ static void shrink_dentry_list(struct list_head *list)
dentry
=
list_entry
(
list
->
prev
,
struct
dentry
,
d_lru
);
if
(
!
spin_trylock
(
&
dentry
->
d_lock
))
{
relock:
relock
1
:
spin_unlock
(
&
dcache_lru_lock
);
cpu_relax
();
spin_lock
(
&
dcache_lru_lock
);
...
...
@@ -638,20 +638,24 @@ static void shrink_dentry_list(struct list_head *list)
spin_unlock
(
&
dentry
->
d_lock
);
continue
;
}
if
(
!
spin_trylock
(
&
dcache_inode_lock
))
{
relock2:
spin_unlock
(
&
dentry
->
d_lock
);
goto
relock1
;
}
if
(
IS_ROOT
(
dentry
))
parent
=
NULL
;
else
parent
=
dentry
->
d_parent
;
if
(
parent
&&
!
spin_trylock
(
&
parent
->
d_lock
))
{
spin_unlock
(
&
d
entry
->
d
_lock
);
goto
relock
;
spin_unlock
(
&
d
cache_inode
_lock
);
goto
relock
2
;
}
__dentry_lru_del
(
dentry
);
spin_unlock
(
&
dcache_lru_lock
);
prune_one_dentry
(
dentry
,
parent
);
/* dcache_inode_lock and dentry->d_lock dropped */
spin_lock
(
&
dcache_inode_lock
);
spin_lock
(
&
dcache_lru_lock
);
}
}
...
...
@@ -672,7 +676,6 @@ static void __shrink_dcache_sb(struct super_block *sb, int *count, int flags)
LIST_HEAD
(
tmp
);
int
cnt
=
*
count
;
spin_lock
(
&
dcache_inode_lock
);
relock:
spin_lock
(
&
dcache_lru_lock
);
while
(
!
list_empty
(
&
sb
->
s_dentry_lru
))
{
...
...
@@ -711,7 +714,6 @@ static void __shrink_dcache_sb(struct super_block *sb, int *count, int flags)
if
(
!
list_empty
(
&
referenced
))
list_splice
(
&
referenced
,
&
sb
->
s_dentry_lru
);
spin_unlock
(
&
dcache_lru_lock
);
spin_unlock
(
&
dcache_inode_lock
);
}
/**
...
...
@@ -800,14 +802,12 @@ void shrink_dcache_sb(struct super_block *sb)
{
LIST_HEAD
(
tmp
);
spin_lock
(
&
dcache_inode_lock
);
spin_lock
(
&
dcache_lru_lock
);
while
(
!
list_empty
(
&
sb
->
s_dentry_lru
))
{
list_splice_init
(
&
sb
->
s_dentry_lru
,
&
tmp
);
shrink_dentry_list
(
&
tmp
);
}
spin_unlock
(
&
dcache_lru_lock
);
spin_unlock
(
&
dcache_inode_lock
);
}
EXPORT_SYMBOL
(
shrink_dcache_sb
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录