qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat"


From: malc
Subject: Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat"
Date: Fri, 9 Oct 2009 02:17:13 +0400 (MSD)

On Thu, 8 Oct 2009, Michael S. Tsirkin wrote:

> On Fri, Oct 09, 2009 at 01:13:12AM +0400, malc wrote:
> > On Fri, 9 Oct 2009, malc wrote:
> > 
> > > On Thu, 8 Oct 2009, Michael S. Tsirkin wrote:
> > >
> > > > With commit ee3993069ff55fa6f1c64daf1e09963e340db8e4,
> > > > "posix-aio-compat: avoid signal race when spawning a thread"
> > > > winxp installation on a raw format file fails
> > > > during disk format, with a message "your
> > > > disk may be damaged".
> > > >
> > > > This commit moved signal mask from aio thread to creating thread.
> > > > It turns out if we keep the mask in aio thread as well, the problem
> > > > disappears. It should not be needed, but since this is harmless, let's
> > > > keep it around until someone inclined to debug pthread library internals
> > > > can check this issue.
> > > >
> > > > While we are at it, convert sigprocmask to pthread_sigmask
> > > > as per posix.
> > >
> > > Thanks for the work you've put into it, i'll try to see how all of this
> > > works on my x86 machine.
> > >
> > > [..snip..]
> > 
> > Nope, still can not reproduce... So indeed it appears someone is needed,
> > who:
> > 
> > a. Can reproduce
> > b. Cares

[..snip..]

> > 
> > So the thing that works for you can be replaced with some dummy loop
> > or something,
> 
> Exactly. I just did this:
> 
> sigset_t xset;
> 
> static void *aio_thread(void *unused)
> {
>     pid_t pid;
>     sigset_t set;
> 
>     /* block all signals */
>     /* Should not be necessary as we should inherit mask
>      * from creating thread. However, without this,
>      * on FC11, WinXP installation fails during disk format
>      * saying disk was damaged. pthread library bug?
>      * */
>     memset(&set, 0, sizeof set);
>     memcpy(&xset, &set, sizeof set);
> 
> and it also helps.

Now question of the week is - why does pausing the work that aio_thread
does helps things? Come to think of it - your machine (judging by -j 8)
is a lot faster than anything i have in my vicinity, and that might be
why i can not reproduce it...

-- 
mailto:address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]