The exit-on-idle code for async worker threads was incorrectly
calling spin_lock_irq with interrupts already off.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
        int freeit = 0;
 
        spin_lock_irq(&worker->lock);
-       spin_lock_irq(&worker->workers->lock);
+       spin_lock(&worker->workers->lock);
        if (worker->workers->num_workers > 1 &&
            worker->idle &&
            !worker->working &&
                list_del_init(&worker->worker_list);
                worker->workers->num_workers--;
        }
-       spin_unlock_irq(&worker->workers->lock);
+       spin_unlock(&worker->workers->lock);
        spin_unlock_irq(&worker->lock);
 
        if (freeit)