Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
6de1472f
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看板
提交
6de1472f
编写于
9月 16, 2013
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
nfs: use %p[dD] instead of open-coded (and often racy) equivalents
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
48bc06e7
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
119 addition
and
186 deletion
+119
-186
fs/nfs/dir.c
fs/nfs/dir.c
+48
-71
fs/nfs/direct.c
fs/nfs/direct.c
+6
-11
fs/nfs/file.c
fs/nfs/file.c
+43
-74
fs/nfs/namespace.c
fs/nfs/namespace.c
+2
-3
fs/nfs/nfs3proc.c
fs/nfs/nfs3proc.c
+4
-4
fs/nfs/nfs4file.c
fs/nfs/nfs4file.c
+1
-3
fs/nfs/nfs4namespace.c
fs/nfs/nfs4namespace.c
+3
-4
fs/nfs/nfs4proc.c
fs/nfs/nfs4proc.c
+2
-3
fs/nfs/proc.c
fs/nfs/proc.c
+4
-4
fs/nfs/unlink.c
fs/nfs/unlink.c
+4
-5
fs/nfs/write.c
fs/nfs/write.c
+2
-4
未找到文件。
fs/nfs/dir.c
浏览文件 @
6de1472f
...
...
@@ -98,9 +98,7 @@ nfs_opendir(struct inode *inode, struct file *filp)
struct
nfs_open_dir_context
*
ctx
;
struct
rpc_cred
*
cred
;
dfprintk
(
FILE
,
"NFS: open dir(%s/%s)
\n
"
,
filp
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
filp
->
f_path
.
dentry
->
d_name
.
name
);
dfprintk
(
FILE
,
"NFS: open dir(%pD2)
\n
"
,
filp
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSOPEN
);
...
...
@@ -297,11 +295,10 @@ int nfs_readdir_search_for_cookie(struct nfs_cache_array *array, nfs_readdir_des
if
(
ctx
->
duped
>
0
&&
ctx
->
dup_cookie
==
*
desc
->
dir_cookie
)
{
if
(
printk_ratelimit
())
{
pr_notice
(
"NFS: directory %
s/%s
contains a readdir loop."
pr_notice
(
"NFS: directory %
pD2
contains a readdir loop."
"Please contact your server vendor. "
"The file: %s has duplicate cookie %llu
\n
"
,
desc
->
file
->
f_dentry
->
d_parent
->
d_name
.
name
,
desc
->
file
->
f_dentry
->
d_name
.
name
,
desc
->
file
,
array
->
array
[
i
].
string
.
name
,
*
desc
->
dir_cookie
);
}
...
...
@@ -822,9 +819,8 @@ static int nfs_readdir(struct file *file, struct dir_context *ctx)
struct
nfs_open_dir_context
*
dir_ctx
=
file
->
private_data
;
int
res
=
0
;
dfprintk
(
FILE
,
"NFS: readdir(%s/%s) starting at cookie %llu
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
(
long
long
)
ctx
->
pos
);
dfprintk
(
FILE
,
"NFS: readdir(%pD2) starting at cookie %llu
\n
"
,
file
,
(
long
long
)
ctx
->
pos
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSGETDENTS
);
/*
...
...
@@ -880,22 +876,17 @@ static int nfs_readdir(struct file *file, struct dir_context *ctx)
nfs_unblock_sillyrename
(
dentry
);
if
(
res
>
0
)
res
=
0
;
dfprintk
(
FILE
,
"NFS: readdir(%s/%s) returns %d
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
res
);
dfprintk
(
FILE
,
"NFS: readdir(%pD2) returns %d
\n
"
,
file
,
res
);
return
res
;
}
static
loff_t
nfs_llseek_dir
(
struct
file
*
filp
,
loff_t
offset
,
int
whence
)
{
struct
dentry
*
dentry
=
filp
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
filp
);
struct
nfs_open_dir_context
*
dir_ctx
=
filp
->
private_data
;
dfprintk
(
FILE
,
"NFS: llseek dir(%s/%s, %lld, %d)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
offset
,
whence
);
dfprintk
(
FILE
,
"NFS: llseek dir(%pD2, %lld, %d)
\n
"
,
filp
,
offset
,
whence
);
mutex_lock
(
&
inode
->
i_mutex
);
switch
(
whence
)
{
...
...
@@ -925,15 +916,12 @@ static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int whence)
static
int
nfs_fsync_dir
(
struct
file
*
filp
,
loff_t
start
,
loff_t
end
,
int
datasync
)
{
struct
dentry
*
dentry
=
filp
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
filp
);
dfprintk
(
FILE
,
"NFS: fsync dir(%s/%s) datasync %d
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
datasync
);
dfprintk
(
FILE
,
"NFS: fsync dir(%pD2) datasync %d
\n
"
,
filp
,
datasync
);
mutex_lock
(
&
inode
->
i_mutex
);
nfs_inc_stats
(
dentry
->
d_
inode
,
NFSIOS_VFSFSYNC
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSFSYNC
);
mutex_unlock
(
&
inode
->
i_mutex
);
return
0
;
}
...
...
@@ -1073,9 +1061,8 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
}
if
(
is_bad_inode
(
inode
))
{
dfprintk
(
LOOKUPCACHE
,
"%s: %s/%s has dud inode
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
LOOKUPCACHE
,
"%s: %pd2 has dud inode
\n
"
,
__func__
,
dentry
);
goto
out_bad
;
}
...
...
@@ -1125,9 +1112,8 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
nfs_advise_use_readdirplus
(
dir
);
out_valid_noent:
dput
(
parent
);
dfprintk
(
LOOKUPCACHE
,
"NFS: %s(%s/%s) is valid
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
LOOKUPCACHE
,
"NFS: %s(%pd2) is valid
\n
"
,
__func__
,
dentry
);
return
1
;
out_zap_parent:
nfs_zap_caches
(
dir
);
...
...
@@ -1147,18 +1133,16 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags)
goto
out_valid
;
dput
(
parent
);
dfprintk
(
LOOKUPCACHE
,
"NFS: %s(%s/%s) is invalid
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
LOOKUPCACHE
,
"NFS: %s(%pd2) is invalid
\n
"
,
__func__
,
dentry
);
return
0
;
out_error:
nfs_free_fattr
(
fattr
);
nfs_free_fhandle
(
fhandle
);
nfs4_label_free
(
label
);
dput
(
parent
);
dfprintk
(
LOOKUPCACHE
,
"NFS: %s(%s/%s) lookup returned error %d
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
error
);
dfprintk
(
LOOKUPCACHE
,
"NFS: %s(%pd2) lookup returned error %d
\n
"
,
__func__
,
dentry
,
error
);
return
error
;
}
...
...
@@ -1182,16 +1166,14 @@ static int nfs_weak_revalidate(struct dentry *dentry, unsigned int flags)
* eventually need to do something more here.
*/
if
(
!
inode
)
{
dfprintk
(
LOOKUPCACHE
,
"%s: %s/%s has negative inode
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
LOOKUPCACHE
,
"%s: %pd2 has negative inode
\n
"
,
__func__
,
dentry
);
return
1
;
}
if
(
is_bad_inode
(
inode
))
{
dfprintk
(
LOOKUPCACHE
,
"%s: %s/%s has dud inode
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
LOOKUPCACHE
,
"%s: %pd2 has dud inode
\n
"
,
__func__
,
dentry
);
return
0
;
}
...
...
@@ -1206,9 +1188,8 @@ static int nfs_weak_revalidate(struct dentry *dentry, unsigned int flags)
*/
static
int
nfs_dentry_delete
(
const
struct
dentry
*
dentry
)
{
dfprintk
(
VFS
,
"NFS: dentry_delete(%s/%s, %x)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
dentry
->
d_flags
);
dfprintk
(
VFS
,
"NFS: dentry_delete(%pd2, %x)
\n
"
,
dentry
,
dentry
->
d_flags
);
/* Unhash any dentry with a stale inode */
if
(
dentry
->
d_inode
!=
NULL
&&
NFS_STALE
(
dentry
->
d_inode
))
...
...
@@ -1286,8 +1267,7 @@ struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned in
struct
nfs4_label
*
label
=
NULL
;
int
error
;
dfprintk
(
VFS
,
"NFS: lookup(%s/%s)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: lookup(%pd2)
\n
"
,
dentry
);
nfs_inc_stats
(
dir
,
NFSIOS_VFSLOOKUP
);
res
=
ERR_PTR
(
-
ENAMETOOLONG
);
...
...
@@ -1418,8 +1398,8 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
/* Expect a negative dentry */
BUG_ON
(
dentry
->
d_inode
);
dfprintk
(
VFS
,
"NFS: atomic_open(%s/%ld), %
s
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: atomic_open(%s/%ld), %
pd
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
);
err
=
nfs_check_flags
(
open_flags
);
if
(
err
)
...
...
@@ -1608,8 +1588,8 @@ int nfs_create(struct inode *dir, struct dentry *dentry,
int
open_flags
=
excl
?
O_CREAT
|
O_EXCL
:
O_CREAT
;
int
error
;
dfprintk
(
VFS
,
"NFS: create(%s/%ld), %
s
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: create(%s/%ld), %
pd
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
);
attr
.
ia_mode
=
mode
;
attr
.
ia_valid
=
ATTR_MODE
;
...
...
@@ -1635,8 +1615,8 @@ nfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t rdev)
struct
iattr
attr
;
int
status
;
dfprintk
(
VFS
,
"NFS: mknod(%s/%ld), %
s
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: mknod(%s/%ld), %
pd
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
);
if
(
!
new_valid_dev
(
rdev
))
return
-
EINVAL
;
...
...
@@ -1664,8 +1644,8 @@ int nfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
struct
iattr
attr
;
int
error
;
dfprintk
(
VFS
,
"NFS: mkdir(%s/%ld), %
s
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: mkdir(%s/%ld), %
pd
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
);
attr
.
ia_valid
=
ATTR_MODE
;
attr
.
ia_mode
=
mode
|
S_IFDIR
;
...
...
@@ -1692,8 +1672,8 @@ int nfs_rmdir(struct inode *dir, struct dentry *dentry)
{
int
error
;
dfprintk
(
VFS
,
"NFS: rmdir(%s/%ld), %
s
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: rmdir(%s/%ld), %
pd
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
);
trace_nfs_rmdir_enter
(
dir
,
dentry
);
if
(
dentry
->
d_inode
)
{
...
...
@@ -1728,8 +1708,7 @@ static int nfs_safe_remove(struct dentry *dentry)
struct
inode
*
inode
=
dentry
->
d_inode
;
int
error
=
-
EBUSY
;
dfprintk
(
VFS
,
"NFS: safe_remove(%s/%s)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: safe_remove(%pd2)
\n
"
,
dentry
);
/* If the dentry was sillyrenamed, we simply call d_delete() */
if
(
dentry
->
d_flags
&
DCACHE_NFSFS_RENAMED
)
{
...
...
@@ -1762,8 +1741,8 @@ int nfs_unlink(struct inode *dir, struct dentry *dentry)
int
error
;
int
need_rehash
=
0
;
dfprintk
(
VFS
,
"NFS: unlink(%s/%ld, %
s
)
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: unlink(%s/%ld, %
pd
)
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
);
trace_nfs_unlink_enter
(
dir
,
dentry
);
spin_lock
(
&
dentry
->
d_lock
);
...
...
@@ -1813,8 +1792,8 @@ int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
unsigned
int
pathlen
=
strlen
(
symname
);
int
error
;
dfprintk
(
VFS
,
"NFS: symlink(%s/%ld, %
s
, %s)
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
,
symname
);
dfprintk
(
VFS
,
"NFS: symlink(%s/%ld, %
pd
, %s)
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
,
symname
);
if
(
pathlen
>
PAGE_SIZE
)
return
-
ENAMETOOLONG
;
...
...
@@ -1836,9 +1815,9 @@ int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
error
=
NFS_PROTO
(
dir
)
->
symlink
(
dir
,
dentry
,
page
,
pathlen
,
&
attr
);
trace_nfs_symlink_exit
(
dir
,
dentry
,
error
);
if
(
error
!=
0
)
{
dfprintk
(
VFS
,
"NFS: symlink(%s/%ld, %
s
, %s) error %d
\n
"
,
dfprintk
(
VFS
,
"NFS: symlink(%s/%ld, %
pd
, %s) error %d
\n
"
,
dir
->
i_sb
->
s_id
,
dir
->
i_ino
,
dentry
->
d_name
.
name
,
symname
,
error
);
dentry
,
symname
,
error
);
d_drop
(
dentry
);
__free_page
(
page
);
return
error
;
...
...
@@ -1865,9 +1844,8 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
struct
inode
*
inode
=
old_dentry
->
d_inode
;
int
error
;
dfprintk
(
VFS
,
"NFS: link(%s/%s -> %s/%s)
\n
"
,
old_dentry
->
d_parent
->
d_name
.
name
,
old_dentry
->
d_name
.
name
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dfprintk
(
VFS
,
"NFS: link(%pd2 -> %pd2)
\n
"
,
old_dentry
,
dentry
);
trace_nfs_link_enter
(
inode
,
dir
,
dentry
);
NFS_PROTO
(
inode
)
->
return_delegation
(
inode
);
...
...
@@ -1915,9 +1893,8 @@ int nfs_rename(struct inode *old_dir, struct dentry *old_dentry,
struct
dentry
*
dentry
=
NULL
,
*
rehash
=
NULL
;
int
error
=
-
EBUSY
;
dfprintk
(
VFS
,
"NFS: rename(%s/%s -> %s/%s, ct=%d)
\n
"
,
old_dentry
->
d_parent
->
d_name
.
name
,
old_dentry
->
d_name
.
name
,
new_dentry
->
d_parent
->
d_name
.
name
,
new_dentry
->
d_name
.
name
,
dfprintk
(
VFS
,
"NFS: rename(%pd2 -> %pd2, ct=%d)
\n
"
,
old_dentry
,
new_dentry
,
d_count
(
new_dentry
));
trace_nfs_rename_enter
(
old_dir
,
old_dentry
,
new_dir
,
new_dentry
);
...
...
fs/nfs/direct.c
浏览文件 @
6de1472f
...
...
@@ -124,9 +124,8 @@ static inline int put_dreq(struct nfs_direct_req *dreq)
ssize_t
nfs_direct_IO
(
int
rw
,
struct
kiocb
*
iocb
,
const
struct
iovec
*
iov
,
loff_t
pos
,
unsigned
long
nr_segs
)
{
#ifndef CONFIG_NFS_SWAP
dprintk
(
"NFS: nfs_direct_IO (%s) off/no(%Ld/%lu) EINVAL
\n
"
,
iocb
->
ki_filp
->
f_path
.
dentry
->
d_name
.
name
,
(
long
long
)
pos
,
nr_segs
);
dprintk
(
"NFS: nfs_direct_IO (%pD) off/no(%Ld/%lu) EINVAL
\n
"
,
iocb
->
ki_filp
,
(
long
long
)
pos
,
nr_segs
);
return
-
EINVAL
;
#else
...
...
@@ -909,10 +908,8 @@ ssize_t nfs_file_direct_read(struct kiocb *iocb, const struct iovec *iov,
count
=
iov_length
(
iov
,
nr_segs
);
nfs_add_stats
(
mapping
->
host
,
NFSIOS_DIRECTREADBYTES
,
count
);
dfprintk
(
FILE
,
"NFS: direct read(%s/%s, %zd@%Ld)
\n
"
,
file
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
file
->
f_path
.
dentry
->
d_name
.
name
,
count
,
(
long
long
)
pos
);
dfprintk
(
FILE
,
"NFS: direct read(%pD2, %zd@%Ld)
\n
"
,
file
,
count
,
(
long
long
)
pos
);
retval
=
0
;
if
(
!
count
)
...
...
@@ -965,10 +962,8 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
count
=
iov_length
(
iov
,
nr_segs
);
nfs_add_stats
(
mapping
->
host
,
NFSIOS_DIRECTWRITTENBYTES
,
count
);
dfprintk
(
FILE
,
"NFS: direct write(%s/%s, %zd@%Ld)
\n
"
,
file
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
file
->
f_path
.
dentry
->
d_name
.
name
,
count
,
(
long
long
)
pos
);
dfprintk
(
FILE
,
"NFS: direct write(%pD2, %zd@%Ld)
\n
"
,
file
,
count
,
(
long
long
)
pos
);
retval
=
generic_write_checks
(
file
,
&
pos
,
&
count
,
0
);
if
(
retval
)
...
...
fs/nfs/file.c
浏览文件 @
6de1472f
...
...
@@ -65,9 +65,7 @@ nfs_file_open(struct inode *inode, struct file *filp)
{
int
res
;
dprintk
(
"NFS: open file(%s/%s)
\n
"
,
filp
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
filp
->
f_path
.
dentry
->
d_name
.
name
);
dprintk
(
"NFS: open file(%pD2)
\n
"
,
filp
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSOPEN
);
res
=
nfs_check_flags
(
filp
->
f_flags
);
...
...
@@ -81,9 +79,7 @@ nfs_file_open(struct inode *inode, struct file *filp)
int
nfs_file_release
(
struct
inode
*
inode
,
struct
file
*
filp
)
{
dprintk
(
"NFS: release(%s/%s)
\n
"
,
filp
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
filp
->
f_path
.
dentry
->
d_name
.
name
);
dprintk
(
"NFS: release(%pD2)
\n
"
,
filp
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSRELEASE
);
return
nfs_release
(
inode
,
filp
);
...
...
@@ -123,10 +119,8 @@ static int nfs_revalidate_file_size(struct inode *inode, struct file *filp)
loff_t
nfs_file_llseek
(
struct
file
*
filp
,
loff_t
offset
,
int
whence
)
{
dprintk
(
"NFS: llseek file(%s/%s, %lld, %d)
\n
"
,
filp
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
filp
->
f_path
.
dentry
->
d_name
.
name
,
offset
,
whence
);
dprintk
(
"NFS: llseek file(%pD2, %lld, %d)
\n
"
,
filp
,
offset
,
whence
);
/*
* whence == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate
...
...
@@ -150,12 +144,9 @@ EXPORT_SYMBOL_GPL(nfs_file_llseek);
int
nfs_file_flush
(
struct
file
*
file
,
fl_owner_t
id
)
{
struct
dentry
*
dentry
=
file
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
file
);
dprintk
(
"NFS: flush(%s/%s)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS: flush(%pD2)
\n
"
,
file
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSFLUSH
);
if
((
file
->
f_mode
&
FMODE_WRITE
)
==
0
)
...
...
@@ -177,15 +168,14 @@ ssize_t
nfs_file_read
(
struct
kiocb
*
iocb
,
const
struct
iovec
*
iov
,
unsigned
long
nr_segs
,
loff_t
pos
)
{
struct
dentry
*
dentry
=
iocb
->
ki_filp
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
iocb
->
ki_filp
);
ssize_t
result
;
if
(
iocb
->
ki_filp
->
f_flags
&
O_DIRECT
)
return
nfs_file_direct_read
(
iocb
,
iov
,
nr_segs
,
pos
,
true
);
dprintk
(
"NFS: read(%
s/%s
, %lu@%lu)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
dprintk
(
"NFS: read(%
pD2
, %lu@%lu)
\n
"
,
iocb
->
ki_filp
,
(
unsigned
long
)
iov_length
(
iov
,
nr_segs
),
(
unsigned
long
)
pos
);
result
=
nfs_revalidate_mapping
(
inode
,
iocb
->
ki_filp
->
f_mapping
);
...
...
@@ -203,13 +193,11 @@ nfs_file_splice_read(struct file *filp, loff_t *ppos,
struct
pipe_inode_info
*
pipe
,
size_t
count
,
unsigned
int
flags
)
{
struct
dentry
*
dentry
=
filp
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
filp
);
ssize_t
res
;
dprintk
(
"NFS: splice_read(%s/%s, %lu@%Lu)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
(
unsigned
long
)
count
,
(
unsigned
long
long
)
*
ppos
);
dprintk
(
"NFS: splice_read(%pD2, %lu@%Lu)
\n
"
,
filp
,
(
unsigned
long
)
count
,
(
unsigned
long
long
)
*
ppos
);
res
=
nfs_revalidate_mapping
(
inode
,
filp
->
f_mapping
);
if
(
!
res
)
{
...
...
@@ -224,12 +212,10 @@ EXPORT_SYMBOL_GPL(nfs_file_splice_read);
int
nfs_file_mmap
(
struct
file
*
file
,
struct
vm_area_struct
*
vma
)
{
struct
dentry
*
dentry
=
file
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
file
);
int
status
;
dprintk
(
"NFS: mmap(%s/%s)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS: mmap(%pD2)
\n
"
,
file
);
/* Note: generic_file_mmap() returns ENOSYS on nommu systems
* so we call that before revalidating the mapping
...
...
@@ -258,15 +244,12 @@ EXPORT_SYMBOL_GPL(nfs_file_mmap);
int
nfs_file_fsync_commit
(
struct
file
*
file
,
loff_t
start
,
loff_t
end
,
int
datasync
)
{
struct
dentry
*
dentry
=
file
->
f_path
.
dentry
;
struct
nfs_open_context
*
ctx
=
nfs_file_open_context
(
file
);
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
file
)
;
int
have_error
,
do_resend
,
status
;
int
ret
=
0
;
dprintk
(
"NFS: fsync file(%s/%s) datasync %d
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
datasync
);
dprintk
(
"NFS: fsync file(%pD2) datasync %d
\n
"
,
file
,
datasync
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSFSYNC
);
do_resend
=
test_and_clear_bit
(
NFS_CONTEXT_RESEND_WRITES
,
&
ctx
->
flags
);
...
...
@@ -371,10 +354,8 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping,
struct
page
*
page
;
int
once_thru
=
0
;
dfprintk
(
PAGECACHE
,
"NFS: write_begin(%s/%s(%ld), %u@%lld)
\n
"
,
file
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
file
->
f_path
.
dentry
->
d_name
.
name
,
mapping
->
host
->
i_ino
,
len
,
(
long
long
)
pos
);
dfprintk
(
PAGECACHE
,
"NFS: write_begin(%pD2(%ld), %u@%lld)
\n
"
,
file
,
mapping
->
host
->
i_ino
,
len
,
(
long
long
)
pos
);
start:
/*
...
...
@@ -414,10 +395,8 @@ static int nfs_write_end(struct file *file, struct address_space *mapping,
struct
nfs_open_context
*
ctx
=
nfs_file_open_context
(
file
);
int
status
;
dfprintk
(
PAGECACHE
,
"NFS: write_end(%s/%s(%ld), %u@%lld)
\n
"
,
file
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
file
->
f_path
.
dentry
->
d_name
.
name
,
mapping
->
host
->
i_ino
,
len
,
(
long
long
)
pos
);
dfprintk
(
PAGECACHE
,
"NFS: write_end(%pD2(%ld), %u@%lld)
\n
"
,
file
,
mapping
->
host
->
i_ino
,
len
,
(
long
long
)
pos
);
/*
* Zero any uninitialised parts of the page, and then mark the page
...
...
@@ -601,22 +580,21 @@ static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
{
struct
page
*
page
=
vmf
->
page
;
struct
file
*
filp
=
vma
->
vm_file
;
struct
dentry
*
dentry
=
filp
->
f_path
.
dentry
;
struct
inode
*
inode
=
file_inode
(
filp
)
;
unsigned
pagelen
;
int
ret
=
VM_FAULT_NOPAGE
;
struct
address_space
*
mapping
;
dfprintk
(
PAGECACHE
,
"NFS: vm_page_mkwrite(%s/%s(%ld), offset %lld)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
filp
->
f_mapping
->
host
->
i_ino
,
dfprintk
(
PAGECACHE
,
"NFS: vm_page_mkwrite(%pD2(%ld), offset %lld)
\n
"
,
filp
,
filp
->
f_mapping
->
host
->
i_ino
,
(
long
long
)
page_offset
(
page
));
/* make sure the cache has finished storing the page */
nfs_fscache_wait_on_page_write
(
NFS_I
(
dentry
->
d_
inode
),
page
);
nfs_fscache_wait_on_page_write
(
NFS_I
(
inode
),
page
);
lock_page
(
page
);
mapping
=
page_file_mapping
(
page
);
if
(
mapping
!=
dentry
->
d_
inode
->
i_mapping
)
if
(
mapping
!=
inode
->
i_mapping
)
goto
out_unlock
;
wait_on_page_writeback
(
page
);
...
...
@@ -659,22 +637,21 @@ static int nfs_need_sync_write(struct file *filp, struct inode *inode)
ssize_t
nfs_file_write
(
struct
kiocb
*
iocb
,
const
struct
iovec
*
iov
,
unsigned
long
nr_segs
,
loff_t
pos
)
{
struct
dentry
*
dentry
=
iocb
->
ki_filp
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
file
*
file
=
iocb
->
ki_filp
;
struct
inode
*
inode
=
file_inode
(
file
)
;
unsigned
long
written
=
0
;
ssize_t
result
;
size_t
count
=
iov_length
(
iov
,
nr_segs
);
result
=
nfs_key_timeout_notify
(
iocb
->
ki_filp
,
inode
);
result
=
nfs_key_timeout_notify
(
file
,
inode
);
if
(
result
)
return
result
;
if
(
iocb
->
ki_filp
->
f_flags
&
O_DIRECT
)
if
(
file
->
f_flags
&
O_DIRECT
)
return
nfs_file_direct_write
(
iocb
,
iov
,
nr_segs
,
pos
,
true
);
dprintk
(
"NFS: write(%s/%s, %lu@%Ld)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
(
unsigned
long
)
count
,
(
long
long
)
pos
);
dprintk
(
"NFS: write(%pD2, %lu@%Ld)
\n
"
,
file
,
(
unsigned
long
)
count
,
(
long
long
)
pos
);
result
=
-
EBUSY
;
if
(
IS_SWAPFILE
(
inode
))
...
...
@@ -682,8 +659,8 @@ ssize_t nfs_file_write(struct kiocb *iocb, const struct iovec *iov,
/*
* O_APPEND implies that we must revalidate the file length.
*/
if
(
iocb
->
ki_filp
->
f_flags
&
O_APPEND
)
{
result
=
nfs_revalidate_file_size
(
inode
,
iocb
->
ki_filp
);
if
(
file
->
f_flags
&
O_APPEND
)
{
result
=
nfs_revalidate_file_size
(
inode
,
file
);
if
(
result
)
goto
out
;
}
...
...
@@ -697,8 +674,8 @@ ssize_t nfs_file_write(struct kiocb *iocb, const struct iovec *iov,
written
=
result
;
/* Return error values for O_DSYNC and IS_SYNC() */
if
(
result
>=
0
&&
nfs_need_sync_write
(
iocb
->
ki_filp
,
inode
))
{
int
err
=
vfs_fsync
(
iocb
->
ki_filp
,
0
);
if
(
result
>=
0
&&
nfs_need_sync_write
(
file
,
inode
))
{
int
err
=
vfs_fsync
(
file
,
0
);
if
(
err
<
0
)
result
=
err
;
}
...
...
@@ -717,14 +694,12 @@ ssize_t nfs_file_splice_write(struct pipe_inode_info *pipe,
struct
file
*
filp
,
loff_t
*
ppos
,
size_t
count
,
unsigned
int
flags
)
{
struct
dentry
*
dentry
=
filp
->
f_path
.
dentry
;
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
inode
*
inode
=
file_inode
(
filp
);
unsigned
long
written
=
0
;
ssize_t
ret
;
dprintk
(
"NFS splice_write(%s/%s, %lu@%llu)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
(
unsigned
long
)
count
,
(
unsigned
long
long
)
*
ppos
);
dprintk
(
"NFS splice_write(%pD2, %lu@%llu)
\n
"
,
filp
,
(
unsigned
long
)
count
,
(
unsigned
long
long
)
*
ppos
);
/*
* The combination of splice and an O_APPEND destination is disallowed.
...
...
@@ -883,10 +858,8 @@ int nfs_lock(struct file *filp, int cmd, struct file_lock *fl)
int
ret
=
-
ENOLCK
;
int
is_local
=
0
;
dprintk
(
"NFS: lock(%s/%s, t=%x, fl=%x, r=%lld:%lld)
\n
"
,
filp
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
filp
->
f_path
.
dentry
->
d_name
.
name
,
fl
->
fl_type
,
fl
->
fl_flags
,
dprintk
(
"NFS: lock(%pD2, t=%x, fl=%x, r=%lld:%lld)
\n
"
,
filp
,
fl
->
fl_type
,
fl
->
fl_flags
,
(
long
long
)
fl
->
fl_start
,
(
long
long
)
fl
->
fl_end
);
nfs_inc_stats
(
inode
,
NFSIOS_VFSLOCK
);
...
...
@@ -923,10 +896,8 @@ int nfs_flock(struct file *filp, int cmd, struct file_lock *fl)
struct
inode
*
inode
=
filp
->
f_mapping
->
host
;
int
is_local
=
0
;
dprintk
(
"NFS: flock(%s/%s, t=%x, fl=%x)
\n
"
,
filp
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
filp
->
f_path
.
dentry
->
d_name
.
name
,
fl
->
fl_type
,
fl
->
fl_flags
);
dprintk
(
"NFS: flock(%pD2, t=%x, fl=%x)
\n
"
,
filp
,
fl
->
fl_type
,
fl
->
fl_flags
);
if
(
!
(
fl
->
fl_flags
&
FL_FLOCK
))
return
-
ENOLCK
;
...
...
@@ -960,9 +931,7 @@ EXPORT_SYMBOL_GPL(nfs_flock);
*/
int
nfs_setlease
(
struct
file
*
file
,
long
arg
,
struct
file_lock
**
fl
)
{
dprintk
(
"NFS: setlease(%s/%s, arg=%ld)
\n
"
,
file
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
file
->
f_path
.
dentry
->
d_name
.
name
,
arg
);
dprintk
(
"NFS: setlease(%pD2, arg=%ld)
\n
"
,
file
,
arg
);
return
-
EINVAL
;
}
EXPORT_SYMBOL_GPL
(
nfs_setlease
);
...
...
fs/nfs/namespace.c
浏览文件 @
6de1472f
...
...
@@ -253,9 +253,8 @@ struct vfsmount *nfs_do_submount(struct dentry *dentry, struct nfs_fh *fh,
dprintk
(
"--> nfs_do_submount()
\n
"
);
dprintk
(
"%s: submounting on %s/%s
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dprintk
(
"%s: submounting on %pd2
\n
"
,
__func__
,
dentry
);
if
(
page
==
NULL
)
goto
out
;
devname
=
nfs_devname
(
dentry
,
page
,
PAGE_SIZE
);
...
...
fs/nfs/nfs3proc.c
浏览文件 @
6de1472f
...
...
@@ -321,7 +321,7 @@ nfs3_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
umode_t
mode
=
sattr
->
ia_mode
;
int
status
=
-
ENOMEM
;
dprintk
(
"NFS call create %
s
\n
"
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS call create %
pd
\n
"
,
dentry
);
data
=
nfs3_alloc_createdata
();
if
(
data
==
NULL
)
...
...
@@ -548,7 +548,7 @@ nfs3_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page,
if
(
len
>
NFS3_MAXPATHLEN
)
return
-
ENAMETOOLONG
;
dprintk
(
"NFS call symlink %
s
\n
"
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS call symlink %
pd
\n
"
,
dentry
);
data
=
nfs3_alloc_createdata
();
if
(
data
==
NULL
)
...
...
@@ -576,7 +576,7 @@ nfs3_proc_mkdir(struct inode *dir, struct dentry *dentry, struct iattr *sattr)
umode_t
mode
=
sattr
->
ia_mode
;
int
status
=
-
ENOMEM
;
dprintk
(
"NFS call mkdir %
s
\n
"
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS call mkdir %
pd
\n
"
,
dentry
);
sattr
->
ia_mode
&=
~
current_umask
();
...
...
@@ -695,7 +695,7 @@ nfs3_proc_mknod(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
umode_t
mode
=
sattr
->
ia_mode
;
int
status
=
-
ENOMEM
;
dprintk
(
"NFS call mknod %
s %u:%u
\n
"
,
dentry
->
d_name
.
name
,
dprintk
(
"NFS call mknod %
pd %u:%u
\n
"
,
dentry
,
MAJOR
(
rdev
),
MINOR
(
rdev
));
sattr
->
ia_mode
&=
~
current_umask
();
...
...
fs/nfs/nfs4file.c
浏览文件 @
6de1472f
...
...
@@ -31,9 +31,7 @@ nfs4_file_open(struct inode *inode, struct file *filp)
* -EOPENSTALE. The VFS will retry the lookup/create/open.
*/
dprintk
(
"NFS: open file(%s/%s)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS: open file(%pd2)
\n
"
,
dentry
);
if
((
openflags
&
O_ACCMODE
)
==
3
)
openflags
--
;
...
...
fs/nfs/nfs4namespace.c
浏览文件 @
6de1472f
...
...
@@ -283,8 +283,7 @@ static struct vfsmount *nfs_follow_referral(struct dentry *dentry,
if
(
locations
==
NULL
||
locations
->
nlocations
<=
0
)
goto
out
;
dprintk
(
"%s: referral at %s/%s
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dprintk
(
"%s: referral at %pd2
\n
"
,
__func__
,
dentry
);
page
=
(
char
*
)
__get_free_page
(
GFP_USER
);
if
(
!
page
)
...
...
@@ -348,8 +347,8 @@ static struct vfsmount *nfs_do_refmount(struct rpc_clnt *client, struct dentry *
mnt
=
ERR_PTR
(
-
ENOENT
);
parent
=
dget_parent
(
dentry
);
dprintk
(
"%s: getting locations for %
s/%s
\n
"
,
__func__
,
parent
->
d_name
.
name
,
dentry
->
d_name
.
name
);
dprintk
(
"%s: getting locations for %
pd2
\n
"
,
__func__
,
dentry
);
err
=
nfs4_proc_fs_locations
(
client
,
parent
->
d_inode
,
&
dentry
->
d_name
,
fs_locations
,
page
);
dput
(
parent
);
...
...
fs/nfs/nfs4proc.c
浏览文件 @
6de1472f
...
...
@@ -3738,9 +3738,8 @@ static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
};
int
status
;
dprintk
(
"%s: dentry = %s/%s, cookie = %Lu
\n
"
,
__func__
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
dprintk
(
"%s: dentry = %pd2, cookie = %Lu
\n
"
,
__func__
,
dentry
,
(
unsigned
long
long
)
cookie
);
nfs4_setup_readdir
(
cookie
,
NFS_I
(
dir
)
->
cookieverf
,
dentry
,
&
args
);
res
.
pgbase
=
args
.
pgbase
;
...
...
fs/nfs/proc.c
浏览文件 @
6de1472f
...
...
@@ -235,7 +235,7 @@ nfs_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
};
int
status
=
-
ENOMEM
;
dprintk
(
"NFS call create %
s
\n
"
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS call create %
pd
\n
"
,
dentry
);
data
=
nfs_alloc_createdata
(
dir
,
dentry
,
sattr
);
if
(
data
==
NULL
)
goto
out
;
...
...
@@ -265,7 +265,7 @@ nfs_proc_mknod(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
umode_t
mode
;
int
status
=
-
ENOMEM
;
dprintk
(
"NFS call mknod %
s
\n
"
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS call mknod %
pd
\n
"
,
dentry
);
mode
=
sattr
->
ia_mode
;
if
(
S_ISFIFO
(
mode
))
{
...
...
@@ -423,7 +423,7 @@ nfs_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page,
};
int
status
=
-
ENAMETOOLONG
;
dprintk
(
"NFS call symlink %
s
\n
"
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS call symlink %
pd
\n
"
,
dentry
);
if
(
len
>
NFS2_MAXPATHLEN
)
goto
out
;
...
...
@@ -462,7 +462,7 @@ nfs_proc_mkdir(struct inode *dir, struct dentry *dentry, struct iattr *sattr)
};
int
status
=
-
ENOMEM
;
dprintk
(
"NFS call mkdir %
s
\n
"
,
dentry
->
d_name
.
name
);
dprintk
(
"NFS call mkdir %
pd
\n
"
,
dentry
);
data
=
nfs_alloc_createdata
(
dir
,
dentry
,
sattr
);
if
(
data
==
NULL
)
goto
out
;
...
...
fs/nfs/unlink.c
浏览文件 @
6de1472f
...
...
@@ -495,9 +495,8 @@ nfs_sillyrename(struct inode *dir, struct dentry *dentry)
struct
rpc_task
*
task
;
int
error
=
-
EIO
;
dfprintk
(
VFS
,
"NFS: silly-rename(%s/%s, ct=%d)
\n
"
,
dentry
->
d_parent
->
d_name
.
name
,
dentry
->
d_name
.
name
,
d_count
(
dentry
));
dfprintk
(
VFS
,
"NFS: silly-rename(%pd2, ct=%d)
\n
"
,
dentry
,
d_count
(
dentry
));
nfs_inc_stats
(
dir
,
NFSIOS_SILLYRENAME
);
/*
...
...
@@ -522,8 +521,8 @@ nfs_sillyrename(struct inode *dir, struct dentry *dentry)
SILLYNAME_FILEID_LEN
,
fileid
,
SILLYNAME_COUNTER_LEN
,
sillycounter
);
dfprintk
(
VFS
,
"NFS: trying to rename %
s
to %s
\n
"
,
dentry
->
d_name
.
name
,
silly
);
dfprintk
(
VFS
,
"NFS: trying to rename %
pd
to %s
\n
"
,
dentry
,
silly
);
sdentry
=
lookup_one_len
(
silly
,
dentry
->
d_parent
,
slen
);
/*
...
...
fs/nfs/write.c
浏览文件 @
6de1472f
...
...
@@ -954,10 +954,8 @@ int nfs_updatepage(struct file *file, struct page *page,
nfs_inc_stats
(
inode
,
NFSIOS_VFSUPDATEPAGE
);
dprintk
(
"NFS: nfs_updatepage(%s/%s %d@%lld)
\n
"
,
file
->
f_path
.
dentry
->
d_parent
->
d_name
.
name
,
file
->
f_path
.
dentry
->
d_name
.
name
,
count
,
(
long
long
)(
page_file_offset
(
page
)
+
offset
));
dprintk
(
"NFS: nfs_updatepage(%pD2 %d@%lld)
\n
"
,
file
,
count
,
(
long
long
)(
page_file_offset
(
page
)
+
offset
));
if
(
nfs_can_extend_write
(
file
,
page
,
inode
))
{
count
=
max
(
count
+
offset
,
nfs_page_length
(
page
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录