[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