Hi, so I just tried this... 17:08 localhost:~/btr/btrfs-progs-0.11 # mdadm -C /dev/md0 -fe 1.0 -l linear -n 59 /dev/sd[b-z] /dev/sda[a-z] /dev/sdb[a-h] mdadm: array /dev/md0 started. 17:09 localhost:~/btr/btrfs-progs-0.11 # fdisk -l /dev/md0 Disk /dev/md0: 60183.2 GB, 60183225368576 bytes 2 heads, 4 sectors/track, -1 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk identifier: 0x00000000 Disk /dev/md0 doesn't contain a valid partition table 16:54 localhost:~/btr/btrfs-progs-0.11 # ./mkfs.btrfs /dev/md0 fs created on /dev/md0 nodesize 16384 leafsize 16384 sectorsize 4096 bytes 60183225368576 17:09 localhost:~/btr/btrfs-progs-0.11 # mount -t btrfs /dev/md0 /mnt 17:09 localhost:~/btr/btrfs-progs-0.11 # df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 xfs 7.3G 1.1G 6.2G 16% / udev tmpfs 62M 316K 62M 1% /dev ichi:/home nfs 199G 163G 37G 82% /home /dev/md0 btrfs 55T 7.5M 55T 1% /mnt Looking good. So far. 17:16 localhost:~/btr/btrfs-progs-0.11 # mdadm -C /dev/md0 -fe 1.0 -l linear -n 16 /dev/sd[b-q] mdadm: array /dev/md0 started. 17:16 localhost:~/btr/btrfs-progs-0.11 # ./mkfs.btrfs /dev/md0 fs created on /dev/md0 nodesize 16384 leafsize 16384 sectorsize 4096 bytes 16320874676224 17:16 localhost:~/btr/btrfs-progs-0.11 # mount -t btrfs /dev/md0 /mnt Segmentation fault I have experienced this crash before (what I wrote yesterday in IRC). To reproduce, create a volume, mkfs.btrfs on it, mount, umount, shrink the volume, mkfs again, mount -> crash. (Just what I have presented here.) The actual size of the device does not seem to matter. Yesterday I had the md sized with 9 TB, then 21 TB, went back to 16 (crash). Went back to 8 (ok - huh?), went up to 9 (crash). Then tried 59 now (ok), 58 (still ok), 16 (crash). I suppose btrfs unfortunately reuses some of the old values that are still on disk. Kernel oops: [ 1793.880206] failed to allocate bio nr -310378755 [ 1793.880567] BUG: unable to handle kernel NULL pointer dereference at virtual address 0000000c [ 1793.880620] printing eip: [ 1793.880646] c01aaecd [ 1793.880674] *pde = 00000000 [ 1793.881017] Oops: 0000 [#1] [ 1793.881062] SMP [ 1793.881148] last sysfs file: /block/md0/md/array_state [ 1793.881444] Modules linked in: btrfs libcrc32c linear md_mod ipv6 nfs lockd nfs_acl sunrpc af_packet iptable_filter ip_tables x_tables nf_conntrack_ipv4 nf_conntrack nfnetlink nf_defrag_ipv4 fuse loop dm_mod rtc_cmos parport_pc parport rtc_core floppy rtc_lib pcnet32 mii ac container intel_agp agpgart button shpchp i2c_piix4 sr_mod pci_hotplug cdrom i2c_core sg sd_mod edd xfs fan mptspi mptscsih mptbase scsi_transport_spi ata_piix libata scsi_mod thermal processor [ 1793.881888] CPU: 0 [ 1793.881893] EIP: 0060:[<c01aaecd>] Tainted: G N VLI [ 1793.881896] EFLAGS: 00010292 (2.6.23.14-ccj63-regular #1) [ 1793.882490] EIP is at bio_add_page+0xd/0x50 [ 1793.882532] eax: 00000000 ebx: 00000000 ecx: 00001000 edx: c109ee80 [ 1793.882561] esi: ed7ffefd edi: ed7ffefd ebp: c26dbcd0 esp: c26dbbdc [ 1793.882588] ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068 [ 1793.882625] Process mount (pid: 4654, ti=c26da000 task=c51a2980 task.ti=c26da000) [ 1793.882655] Stack: c26dbcd0 c012a0fb c8c85eb8 00000000 ed7ffefd c8c78cc7 00000000 ed7ffefd [ 1793.882767] c8c7bbb0 c11b9200 00000000 00001000 00000020 00000000 c109ee80 c3caadfc [ 1793.882794] 00000000 00000000 00000020 00000000 00001000 00000000 c8c7ace4 00000020 [ 1793.882827] Call Trace: [ 1793.883098] [<c012a0fb>] printk+0x1b/0x20 [ 1793.883313] [<c8c78cc7>] submit_extent_page+0xe7/0x1d0 [btrfs] [ 1793.883745] [<c8c7bbb0>] end_bio_extent_readpage+0x0/0x250 [btrfs] [ 1793.883790] [<c8c7ace4>] __extent_read_full_page+0x3c4/0x5d0 [btrfs] [ 1793.883830] [<c8c7bbb0>] end_bio_extent_readpage+0x0/0x250 [btrfs] [ 1793.883863] [<c8c6cdf0>] btree_get_extent+0x0/0x100 [btrfs] [ 1793.883905] [<c8c7af08>] extent_read_full_page+0x18/0x30 [btrfs] [ 1793.883937] [<c8c7c5c7>] read_extent_buffer_pages+0xb7/0x290 [btrfs] [ 1793.883973] [<c8c6c5d4>] read_tree_block+0x54/0x180 [btrfs] [ 1793.884002] [<c8c6fb4f>] btrfs_alloc_inode+0xf/0x50 [btrfs] [ 1793.884029] [<c01991a1>] alloc_inode+0xd1/0x190 [ 1793.884074] [<c8c6c2ce>] __setup_root+0xfe/0x130 [btrfs] [ 1793.884104] [<c8c6dac6>] open_ctree+0x376/0x540 [btrfs] [ 1793.884136] [<c8c5d64b>] btrfs_fill_super+0x4b/0x160 [btrfs] [ 1793.884165] [<c8c5d252>] btrfs_get_sb_bdev+0x152/0x1a0 [btrfs] [ 1793.884192] [<c018f5a5>] link_path_walk+0x65/0xc0 [ 1793.884207] [<c8c5d5cc>] btrfs_get_sb+0x5c/0x90 [btrfs] [ 1793.884232] [<c8c5d600>] btrfs_fill_super+0x0/0x160 [btrfs] [ 1793.884261] [<c0187358>] vfs_kern_mount+0xa8/0x130 [ 1793.884300] [<c018743d>] do_kern_mount+0x3d/0xe0 [ 1793.884335] [<c019cce4>] do_mount+0x5e4/0x720 [ 1793.884353] [<c016307f>] find_lock_page+0x2f/0xd0 [ 1793.884422] [<c0165486>] filemap_fault+0x216/0x420 [ 1793.884436] [<c0171f64>] handle_mm_fault+0x654/0x860 [ 1793.884470] [<c0167c11>] __alloc_pages+0x61/0x370 [ 1793.884482] [<c0302240>] do_page_fault+0x0/0x720 [ 1793.884528] [<c019b5e0>] copy_mount_options+0x40/0x140 [ 1793.884544] [<c019d397>] sys_mount+0x77/0xb0 [ 1793.884557] [<c01042d2>] sysenter_past_esp+0x6b/0xa9 [ 1793.884643] ======================[ 1793.884693] Code: 00 c1 e9 0c 39 d0 7e 02 89 d0 39 c8 7e 02 89 c8 f3 c3 8d b6 00 00 00 00 8d bf 00 00 00 00 83 ec 14 89 5c 24 0c 89 c3 89 74 24 10 <8b> 40 0c 89 d6 8b 40 5c 8b 40 38 0f b7 90 38 01 00 00 89 0c 24 [ 1793.884939] EIP: [<c01aaecd>] bio_add_page+0xd/0x50 SS:ESP 0068:c26dbbdc
On Saturday 19 January 2008, Jan Engelhardt wrote:> Hi, > > > so I just tried this... > > 17:08 localhost:~/btr/btrfs-progs-0.11 # mdadm -C /dev/md0 -fe 1.0 -l > linear -n 59 /dev/sd[b-z] /dev/sda[a-z] /dev/sdb[a-h] > mdadm: array /dev/md0 started. > > 17:09 localhost:~/btr/btrfs-progs-0.11 # fdisk -l /dev/md0 > > Disk /dev/md0: 60183.2 GB, 60183225368576 bytes > 2 heads, 4 sectors/track, -1 cylinders > Units = cylinders of 8 * 512 = 4096 bytes > Disk identifier: 0x00000000 > > Disk /dev/md0 doesn't contain a valid partition table > > 16:54 localhost:~/btr/btrfs-progs-0.11 # ./mkfs.btrfs /dev/md0 > fs created on /dev/md0 nodesize 16384 leafsize 16384 sectorsize 4096 > bytes 60183225368576 > > 17:09 localhost:~/btr/btrfs-progs-0.11 # mount -t btrfs /dev/md0 /mnt > > 17:09 localhost:~/btr/btrfs-progs-0.11 # df -Th > Filesystem Type Size Used Avail Use% Mounted on > /dev/sda3 xfs 7.3G 1.1G 6.2G 16% / > udev tmpfs 62M 316K 62M 1% /dev > ichi:/home nfs 199G 163G 37G 82% /home > /dev/md0 btrfs 55T 7.5M 55T 1% /mnt > > Looking good. So far. > > 17:16 localhost:~/btr/btrfs-progs-0.11 # mdadm -C /dev/md0 -fe 1.0 -l > linear -n 16 /dev/sd[b-q] > mdadm: array /dev/md0 started. > > 17:16 localhost:~/btr/btrfs-progs-0.11 # ./mkfs.btrfs /dev/md0 > fs created on /dev/md0 nodesize 16384 leafsize 16384 sectorsize 4096 > bytes 16320874676224 > 17:16 localhost:~/btr/btrfs-progs-0.11 # mount -t btrfs /dev/md0 /mnt > Segmentation fault > > > I have experienced this crash before (what I wrote yesterday in IRC). > To reproduce, create a volume, mkfs.btrfs on it, mount, umount, shrink > the volume, mkfs again, mount -> crash. > (Just what I have presented here.) > > The actual size of the device does not seem to matter. Yesterday I > had the md sized with 9 TB, then 21 TB, went back to 16 (crash). Went > back to 8 (ok - huh?), went up to 9 (crash). Then tried 59 now (ok), 58 > (still ok), 16 (crash).Sorry, I'm a little confused on the test case. Since this is i386, could we try again with values that are all below 16TB? Also, could I get an exact list of steps to reproduce? Thanks for trying things out on these big arrays! -chris