NFS: Fix for bug in handling of errors for O_DIRECT writes
Commiteda3cef8dd
("NFS: Fix error handling in nfs_direct_write_result()") ensured that if a WRITE returns an error, then data->res.verf->committed is not tested (as it is not initialised). Then commit60fa3f769f
("NFS: Fix two bugs in the O_DIRECT write code") inadvertently reverted this while fixing other problems. So move the test so that we never examine ->committed in an error case, and fix a speeling error while we are there. Cc: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Neil Brown <neilb@suse.de> Acked-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a7aed1c2dc
commit
432409eebc
|
@ -549,13 +549,13 @@ static void nfs_direct_write_result(struct rpc_task *task, void *calldata)
|
|||
|
||||
spin_lock(&dreq->lock);
|
||||
|
||||
if (unlikely(dreq->error != 0))
|
||||
goto out_unlock;
|
||||
if (unlikely(status < 0)) {
|
||||
/* An error has occured, so we should not commit */
|
||||
/* An error has occurred, so we should not commit */
|
||||
dreq->flags = 0;
|
||||
dreq->error = status;
|
||||
}
|
||||
if (unlikely(dreq->error != 0))
|
||||
goto out_unlock;
|
||||
|
||||
dreq->count += data->res.count;
|
||||
|
||||
|
|
Loading…
Reference in New Issue