Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
aba809cf
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看板
提交
aba809cf
编写于
9月 28, 2013
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
namespace.c: get rid of mnt_ghosts
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
9559f689
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
9 addition
and
18 deletion
+9
-18
fs/mount.h
fs/mount.h
+1
-1
fs/namespace.c
fs/namespace.c
+7
-15
fs/pnode.c
fs/pnode.c
+1
-2
未找到文件。
fs/mount.h
浏览文件 @
aba809cf
...
...
@@ -55,7 +55,7 @@ struct mount {
int
mnt_group_id
;
/* peer group identifier */
int
mnt_expiry_mark
;
/* true if marked for expiry */
int
mnt_pinned
;
int
mnt_ghosts
;
struct
path
mnt_ex_mountpoint
;
};
#define MNT_NS_INTERNAL ERR_PTR(-EINVAL)
/* distinct from any mnt_namespace */
...
...
fs/namespace.c
浏览文件 @
aba809cf
...
...
@@ -1136,20 +1136,8 @@ static void namespace_unlock(void)
while
(
!
list_empty
(
&
head
))
{
mnt
=
list_first_entry
(
&
head
,
struct
mount
,
mnt_hash
);
list_del_init
(
&
mnt
->
mnt_hash
);
if
(
mnt_has_parent
(
mnt
))
{
struct
dentry
*
dentry
;
struct
mount
*
m
;
br_write_lock
(
&
vfsmount_lock
);
dentry
=
mnt
->
mnt_mountpoint
;
m
=
mnt
->
mnt_parent
;
mnt
->
mnt_mountpoint
=
mnt
->
mnt
.
mnt_root
;
mnt
->
mnt_parent
=
mnt
;
m
->
mnt_ghosts
--
;
br_write_unlock
(
&
vfsmount_lock
);
dput
(
dentry
);
mntput
(
&
m
->
mnt
);
}
if
(
mnt
->
mnt_ex_mountpoint
.
mnt
)
path_put
(
&
mnt
->
mnt_ex_mountpoint
);
mntput
(
&
mnt
->
mnt
);
}
}
...
...
@@ -1181,8 +1169,12 @@ void umount_tree(struct mount *mnt, int propagate)
p
->
mnt_ns
=
NULL
;
list_del_init
(
&
p
->
mnt_child
);
if
(
mnt_has_parent
(
p
))
{
p
->
mnt_parent
->
mnt_ghosts
++
;
put_mountpoint
(
p
->
mnt_mp
);
/* move the reference to mountpoint into ->mnt_ex_mountpoint */
p
->
mnt_ex_mountpoint
.
dentry
=
p
->
mnt_mountpoint
;
p
->
mnt_ex_mountpoint
.
mnt
=
&
p
->
mnt_parent
->
mnt
;
p
->
mnt_mountpoint
=
p
->
mnt
.
mnt_root
;
p
->
mnt_parent
=
p
;
p
->
mnt_mp
=
NULL
;
}
change_mnt_propagation
(
p
,
MS_PRIVATE
);
...
...
fs/pnode.c
浏览文件 @
aba809cf
...
...
@@ -278,8 +278,7 @@ int propagate_mnt(struct mount *dest_mnt, struct mountpoint *dest_mp,
*/
static
inline
int
do_refcount_check
(
struct
mount
*
mnt
,
int
count
)
{
int
mycount
=
mnt_get_count
(
mnt
)
-
mnt
->
mnt_ghosts
;
return
(
mycount
>
count
);
return
mnt_get_count
(
mnt
)
>
count
;
}
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录