Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
9fbb76ce
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
9fbb76ce
编写于
10月 12, 2008
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[PATCH] get rid of on-stack dentry in udf
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
ad76cbc6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
15 deletion
+11
-15
fs/udf/namei.c
fs/udf/namei.c
+11
-15
未找到文件。
fs/udf/namei.c
浏览文件 @
9fbb76ce
...
...
@@ -142,7 +142,7 @@ int udf_write_fi(struct inode *inode, struct fileIdentDesc *cfi,
}
static
struct
fileIdentDesc
*
udf_find_entry
(
struct
inode
*
dir
,
struct
dentry
*
dentry
,
struct
qstr
*
child
,
struct
udf_fileident_bh
*
fibh
,
struct
fileIdentDesc
*
cfi
)
{
...
...
@@ -159,8 +159,8 @@ static struct fileIdentDesc *udf_find_entry(struct inode *dir,
sector_t
offset
;
struct
extent_position
epos
=
{};
struct
udf_inode_info
*
dinfo
=
UDF_I
(
dir
);
int
isdotdot
=
dentry
->
d_name
.
len
==
2
&&
dentry
->
d_name
.
name
[
0
]
==
'.'
&&
dentry
->
d_name
.
name
[
1
]
==
'.'
;
int
isdotdot
=
child
->
len
==
2
&&
child
->
name
[
0
]
==
'.'
&&
child
->
name
[
1
]
==
'.'
;
size
=
udf_ext0_offset
(
dir
)
+
dir
->
i_size
;
f_pos
=
udf_ext0_offset
(
dir
);
...
...
@@ -238,8 +238,7 @@ static struct fileIdentDesc *udf_find_entry(struct inode *dir,
continue
;
flen
=
udf_get_filename
(
dir
->
i_sb
,
nameptr
,
fname
,
lfi
);
if
(
flen
&&
udf_match
(
flen
,
fname
,
dentry
->
d_name
.
len
,
dentry
->
d_name
.
name
))
if
(
flen
&&
udf_match
(
flen
,
fname
,
child
->
len
,
child
->
name
))
goto
out_ok
;
}
...
...
@@ -283,7 +282,7 @@ static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry,
}
else
#endif
/* UDF_RECOVERY */
if
(
udf_find_entry
(
dir
,
dentry
,
&
fibh
,
&
cfi
))
{
if
(
udf_find_entry
(
dir
,
&
dentry
->
d_name
,
&
fibh
,
&
cfi
))
{
if
(
fibh
.
sbh
!=
fibh
.
ebh
)
brelse
(
fibh
.
ebh
);
brelse
(
fibh
.
sbh
);
...
...
@@ -783,7 +782,7 @@ static int udf_rmdir(struct inode *dir, struct dentry *dentry)
retval
=
-
ENOENT
;
lock_kernel
();
fi
=
udf_find_entry
(
dir
,
dentry
,
&
fibh
,
&
cfi
);
fi
=
udf_find_entry
(
dir
,
&
dentry
->
d_name
,
&
fibh
,
&
cfi
);
if
(
!
fi
)
goto
out
;
...
...
@@ -829,7 +828,7 @@ static int udf_unlink(struct inode *dir, struct dentry *dentry)
retval
=
-
ENOENT
;
lock_kernel
();
fi
=
udf_find_entry
(
dir
,
dentry
,
&
fibh
,
&
cfi
);
fi
=
udf_find_entry
(
dir
,
&
dentry
->
d_name
,
&
fibh
,
&
cfi
);
if
(
!
fi
)
goto
out
;
...
...
@@ -1113,7 +1112,7 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry,
struct
udf_inode_info
*
old_iinfo
=
UDF_I
(
old_inode
);
lock_kernel
();
ofi
=
udf_find_entry
(
old_dir
,
old_dentry
,
&
ofibh
,
&
ocfi
);
ofi
=
udf_find_entry
(
old_dir
,
&
old_dentry
->
d_name
,
&
ofibh
,
&
ocfi
);
if
(
ofi
)
{
if
(
ofibh
.
sbh
!=
ofibh
.
ebh
)
brelse
(
ofibh
.
ebh
);
...
...
@@ -1124,7 +1123,7 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry,
!=
old_inode
->
i_ino
)
goto
end_rename
;
nfi
=
udf_find_entry
(
new_dir
,
new_dentry
,
&
nfibh
,
&
ncfi
);
nfi
=
udf_find_entry
(
new_dir
,
&
new_dentry
->
d_name
,
&
nfibh
,
&
ncfi
);
if
(
nfi
)
{
if
(
!
new_inode
)
{
if
(
nfibh
.
sbh
!=
nfibh
.
ebh
)
...
...
@@ -1192,7 +1191,7 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry,
udf_write_fi
(
new_dir
,
&
ncfi
,
nfi
,
&
nfibh
,
NULL
,
NULL
);
/* The old fid may have moved - find it again */
ofi
=
udf_find_entry
(
old_dir
,
old_dentry
,
&
ofibh
,
&
ocfi
);
ofi
=
udf_find_entry
(
old_dir
,
&
old_dentry
->
d_name
,
&
ofibh
,
&
ocfi
);
udf_delete_entry
(
old_dir
,
ofi
,
&
ofibh
,
&
ocfi
);
if
(
new_inode
)
{
...
...
@@ -1244,13 +1243,10 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry,
static
struct
dentry
*
udf_get_parent
(
struct
dentry
*
child
)
{
struct
inode
*
inode
=
NULL
;
struct
dentry
dotdot
;
struct
qstr
dotdot
=
{.
name
=
".."
,
.
len
=
2
}
;
struct
fileIdentDesc
cfi
;
struct
udf_fileident_bh
fibh
;
dotdot
.
d_name
.
name
=
".."
;
dotdot
.
d_name
.
len
=
2
;
lock_kernel
();
if
(
!
udf_find_entry
(
child
->
d_inode
,
&
dotdot
,
&
fibh
,
&
cfi
))
goto
out_unlock
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录