summaryrefslogtreecommitdiffstats
path: root/fs/nfs/direct.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2008-04-14 20:54:53 +0200
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-04-19 22:53:08 +0200
commitdbae4c73f08b8a7980cc912954ade3d4c1fb6147 (patch)
tree8a1ddd0b9df5ae7e919a235e9c765266d68a0e3f /fs/nfs/direct.c
parentNFS: Ensure that the write code cleans up properly when rpc_run_task() fails (diff)
downloadlinux-dbae4c73f08b8a7980cc912954ade3d4c1fb6147.tar.xz
linux-dbae4c73f08b8a7980cc912954ade3d4c1fb6147.zip
NFS: Ensure that rpc_run_task() errors are propagated back to the caller
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/direct.c')
-rw-r--r--fs/nfs/direct.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index abf8e0286e35..4757a2b326a1 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -347,8 +347,9 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq,
NFS_PROTO(inode)->read_setup(data, &msg);
task = rpc_run_task(&task_setup_data);
- if (!IS_ERR(task))
- rpc_put_task(task);
+ if (IS_ERR(task))
+ break;
+ rpc_put_task(task);
dprintk("NFS: %5u initiated direct read call "
"(req %s/%Ld, %zu bytes @ offset %Lu)\n",
@@ -763,8 +764,9 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq,
NFS_PROTO(inode)->write_setup(data, &msg);
task = rpc_run_task(&task_setup_data);
- if (!IS_ERR(task))
- rpc_put_task(task);
+ if (IS_ERR(task))
+ break;
+ rpc_put_task(task);
dprintk("NFS: %5u initiated direct write call "
"(req %s/%Ld, %zu bytes @ offset %Lu)\n",