--- zzzz-none-000/linux-2.6.32.60/fs/btrfs/async-thread.c 2012-10-07 21:41:24.000000000 +0000 +++ ur8-7270-606/linux-2.6.32.60/fs/btrfs/async-thread.c 2010-04-08 11:00:21.000000000 +0000 @@ -211,17 +211,10 @@ work->ordered_func(work); - /* now take the lock again and drop our item from the list */ + /* now take the lock again and call the freeing code */ spin_lock(&workers->order_lock); list_del(&work->order_list); - spin_unlock(&workers->order_lock); - - /* - * we don't want to call the ordered free functions - * with the lock held though - */ work->ordered_free(work); - spin_lock(&workers->order_lock); } spin_unlock(&workers->order_lock);