]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: shift all end_io work to thread pools
authorChris Mason <chris.mason@oracle.com>
Wed, 17 Dec 2008 19:51:42 +0000 (14:51 -0500)
committerChris Mason <chris.mason@oracle.com>
Wed, 17 Dec 2008 19:51:42 +0000 (14:51 -0500)
commit2c94c27e1d31587562fe32762da53954936b680d
tree7ac2b81a914329b7ac78b4f2a4275d62484ef45e
parent0a166757787868b88905d693ade709d45d2c1a3e
Btrfs: shift all end_io work to thread pools

bio_end_io for reads without checksumming on and btree writes were
happening without using async thread pools.  This means the extent_io.c
code had to use spin_lock_irq and friends on the rb tree locks for
extent state.

There were some irq safe vs unsafe lock inversions between the delallock
lock and the extent state locks.  This patch gets rid of them by moving
all end_io code into the thread pools.

To avoid contention and deadlocks between the data end_io processing and the
metadata end_io processing yet another thread pool is added to finish
off metadata writes.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/ctree.h
fs/btrfs/disk-io.c
fs/btrfs/extent_io.c
fs/btrfs/inode.c