Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
0f0afb1d
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
0f0afb1d
编写于
11月 24, 2011
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vfs: spread struct mount - change_mnt_propagation/set_mnt_shared
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
b105e270
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
14 deletion
+14
-14
fs/namespace.c
fs/namespace.c
+4
-4
fs/pnode.c
fs/pnode.c
+6
-6
fs/pnode.h
fs/pnode.h
+4
-4
未找到文件。
fs/namespace.c
浏览文件 @
0f0afb1d
...
...
@@ -724,7 +724,7 @@ static struct vfsmount *clone_mnt(struct vfsmount *old, struct dentry *root,
mnt
->
mnt
.
mnt_master
=
old
->
mnt_master
;
}
if
(
flag
&
CL_MAKE_SHARED
)
set_mnt_shared
(
&
mnt
->
mnt
);
set_mnt_shared
(
mnt
);
/* stick the duplicate mount on the same expiry list
* as the original if that was on one */
...
...
@@ -1239,7 +1239,7 @@ void umount_tree(struct vfsmount *mnt, int propagate, struct list_head *kill)
p
->
mnt
.
mnt_parent
->
mnt_ghosts
++
;
dentry_reset_mounted
(
p
->
mnt
.
mnt_mountpoint
);
}
change_mnt_propagation
(
&
p
->
mnt
,
MS_PRIVATE
);
change_mnt_propagation
(
p
,
MS_PRIVATE
);
}
list_splice
(
&
tmp_list
,
kill
);
}
...
...
@@ -1608,7 +1608,7 @@ static int attach_recursive_mnt(struct mount *source_mnt,
if
(
IS_MNT_SHARED
(
dest_mnt
))
{
for
(
p
=
source_mnt
;
p
;
p
=
next_mnt
(
p
,
&
source_mnt
->
mnt
))
set_mnt_shared
(
&
p
->
mnt
);
set_mnt_shared
(
p
);
}
if
(
parent_path
)
{
detach_mnt
(
source_mnt
,
parent_path
);
...
...
@@ -1723,7 +1723,7 @@ static int do_change_type(struct path *path, int flag)
br_write_lock
(
vfsmount_lock
);
for
(
m
=
mnt
;
m
;
m
=
(
recurse
?
next_mnt
(
m
,
&
mnt
->
mnt
)
:
NULL
))
change_mnt_propagation
(
&
m
->
mnt
,
type
);
change_mnt_propagation
(
m
,
type
);
br_write_unlock
(
vfsmount_lock
);
out_unlock:
...
...
fs/pnode.c
浏览文件 @
0f0afb1d
...
...
@@ -114,20 +114,20 @@ static int do_make_slave(struct vfsmount *mnt)
/*
* vfsmount lock must be held for write
*/
void
change_mnt_propagation
(
struct
vfs
mount
*
mnt
,
int
type
)
void
change_mnt_propagation
(
struct
mount
*
mnt
,
int
type
)
{
if
(
type
==
MS_SHARED
)
{
set_mnt_shared
(
mnt
);
return
;
}
do_make_slave
(
mnt
);
do_make_slave
(
&
mnt
->
mnt
);
if
(
type
!=
MS_SLAVE
)
{
list_del_init
(
&
mnt
->
mnt_slave
);
mnt
->
mnt_master
=
NULL
;
list_del_init
(
&
mnt
->
mnt
.
mnt
_slave
);
mnt
->
mnt
.
mnt
_master
=
NULL
;
if
(
type
==
MS_UNBINDABLE
)
mnt
->
mnt_flags
|=
MNT_UNBINDABLE
;
mnt
->
mnt
.
mnt
_flags
|=
MNT_UNBINDABLE
;
else
mnt
->
mnt_flags
&=
~
MNT_UNBINDABLE
;
mnt
->
mnt
.
mnt
_flags
&=
~
MNT_UNBINDABLE
;
}
}
...
...
fs/pnode.h
浏览文件 @
0f0afb1d
...
...
@@ -23,13 +23,13 @@
#define CL_MAKE_SHARED 0x08
#define CL_PRIVATE 0x10
static
inline
void
set_mnt_shared
(
struct
vfs
mount
*
mnt
)
static
inline
void
set_mnt_shared
(
struct
mount
*
mnt
)
{
mnt
->
mnt_flags
&=
~
MNT_SHARED_MASK
;
mnt
->
mnt_flags
|=
MNT_SHARED
;
mnt
->
mnt
.
mnt
_flags
&=
~
MNT_SHARED_MASK
;
mnt
->
mnt
.
mnt
_flags
|=
MNT_SHARED
;
}
void
change_mnt_propagation
(
struct
vfs
mount
*
,
int
);
void
change_mnt_propagation
(
struct
mount
*
,
int
);
int
propagate_mnt
(
struct
vfsmount
*
,
struct
dentry
*
,
struct
vfsmount
*
,
struct
list_head
*
);
int
propagate_umount
(
struct
list_head
*
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录