bcache: Fix a race when freeing btree nodes
authorKent Overstreet <kmo@daterainc.com>
Tue, 18 Mar 2014 01:22:34 +0000 (18:22 -0700)
committerKent Overstreet <kmo@daterainc.com>
Tue, 18 Mar 2014 19:23:34 +0000 (12:23 -0700)
commit05335cff9f01555b769ac97b7bacc472b7ed047a
tree58e0a080e662b4b932a8b7bc678b5ed882a2d382
parent4fe6a816707aace9e8e297b708411c5930537793
bcache: Fix a race when freeing btree nodes

This isn't a bulletproof fix; btree_node_free() -> bch_bucket_free() puts the
bucket on the unused freelist, where it can be reused right away without any
ordering requirements. It would be better to wait on at least a journal write to
go down before reusing the bucket. bch_btree_set_root() does this, and inserting
into non leaf nodes is completely synchronous so we should be ok, but future
patches are just going to get rid of the unused freelist - it was needed in the
past for various reasons but shouldn't be anymore.

Signed-off-by: Kent Overstreet <kmo@daterainc.com>
drivers/md/bcache/btree.c