public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] POSIX "aio_return/2-1" failed.
@ 2010-10-08  5:29 ` Mitani
  2010-10-12 20:23   ` Garrett Cooper
  2010-10-18 12:00   ` Garrett Cooper
  0 siblings, 2 replies; 7+ messages in thread
From: Mitani @ 2010-10-08  5:29 UTC (permalink / raw)
  To: ltp-list

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.

How does that look?


Regards--

-Tomonori Mitani



------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [LTP] POSIX "aio_return/2-1" failed.
  2010-10-08  5:29 ` [LTP] POSIX "aio_return/2-1" failed Mitani
@ 2010-10-12 20:23   ` Garrett Cooper
  2010-10-18 12:00   ` Garrett Cooper
  1 sibling, 0 replies; 7+ messages in thread
From: Garrett Cooper @ 2010-10-12 20:23 UTC (permalink / raw)
  To: Mitani; +Cc: ltp-list

On Thu, Oct 7, 2010 at 10:29 PM, Mitani <mitani@ryobi.co.jp> 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.

    I'll respond to this sometime in the next couple of days after I
do some more investigation on the issue.
Thanks,
-Garrett

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [LTP] POSIX "aio_return/2-1" failed.
  2010-10-08  5:29 ` [LTP] POSIX "aio_return/2-1" failed Mitani
  2010-10-12 20:23   ` Garrett Cooper
@ 2010-10-18 12:00   ` Garrett Cooper
  2010-10-21  9:41     ` Garrett Cooper
  1 sibling, 1 reply; 7+ messages in thread
From: Garrett Cooper @ 2010-10-18 12:00 UTC (permalink / raw)
  To: Mitani; +Cc: ltp-list

On Thu, Oct 7, 2010 at 10:29 PM, Mitani <mitani@ryobi.co.jp> 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.
Thanks,
-Garrett

------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly 
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [LTP] POSIX "aio_return/2-1" failed.
  2010-10-18 12:00   ` Garrett Cooper
@ 2010-10-21  9:41     ` Garrett Cooper
  2010-10-21 11:50       ` Mitani
  0 siblings, 1 reply; 7+ messages in thread
From: Garrett Cooper @ 2010-10-21  9:41 UTC (permalink / raw)
  To: Mitani; +Cc: ltp-list

[-- Attachment #1: Type: text/plain, Size: 4491 bytes --]

On Mon, Oct 18, 2010 at 5:00 AM, Garrett Cooper <yanegomi@gmail.com> wrote:
> On Thu, Oct 7, 2010 at 10:29 PM, Mitani <mitani@ryobi.co.jp> 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

[-- Attachment #2: fixup-aio_return-1-1.diff --]
[-- Type: application/octet-stream, Size: 1268 bytes --]

diff --git a/testcases/open_posix_testsuite/conformance/interfaces/aio_return/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/aio_return/1-1.c
index bfc8e12..090387c 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/aio_return/1-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/aio_return/1-1.c
@@ -43,8 +43,10 @@ int main(void)
 	struct aiocb aiocb;
 	int fd, retval;
 
+#if 0
 	if (sysconf(_SC_ASYNCHRONOUS_IO) != 200112L)
 		return PTS_UNSUPPORTED;
+#endif
 
 	snprintf(tmpfname, sizeof(tmpfname), "/tmp/pts_aio_return_1_1_%d", 
 		  getpid());
@@ -73,26 +75,18 @@ int main(void)
 		exit(PTS_FAIL);
 	}
 
-	do {
-		retval = aio_error(&aiocb);
-		if (retval == -1) {
-			close(fd);
-			printf(TNAME " Error at aio_error(): %s\n",
-				strerror(errno));
-			exit(PTS_FAIL);
-		}
-	} while (retval == EINPROGRESS);
-
+	while (aio_error(&aiocb) == EINPROGRESS)
+		sleep(1);
 	retval = aio_return(&aiocb);
 
-	if (retval != BUF_SIZE) {
-		close(fd);
+	if (retval == -1) {
 		printf(TNAME " Error at aio_return(): %s\n",
-		       strerror(errno));
+		       strerror(aio_error(&aiocb)));
 		exit(PTS_FAIL);
 	}
-	
+
 	close(fd);
+	printf("aio_return(&aiocb) = %d\n", retval);
 	printf("Test PASSED\n");
 	exit(PTS_PASS);
 }

[-- Attachment #3: Type: text/plain, Size: 415 bytes --]

------------------------------------------------------------------------------
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

[-- Attachment #4: Type: text/plain, Size: 155 bytes --]

_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [LTP] POSIX "aio_return/2-1" failed.
  2010-10-21  9:41     ` Garrett Cooper
@ 2010-10-21 11:50       ` Mitani
  2010-10-21 11:59         ` Garrett Cooper
  0 siblings, 1 reply; 7+ messages in thread
From: Mitani @ 2010-10-21 11:50 UTC (permalink / raw)
  To: 'Garrett Cooper'; +Cc: ltp-list

