From f744285b6d3790e2784e700d28972ed9df805f40 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 8 Feb 2008 04:20:14 -0800 Subject: [PATCH] --- yaml --- r: 84716 b: refs/heads/master c: 7adfa2ff3efa02a7a9f2632d2d2662d3e5eb5304 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/aio.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b8f29106dc42..7c0208ecc3e7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 25478445c4a39318acbe08ba8df7945766cbb5b5 +refs/heads/master: 7adfa2ff3efa02a7a9f2632d2d2662d3e5eb5304 diff --git a/trunk/fs/aio.c b/trunk/fs/aio.c index 8a48ab0c278d..26c1930889fa 100644 --- a/trunk/fs/aio.c +++ b/trunk/fs/aio.c @@ -1347,6 +1347,13 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb) if ((ret == 0) || (iocb->ki_left == 0)) ret = iocb->ki_nbytes - iocb->ki_left; + /* If we managed to write some out we return that, rather than + * the eventual error. */ + if (opcode == IOCB_CMD_PWRITEV + && ret < 0 && ret != -EIOCBQUEUED && ret != -EIOCBRETRY + && iocb->ki_nbytes - iocb->ki_left) + ret = iocb->ki_nbytes - iocb->ki_left; + return ret; }