Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-block.git] / fs / aio.c
index 6db8745c2edd7b8c5143531df9c9cd21e7a7dbb5..351afe7ac78ebbed1dc331716c5c2ba46c16faf2 100644 (file)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1324,6 +1324,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb)
        if (iocb->ki_pos < 0)
                return -EINVAL;
 
+       if (opcode == IOCB_CMD_PWRITEV)
+               file_start_write(file);
        do {
                ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg],
                            iocb->ki_nr_segs - iocb->ki_cur_seg,
@@ -1336,6 +1338,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb)
        } while (ret > 0 && iocb->ki_left > 0 &&
                 (opcode == IOCB_CMD_PWRITEV ||
                  (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode))));
+       if (opcode == IOCB_CMD_PWRITEV)
+               file_end_write(file);
 
        /* This means we must have transferred all that we could */
        /* No need to retry anymore */