Commit 18e503d6 authored by Chris Mason's avatar Chris Mason

Btrfs: fix raid code for removing missing drives

When btrfs is mounted in degraded mode, it has some internal structures
to track the missing devices.  This missing device is setup as readonly,
but the mapping code can get upset when we try to write to it.

This changes the mapping code to return -EIO instead of oops when we try
to write to the readonly device.
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 19fe0a8b
...@@ -3034,8 +3034,7 @@ int btrfs_map_bio(struct btrfs_root *root, int rw, struct bio *bio, ...@@ -3034,8 +3034,7 @@ int btrfs_map_bio(struct btrfs_root *root, int rw, struct bio *bio,
} }
bio->bi_sector = multi->stripes[dev_nr].physical >> 9; bio->bi_sector = multi->stripes[dev_nr].physical >> 9;
dev = multi->stripes[dev_nr].dev; dev = multi->stripes[dev_nr].dev;
BUG_ON(rw == WRITE && !dev->writeable); if (dev && dev->bdev && (rw != WRITE || dev->writeable)) {
if (dev && dev->bdev) {
bio->bi_bdev = dev->bdev; bio->bi_bdev = dev->bdev;
if (async_submit) if (async_submit)
schedule_bio(root, dev, rw, bio); schedule_bio(root, dev, rw, bio);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment