All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Stuart Brady <stuart.brady@gmail.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] suppress 'warn_unused_result' warning
Date: Mon, 11 May 2009 17:25:20 +0100	[thread overview]
Message-ID: <20090511162520.GB1579@redhat.com> (raw)
In-Reply-To: <4A084F58.7030706@codemonkey.ws>

On Mon, May 11, 2009 at 11:16:24AM -0500, Anthony Liguori wrote:
> Stuart Brady wrote:
> >On Sun, May 10, 2009 at 07:53:35PM -0600, M. Warner Losh wrote:
> >  
> >>When a signal is received and you are waiting for data, you get
> >>EINTR.  If there's data available, then I believe the behavior is to
> >>return that data and not EINTR.  That's the way Unix works.
> >>    
> >
> >So if I do a read() from a file over NFS, and there's an awful lot of
> >latency (and perhaps even connection problems), and the process gets a
> >signal -- does that mean that the signal will only be delivered once
> >data is returned?
> >
> >If not, then I would really start to wonder whether /all/ code dealing
> >with read(), write(), etc. should be written to cope with EINTR (and 
> >also partial reads/writes?) regardless of whatever is done with threads
> >and signal masks, as doing otherwise seems only to be asking for trouble
> >at some point.  (I'd be especially concerned about signals intended for
> >libraries that are not under the developer's control...)
> >  
> 
> Any system call can return EINTR just about.  It's not just read/write.

For many system calls you can have them auto-restarted after EINTR
by using sigaction() with the SA_RESTART flag. IIRC read/write/poll 
won't support restarts in this way though, because of the problem of
partial data read/writes and partial timeouts for poll meaning you
can't auto-restart them without app developer help

Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

  reply	other threads:[~2009-05-11 16:46 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-10 19:15 [Qemu-devel] [PATCH] suppress 'warn_unused_result' warning Chih-Min Chao
2009-05-10 22:11 ` Paul Brook
2009-05-10 22:15 ` Stuart Brady
2009-05-10 23:19   ` Anthony Liguori
2009-05-11  1:53   ` M. Warner Losh
2009-05-11 15:42     ` Stuart Brady
2009-05-11 16:02       ` Paul Brook
2009-05-11 16:16       ` Anthony Liguori
2009-05-11 16:25         ` Daniel P. Berrange [this message]
2009-05-11 16:57           ` Anthony Liguori
2009-05-12 12:19             ` Jamie Lokier
2009-05-11 17:02       ` Jamie Lokier
2009-05-11 16:15 ` Daniel P. Berrange

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=20090511162520.GB1579@redhat.com \
    --to=berrange@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=qemu-devel@nongnu.org \
    --cc=stuart.brady@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.