Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
190afd81
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,发现更多精彩内容 >>
提交
190afd81
编写于
1月 25, 2015
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debugfs: split the beginning and the end of __create_file() off
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
e09ddf36
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
39 addition
and
22 deletion
+39
-22
fs/debugfs/inode.c
fs/debugfs/inode.c
+39
-22
未找到文件。
fs/debugfs/inode.c
浏览文件 @
190afd81
...
...
@@ -305,11 +305,9 @@ static struct file_system_type debug_fs_type = {
};
MODULE_ALIAS_FS
(
"debugfs"
);
static
struct
dentry
*
__create_file
(
const
char
*
name
,
umode_t
mode
,
struct
dentry
*
parent
,
void
*
data
,
const
struct
file_operations
*
fops
)
static
struct
dentry
*
start_creating
(
const
char
*
name
,
struct
dentry
*
parent
)
{
struct
dentry
*
dentry
=
NULL
;
struct
dentry
*
dentry
;
int
error
;
pr_debug
(
"debugfs: creating file '%s'
\n
"
,
name
);
...
...
@@ -317,7 +315,7 @@ static struct dentry *__create_file(const char *name, umode_t mode,
error
=
simple_pin_fs
(
&
debug_fs_type
,
&
debugfs_mount
,
&
debugfs_mount_count
);
if
(
error
)
goto
exit
;
return
ERR_PTR
(
error
)
;
/* If the parent is not specified, we create it in the root.
* We need the root dentry to do this, which is in the super
...
...
@@ -329,32 +327,51 @@ static struct dentry *__create_file(const char *name, umode_t mode,
mutex_lock
(
&
parent
->
d_inode
->
i_mutex
);
dentry
=
lookup_one_len
(
name
,
parent
,
strlen
(
name
));
if
(
!
IS_ERR
(
dentry
))
{
switch
(
mode
&
S_IFMT
)
{
case
S_IFDIR
:
error
=
debugfs_mkdir
(
dentry
,
mode
);
break
;
case
S_IFLNK
:
error
=
debugfs_link
(
dentry
,
mode
,
data
);
break
;
default:
error
=
debugfs_create
(
dentry
,
mode
,
data
,
fops
);
break
;
}
if
(
!
IS_ERR
(
dentry
)
&&
dentry
->
d_inode
)
{
dput
(
dentry
);
}
else
error
=
PTR_ERR
(
dentry
);
mutex_unlock
(
&
parent
->
d_inode
->
i_mutex
);
dentry
=
ERR_PTR
(
-
EEXIST
);
}
if
(
IS_ERR
(
dentry
))
mutex_unlock
(
&
parent
->
d_inode
->
i_mutex
);
return
dentry
;
}
static
struct
dentry
*
end_creating
(
struct
dentry
*
dentry
,
int
error
)
{
mutex_unlock
(
&
dentry
->
d_parent
->
d_inode
->
i_mutex
);
dput
(
dentry
);
if
(
error
)
{
dentry
=
NULL
;
simple_release_fs
(
&
debugfs_mount
,
&
debugfs_mount_count
);
}
exit:
return
dentry
;
}
static
struct
dentry
*
__create_file
(
const
char
*
name
,
umode_t
mode
,
struct
dentry
*
parent
,
void
*
data
,
const
struct
file_operations
*
fops
)
{
struct
dentry
*
dentry
=
start_creating
(
name
,
parent
);
int
error
;
if
(
IS_ERR
(
dentry
))
return
NULL
;
switch
(
mode
&
S_IFMT
)
{
case
S_IFDIR
:
error
=
debugfs_mkdir
(
dentry
,
mode
);
break
;
case
S_IFLNK
:
error
=
debugfs_link
(
dentry
,
mode
,
data
);
break
;
default:
error
=
debugfs_create
(
dentry
,
mode
,
data
,
fops
);
break
;
}
return
end_creating
(
dentry
,
error
);
}
/**
* debugfs_create_file - create a file in the debugfs filesystem
* @name: a pointer to a string containing the name of the file to create.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录