Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
47e4bb98
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看板
提交
47e4bb98
编写于
2月 01, 2008
作者:
C
Chris Mason
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Btrfs: Insert extent record and the first backref in a single balance
Signed-off-by:
N
Chris Mason
<
chris.mason@oracle.com
>
上级
80ea96b1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
29 addition
and
11 deletion
+29
-11
fs/btrfs/extent-tree.c
fs/btrfs/extent-tree.c
+29
-11
未找到文件。
fs/btrfs/extent-tree.c
浏览文件 @
47e4bb98
...
...
@@ -1664,12 +1664,13 @@ int btrfs_alloc_extent(struct btrfs_trans_handle *trans,
u64
root_used
;
u64
search_start
=
0
;
u64
new_hint
;
u32
sizes
[
2
];
struct
btrfs_fs_info
*
info
=
root
->
fs_info
;
struct
btrfs_root
*
extent_root
=
info
->
extent_root
;
struct
btrfs_extent_item
extent_item
;
struct
btrfs_extent_item
*
extent_item
;
struct
btrfs_extent_ref
*
ref
;
struct
btrfs_path
*
path
;
btrfs_set_stack_extent_refs
(
&
extent_item
,
1
);
struct
btrfs_key
keys
[
2
];
new_hint
=
max
(
hint_byte
,
root
->
fs_info
->
alloc_start
);
if
(
new_hint
<
btrfs_super_total_bytes
(
&
info
->
super_copy
))
...
...
@@ -1707,20 +1708,37 @@ int btrfs_alloc_extent(struct btrfs_trans_handle *trans,
WARN_ON
(
trans
->
alloc_exclude_nr
);
trans
->
alloc_exclude_start
=
ins
->
objectid
;
trans
->
alloc_exclude_nr
=
ins
->
offset
;
ret
=
btrfs_insert_item
(
trans
,
extent_root
,
ins
,
&
extent_item
,
sizeof
(
extent_item
));
trans
->
alloc_exclude_start
=
0
;
trans
->
alloc_exclude_nr
=
0
;
BUG_ON
(
ret
);
memcpy
(
&
keys
[
0
],
ins
,
sizeof
(
*
ins
));
keys
[
1
].
offset
=
hash_extent_ref
(
root_objectid
,
ref_generation
,
owner
,
owner_offset
);
keys
[
1
].
objectid
=
ins
->
objectid
;
keys
[
1
].
type
=
BTRFS_EXTENT_REF_KEY
;
sizes
[
0
]
=
sizeof
(
*
extent_item
);
sizes
[
1
]
=
sizeof
(
*
ref
);
path
=
btrfs_alloc_path
();
BUG_ON
(
!
path
);
ret
=
btrfs_insert_extent_backref
(
trans
,
extent_root
,
path
,
ins
->
objectid
,
root_objectid
,
ref_generation
,
owner
,
owner_offset
);
ret
=
btrfs_insert_empty_items
(
trans
,
extent_root
,
path
,
keys
,
sizes
,
2
);
BUG_ON
(
ret
);
extent_item
=
btrfs_item_ptr
(
path
->
nodes
[
0
],
path
->
slots
[
0
],
struct
btrfs_extent_item
);
btrfs_set_extent_refs
(
path
->
nodes
[
0
],
extent_item
,
1
);
ref
=
btrfs_item_ptr
(
path
->
nodes
[
0
],
path
->
slots
[
0
]
+
1
,
struct
btrfs_extent_ref
);
btrfs_set_ref_root
(
path
->
nodes
[
0
],
ref
,
root_objectid
);
btrfs_set_ref_generation
(
path
->
nodes
[
0
],
ref
,
ref_generation
);
btrfs_set_ref_objectid
(
path
->
nodes
[
0
],
ref
,
owner
);
btrfs_set_ref_offset
(
path
->
nodes
[
0
],
ref
,
owner_offset
);
btrfs_mark_buffer_dirty
(
path
->
nodes
[
0
]);
trans
->
alloc_exclude_start
=
0
;
trans
->
alloc_exclude_nr
=
0
;
btrfs_free_path
(
path
);
finish_current_insert
(
trans
,
extent_root
);
pending_ret
=
del_pending_extents
(
trans
,
extent_root
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录