Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
4f9838c7
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
4f9838c7
编写于
10月 27, 2005
作者:
T
Trond Myklebust
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
NFSv4: Add post-op attributes to NFSv4 write and commit callbacks.
Signed-off-by:
N
Trond Myklebust
<
Trond.Myklebust@netapp.com
>
上级
16e42959
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
36 addition
and
7 deletion
+36
-7
fs/nfs/nfs4proc.c
fs/nfs/nfs4proc.c
+12
-1
fs/nfs/nfs4xdr.c
fs/nfs/nfs4xdr.c
+22
-6
include/linux/nfs_xdr.h
include/linux/nfs_xdr.h
+2
-0
未找到文件。
fs/nfs/nfs4proc.c
浏览文件 @
4f9838c7
...
...
@@ -2169,8 +2169,10 @@ nfs4_write_done(struct rpc_task *task)
rpc_restart_call
(
task
);
return
;
}
if
(
task
->
tk_status
>=
0
)
if
(
task
->
tk_status
>=
0
)
{
renew_lease
(
NFS_SERVER
(
inode
),
data
->
timestamp
);
nfs_post_op_update_inode
(
inode
,
data
->
res
.
fattr
);
}
/* Call back common NFS writeback processing */
nfs_writeback_done
(
task
);
}
...
...
@@ -2186,6 +2188,7 @@ nfs4_proc_write_setup(struct nfs_write_data *data, int how)
.
rpc_cred
=
data
->
cred
,
};
struct
inode
*
inode
=
data
->
inode
;
struct
nfs_server
*
server
=
NFS_SERVER
(
inode
);
int
stable
;
int
flags
;
...
...
@@ -2197,6 +2200,8 @@ nfs4_proc_write_setup(struct nfs_write_data *data, int how)
}
else
stable
=
NFS_UNSTABLE
;
data
->
args
.
stable
=
stable
;
data
->
args
.
bitmask
=
server
->
attr_bitmask
;
data
->
res
.
server
=
server
;
data
->
timestamp
=
jiffies
;
...
...
@@ -2218,6 +2223,8 @@ nfs4_commit_done(struct rpc_task *task)
rpc_restart_call
(
task
);
return
;
}
if
(
task
->
tk_status
>=
0
)
nfs_post_op_update_inode
(
inode
,
data
->
res
.
fattr
);
/* Call back common NFS writeback processing */
nfs_commit_done
(
task
);
}
...
...
@@ -2233,8 +2240,12 @@ nfs4_proc_commit_setup(struct nfs_write_data *data, int how)
.
rpc_cred
=
data
->
cred
,
};
struct
inode
*
inode
=
data
->
inode
;
struct
nfs_server
*
server
=
NFS_SERVER
(
inode
);
int
flags
;
data
->
args
.
bitmask
=
server
->
attr_bitmask
;
data
->
res
.
server
=
server
;
/* Set the initial flags for the task. */
flags
=
(
how
&
FLUSH_SYNC
)
?
0
:
RPC_TASK_ASYNC
;
...
...
fs/nfs/nfs4xdr.c
浏览文件 @
4f9838c7
...
...
@@ -159,16 +159,20 @@ static int nfs_stat_to_errno(int);
op_decode_hdr_maxsz + 2)
#define NFS4_enc_write_sz (compound_encode_hdr_maxsz + \
encode_putfh_maxsz + \
op_encode_hdr_maxsz + 8)
op_encode_hdr_maxsz + 8 + \
encode_getattr_maxsz)
#define NFS4_dec_write_sz (compound_decode_hdr_maxsz + \
decode_putfh_maxsz + \
op_decode_hdr_maxsz + 4)
op_decode_hdr_maxsz + 4 + \
decode_getattr_maxsz)
#define NFS4_enc_commit_sz (compound_encode_hdr_maxsz + \
encode_putfh_maxsz + \
op_encode_hdr_maxsz + 3)
op_encode_hdr_maxsz + 3 + \
encode_getattr_maxsz)
#define NFS4_dec_commit_sz (compound_decode_hdr_maxsz + \
decode_putfh_maxsz + \
op_decode_hdr_maxsz + 2)
op_decode_hdr_maxsz + 2 + \
decode_getattr_maxsz)
#define NFS4_enc_open_sz (compound_encode_hdr_maxsz + \
encode_putfh_maxsz + \
op_encode_hdr_maxsz + \
...
...
@@ -1799,7 +1803,7 @@ static int nfs4_xdr_enc_write(struct rpc_rqst *req, uint32_t *p, struct nfs_writ
{
struct
xdr_stream
xdr
;
struct
compound_hdr
hdr
=
{
.
nops
=
2
,
.
nops
=
3
,
};
int
status
;
...
...
@@ -1809,6 +1813,9 @@ static int nfs4_xdr_enc_write(struct rpc_rqst *req, uint32_t *p, struct nfs_writ
if
(
status
)
goto
out
;
status
=
encode_write
(
&
xdr
,
args
);
if
(
status
)
goto
out
;
status
=
encode_getfattr
(
&
xdr
,
args
->
bitmask
);
out:
return
status
;
}
...
...
@@ -1820,7 +1827,7 @@ static int nfs4_xdr_enc_commit(struct rpc_rqst *req, uint32_t *p, struct nfs_wri
{
struct
xdr_stream
xdr
;
struct
compound_hdr
hdr
=
{
.
nops
=
2
,
.
nops
=
3
,
};
int
status
;
...
...
@@ -1830,6 +1837,9 @@ static int nfs4_xdr_enc_commit(struct rpc_rqst *req, uint32_t *p, struct nfs_wri
if
(
status
)
goto
out
;
status
=
encode_commit
(
&
xdr
,
args
);
if
(
status
)
goto
out
;
status
=
encode_getfattr
(
&
xdr
,
args
->
bitmask
);
out:
return
status
;
}
...
...
@@ -4001,6 +4011,9 @@ static int nfs4_xdr_dec_write(struct rpc_rqst *rqstp, uint32_t *p, struct nfs_wr
if
(
status
)
goto
out
;
status
=
decode_write
(
&
xdr
,
res
);
if
(
status
)
goto
out
;
decode_getfattr
(
&
xdr
,
res
->
fattr
,
res
->
server
);
if
(
!
status
)
status
=
res
->
count
;
out:
...
...
@@ -4024,6 +4037,9 @@ static int nfs4_xdr_dec_commit(struct rpc_rqst *rqstp, uint32_t *p, struct nfs_w
if
(
status
)
goto
out
;
status
=
decode_commit
(
&
xdr
,
res
);
if
(
status
)
goto
out
;
decode_getfattr
(
&
xdr
,
res
->
fattr
,
res
->
server
);
out:
return
status
;
}
...
...
include/linux/nfs_xdr.h
浏览文件 @
4f9838c7
...
...
@@ -256,6 +256,7 @@ struct nfs_writeargs {
enum
nfs3_stable_how
stable
;
unsigned
int
pgbase
;
struct
page
**
pages
;
const
u32
*
bitmask
;
};
struct
nfs_writeverf
{
...
...
@@ -267,6 +268,7 @@ struct nfs_writeres {
struct
nfs_fattr
*
fattr
;
struct
nfs_writeverf
*
verf
;
__u32
count
;
const
struct
nfs_server
*
server
;
};
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录