Btrfs: add RAID 5/6 BTRFS_RBIO_REBUILD_MISSING operation
authorOmar Sandoval <osandov@fb.com>
Fri, 19 Jun 2015 18:52:50 +0000 (11:52 -0700)
committerChris Mason <clm@fb.com>
Sun, 9 Aug 2015 14:34:26 +0000 (07:34 -0700)
commitb4ee1782686d5b7a97826d67fdeaefaedbca23ce
tree74da39569b9efe1f48cb1c14bd72617f54128cef
parent7cb2c4202ed5730ecbf13c5d34c2cadff4cbe88f
Btrfs: add RAID 5/6 BTRFS_RBIO_REBUILD_MISSING operation

The current RAID 5/6 recovery code isn't quite prepared to handle
missing devices. In particular, it expects a bio that we previously
attempted to use in the read path, meaning that it has valid pages
allocated. However, missing devices have a NULL blkdev, and we can't
call bio_add_page() on a bio with a NULL blkdev. We could do manual
manipulation of bio->bi_io_vec, but that's pretty gross. So instead, add
a separate path that allows us to manually add pages to the rbio.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/raid56.c
fs/btrfs/raid56.h
fs/btrfs/scrub.c