[Top][All Lists]
[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: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat" |
Date: |
Thu, 8 Oct 2009 23:46:06 +0200 |
User-agent: |
Mutt/1.5.19 (2009-01-05) |
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
>
> FWIW, in essence sigfillset is this:
>
> # define __sigfillset(set) \
> (__extension__ ({ int __cnt = _SIGSET_NWORDS;
> \
> sigset_t *__set = (set);
> \
> while (--__cnt >= 0) __set->__val[__cnt] = ~0UL;
> \
> 0; }))
>
> 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.
> IOW not good enough, we need to understand the problem,
> and as mentioned above, i can not be of any help here, can't repro,
> sorry.
>
> --
> mailto:address@hidden
- [Qemu-devel] [PATCH] qemu: work around for "posix-aio-compat", Michael S. Tsirkin, 2009/10/08
- [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat", malc, 2009/10/08
- Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat", malc, 2009/10/08
- Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat",
Michael S. Tsirkin <=
- Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat", malc, 2009/10/08
- Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat", Michael S. Tsirkin, 2009/10/08
- [Qemu-devel] Emulated network cards, Natalia Portillo, 2009/10/08
- Re: [Qemu-devel] Emulated network cards, Luca Tettamanti, 2009/10/09
- Re: [Qemu-devel] Emulated network cards, Natalia Portillo, 2009/10/09
- Re: [Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat", malc, 2009/10/09
[Qemu-devel] Re: [PATCH] qemu: work around for "posix-aio-compat", Michael S. Tsirkin, 2009/10/08
Re: [Qemu-devel] [PATCH] qemu: work around for "posix-aio-compat", Mark McLoughlin, 2009/10/20