mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-16 14:27:48 +00:00
bb34e69f3d
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
62 lines
1.9 KiB
Diff
62 lines
1.9 KiB
Diff
From ccd03bf68f47d089dc1c789ea11a19792e056fdf Mon Sep 17 00:00:00 2001
|
|
From: Trond Myklebust <Trond.Myklebust@netapp.com>
|
|
Date: Tue, 27 Mar 2012 18:22:19 -0400
|
|
Subject: [PATCH 127/147] NFSv4.1: Fix layoutcommit error handling
|
|
|
|
commit e59d27e05a6435f8c04d5ad843f37fa795f2eaaa upstream.
|
|
|
|
Firstly, task->tk_status will always return negative error values,
|
|
so the current tests for 'NFS4ERR_DELEG_REVOKED' etc. are all being
|
|
ignored.
|
|
Secondly, clean up the code so that we only need to test
|
|
task->tk_status once!
|
|
|
|
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
fs/nfs/nfs4proc.c | 25 +++++++++++++------------
|
|
1 file changed, 13 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
|
|
index 6db0972..d945700 100644
|
|
--- a/fs/nfs/nfs4proc.c
|
|
+++ b/fs/nfs/nfs4proc.c
|
|
@@ -5983,21 +5983,22 @@ nfs4_layoutcommit_done(struct rpc_task *task, void *calldata)
|
|
return;
|
|
|
|
switch (task->tk_status) { /* Just ignore these failures */
|
|
- case NFS4ERR_DELEG_REVOKED: /* layout was recalled */
|
|
- case NFS4ERR_BADIOMODE: /* no IOMODE_RW layout for range */
|
|
- case NFS4ERR_BADLAYOUT: /* no layout */
|
|
- case NFS4ERR_GRACE: /* loca_recalim always false */
|
|
+ case -NFS4ERR_DELEG_REVOKED: /* layout was recalled */
|
|
+ case -NFS4ERR_BADIOMODE: /* no IOMODE_RW layout for range */
|
|
+ case -NFS4ERR_BADLAYOUT: /* no layout */
|
|
+ case -NFS4ERR_GRACE: /* loca_recalim always false */
|
|
task->tk_status = 0;
|
|
- }
|
|
-
|
|
- if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) {
|
|
- rpc_restart_call_prepare(task);
|
|
- return;
|
|
- }
|
|
-
|
|
- if (task->tk_status == 0)
|
|
+ break;
|
|
+ case 0:
|
|
nfs_post_op_update_inode_force_wcc(data->args.inode,
|
|
data->res.fattr);
|
|
+ break;
|
|
+ default:
|
|
+ if (nfs4_async_handle_error(task, server, NULL) == -EAGAIN) {
|
|
+ rpc_restart_call_prepare(task);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
static void nfs4_layoutcommit_release(void *calldata)
|
|
--
|
|
1.7.9.4
|
|
|