Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
8d71db4f
K
Kernel
项目概览
openeuler
/
Kernel
12 个月 前同步成功
通知
5
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8d71db4f
编写于
3月 19, 2013
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lift sb_start_write/sb_end_write out of ->aio_write()
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
5f2e354f
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
28 addition
and
22 deletion
+28
-22
fs/aio.c
fs/aio.c
+4
-0
fs/btrfs/file.c
fs/btrfs/file.c
+0
-3
fs/cifs/file.c
fs/cifs/file.c
+0
-3
fs/compat.c
fs/compat.c
+4
-2
fs/fuse/file.c
fs/fuse/file.c
+0
-2
fs/ntfs/file.c
fs/ntfs/file.c
+0
-2
fs/ocfs2/file.c
fs/ocfs2/file.c
+0
-3
fs/read_write.c
fs/read_write.c
+6
-2
fs/xfs/xfs_file.c
fs/xfs/xfs_file.c
+0
-3
include/linux/fs.h
include/linux/fs.h
+14
-0
mm/filemap.c
mm/filemap.c
+0
-2
未找到文件。
fs/aio.c
浏览文件 @
8d71db4f
...
...
@@ -1324,6 +1324,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb)
if
(
iocb
->
ki_pos
<
0
)
return
-
EINVAL
;
if
(
opcode
==
IOCB_CMD_PWRITEV
)
file_start_write
(
file
);
do
{
ret
=
rw_op
(
iocb
,
&
iocb
->
ki_iovec
[
iocb
->
ki_cur_seg
],
iocb
->
ki_nr_segs
-
iocb
->
ki_cur_seg
,
...
...
@@ -1336,6 +1338,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb)
}
while
(
ret
>
0
&&
iocb
->
ki_left
>
0
&&
(
opcode
==
IOCB_CMD_PWRITEV
||
(
!
S_ISFIFO
(
inode
->
i_mode
)
&&
!
S_ISSOCK
(
inode
->
i_mode
))));
if
(
opcode
==
IOCB_CMD_PWRITEV
)
file_end_write
(
file
);
/* This means we must have transferred all that we could */
/* No need to retry anymore */
...
...
fs/btrfs/file.c
浏览文件 @
8d71db4f
...
...
@@ -1514,8 +1514,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
size_t
count
,
ocount
;
bool
sync
=
(
file
->
f_flags
&
O_DSYNC
)
||
IS_SYNC
(
file
->
f_mapping
->
host
);
sb_start_write
(
inode
->
i_sb
);
mutex_lock
(
&
inode
->
i_mutex
);
err
=
generic_segment_checks
(
iov
,
&
nr_segs
,
&
ocount
,
VERIFY_READ
);
...
...
@@ -1617,7 +1615,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
if
(
sync
)
atomic_dec
(
&
BTRFS_I
(
inode
)
->
sync_writers
);
out:
sb_end_write
(
inode
->
i_sb
);
current
->
backing_dev_info
=
NULL
;
return
num_written
?
num_written
:
err
;
}
...
...
fs/cifs/file.c
浏览文件 @
8d71db4f
...
...
@@ -2520,8 +2520,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov,
BUG_ON
(
iocb
->
ki_pos
!=
pos
);
sb_start_write
(
inode
->
i_sb
);
/*
* We need to hold the sem to be sure nobody modifies lock list
* with a brlock that prevents writing.
...
...
@@ -2545,7 +2543,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov,
}
up_read
(
&
cinode
->
lock_sem
);
sb_end_write
(
inode
->
i_sb
);
return
rc
;
}
...
...
fs/compat.c
浏览文件 @
8d71db4f
...
...
@@ -1103,10 +1103,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
fnv
=
file
->
f_op
->
aio_write
;
}
if
(
fnv
)
if
(
fnv
)
{
file_start_write
(
file
);
ret
=
do_sync_readv_writev
(
file
,
iov
,
nr_segs
,
tot_len
,
pos
,
fnv
);
else
file_end_write
(
file
);
}
else
ret
=
do_loop_readv_writev
(
file
,
iov
,
nr_segs
,
pos
,
fn
);
out:
...
...
fs/fuse/file.c
浏览文件 @
8d71db4f
...
...
@@ -971,7 +971,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
return
err
;
count
=
ocount
;
sb_start_write
(
inode
->
i_sb
);
mutex_lock
(
&
inode
->
i_mutex
);
/* We can write back this queue in page reclaim */
...
...
@@ -1030,7 +1029,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
out:
current
->
backing_dev_info
=
NULL
;
mutex_unlock
(
&
inode
->
i_mutex
);
sb_end_write
(
inode
->
i_sb
);
return
written
?
written
:
err
;
}
...
...
fs/ntfs/file.c
浏览文件 @
8d71db4f
...
...
@@ -2129,7 +2129,6 @@ static ssize_t ntfs_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
BUG_ON
(
iocb
->
ki_pos
!=
pos
);
sb_start_write
(
inode
->
i_sb
);
mutex_lock
(
&
inode
->
i_mutex
);
ret
=
ntfs_file_aio_write_nolock
(
iocb
,
iov
,
nr_segs
,
&
iocb
->
ki_pos
);
mutex_unlock
(
&
inode
->
i_mutex
);
...
...
@@ -2138,7 +2137,6 @@ static ssize_t ntfs_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
if
(
err
<
0
)
ret
=
err
;
}
sb_end_write
(
inode
->
i_sb
);
return
ret
;
}
...
...
fs/ocfs2/file.c
浏览文件 @
8d71db4f
...
...
@@ -2248,8 +2248,6 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
if
(
iocb
->
ki_left
==
0
)
return
0
;
sb_start_write
(
inode
->
i_sb
);
appending
=
file
->
f_flags
&
O_APPEND
?
1
:
0
;
direct_io
=
file
->
f_flags
&
O_DIRECT
?
1
:
0
;
...
...
@@ -2423,7 +2421,6 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
ocfs2_iocb_clear_sem_locked
(
iocb
);
mutex_unlock
(
&
inode
->
i_mutex
);
sb_end_write
(
inode
->
i_sb
);
if
(
written
)
ret
=
written
;
...
...
fs/read_write.c
浏览文件 @
8d71db4f
...
...
@@ -398,6 +398,7 @@ ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, lof
struct
kiocb
kiocb
;
ssize_t
ret
;
file_start_write
(
filp
);
init_sync_kiocb
(
&
kiocb
,
filp
);
kiocb
.
ki_pos
=
*
ppos
;
kiocb
.
ki_left
=
len
;
...
...
@@ -413,6 +414,7 @@ ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, lof
if
(
-
EIOCBQUEUED
==
ret
)
ret
=
wait_on_sync_kiocb
(
&
kiocb
);
*
ppos
=
kiocb
.
ki_pos
;
file_end_write
(
filp
);
return
ret
;
}
...
...
@@ -758,10 +760,12 @@ static ssize_t do_readv_writev(int type, struct file *file,
fnv
=
file
->
f_op
->
aio_write
;
}
if
(
fnv
)
if
(
fnv
)
{
file_start_write
(
file
);
ret
=
do_sync_readv_writev
(
file
,
iov
,
nr_segs
,
tot_len
,
pos
,
fnv
);
else
file_end_write
(
file
);
}
else
ret
=
do_loop_readv_writev
(
file
,
iov
,
nr_segs
,
pos
,
fn
);
out:
...
...
fs/xfs/xfs_file.c
浏览文件 @
8d71db4f
...
...
@@ -775,8 +775,6 @@ xfs_file_aio_write(
if
(
ocount
==
0
)
return
0
;
sb_start_write
(
inode
->
i_sb
);
if
(
XFS_FORCED_SHUTDOWN
(
ip
->
i_mount
))
{
ret
=
-
EIO
;
goto
out
;
...
...
@@ -800,7 +798,6 @@ xfs_file_aio_write(
}
out:
sb_end_write
(
inode
->
i_sb
);
return
ret
;
}
...
...
include/linux/fs.h
浏览文件 @
8d71db4f
...
...
@@ -2223,6 +2223,20 @@ static inline struct inode *file_inode(struct file *f)
return
f
->
f_inode
;
}
static
inline
void
file_start_write
(
struct
file
*
file
)
{
if
(
!
S_ISREG
(
file_inode
(
file
)
->
i_mode
))
return
;
__sb_start_write
(
file_inode
(
file
)
->
i_sb
,
SB_FREEZE_WRITE
,
true
);
}
static
inline
void
file_end_write
(
struct
file
*
file
)
{
if
(
!
S_ISREG
(
file_inode
(
file
)
->
i_mode
))
return
;
__sb_end_write
(
file_inode
(
file
)
->
i_sb
,
SB_FREEZE_WRITE
);
}
/*
* get_write_access() gets write permission for a file.
* put_write_access() releases this write permission.
...
...
mm/filemap.c
浏览文件 @
8d71db4f
...
...
@@ -2528,7 +2528,6 @@ ssize_t generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
BUG_ON
(
iocb
->
ki_pos
!=
pos
);
sb_start_write
(
inode
->
i_sb
);
mutex_lock
(
&
inode
->
i_mutex
);
ret
=
__generic_file_aio_write
(
iocb
,
iov
,
nr_segs
,
&
iocb
->
ki_pos
);
mutex_unlock
(
&
inode
->
i_mutex
);
...
...
@@ -2540,7 +2539,6 @@ ssize_t generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
if
(
err
<
0
&&
ret
>
0
)
ret
=
err
;
}
sb_end_write
(
inode
->
i_sb
);
return
ret
;
}
EXPORT_SYMBOL
(
generic_file_aio_write
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录