bcache: bugfix for race between moving_gc and bucket_invalidate
authorKent Overstreet <kmo@daterainc.com>
Mon, 16 Dec 2013 22:12:09 +0000 (14:12 -0800)
committerKent Overstreet <kmo@daterainc.com>
Mon, 16 Dec 2013 22:22:58 +0000 (14:22 -0800)
There is a possibility for a bucket to be invalidated by the allocator
while moving_gc was copying it's contents to another bucket, if the
bucket only held cached data. To prevent this moving checks for
a stale ptr (to an invalidated bucket), before and after reads.
It it finds one, it simply ignores moving that data. This only
affects bcache if the moving_gc was turned on, note that it's
off by default.

Signed-off-by: Nicholas Swenson <nks@daterainc.com>
Signed-off-by: Kent Overstreet <kmo@daterainc.com>

No differences found