summaryrefslogtreecommitdiffstats
path: root/fs/locks.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2011-11-18 15:07:51 -0500
committerChris Mason <chris.mason@oracle.com>2011-11-20 07:21:14 -0500
commit387125fc722a8ed432066b85a552917343bdafca (patch)
treecbb37a682f73f17b9ea728be84dcca135914a294 /fs/locks.c
parentf1ebcc74d5b2159f44c96b479b6eb8afc7829095 (diff)
Btrfs: fix barrier flushes
When btrfs is writing the super blocks, it send barrier flushes to make sure writeback caching drives get all the metadata on disk in the right order. But, we have two bugs in the way these are sent down. When doing full commits (not via the tree log), we are sending the barrier down before the last super when it should be going down before the first. In multi-device setups, we should be waiting for the barriers to complete on all devices before writing any of the supers. Both of these bugs can cause corruptions on power failures. We fix it with some new code to send down empty barriers to all devices before writing the first super. Alexandre Oliva found the multi-device bug. Arne Jansen did the async barrier loop. Signed-off-by: Chris Mason <chris.mason@oracle.com> Reported-by: Alexandre Oliva <oliva@lsd.ic.unicamp.br>
Diffstat (limited to 'fs/locks.c')
0 files changed, 0 insertions, 0 deletions