Files
linux/fs
Omar Sandoval 73ff61dbe5 Btrfs: fix device replace of a missing RAID 5/6 device
The original implementation of device replace on RAID 5/6 seems to have
missed support for replacing a missing device. When this is attempted,
we end up calling bio_add_page() on a bio with a NULL ->bi_bdev, which
crashes when we try to dereference it. This happens because
btrfs_map_block() has no choice but to return us the missing device
because RAID 5/6 don't have any alternate mirrors to read from, and a
missing device has a NULL bdev.

The idea implemented here is to handle the missing device case
separately, which better only happen when we're replacing a missing RAID
5/6 device. We use the new BTRFS_RBIO_REBUILD_MISSING operation to
reconstruct the data from parity, check it with
scrub_recheck_block_checksum(), and write it out with
scrub_write_block_to_dev_replace().

Reported-by: Philip <bugzilla@philip-seeger.de>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=96141
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
2015-08-09 07:34:26 -07:00
..
2015-06-30 19:44:57 -07:00
2015-06-23 18:02:01 -04:00
2015-06-23 18:01:59 -04:00
2015-07-09 11:42:21 -07:00
2015-06-25 17:00:42 -07:00
2015-07-09 11:42:21 -07:00
2015-04-21 16:16:02 -04:00
2015-07-09 11:42:21 -07:00
2015-07-09 11:42:21 -07:00
2015-04-11 22:29:40 -04:00
2014-11-19 13:01:20 -05:00
2015-06-02 09:22:34 -06:00
2015-07-09 11:42:21 -07:00
2015-05-31 13:23:08 +02:00
2014-08-26 09:35:56 +02:00