diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2013-07-03 21:25:19 +0800 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2013-07-03 14:06:55 -0400 |
commit | 3b9e6dd4379ed8f2fb50bee8dce4245038498211 (patch) | |
tree | 62d67b301d3e8981a74703f4c0fd7591b179aaf4 /volumes.c | |
parent | 68acb1075e0da2d9f170cb52f561c5225787dbdf (diff) | |
download | btrfs-progs-3b9e6dd4379ed8f2fb50bee8dce4245038498211.tar.gz |
Btrfs-progs: Add chunk rebuild function for RAID1/SINGLE/DUP
Add chunk rebuild for RAID1/SINGLE/DUP to chunk-recover command.
Before this patch chunk-recover can only scan and reuse the old chunk
data to recover. With this patch, chunk-recover can use the reference
between chunk/block group/dev extent to rebuild the whole chunk tree
even when old chunks are not available.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'volumes.c')
-rw-r--r-- | volumes.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -1386,16 +1386,15 @@ struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid, return NULL; } -struct btrfs_device *btrfs_find_device_by_devid(struct btrfs_root *root, - u64 devid, int instance) +struct btrfs_device * +btrfs_find_device_by_devid(struct btrfs_fs_devices *fs_devices, + u64 devid, int instance) { - struct list_head *head = &root->fs_info->fs_devices->devices; + struct list_head *head = &fs_devices->devices; struct btrfs_device *dev; - struct list_head *cur; int num_found = 0; - list_for_each(cur, head) { - dev = list_entry(cur, struct btrfs_device, dev_list); + list_for_each_entry(dev, head, dev_list) { if (dev->devid == devid && num_found++ == instance) return dev; } |