[PATCH] aio: avoid extra aio_{read,write} call when ki_left == 0

Recently aio_p{read,write} changed to perform retries internally rather
than returning -EIOCBRETRY. This inadvertantly resulted in always calling
aio_{read,write} with ki_left at 0 which would in turn immediately return
0. Harmless, but we can avoid this call by checking in the caller.

Signed-off-by: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Benjamin LaHaise <bcrl@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Zach Brown and committed by Linus Torvalds 353fb07e 897f15fb

+2 -2
+2 -2
fs/aio.c
··· 1347 1347 * regular files we retry till we complete the entire read or 1348 1348 * find that we can't read any more data (e.g short reads). 1349 1349 */ 1350 - } while (ret > 0 && 1350 + } while (ret > 0 && iocb->ki_left > 0 && 1351 1351 !S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode)); 1352 1352 1353 1353 /* This means we must have transferred all that we could */ ··· 1371 1371 iocb->ki_buf += ret; 1372 1372 iocb->ki_left -= ret; 1373 1373 } 1374 - } while (ret > 0); 1374 + } while (ret > 0 && iocb->ki_left > 0); 1375 1375 1376 1376 if ((ret == 0) || (iocb->ki_left == 0)) 1377 1377 ret = iocb->ki_nbytes - iocb->ki_left;