Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
2cf4ce7c
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2cf4ce7c
编写于
9月 18, 2011
作者:
C
Chris Mason
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'btrfs-3.0' into for-linus
上级
b6fd41e2
dde820fb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
7 deletion
+12
-7
fs/btrfs/inode.c
fs/btrfs/inode.c
+3
-2
fs/btrfs/ioctl.c
fs/btrfs/ioctl.c
+9
-5
未找到文件。
fs/btrfs/inode.c
浏览文件 @
2cf4ce7c
...
...
@@ -4125,7 +4125,8 @@ static int btrfs_real_readdir(struct file *filp, void *dirent,
/* special case for "." */
if
(
filp
->
f_pos
==
0
)
{
over
=
filldir
(
dirent
,
"."
,
1
,
1
,
btrfs_ino
(
inode
),
DT_DIR
);
over
=
filldir
(
dirent
,
"."
,
1
,
filp
->
f_pos
,
btrfs_ino
(
inode
),
DT_DIR
);
if
(
over
)
return
0
;
filp
->
f_pos
=
1
;
...
...
@@ -4134,7 +4135,7 @@ static int btrfs_real_readdir(struct file *filp, void *dirent,
if
(
filp
->
f_pos
==
1
)
{
u64
pino
=
parent_ino
(
filp
->
f_path
.
dentry
);
over
=
filldir
(
dirent
,
".."
,
2
,
2
,
pino
,
DT_DIR
);
filp
->
f_pos
,
pino
,
DT_DIR
);
if
(
over
)
return
0
;
filp
->
f_pos
=
2
;
...
...
fs/btrfs/ioctl.c
浏览文件 @
2cf4ce7c
...
...
@@ -2177,6 +2177,11 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
if
(
!
(
src_file
->
f_mode
&
FMODE_READ
))
goto
out_fput
;
/* don't make the dst file partly checksummed */
if
((
BTRFS_I
(
src
)
->
flags
&
BTRFS_INODE_NODATASUM
)
!=
(
BTRFS_I
(
inode
)
->
flags
&
BTRFS_INODE_NODATASUM
))
goto
out_fput
;
ret
=
-
EISDIR
;
if
(
S_ISDIR
(
src
->
i_mode
)
||
S_ISDIR
(
inode
->
i_mode
))
goto
out_fput
;
...
...
@@ -2226,6 +2231,10 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
goto
out_unlock
;
}
/* truncate page cache pages from target inode range */
truncate_inode_pages_range
(
&
inode
->
i_data
,
destoff
,
PAGE_CACHE_ALIGN
(
destoff
+
len
)
-
1
);
/* do any pending delalloc/csum calc on src, one way or
another, and lock file content */
while
(
1
)
{
...
...
@@ -2242,10 +2251,6 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
btrfs_wait_ordered_range
(
src
,
off
,
len
);
}
/* truncate page cache pages from target inode range */
truncate_inode_pages_range
(
&
inode
->
i_data
,
off
,
ALIGN
(
off
+
len
,
PAGE_CACHE_SIZE
)
-
1
);
/* clone data */
key
.
objectid
=
btrfs_ino
(
src
);
key
.
type
=
BTRFS_EXTENT_DATA_KEY
;
...
...
@@ -2442,7 +2447,6 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,
if
(
endoff
>
inode
->
i_size
)
btrfs_i_size_write
(
inode
,
endoff
);
BTRFS_I
(
inode
)
->
flags
=
BTRFS_I
(
src
)
->
flags
;
ret
=
btrfs_update_inode
(
trans
,
root
,
inode
);
BUG_ON
(
ret
);
btrfs_end_transaction
(
trans
,
root
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录