> -----Original Message-----
> From: Garrett Cooper [mailto:yanegomi@gmail.com]
> Sent: Thursday, October 21, 2010 6:42 PM
> To: Mitani
> Cc: ltp-list@lists.sourceforge.net
> Subject: Re: [LTP] POSIX "aio_return/2-1" failed.
> 
> On Mon, Oct 18, 2010 at 5:00 AM, Garrett Cooper <yanegomi@gmail.com>
> wrote:
> > On Thu, Oct 7, 2010 at 10:29 PM, Mitani <mitani@ryobi.co.jp> 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  an
> y  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_r
> ead(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


I confirmed that your revision worked in my environment.
I also look forward to other testcases (2-1, 3-2, 4-1) being revised.


Thank you--

-Tomonori Mitani




------------------------------------------------------------------------------
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
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [LTP] POSIX "aio_return/2-1" failed.
  2010-10-21 11:50       ` Mitani
@ 2010-10-21 11:59         ` Garrett Cooper
  2010-10-27  3:58           ` Mitani
  0 siblings, 1 reply; 7+ messages in thread
From: Garrett Cooper @ 2010-10-21 11:59 UTC (permalink / raw)
  To: Mitani; +Cc: ltp-list

On Thu, Oct 21, 2010 at 4:50 AM, Mitani <mitani@ryobi.co.jp> wrote:
>> -----Original Message-----
>> From: Garrett Cooper [mailto:yanegomi@gmail.com]
>> Sent: Thursday, October 21, 2010 6:42 PM
>> To: Mitani
>> Cc: ltp-list@lists.sourceforge.net
>> Subject: Re: [LTP] POSIX "aio_return/2-1" failed.
>>
>> On Mon, Oct 18, 2010 at 5:00 AM, Garrett Cooper <yanegomi@gmail.com>
>> wrote:
>> > On Thu, Oct 7, 2010 at 10:29 PM, Mitani <mitani@ryobi.co.jp> 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  an
>> y  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_r
>> ead(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
>
>
> I confirmed that your revision worked in my environment.
> I also look forward to other testcases (2-1, 3-2, 4-1) being revised.

    Please update your git, rebuild, and test :).
    Let me know if you run into any issues.
Cheers,
-Garrett

------------------------------------------------------------------------------
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
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [LTP] POSIX "aio_return/2-1" failed.
  2010-10-21 11:59         ` Garrett Cooper
@ 2010-10-27  3:58           ` Mitani
  0 siblings, 0 replies; 7+ messages in thread
From: Mitani @ 2010-10-27  3:58 UTC (permalink / raw)
  To: 'Garrett Cooper'; +Cc: ltp-list

> -----Original Message-----
> From: Garrett Cooper [mailto:yanegomi@gmail.com]
> Sent: Thursday, October 21, 2010 9:00 PM
> To: Mitani
> Cc: ltp-list@lists.sourceforge.net
> Subject: Re: [LTP] POSIX "aio_return/2-1" failed.
> 
> On Thu, Oct 21, 2010 at 4:50 AM, Mitani <mitani@ryobi.co.jp> wrote:
> >> -----Original Message-----
> >> From: Garrett Cooper [mailto:yanegomi@gmail.com]
> >> Sent: Thursday, October 21, 2010 6:42 PM
> >> To: Mitani
> >> Cc: ltp-list@lists.sourceforge.net
> >> Subject: Re: [LTP] POSIX "aio_return/2-1" failed.
> >>
> >> On Mon, Oct 18, 2010 at 5:00 AM, Garrett Cooper <yanegomi@gmail.com>
> >> wrote:
> >> > On Thu, Oct 7, 2010 at 10:29 PM, Mitani <mitani@ryobi.co.jp> 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  an
> >> y  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_r
> >> ead(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
> >
> >
> > I confirmed that your revision worked in my environment.
> > I also look forward to other testcases (2-1, 3-2, 4-1) being revised.
> 
>     Please update your git, rebuild, and test :).
>     Let me know if you run into any issues.
> Cheers,
> -Garrett


I tried to run "aio_return" tests, but some of them failed with following
message:
------------
conformance/interfaces/aio_return/3-2: execution: FAILED: Output: 
aio_return/3-2.c aio_return() should fail with (-1, 22); failed with (4096,
0) instead
conformance/interfaces/aio_return/2-1: execution: FAILED: Output: 
aio_return/2-1.c Second call to aio_return() should return -1; aio_return()
returned 111
------------

Environment is as follows:
  - RHEL4.8 --- (x86, x86_64, ia64)
  - RHEL5.5 --- (x86, x86_64, ia64)
  - kernel  --- kernel-2.6.9-89.EL
  - glibc   --- glibc-2.3.4-2.43

The reason of above failures is that second "aio_return()" doesn't return
"-1".

The manpage of "aio_return()" of "FreeBSD 9-current" says:
--------------------
RETURN VALUES
     If the asynchronous I/O request has completed, the status is returned
as
     described in read(2), write(2), or fsync(2).  Otherwise, aio_return()
     returns -1 and sets errno to indicate the error condition.
--------------------
http://www.freebsd.org/cgi/man.cgi?query=aio_return&apropos=0&sektion=0&manp
ath=FreeBSD+9-current&format=html

On the other hand, the manpage of RHEL4.8/RHEL5.5 says:
--------------------
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.
--------------------

According to this manual, the return value may not be "-1" in Redhat
systems.
Perhaps "aio_return()" doesn't have guarantee to return "-1" even in 
other Linux systems, I think.


Regards--

-Tomonori Mitani



------------------------------------------------------------------------------
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
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-10-27  3:59 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <ActmqbqJnH8VAq0bTbe+8e3aEkHF9Q==>
2010-10-08  5:29 ` [LTP] POSIX "aio_return/2-1" failed Mitani
2010-10-12 20:23   ` Garrett Cooper
2010-10-18 12:00   ` Garrett Cooper
2010-10-21  9:41     ` Garrett Cooper
2010-10-21 11:50       ` Mitani
2010-10-21 11:59         ` Garrett Cooper
2010-10-27  3:58           ` Mitani

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox