Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
0385f1f9
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
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看板
提交
0385f1f9
编写于
6月 19, 2015
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ufs_getfrag_block(): tidy up a bit
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
5fbfb238
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
33 deletion
+15
-33
fs/ufs/inode.c
fs/ufs/inode.c
+15
-33
未找到文件。
fs/ufs/inode.c
浏览文件 @
0385f1f9
...
...
@@ -398,40 +398,30 @@ ufs_inode_getblock(struct inode *inode, u64 ind_block,
static
int
ufs_getfrag_block
(
struct
inode
*
inode
,
sector_t
fragment
,
struct
buffer_head
*
bh_result
,
int
create
)
{
struct
super_block
*
sb
=
inode
->
i_sb
;
struct
ufs_sb_info
*
sbi
=
UFS_SB
(
sb
);
struct
ufs_sb_private_info
*
uspi
=
sbi
->
s_uspi
;
struct
buffer_head
*
bh
;
int
ret
,
err
,
new
;
struct
super_block
*
sb
=
inode
->
i_sb
;
struct
ufs_sb_private_info
*
uspi
=
UFS_SB
(
sb
)
->
s_uspi
;
int
err
=
0
,
new
=
0
;
unsigned
offsets
[
4
];
int
depth
=
ufs_block_to_path
(
inode
,
fragment
>>
uspi
->
s_fpbshift
,
offsets
);
unsigned
long
phys
;
u64
phys64
=
0
;
unsigned
long
phys
;
unsigned
frag
=
fragment
&
uspi
->
s_fpbmask
;
if
(
!
create
)
{
phys64
=
ufs_frag_map
(
inode
,
offsets
,
depth
);
if
(
phys64
)
{
phys64
+=
frag
;
map_bh
(
bh_result
,
sb
,
phys64
);
}
return
0
;
goto
out
;
}
/* This code entered only while writing ....? */
err
=
-
EIO
;
new
=
0
;
ret
=
0
;
bh
=
NULL
;
mutex_lock
(
&
UFS_I
(
inode
)
->
truncate_mutex
);
UFSD
(
"ENTER, ino %lu, fragment %llu
\n
"
,
inode
->
i_ino
,
(
unsigned
long
long
)
fragment
);
if
(
!
depth
)
goto
abort_too_big
;
err
=
0
;
if
(
unlikely
(
!
depth
))
{
ufs_warning
(
sb
,
"ufs_get_block"
,
"block > big"
);
err
=
-
EIO
;
goto
out
;
}
if
(
UFS_I
(
inode
)
->
i_lastfrag
<
UFS_NDIR_FRAGMENT
)
{
unsigned
lastfrag
=
UFS_I
(
inode
)
->
i_lastfrag
;
...
...
@@ -439,7 +429,7 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
if
(
tailfrags
&&
fragment
>=
lastfrag
)
{
if
(
!
ufs_extend_tail
(
inode
,
fragment
,
&
err
,
bh_result
->
b_page
))
goto
abor
t
;
goto
ou
t
;
}
}
...
...
@@ -456,23 +446,15 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
phys64
=
ufs_inode_getblock
(
inode
,
phys64
,
offsets
[
depth
-
1
],
fragment
,
&
err
,
&
phys
,
&
new
,
bh_result
->
b_page
);
}
out:
if
(
phys64
)
{
phys64
+=
frag
;
phys
=
phys64
;
map_bh
(
bh_result
,
sb
,
phys64
);
if
(
new
)
set_buffer_new
(
bh_result
);
}
if
(
err
)
goto
abort
;
if
(
new
)
set_buffer_new
(
bh_result
);
map_bh
(
bh_result
,
sb
,
phys
);
abort:
mutex_unlock
(
&
UFS_I
(
inode
)
->
truncate_mutex
);
return
err
;
abort_too_big:
ufs_warning
(
sb
,
"ufs_get_block"
,
"block > big"
);
goto
abort
;
}
static
int
ufs_writepage
(
struct
page
*
page
,
struct
writeback_control
*
wbc
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录