[LTP] [PATCH] aio_return: Remove cases and refactor 4-1.c
Yang Xu
xuyang2018.jy@cn.fujitsu.com
Wed Mar 25 10:26:45 CET 2020
Hi
> From aio_return(3) manpage, the aio_return() function returns the
> final return status for the asynchronous I/O request with control
> block pointed to by aiocbp. It should be called only once for any
> given request. If we want to call twice for same aiocbp, it only
> returns the last value. It doesn't make sense. So remove 2-1.c and
> 3-2.c.
>
> For 4-1.c, it failed with the same reason. But we can refactor this
> , firstly call aio_return(&aiocb2) and then call aio_return(&aiocb).
> It tests whether value override.
>
> Reported-by: Gang Liu <liug.fnst@cn.fujitsu.com>
> Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
> ---
> .../conformance/interfaces/aio_return/2-1.c | 108 -----------------
> .../conformance/interfaces/aio_return/3-2.c | 111 ------------------
> .../conformance/interfaces/aio_return/4-1.c | 23 +++-
> 3 files changed, 18 insertions(+), 224 deletions(-)
> delete mode 100644 testcases/open_posix_testsuite/conformance/interfaces/aio_return/2-1.c
> delete mode 100644 testcases/open_posix_testsuite/conformance/interfaces/aio_return/3-2.c
>
>
> diff --git a/testcases/open_posix_testsuite/conformance/interfaces/aio_return/4-1.c b/testcases/open_posix_testsuite/conformance/interfaces/aio_return/4-1.c
> index 7a039b13f..770699b54 100644
> --- a/testcases/open_posix_testsuite/conformance/interfaces/aio_return/4-1.c
> +++ b/testcases/open_posix_testsuite/conformance/interfaces/aio_return/4-1.c
> @@ -17,8 +17,10 @@
> *
> * - Open a file
> * - fill in an aiocb for writing
> - * - call aio_write usign this aiocb
> + * - call aio_write using this aiocb
> * - fill in a new aiocb
> + * - call aio_write using this aiocb
> + * - call aio_return with aiocb
> * - call aio_return with this last aiocb
> */
>
> @@ -86,20 +88,31 @@ int main(void)
> aiocb2.aio_fildes = fd;
> aiocb2.aio_buf = buf;
> aiocb2.aio_nbytes = BUF_SIZE;
> + if (aio_write(&aiocb2) == -1) {
> + close(fd);
> + printf(TNAME " Error at aio_write(): %s\n", strerror(errno));
> + return PTS_FAIL;
> + }
> +
> + do {
> + nanosleep(&completion_wait_ts, NULL);
> + retval = aio_error(&aiocb);
Here should be aio_error(&aiocb2). Sorry.
> + } while (retval == EINPROGRESS);
>
> retval = aio_return(&aiocb2);
>
> - if (retval != -1 || aio_error(&aiocb) != EINVAL) {
> + if (retval != BUF_SIZE) {
> close(fd);
> - printf(TNAME "aio_return() have not failed\n");
> - return PTS_UNTESTED;
> + printf(TNAME " Error at aio_return(&aiocb2): %d, %s\n", retval,
> + strerror(aio_error(&aiocb)));
Here as well.
> + return PTS_UNRESOLVED;
> }
>
> retval = aio_return(&aiocb);
>
> if (retval != BUF_SIZE) {
> close(fd);
> - printf(TNAME " Error at aio_return(): %d, %s\n", retval,
> + printf(TNAME " Error at aio_return(&aiocb): %d, %s\n", retval,
> strerror(aio_error(&aiocb)));
> return PTS_UNRESOLVED;
> }
>
More information about the ltp
mailing list