2011/10/12 Josef Bacik <josef@xxxxxxxxxx>: > On Tue, Oct 11, 2011 at 11:21:45PM +0200, Francesco Riosa wrote: >> 2011/10/7 Josef Bacik <josef@xxxxxxxxxx>: >> > On 10/06/2011 04:56 PM, Francesco Riosa wrote: >> >> 2011/10/6 Andi Kleen <andi@xxxxxxxxxxxxxx>: >> >>> Jeff Putney <jeffrey.putney@xxxxxxxxx> writes: >> >>>> >> >>>> http://en.wikipedia.org/wiki/Release_early,_release_often >> >>> >> >>> Well the other principle in free software you're forgetting >> >>> is: >> >>> >> >>> "It will be released when it's ready" >> >>> >> >>> If you don't like Chris' ways to do releases you're free to write >> >>> something on your own or pay someone to do so. Otherwise >> >>> you just have to deal with his time frames, as shifty >> >>> as they may be. >> >> >> >> I did a different thing, I've offered Chris money to help rescue an >> >> hosed btrfs or to point to someone who could do, we ended in doing >> >> some tests (for free) but nothing else materialized. >> >> While the time passed has diminished the value of the data to be >> >> rescued I'm more on the "show us some code we can start from" than "it >> >> will be released when ready" vagon. >> >> >> > >> > If you still need that data, clone this repo >> > >> > git://github.com/josefbacik/btrfs-progs.git >> > >> > run make, and then run >> > >> > ./restore /dev/whatever /some/dir >> > >> > and it will try and suck all of your data off the disk and dump it in >> > that directory. If you have snapshots it will skip them by default, so >> > if you have snapshots that have useful data in them you'll want to use >> > the -s option. If you run into random errors that you think are >> > recoverable, or if you don't care about the file that's being recovered, >> > you can run with -i which will ignore errors and keep trying to recover >> > your files. Thanks, >> > >> > Josef >> > >> >> I've tried, w/o luck >> >> explanation come from 2011-06-21 thread; >> http://thread.gmane.org/gmane.comp.file-systems.btrfs/11435 >> the following refer to a copy of that system >> >> Label: space02 uuid: f752def1-1abc-48c7-8ebb-47ba37b8ffa6 >> Total devices 7 FS bytes used 173.12GB >> devid 6 size 488.94GB used 60.25GB path /dev/sdd7 >> devid 2 size 487.65GB used 58.76GB path /dev/sdd8 >> devid 7 size 487.65GB used 0.00 path /dev/sdf7 >> devid 3 size 487.65GB used 60.26GB path /dev/sdf8 >> devid 7 size 487.65GB used 1.50GB path /dev/sdg7 >> devid 5 size 488.94GB used 58.75GB path /dev/sdb7 >> devid 4 size 487.65GB used 60.26GB path /dev/sdb8 >> >> # ./restore /dev/sdd7 /tmp/restore >> failed to read /dev/sr0 >> failed to read /dev/sr0 >> restore: volumes.c:1367: btrfs_read_sys_array: Assertion `!(ret)' failed. >> Aborted >> > > So this is kind of a problem since you have multiple disks. We maybe could get > away with ignoring a failure, but the problem is if you have data on a disk > where we couldn't read the chunk then the chances are we won't be able to map > that file and read the data off. That being said, theres no harm in trying ;). > Can you make btrfs_read_sys_array complain about failing, but not actually BUG? > See if that helps you. Thanks, > > Josef > I've tried replacing the "BUG_ON(ret);" to printk("FAILED!!! %d\n", ret); the diff of the result is reported at the bottom. diff -u5 btrfs-progs.log btrfs-progs2.log --- btrfs-progs.log 2011-10-11 23:01:56.985577874 +0200+++ btrfs-progs2.log 2011-10-13 14:29:48.498033330 +0200@@ -115,11 +98,11 @@ int btrfs_scan_one_device(int fd=4, *path=/dev/loop5, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop0, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop3, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop2, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop1, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536)-int btrfs_scan_one_device(int fd=3, *path=/dev/sdd8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=139870728973573, u64 super_offset=65536) +int btrfs_scan_one_device(int fd=3, *path=/dev/sdd8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=139871521856773, u64 super_offset=65536) static int device_list_add(const char *path, struct btrfs_super_block *disk_super, u64 devid, struct btrfs_fs_devices **fs_devices_ret) static struct btrfs_fs_devices *find_fsid(u8 *fsid) static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid int btrfs_scan_one_device(int fd=5, *path=/dev/sdb8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=15306741171905079, u64 super_offset=65536) static int device_list_add(const char *path, struct btrfs_super_block *disk_super, u64 devid, struct btrfs_fs_devices **fs_devices_ret)@@ -222,11 +205,40 @@ int btrfs_scan_one_device(int fd=5, *path=/dev/loop2, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=5, *path=/dev/loop1, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_open_devices(struct btrfs_fs_devices *fs_devices, int flags) int btrfs_read_sys_array(struct btrfs_root *root) static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,...- leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712- fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6- chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+--- btrfs_print_tree(root, leaf, 0);+leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712+fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6+chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+FAILED!!! -5+static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,...+--- btrfs_print_tree(root, leaf, 0);+leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712+fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6+chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+FAILED!!! -5+static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,...+--- btrfs_print_tree(root, leaf, 0);+leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712+fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6+chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid, static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid-restore: volumes.c:1397: btrfs_read_sys_array: Assertion `!(ret)' failed.+FAILED!!! -5+int btrfs_map_block(struct btrfs_mapping_tree *map_tree, int rw,...+restore: volumes.c:988: btrfs_map_block: Assertion `!(!ce)' failed.>hom>viv>tmp colordiff -u5 btrfs-progs.log btrfs-progs2.log--- btrfs-progs.log 2011-10-11 23:01:56.985577874 +0200+++ btrfs-progs2.log 2011-10-13 14:29:48.498033330 +0200@@ -1,22 +1,5 @@-Label: space02 uuid: f752def1-1abc-48c7-8ebb-47ba37b8ffa6- Total devices 7 FS bytes used 173.12GB- devid 6 size 488.94GB used 60.25GB path /dev/sdd7- devid 2 size 487.65GB used 58.76GB path /dev/sdd8- devid 7 size 487.65GB used 0.00 path /dev/sdf7- devid 3 size 487.65GB used 60.26GB path /dev/sdf8- devid 7 size 487.65GB used 1.50GB path /dev/sdg7- devid 5 size 488.94GB used 58.75GB path /dev/sdb7- devid 4 size 487.65GB used 60.26GB path /dev/sdb8--# ./restore /dev/sdd7 /tmp/restore-failed to read /dev/sr0-failed to read /dev/sr0-restore: volumes.c:1367: btrfs_read_sys_array: Assertion `!(ret)' failed.-Aborted-- int btrfs_scan_one_device(int fd=3, *path=/dev/sdd8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=1, u64 super_offset=65536) static int device_list_add(const char *path, struct btrfs_super_block *disk_super, u64 devid, struct btrfs_fs_devices **fs_devices_ret) static struct btrfs_fs_devices *find_fsid(u8 *fsid) int btrfs_scan_one_device(int fd=4, *path=/dev/sdb8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=134816, u64 super_offset=65536) static int device_list_add(const char *path, struct btrfs_super_block *disk_super, u64 devid, struct btrfs_fs_devices **fs_devices_ret)@@ -115,11 +98,11 @@ int btrfs_scan_one_device(int fd=4, *path=/dev/loop5, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop0, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop3, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop2, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=4, *path=/dev/loop1, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536)-int btrfs_scan_one_device(int fd=3, *path=/dev/sdd8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=139870728973573, u64 super_offset=65536) +int btrfs_scan_one_device(int fd=3, *path=/dev/sdd8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=139871521856773, u64 super_offset=65536) static int device_list_add(const char *path, struct btrfs_super_block *disk_super, u64 devid, struct btrfs_fs_devices **fs_devices_ret) static struct btrfs_fs_devices *find_fsid(u8 *fsid) static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid int btrfs_scan_one_device(int fd=5, *path=/dev/sdb8, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=15306741171905079, u64 super_offset=65536) static int device_list_add(const char *path, struct btrfs_super_block *disk_super, u64 devid, struct btrfs_fs_devices **fs_devices_ret)@@ -222,11 +205,40 @@ int btrfs_scan_one_device(int fd=5, *path=/dev/loop2, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_scan_one_device(int fd=5, *path=/dev/loop1, struct btrfs_fs_devices **fs_devices_ret, u64 *total_devs=2, u64 super_offset=65536) int btrfs_open_devices(struct btrfs_fs_devices *fs_devices, int flags) int btrfs_read_sys_array(struct btrfs_root *root) static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,...- leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712- fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6- chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+--- btrfs_print_tree(root, leaf, 0);+leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712+fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6+chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+FAILED!!! -5+static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,...+--- btrfs_print_tree(root, leaf, 0);+leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712+fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6+chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+FAILED!!! -5+static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,...+--- btrfs_print_tree(root, leaf, 0);+leaf 65536 items 0 free space 3995 generation 604315930624 owner 20979712+fs uuid f752def1-1abc-48c7-8ebb-47ba37b8ffa6+chunk uuid 5f424852-6653-5f4d-318e-0b0000000000+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid+struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid,+static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid struct btrfs_device *btrfs_find_device(struct btrfs_root *root, u64 devid, static struct btrfs_device *__find_device(struct list_head *head, u64 devid, u8 *uuid-restore: volumes.c:1397: btrfs_read_sys_array: Assertion `!(ret)' failed.+FAILED!!! -5+int btrfs_map_block(struct btrfs_mapping_tree *map_tree, int rw,...+restore: volumes.c:988: btrfs_map_block: Assertion `!(!ce)' failed. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
