From: Bian Naimeng <biannm@cn.fujitsu.com>
To: yanegomi@gmail.com
Cc: ltp-list@lists.sourceforge.net
Subject: Re: [LTP] [POSIX][PATCH]A awaited IO request completion signal can case lio_listio return EINTR.
Date: Mon, 08 Nov 2010 15:11:05 +0800 [thread overview]
Message-ID: <4CD7A289.8020002@cn.fujitsu.com> (raw)
In-Reply-To: <4CCA1F3E.5000202@cn.fujitsu.com>
Bian Naimeng wrote:
> Open posix documents point lio_listio may return EINTR caused by a awaited I/O requst
> completion signal.
>
> [EINTR]
> A signal was delivered while waiting for all I/O requests to complete during an
> LIO_WAIT operation. Note that, since each I/O operation invoked by lio_listio()
> may possibly provoke a signal when it completes, this error return may be caused
> by the completion of one (or more) of the very I/O operations being awaited.
> Outstanding I/O requests are not canceled, and the application shall examine each
> list element to determine whether the request was initiated, canceled, or completed.
>
> So it's unnecessary to setup handler for IO operation completion, we just need check
> the aio_error and aio_return for each request, it has same effect on checking
> received_selected.
>
> Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
>
Hi Garrett,
Would you like to pick up this patch? Any reply is helpful to me, so please let me
know what's your opinion if you are free. ^_^
Best Regards
Bian
> ---
> .../conformance/interfaces/lio_listio/1-1.c | 35 ++------------------
> 1 files changed, 3 insertions(+), 32 deletions(-)
>
> diff --git a/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c
> index f19fcd3..5e4d16a 100644
> --- a/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c
> +++ b/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c
> @@ -38,18 +38,11 @@
> #define NUM_AIOCBS 10
> #define BUF_SIZE 1024*1024
>
> -int received_selected = 0;
> int received_all = 0;
>
> void
> sigrt1_handler(int signum, siginfo_t *info, void *context)
> {
> - received_selected = info->si_value.sival_int;
> -}
> -
> -void
> -sigrt2_handler(int signum, siginfo_t *info, void *context)
> -{
> received_all = 1;
> }
>
> @@ -105,30 +98,19 @@ int main()
> aiocbs[i]->aio_buf = &bufs[i*BUF_SIZE];
> aiocbs[i]->aio_nbytes = BUF_SIZE;
> aiocbs[i]->aio_lio_opcode = LIO_WRITE;
> -
> - /* Use SIRTMIN+1 for individual completions */
> - aiocbs[i]->aio_sigevent.sigev_notify = SIGEV_SIGNAL;
> - aiocbs[i]->aio_sigevent.sigev_signo = SIGRTMIN+1;
> - aiocbs[i]->aio_sigevent.sigev_value.sival_int = i;
> }
>
> - /* Use SIGRTMIN+2 for list completion */
> + /* Use SIGRTMIN+1 for list completion */
> event.sigev_notify = SIGEV_SIGNAL;
> - event.sigev_signo = SIGRTMIN+2;
> + event.sigev_signo = SIGRTMIN+1;
> event.sigev_value.sival_ptr = NULL;
>
> - /* Setup handler for individual operation completion */
> + /* Setup handler for list completion */
> action.sa_sigaction = sigrt1_handler;
> sigemptyset(&action.sa_mask);
> action.sa_flags = SA_SIGINFO|SA_RESTART;
> sigaction(SIGRTMIN+1, &action, NULL);
>
> - /* Setup handler for list completion */
> - action.sa_sigaction = sigrt2_handler;
> - sigemptyset(&action.sa_mask);
> - action.sa_flags = SA_SIGINFO|SA_RESTART;
> - sigaction(SIGRTMIN+2, &action, NULL);
> -
> /* Submit request list */
> ret = lio_listio(LIO_WAIT, aiocbs, NUM_AIOCBS, &event);
>
> @@ -142,17 +124,6 @@ int main()
> exit (PTS_FAIL);
> }
>
> - if (received_selected != NUM_AIOCBS-1)
> - {
> - printf(TNAME " lio_listio() did not wait\n");
> - for (i=0; i<NUM_AIOCBS; i++)
> - free (aiocbs[i]);
> - free (bufs);
> - free (aiocbs);
> - close (fd);
> - exit (PTS_FAIL);
> - }
> -
> if (received_all != 0)
> {
> printf(TNAME " lio_listio() did not ignore the sig argument\n");
--
Regards
Bian Naimeng
------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next prev parent reply other threads:[~2010-11-08 7:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-29 1:11 [LTP] [POSIX][PATCH]A awaited IO request completion signal can case lio_listio return EINTR Bian Naimeng
2010-11-08 7:11 ` Bian Naimeng [this message]
2010-11-08 21:49 ` Garrett Cooper
2010-12-26 13:34 ` Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CD7A289.8020002@cn.fujitsu.com \
--to=biannm@cn.fujitsu.com \
--cc=ltp-list@lists.sourceforge.net \
--cc=yanegomi@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.