Revision 5be4aab7 posix-aio-compat.c

b/posix-aio-compat.c
322 322

  
323 323
        while (QTAILQ_EMPTY(&request_list) &&
324 324
               !(ret == ETIMEDOUT)) {
325
            idle_threads++;
325 326
            ret = cond_timedwait(&cond, &lock, &ts);
327
            idle_threads--;
326 328
        }
327 329

  
328 330
        if (QTAILQ_EMPTY(&request_list))
......
331 333
        aiocb = QTAILQ_FIRST(&request_list);
332 334
        QTAILQ_REMOVE(&request_list, aiocb, node);
333 335
        aiocb->active = 1;
334
        idle_threads--;
335 336
        mutex_unlock(&lock);
336 337

  
337 338
        switch (aiocb->aio_type & QEMU_AIO_TYPE_MASK) {
......
353 354

  
354 355
        mutex_lock(&lock);
355 356
        aiocb->ret = ret;
356
        idle_threads++;
357 357
        mutex_unlock(&lock);
358 358

  
359 359
        if (kill(pid, aiocb->ev_signo)) die("kill failed");
360 360
    }
361 361

  
362
    idle_threads--;
363 362
    cur_threads--;
364 363
    mutex_unlock(&lock);
365 364

  
......
371 370
    sigset_t set, oldset;
372 371

  
373 372
    cur_threads++;
374
    idle_threads++;
375 373

  
376 374
    /* block all signals */
377 375
    if (sigfillset(&set)) die("sigfillset");

Also available in: Unified diff