Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
9565a544
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看板
提交
9565a544
编写于
4月 01, 2015
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
9p: get rid of v9fs_direct_file_write()
just handle it in ->direct_IO() Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
c711a6b1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
82 deletion
+17
-82
fs/9p/vfs_addr.c
fs/9p/vfs_addr.c
+15
-9
fs/9p/vfs_file.c
fs/9p/vfs_file.c
+2
-73
未找到文件。
fs/9p/vfs_addr.c
浏览文件 @
9565a544
...
...
@@ -252,15 +252,21 @@ static int v9fs_launder_page(struct page *page)
static
ssize_t
v9fs_direct_IO
(
int
rw
,
struct
kiocb
*
iocb
,
struct
iov_iter
*
iter
,
loff_t
pos
)
{
/*
* FIXME
* Now that we do caching with cache mode enabled, We need
* to support direct IO
*/
p9_debug
(
P9_DEBUG_VFS
,
"v9fs_direct_IO: v9fs_direct_IO (%pD) off/no(%lld/%lu) EINVAL
\n
"
,
iocb
->
ki_filp
,
(
long
long
)
pos
,
iter
->
nr_segs
);
struct
file
*
file
=
iocb
->
ki_filp
;
if
(
rw
==
WRITE
)
{
ssize_t
written
;
int
err
=
0
;
written
=
p9_client_write
(
file
->
private_data
,
pos
,
iter
,
&
err
);
if
(
written
)
{
struct
inode
*
inode
=
file_inode
(
file
);
loff_t
i_size
=
i_size_read
(
inode
);
if
(
pos
+
written
>
i_size
)
inode_add_bytes
(
inode
,
pos
+
written
-
i_size
);
return
written
;
}
return
err
;
}
return
-
EINVAL
;
}
...
...
fs/9p/vfs_file.c
浏览文件 @
9565a544
...
...
@@ -688,77 +688,6 @@ v9fs_mmap_file_read(struct file *filp, char __user *data, size_t count,
return
v9fs_file_read
(
filp
,
data
,
count
,
offset
);
}
static
ssize_t
v9fs_direct_write
(
struct
file
*
filp
,
const
char
__user
*
data
,
size_t
count
,
loff_t
*
offsetp
)
{
loff_t
offset
;
ssize_t
retval
;
struct
inode
*
inode
;
struct
address_space
*
mapping
;
offset
=
*
offsetp
;
mapping
=
filp
->
f_mapping
;
inode
=
mapping
->
host
;
if
(
!
count
)
return
0
;
mutex_lock
(
&
inode
->
i_mutex
);
retval
=
filemap_write_and_wait_range
(
mapping
,
offset
,
offset
+
count
-
1
);
if
(
retval
)
goto
err_out
;
/*
* After a write we want buffered reads to be sure to go to disk to get
* the new data. We invalidate clean cached page from the region we're
* about to write. We do this *before* the write so that if we fail
* here we fall back to buffered write
*/
if
(
mapping
->
nrpages
)
{
pgoff_t
pg_start
=
offset
>>
PAGE_CACHE_SHIFT
;
pgoff_t
pg_end
=
(
offset
+
count
-
1
)
>>
PAGE_CACHE_SHIFT
;
retval
=
invalidate_inode_pages2_range
(
mapping
,
pg_start
,
pg_end
);
/*
* If a page can not be invalidated, fall back
* to buffered write.
*/
if
(
retval
)
{
if
(
retval
==
-
EBUSY
)
goto
buff_write
;
goto
err_out
;
}
}
retval
=
v9fs_file_write
(
filp
,
data
,
count
,
offsetp
);
err_out:
mutex_unlock
(
&
inode
->
i_mutex
);
return
retval
;
buff_write:
mutex_unlock
(
&
inode
->
i_mutex
);
return
new_sync_write
(
filp
,
data
,
count
,
offsetp
);
}
/**
* v9fs_cached_file_write - write to a file
* @filp: file pointer to write
* @data: data buffer to write data from
* @count: size of buffer
* @offset: offset at which to write data
*
*/
static
ssize_t
v9fs_cached_file_write
(
struct
file
*
filp
,
const
char
__user
*
data
,
size_t
count
,
loff_t
*
offset
)
{
if
(
filp
->
f_flags
&
O_DIRECT
)
return
v9fs_direct_write
(
filp
,
data
,
count
,
offset
);
return
new_sync_write
(
filp
,
data
,
count
,
offset
);
}
/**
* v9fs_mmap_file_write - write to a file
* @filp: file pointer to write
...
...
@@ -821,7 +750,7 @@ static const struct vm_operations_struct v9fs_mmap_file_vm_ops = {
const
struct
file_operations
v9fs_cached_file_operations
=
{
.
llseek
=
generic_file_llseek
,
.
read
=
v9fs_cached_file_read
,
.
write
=
v9fs_cached_file
_write
,
.
write
=
new_sync
_write
,
.
read_iter
=
generic_file_read_iter
,
.
write_iter
=
generic_file_write_iter
,
.
open
=
v9fs_file_open
,
...
...
@@ -834,7 +763,7 @@ const struct file_operations v9fs_cached_file_operations = {
const
struct
file_operations
v9fs_cached_file_operations_dotl
=
{
.
llseek
=
generic_file_llseek
,
.
read
=
v9fs_cached_file_read
,
.
write
=
v9fs_cached_file
_write
,
.
write
=
new_sync
_write
,
.
read_iter
=
generic_file_read_iter
,
.
write_iter
=
generic_file_write_iter
,
.
open
=
v9fs_file_open
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录