On Mon, Oct 18, 2010 at 5:00 AM, Garrett Cooper <[email protected]> wrote: > On Thu, Oct 7, 2010 at 10:29 PM, Mitani <[email protected]> wrote: >> Hi, >> >> >> "conformance/interfaces/aio_return/2-1" failed with following message: >> ------------ >> conformance/interfaces/aio_return/2-1: execution: FAILED: Output: >> aio_return/2-1.c Second call to aio_return() should return -1 : 111 >> ------------ >> >> Same problem occurs in "aio_return/3-2.c" and "aio_return/4-1". >> >> Environment is as follows: >> - RHEL5.5 --- (x86, x86_64, ia64) >> - RHEL4.8 --- (x86, x86_64, ia64) >> >> >> This testset seems to be the error root test for "aio_return()". >> >> First "aio_return()" returned with 111. This return value is the length >> of buffer of "aio_write()". >> But second "aio_return()" returned with 111, too. It's unexpected >> result for this test set. >> Therefore, this test failed. >> >> Man page says that >> "This function should be called only once for any given request, after >> aio_error(2) returns something other than EINPROGRESS.": >> ------------ >> # LANG=C man 3 aio_return >> >> AIO_RETURN(3) Linux Programmer's Manual >> AIO_RETURN(3) >> >> NAME >> aio_return - get return status of asynchronous I/O operation >> >> SYNOPSIS >> #include <aio.h> >> >> ssize_t aio_return(struct aiocb *aiocbp); >> >> DESCRIPTION >> The aio_return function returns the final return status for the >> asynchronous I/O >> request with control block pointed to by aiocbp. >> >> This function should be called only once for any given >> request, after >> aio_error(2) returns something other than EINPROGRESS. >> >> RETURN VALUE >> If the asynchronous I/O operation has completed, this function >> returns the value >> that would have been returned in case of a synchronous read, write, >> or fsync >> request. Otherwise the return value is undefined. On error, the >> error value is >> returned. >> >> ERRORS >> EINVAL aiocbp does not point at a control block for an asynchronous >> I/O request >> of which the return status has not been retrieved yet. >> >> CONFORMING TO >> POSIX 1003.1-2003 >> >> SEE ALSO >> aio_cancel(3), aio_error(3), aio_fsync(3), aio_read(3), >> aio_suspend(3), >> aio_write(3) >> >> 2003-11-14 >> AIO_RETURN(3) >> # >> ------------ >> >> And, it says that >> "If the asynchronous I/O operation has completed, this function returns >> the value that would have been returned in case of a synchronous read, >> write, or fsync request. Otherwise the return value is undefined. On >> error, the error value is returned.". >> >> >> It can be supposed that the return value of second "aio_return()" is >> undefined. >> Therefore, it is not mistake that return value of the second "aio_return()" >> is one at success, I think. >> And, I think that "UNTESTED" or "UNRESOLVED" may be is more appropriate >> for this test. > > No. POSIX clearly states: > > "If the asynchronous I/O operation has completed, then the return > status, as described for read(), write(), and fsync(), shall be > returned. If the asynchronous I/O operation has not yet completed, the > results of aio_return() are undefined. > > If the aio_return() function fails, it shall return -1 and set errno > to indicate the error." > > ERRORS > > "The aio_return() function may fail if: > > [EINVAL] > The aiocbp argument does not refer to an asynchronous operation > whose return status has not yet been retrieved." > > What the test implementers were looking to do was test out that -1 > / EINVAL were returned, and maybe that fact that they were testing was > in fact implementation defined, as opposed to what's stated in the > standard, as the spec doesn't state that the behavior for aio_return > would be s.t. the state of the AIO stream is reset when aio_return is > called. > So yes, I agree this should be fixed, but let me check with the > POSIX folks what the best course of action is.
I've read into this a bit more, and I think that the aio_return
testcases were written incorrectly. Please try out this testcase... if
it works for you, then I'll apply necessary logic to other testcases
as well.
It worked for me at least on FreeBSD.
Thanks,
-Garrett
fixup-aio_return-1-1.diff
Description: Binary data
------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
