diff options
Diffstat (limited to 'fs/aio.c')
-rw-r--r-- | fs/aio.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -1324,6 +1324,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb) | |||
1324 | if (iocb->ki_pos < 0) | 1324 | if (iocb->ki_pos < 0) |
1325 | return -EINVAL; | 1325 | return -EINVAL; |
1326 | 1326 | ||
1327 | if (opcode == IOCB_CMD_PWRITEV) | ||
1328 | file_start_write(file); | ||
1327 | do { | 1329 | do { |
1328 | ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg], | 1330 | ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg], |
1329 | iocb->ki_nr_segs - iocb->ki_cur_seg, | 1331 | iocb->ki_nr_segs - iocb->ki_cur_seg, |
@@ -1336,6 +1338,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb) | |||
1336 | } while (ret > 0 && iocb->ki_left > 0 && | 1338 | } while (ret > 0 && iocb->ki_left > 0 && |
1337 | (opcode == IOCB_CMD_PWRITEV || | 1339 | (opcode == IOCB_CMD_PWRITEV || |
1338 | (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode)))); | 1340 | (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode)))); |
1341 | if (opcode == IOCB_CMD_PWRITEV) | ||
1342 | file_end_write(file); | ||
1339 | 1343 | ||
1340 | /* This means we must have transferred all that we could */ | 1344 | /* This means we must have transferred all that we could */ |
1341 | /* No need to retry anymore */ | 1345 | /* No need to retry anymore */ |