Re: Honest timeline for btrfsck

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux