* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
[not found] <bug-29302-10286@https.bugzilla.kernel.org/>
@ 2011-02-17 23:37 ` Andrew Morton
2011-02-18 17:43 ` David Sterba
0 siblings, 1 reply; 8+ messages in thread
From: Andrew Morton @ 2011-02-17 23:37 UTC (permalink / raw)
To: linux-btrfs; +Cc: bugzilla-daemon, bugme-daemon, fox
(switched to email. Please respond via emailed reply-to-all, not via the
bugzilla web interface).
On Thu, 17 Feb 2011 13:20:20 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=29302
>
> Summary: Null pointer dereference with large max_sectors_kb
> Product: IO/Storage
> Version: 2.5
> Kernel Version: 2.6.36 - 2.6.38-rc5
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: Block Layer
> AssignedTo: axboe@kernel.dk
> ReportedBy: fox@murder.cz
> Regression: No
>
>
> Created an attachment (id=48132)
> --> (https://bugzilla.kernel.org/attachment.cgi?id=48132)
> dmesg with error displayed.
>
> Hello,
> I'm not really sure I identified the problem product/component correctly, but
> this seems most appropriate.
>
>
> [140517]stg-bot ~ # echo 256 > /sys/block/sdb/queue/max_sectors_kb
> [140523]stg-bot ~ # mkfs.btrfs /dev/sdb
>
> WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
> WARNING! - see http://btrfs.wiki.kernel.org before using
>
> fs created label (null) on /dev/sdb
> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
> Btrfs Btrfs v0.19
> [140532]stg-bot ~ # mount /dev/sdb /mnt
> [140540]stg-bot ~ # umount /mnt
> [140543]stg-bot ~ # cat /sys/block/sdb/queue/max_hw_sectors_kb >
> /sys/block/sdb/queue/max_sectors_kb
> [140710]stg-bot ~ # mkfs.btrfs /dev/sdb
>
> WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
> WARNING! - see http://btrfs.wiki.kernel.org before using
>
> fs created label (null) on /dev/sdb
> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
> Btrfs Btrfs v0.19
> [140713]stg-bot ~ # mount /dev/sdb /mnt
> Killed
> [140715]stg-bot ~ #
>
> Now there is a bug in dmesg (output attached) and another attempt to mount the
> device kind of freezes it. The mount blocks, sync blocks, but i can read/write
> the device using dd. And if I, instead of trying to mount again, zero out first
> 1MB, mkfs.btrfs and mount, I get the bug again. Freeze again on second mount
> attempt after that.
>
> This happens on 2.6.36 and 2.6.37 with scst patches, 2.6.37 vanilla and on
> 2.6.38-rc5 it just freezes the first time I try to mount. No outuput in dmesg.
>
> The hardware is Dual Xeon E5620, 12GB ram, Areca 1880 with 3 arrays (testing on
> 3TB raid10 and 10TB raid6), SuperMicro X8DTU-F.
>
> If I left out any important info, please let me know ;).
>
A btrfs bug, I suspect.
> [ 605.109630] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
> [ 605.109928] IP: [<ffffffff81100a7a>] bio_add_page+0xa/0x40
> [ 605.110089] PGD 277d70067 PUD 277e0a067 PMD 0
> [ 605.110247] Oops: 0000 [#1] SMP
> [ 605.110394] last sysfs file: /sys/devices/system/cpu/cpu15/cache/index2/shared_cpu_map
> [ 605.110686] CPU 6
> [ 605.110698] Modules linked in: ip6table_filter ip6_tables nf_nat_tftp nf_nat_sip nf_nat_pptp nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda nf_conntrack_amanda nf_conntrack_tftp nf_conntrack_sip nf_conntrack_proto_sctp nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp xt_physdev xt_hashlimit nfs ib_iser libiscsi scsi_transport_iscsi ib_ucm ib_ipoib rdma_ucm rdma_cm ib_cm iw_cm ib_sa ib_addr ib_uverbs ib_umad mlx4_ib ib_mthca ib_mad ib_core i7core_edac edac_core mlx4_core iTCO_wdt iTCO_vendor_support
> [ 605.112285]
> [ 605.112419] Pid: 16666, comm: mount Not tainted 2.6.37stg #6 X8DTU/X8DTU
> [ 605.112586] RIP: 0010:[<ffffffff81100a7a>] [<ffffffff81100a7a>] bio_add_page+0xa/0x40
> [ 605.112879] RSP: 0000:ffff8801833b39b8 EFLAGS: 00010296
> [ 605.113035] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
> [ 605.113207] RDX: 0000000000001000 RSI: ffffea000c3cd200 RDI: 0000000000000000
> [ 605.113382] RBP: ffff8801833b3ba0 R08: 0000000000000000 R09: 0000000000000000
> [ 605.113554] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
> [ 605.113723] R13: 0000000000000000 R14: 000000000000a000 R15: ffff88024a19ab98
> [ 605.113895] FS: 00007fbcfd971740(0000) GS:ffff880339c80000(0000) knlGS:0000000000000000
> [ 605.114188] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 605.114352] CR2: 0000000000000010 CR3: 00000001c17d5000 CR4: 00000000000006e0
> [ 605.114525] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> [ 605.114695] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> [ 605.114864] Process mount (pid: 16666, threadinfo ffff8801833b2000, task ffff8801b8b48cf0)
> [ 605.115157] Stack:
> [ 605.115290] 0000000000000000 ffffffff81251384 0000000001400000 ffffea000c3cd200
> [ 605.115590] 0000000000000000 000000004a19ab88 ffff8801b966f380 0000100000000000
> [ 605.115884] ffffffff81255810 0000000000000000 0000000000000002 0000000001400000
> [ 605.116180] Call Trace:
> [ 605.116320] [<ffffffff81251384>] ? submit_extent_page+0x164/0x280
> [ 605.116488] [<ffffffff81255810>] ? end_bio_extent_readpage+0x0/0x210
> [ 605.116654] [<ffffffff81257241>] ? __extent_read_full_page+0x4e1/0x680
> [ 605.116820] [<ffffffff81255810>] ? end_bio_extent_readpage+0x0/0x210
> [ 605.116990] [<ffffffff8122c260>] ? btree_get_extent+0x0/0x1e0
> [ 605.117151] [<ffffffff81257660>] ? read_extent_buffer_pages+0x280/0x3c0
> [ 605.117320] [<ffffffff812d77ec>] ? radix_tree_insert+0x1bc/0x210
> [ 605.117488] [<ffffffff8122c260>] ? btree_get_extent+0x0/0x1e0
> [ 605.117651] [<ffffffff8122e945>] ? btree_read_extent_buffer_pages+0x55/0xb0
> [ 605.117820] [<ffffffff8122ea05>] ? read_tree_block+0x35/0x60
> [ 605.117980] [<ffffffff8122ffc2>] ? open_ctree+0xd22/0x1440
> [ 605.118140] [<ffffffff812118f0>] ? btrfs_set_super+0x0/0x20
> [ 605.118300] [<ffffffff81212302>] ? btrfs_mount+0x372/0x4e0
> [ 605.118465] [<ffffffff810d7c85>] ? vfs_kern_mount+0x75/0x1b0
> [ 605.118627] [<ffffffff810ee19e>] ? get_fs_type+0x3e/0xd0
> [ 605.118783] [<ffffffff810d7e33>] ? do_kern_mount+0x53/0x130
> [ 605.118942] [<ffffffff810f15b9>] ? do_mount+0x2d9/0x840
> [ 605.119100] [<ffffffff810ab7eb>] ? memdup_user+0x3b/0x80
> [ 605.119257] [<ffffffff810f1bba>] ? sys_mount+0x9a/0x100
> [ 605.119417] [<ffffffff81002d7b>] ? system_call_fastpath+0x16/0x1b
> [ 605.119579] Code: ff ff ff 44 29 e2 31 c0 41 89 57 08 e9 7b fe ff ff 48 83 63 18 f7 e9 44 ff ff ff 66 0f 1f 44 00 00 48 83 ec 08 48 89 f8 41 89 c8 <48> 8b 4f 10 48 8b 89 98 00 00 00 48 8b b9 f0 01 00 00 89 d1 44
> [ 605.120217] RIP [<ffffffff81100a7a>] bio_add_page+0xa/0x40
> [ 605.120384] RSP <ffff8801833b39b8>
> [ 605.120527] CR2: 0000000000000010
> [ 605.121058] ---[ end trace a5eba365422d1ba8 ]---
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
2011-02-17 23:37 ` [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb Andrew Morton
@ 2011-02-18 17:43 ` David Sterba
2011-02-18 19:16 ` Chris Mason
0 siblings, 1 reply; 8+ messages in thread
From: David Sterba @ 2011-02-18 17:43 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-btrfs, bugzilla-daemon, bugme-daemon, fox
On Thu, Feb 17, 2011 at 03:37:19PM -0800, Andrew Morton wrote:
> > [ 605.109630] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
> > [ 605.109928] IP: [<ffffffff81100a7a>] bio_add_page+0xa/0x40
disassembly of the crashpoint obtained from Code: bytes below:
0: 48 8b 4f 10 mov 0x10(%rdi),%rcx
4: 48 8b 89 98 00 00 00 mov 0x98(%rcx),%rcx
b: 48 8b b9 f0 01 00 00 mov 0x1f0(%rcx),%rdi
12: 89 d1 mov %edx,%ecx
line 0, accessing some struct member at offset 0x10
struct bio {
sector_t bi_sector; /* device address in 512 byte
sectors */
struct bio *bi_next; /* request queue link */
struct block_device *bi_bdev;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
so this is zero in bio_add_page:
int bio_add_page(struct bio *bio, struct page *page, unsigned int len,
unsigned int offset)
{
struct request_queue *q = bdev_get_queue(bio->bi_bdev);
return __bio_add_page(q, bio, page, len, offset, queue_max_sectors(q));
}
static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
{
return bdev->bd_disk->queue;
}
just to verify following asm instructions (lines 4 and b):
4: dereference something at offset 0x98, roughly matches bd_disk
b: then dereference something at 0x1f0, rougly matches queue
So, bio->bi_bdev == NULL, going backwards in call stack to
__extent_read_full_page(), where the bdev is set:
2050 bdev = em->bdev;
em = get_extent(...), indirect call of btree_get_extent()
passed from btree_read_extent_buffer_pages() to read_extent_buffer_pages()
165 em->bdev = BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev;
(or at line 149, but I do not think that there could be any succesful lookup
147 em = lookup_extent_mapping(em_tree, start, len);
be it either way, the assigned value is exactly the same
)
Now let's hunt why latest_bdev is NULL. Startin in btrfs_mount, where fs_devices
is being filled in.
fs/btrfs/volumes.c:__btrfs_open_devices:
579 struct block_device *latest_bdev = NULL;
...
583 u64 latest_transid = 0;
...
590 list_for_each_entry(device, head, dev_list) {
591 if (device->bdev)
592 continue;
593 if (!device->name)
594 continue;
...
618 device->generation = btrfs_super_generation(disk_super);
619 if (!latest_transid || device->generation > latest_transid) {
620 latest_devid = devid;
621 latest_transid = device->generation;
622 latest_bdev = bdev;
623 }
...
653 }
...
660 fs_devices->latest_bdev = latest_bdev;
Line 591 or 593 will not stop the loop, device is not filled yet.
Could be, that any of the devices from 'head' list does not satisfy condition
on line 619, but it cannot be the first device, as !latest_transid would
work. There is only one device, /dev/sdb, latest_bdev is set and later on
set on line 660.
/me sees no more options
Meanwhile I've tried it myself and the error does not happen here, with
head at 795abaf1e4e185 (.38-rc4-178-g795abaf). I'll try it with latest -rc5.
> > [ 605.110089] PGD 277d70067 PUD 277e0a067 PMD 0
> > [ 605.110247] Oops: 0000 [#1] SMP
> > [ 605.110394] last sysfs file: /sys/devices/system/cpu/cpu15/cache/index2/shared_cpu_map
> > [ 605.110686] CPU 6
> > [ 605.110698] Modules linked in: ip6table_filter ip6_tables nf_nat_tftp nf_nat_sip nf_nat_pptp nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda nf_conntrack_amanda nf_conntrack_tftp nf_conntrack_sip nf_conntrack_proto_sctp nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp xt_physdev xt_hashlimit nfs ib_iser libiscsi scsi_transport_iscsi ib_ucm ib_ipoib rdma_ucm rdma_cm ib_cm iw_cm ib_sa ib_addr ib_uverbs ib_umad mlx4_ib ib_mthca ib_mad ib_core i7core_edac edac_core mlx4_core iTCO_wdt iTCO_vendor_support
> > [ 605.112285]
> > [ 605.112419] Pid: 16666, comm: mount Not tainted 2.6.37stg #6 X8DTU/X8DTU
> > [ 605.112586] RIP: 0010:[<ffffffff81100a7a>] [<ffffffff81100a7a>] bio_add_page+0xa/0x40
> > [ 605.112879] RSP: 0000:ffff8801833b39b8 EFLAGS: 00010296
> > [ 605.113035] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
> > [ 605.113207] RDX: 0000000000001000 RSI: ffffea000c3cd200 RDI: 0000000000000000
> > [ 605.113382] RBP: ffff8801833b3ba0 R08: 0000000000000000 R09: 0000000000000000
> > [ 605.113554] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
> > [ 605.113723] R13: 0000000000000000 R14: 000000000000a000 R15: ffff88024a19ab98
> > [ 605.113895] FS: 00007fbcfd971740(0000) GS:ffff880339c80000(0000) knlGS:0000000000000000
> > [ 605.114188] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [ 605.114352] CR2: 0000000000000010 CR3: 00000001c17d5000 CR4: 00000000000006e0
> > [ 605.114525] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > [ 605.114695] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > [ 605.114864] Process mount (pid: 16666, threadinfo ffff8801833b2000, task ffff8801b8b48cf0)
> > [ 605.115157] Stack:
> > [ 605.115290] 0000000000000000 ffffffff81251384 0000000001400000 ffffea000c3cd200
> > [ 605.115590] 0000000000000000 000000004a19ab88 ffff8801b966f380 0000100000000000
> > [ 605.115884] ffffffff81255810 0000000000000000 0000000000000002 0000000001400000
> > [ 605.116180] Call Trace:
> > [ 605.116320] [<ffffffff81251384>] ? submit_extent_page+0x164/0x280
> > [ 605.116488] [<ffffffff81255810>] ? end_bio_extent_readpage+0x0/0x210
> > [ 605.116654] [<ffffffff81257241>] ? __extent_read_full_page+0x4e1/0x680
> > [ 605.116820] [<ffffffff81255810>] ? end_bio_extent_readpage+0x0/0x210
> > [ 605.116990] [<ffffffff8122c260>] ? btree_get_extent+0x0/0x1e0
> > [ 605.117151] [<ffffffff81257660>] ? read_extent_buffer_pages+0x280/0x3c0
> > [ 605.117320] [<ffffffff812d77ec>] ? radix_tree_insert+0x1bc/0x210
> > [ 605.117488] [<ffffffff8122c260>] ? btree_get_extent+0x0/0x1e0
> > [ 605.117651] [<ffffffff8122e945>] ? btree_read_extent_buffer_pages+0x55/0xb0
> > [ 605.117820] [<ffffffff8122ea05>] ? read_tree_block+0x35/0x60
> > [ 605.117980] [<ffffffff8122ffc2>] ? open_ctree+0xd22/0x1440
> > [ 605.118140] [<ffffffff812118f0>] ? btrfs_set_super+0x0/0x20
> > [ 605.118300] [<ffffffff81212302>] ? btrfs_mount+0x372/0x4e0
> > [ 605.118465] [<ffffffff810d7c85>] ? vfs_kern_mount+0x75/0x1b0
> > [ 605.118627] [<ffffffff810ee19e>] ? get_fs_type+0x3e/0xd0
> > [ 605.118783] [<ffffffff810d7e33>] ? do_kern_mount+0x53/0x130
> > [ 605.118942] [<ffffffff810f15b9>] ? do_mount+0x2d9/0x840
> > [ 605.119100] [<ffffffff810ab7eb>] ? memdup_user+0x3b/0x80
> > [ 605.119257] [<ffffffff810f1bba>] ? sys_mount+0x9a/0x100
> > [ 605.119417] [<ffffffff81002d7b>] ? system_call_fastpath+0x16/0x1b
> > [ 605.119579] Code: ff ff ff 44 29 e2 31 c0 41 89 57 08 e9 7b fe ff ff 48 83 63 18 f7 e9 44 ff ff ff 66 0f 1f 44 00 00 48 83 ec 08 48 89 f8 41 89 c8 <48> 8b 4f 10 48 8b 89 98 00 00 00 48 8b b9 f0 01 00 00 89 d1 44
> > [ 605.120217] RIP [<ffffffff81100a7a>] bio_add_page+0xa/0x40
> > [ 605.120384] RSP <ffff8801833b39b8>
> > [ 605.120527] CR2: 0000000000000010
> > [ 605.121058] ---[ end trace a5eba365422d1ba8 ]---
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
2011-02-18 17:43 ` David Sterba
@ 2011-02-18 19:16 ` Chris Mason
2011-02-18 19:56 ` Andrew Morton
0 siblings, 1 reply; 8+ messages in thread
From: Chris Mason @ 2011-02-18 19:16 UTC (permalink / raw)
To: David Sterba
Cc: Andrew Morton, linux-btrfs, bugzilla-daemon, bugme-daemon, fox
Excerpts from David Sterba's message of 2011-02-18 12:43:15 -0500:
[ great analysis, thanks so much ]
>
> Could be, that any of the devices from 'head' list does not satisfy condition
> on line 619, but it cannot be the first device, as !latest_transid would
> work. There is only one device, /dev/sdb, latest_bdev is set and later on
> set on line 660.
>
> /me sees no more options
>
> Meanwhile I've tried it myself and the error does not happen here, with
> head at 795abaf1e4e185 (.38-rc4-178-g795abaf). I'll try it with latest -rc5.
>
> > > [ 605.110089] PGD 277d70067 PUD 277e0a067 PMD 0
> > > [ 605.110247] Oops: 0000 [#1] SMP
Are there any more kernel messages involved before the oops starts? It
really feels like we're failing to open the block device somehow inside
the btrfs scanning code.
-chris
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
2011-02-18 19:16 ` Chris Mason
@ 2011-02-18 19:56 ` Andrew Morton
2011-02-18 20:18 ` Chris Mason
0 siblings, 1 reply; 8+ messages in thread
From: Andrew Morton @ 2011-02-18 19:56 UTC (permalink / raw)
To: Chris Mason; +Cc: David Sterba, linux-btrfs, bugzilla-daemon, bugme-daemon, fox
On Fri, 18 Feb 2011 14:16:12 -0500
Chris Mason <chris.mason@oracle.com> wrote:
> Are there any more kernel messages involved before the oops starts?
The full dmesg is in bugzilla. https://bugzilla.kernel.org/show_bug.cgi?id=29302
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
2011-02-18 19:56 ` Andrew Morton
@ 2011-02-18 20:18 ` Chris Mason
2011-02-20 11:06 ` Tomas Zvala
0 siblings, 1 reply; 8+ messages in thread
From: Chris Mason @ 2011-02-18 20:18 UTC (permalink / raw)
To: Andrew Morton
Cc: David Sterba, linux-btrfs, bugzilla-daemon, bugme-daemon, fox
Excerpts from Andrew Morton's message of 2011-02-18 14:56:03 -0500:
> On Fri, 18 Feb 2011 14:16:12 -0500
> Chris Mason <chris.mason@oracle.com> wrote:
>
> > Are there any more kernel messages involved before the oops starts?
>
> The full dmesg is in bugzilla. https://bugzilla.kernel.org/show_bug.cgi?id=29302
Ok, so it isn't part of the open devices code that prints errors, my
guess is we're failing to read a good super.
Could you please mkfs.btrfs /dev/xxx, sync, then btrfsck /dev/xxx, I want
to make sure things are really getting written.
Here's a patch that makes sure we have a good bdev after scanning,
hopefully it will let us debug things without your box going boom.
-chris
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index d39a989..d8f7ee0 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -757,6 +757,10 @@ static struct dentry *btrfs_mount(struct file_system_type *fs_type, int flags,
tree_root->fs_info = fs_info;
bdev = fs_devices->latest_bdev;
+ if (!bdev) {
+ printk(KERN_CRIT "btrfs read devices failed on %s\n", dev_name);
+ goto error_close_devices;
+ }
s = sget(fs_type, btrfs_test_super, btrfs_set_super, tree_root);
if (IS_ERR(s))
goto error_s;
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
2011-02-18 20:18 ` Chris Mason
@ 2011-02-20 11:06 ` Tomas Zvala
2011-02-21 15:08 ` Chris Mason
0 siblings, 1 reply; 8+ messages in thread
From: Tomas Zvala @ 2011-02-20 11:06 UTC (permalink / raw)
To: Chris Mason
Cc: Andrew Morton, David Sterba, linux-btrfs, bugzilla-daemon,
bugme-daemon, fox
On 18.2.2011 21:18, Chris Mason wrote:
> Ok, so it isn't part of the open devices code that prints errors, my
> guess is we're failing to read a good super.
>
> Could you please mkfs.btrfs /dev/xxx, sync, then btrfsck /dev/xxx, I want
> to make sure things are really getting written.
>
> Here's a patch that makes sure we have a good bdev after scanning,
> hopefully it will let us debug things without your box going boom.
>
> -chris
>
>
Hello Chris,
I patched the kernel, recompiled and installed, but I don't see the
message in the kernel log. I forgot to mention before, that
max_hw_sectors_kb and thus max_sectors_kb is 4096.
Linux stg-top 2.6.37stg #7 SMP Sun Feb 20 10:48:57 CET 2011 x86_64
Intel(R) Xeon(R) CPU E5620 @ 2.40GHz GenuineIntel GNU/Linux
With default max_sectors_kb = 512
mkfs, sync, btrfsck going through fine
first mount is fine
[112005]stg-top ~ # cat /sys/block/sdb/queue/max_sectors_kb
512
[112012]stg-top ~ # mkfs.btrfs /dev/sdb
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on /dev/sdb
nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
Btrfs Btrfs v0.19
[112045]stg-top ~ # sync
[112046]stg-top ~ # btrfsck /dev/sdb
found 28672 bytes used err is 0
total csum bytes: 0
total tree bytes: 28672
total fs tree bytes: 8192
btree space waste bytes: 23875
file data blocks allocated: 0
referenced 0
Btrfs Btrfs v0.19
[112050]stg-top ~ # mount /dev/sdb /mnt/
[112054]stg-top ~ # df /mnt/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb 2929685760 56 2927559936 1% /mnt
[112057]stg-top ~ # umount /mnt
With max_sectors_kb = 4096
mkfs, sync, btrfsck is fine
second mount BUGs out
[112100]stg-top ~ # echo 4096 > /sys/block/sdb/queue/max_sectors_kb
[112107]stg-top ~ # mkfs.btrfs /dev/sdb
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on /dev/sdb
nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
Btrfs Btrfs v0.19
[112113]stg-top ~ # sync
[112117]stg-top ~ # btrfsck /dev/sdb
found 28672 bytes used err is 0
total csum bytes: 0
total tree bytes: 28672
total fs tree bytes: 8192
btree space waste bytes: 23875
file data blocks allocated: 0
referenced 0
Btrfs Btrfs v0.19
[112123]stg-top ~ # mount /dev/sdb /mnt/
Killed
Back to max_sectors_kb = 512
mkfs, can't sync, because that'd block, btrfsck is fine
third mount fails
[112126]stg-top ~ # echo 512 > /sys/block/sdb/queue/max_sectors_kb
[112141]stg-top ~ # mkfs.btrfs /dev/sdb
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on /dev/sdb
nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
Btrfs Btrfs v0.19
[112144]stg-top ~ # btrfs
btrfs btrfs-bcp btrfs-convert btrfs-image
btrfs-show btrfs-vol btrfsck btrfsctl btrfstune
[112144]stg-top ~ # btrfsck /dev/sdb
found 28672 bytes used err is 0
total csum bytes: 0
total tree bytes: 28672
total fs tree bytes: 8192
btree space waste bytes: 23875
file data blocks allocated: 0
referenced 0
Btrfs Btrfs v0.19
[112150]stg-top ~ # mount /dev/sdb /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sdb,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Run sync in background (it just sits there) and try to mount again (no
other commands in meantime)
[112155]stg-top ~ # sync &
[1] 15800
[112202]stg-top ~ # mount /dev/sdb /mnt
[112411]stg-top ~ # df /mnt/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb 2929685760 56 2927559936 1% /mnt
[112456]stg-top ~ #
(dmesg after 1st mount)
[ 122.085837] device fsid 8d440bbadcd5b357-9e8f05f44e926498 devid 1
transid 7 /dev/sdb
(dmesg after 2nd mount is pretty much the same as before - no mention of
the patch)
(dmesg after 3rd mount)
[ 183.535484] device fsid 945db83dbf98e60-a27fadce8932f892 devid 1
transid 7 /dev/sdb
[ 183.536785] btrfs bad fsid on block 20971520
[ 183.537041] btrfs bad fsid on block 20971520
[ 183.537268] btrfs bad fsid on block 20971520
[ 183.537469] btrfs: failed to read chunk root on sdb
[ 183.545654] btrfs: open_ctree failed
(dmesg after 4th mount)
[ 192.481985] device fsid 945db83dbf98e60-a27fadce8932f892 devid 1
transid 7 /dev/sdb
Tomas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
2011-02-20 11:06 ` Tomas Zvala
@ 2011-02-21 15:08 ` Chris Mason
2011-02-28 12:26 ` Tomas Zvala
0 siblings, 1 reply; 8+ messages in thread
From: Chris Mason @ 2011-02-21 15:08 UTC (permalink / raw)
To: Tomas Zvala
Cc: Andrew Morton, David Sterba, linux-btrfs, bugzilla-daemon,
bugme-daemon, fox
Excerpts from Tomas Zvala's message of 2011-02-20 06:06:42 -0500:
> On 18.2.2011 21:18, Chris Mason wrote:
> > Ok, so it isn't part of the open devices code that prints errors, my
> > guess is we're failing to read a good super.
> >
> > Could you please mkfs.btrfs /dev/xxx, sync, then btrfsck /dev/xxx, I want
> > to make sure things are really getting written.
> >
> > Here's a patch that makes sure we have a good bdev after scanning,
> > hopefully it will let us debug things without your box going boom.
> >
> > -chris
> >
> >
> Hello Chris,
> I patched the kernel, recompiled and installed, but I don't see the
> message in the kernel log. I forgot to mention before, that
> max_hw_sectors_kb and thus max_sectors_kb is 4096.
ok, more below.
>
> Linux stg-top 2.6.37stg #7 SMP Sun Feb 20 10:48:57 CET 2011 x86_64
> Intel(R) Xeon(R) CPU E5620 @ 2.40GHz GenuineIntel GNU/Linux
>
>
> With default max_sectors_kb = 512
> mkfs, sync, btrfsck going through fine
> first mount is fine
>
> [112005]stg-top ~ # cat /sys/block/sdb/queue/max_sectors_kb
> 512
> [112012]stg-top ~ # mkfs.btrfs /dev/sdb
>
> WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
> WARNING! - see http://btrfs.wiki.kernel.org before using
>
> fs created label (null) on /dev/sdb
> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
> Btrfs Btrfs v0.19
> [112045]stg-top ~ # sync
> [112046]stg-top ~ # btrfsck /dev/sdb
> found 28672 bytes used err is 0
> total csum bytes: 0
> total tree bytes: 28672
> total fs tree bytes: 8192
> btree space waste bytes: 23875
> file data blocks allocated: 0
> referenced 0
> Btrfs Btrfs v0.19
> [112050]stg-top ~ # mount /dev/sdb /mnt/
> [112054]stg-top ~ # df /mnt/
> Filesystem 1K-blocks Used Available Use% Mounted on
> /dev/sdb 2929685760 56 2927559936 1% /mnt
> [112057]stg-top ~ # umount /mnt
>
>
> With max_sectors_kb = 4096
> mkfs, sync, btrfsck is fine
> second mount BUGs out
>
> [112100]stg-top ~ # echo 4096 > /sys/block/sdb/queue/max_sectors_kb
> [112107]stg-top ~ # mkfs.btrfs /dev/sdb
>
> WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
> WARNING! - see http://btrfs.wiki.kernel.org before using
>
> fs created label (null) on /dev/sdb
> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
> Btrfs Btrfs v0.19
> [112113]stg-top ~ # sync
> [112117]stg-top ~ # btrfsck /dev/sdb
> found 28672 bytes used err is 0
> total csum bytes: 0
> total tree bytes: 28672
> total fs tree bytes: 8192
> btree space waste bytes: 23875
> file data blocks allocated: 0
> referenced 0
> Btrfs Btrfs v0.19
> [112123]stg-top ~ # mount /dev/sdb /mnt/
> Killed
At this point, your box is broken. You have to reboot before anything
new is valid (sorry). Could you please:
Set max_sectors_kb to 4096
mkfs.btrfs /dev/xxx
sync
echo 3 > /proc/sys/vm/drop_caches
btrfsck /dev/xxx
Don't try and mount, clearly my patch isn't saving us.
-chris
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb
2011-02-21 15:08 ` Chris Mason
@ 2011-02-28 12:26 ` Tomas Zvala
0 siblings, 0 replies; 8+ messages in thread
From: Tomas Zvala @ 2011-02-28 12:26 UTC (permalink / raw)
To: Chris Mason
Cc: Andrew Morton, David Sterba, linux-btrfs, bugzilla-daemon,
bugme-daemon, fox
On 02/21/2011 04:08 PM, Chris Mason wrote:
> Excerpts from Tomas Zvala's message of 2011-02-20 06:06:42 -0500:
>> On 18.2.2011 21:18, Chris Mason wrote:
>>> Ok, so it isn't part of the open devices code that prints errors, my
>>> guess is we're failing to read a good super.
>>>
>>> Could you please mkfs.btrfs /dev/xxx, sync, then btrfsck /dev/xxx, I want
>>> to make sure things are really getting written.
>>>
>>> Here's a patch that makes sure we have a good bdev after scanning,
>>> hopefully it will let us debug things without your box going boom.
>>>
>>> -chris
>>>
>>>
>> Hello Chris,
>> I patched the kernel, recompiled and installed, but I don't see the
>> message in the kernel log. I forgot to mention before, that
>> max_hw_sectors_kb and thus max_sectors_kb is 4096.
> ok, more below.
>
>> Linux stg-top 2.6.37stg #7 SMP Sun Feb 20 10:48:57 CET 2011 x86_64
>> Intel(R) Xeon(R) CPU E5620 @ 2.40GHz GenuineIntel GNU/Linux
>>
>>
>> With default max_sectors_kb = 512
>> mkfs, sync, btrfsck going through fine
>> first mount is fine
>>
>> [112005]stg-top ~ # cat /sys/block/sdb/queue/max_sectors_kb
>> 512
>> [112012]stg-top ~ # mkfs.btrfs /dev/sdb
>>
>> WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
>> WARNING! - see http://btrfs.wiki.kernel.org before using
>>
>> fs created label (null) on /dev/sdb
>> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
>> Btrfs Btrfs v0.19
>> [112045]stg-top ~ # sync
>> [112046]stg-top ~ # btrfsck /dev/sdb
>> found 28672 bytes used err is 0
>> total csum bytes: 0
>> total tree bytes: 28672
>> total fs tree bytes: 8192
>> btree space waste bytes: 23875
>> file data blocks allocated: 0
>> referenced 0
>> Btrfs Btrfs v0.19
>> [112050]stg-top ~ # mount /dev/sdb /mnt/
>> [112054]stg-top ~ # df /mnt/
>> Filesystem 1K-blocks Used Available Use% Mounted on
>> /dev/sdb 2929685760 56 2927559936 1% /mnt
>> [112057]stg-top ~ # umount /mnt
>>
>>
>> With max_sectors_kb = 4096
>> mkfs, sync, btrfsck is fine
>> second mount BUGs out
>>
>> [112100]stg-top ~ # echo 4096> /sys/block/sdb/queue/max_sectors_kb
>> [112107]stg-top ~ # mkfs.btrfs /dev/sdb
>>
>> WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
>> WARNING! - see http://btrfs.wiki.kernel.org before using
>>
>> fs created label (null) on /dev/sdb
>> nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
>> Btrfs Btrfs v0.19
>> [112113]stg-top ~ # sync
>> [112117]stg-top ~ # btrfsck /dev/sdb
>> found 28672 bytes used err is 0
>> total csum bytes: 0
>> total tree bytes: 28672
>> total fs tree bytes: 8192
>> btree space waste bytes: 23875
>> file data blocks allocated: 0
>> referenced 0
>> Btrfs Btrfs v0.19
>> [112123]stg-top ~ # mount /dev/sdb /mnt/
>> Killed
> At this point, your box is broken. You have to reboot before anything
> new is valid (sorry). Could you please:
>
> Set max_sectors_kb to 4096
> mkfs.btrfs /dev/xxx
> sync
> echo 3> /proc/sys/vm/drop_caches
> btrfsck /dev/xxx
>
> Don't try and mount, clearly my patch isn't saving us.
>
> -chris
>
Hello Chris,
I'm sorry it took so long, I've been a bit busy lately ...
[132926]stg-bot linux-2.6.37-scst # cat
/sys/block/sdb/queue/max_hw_sectors_kb > /sys/block/sdb/queue/max_sectors_kb
[132932]stg-bot linux-2.6.37-scst # mkfs.btrfs /dev/sdb
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on /dev/sdb
nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
Btrfs Btrfs v0.19
[132945]stg-bot linux-2.6.37-scst # sync
[132948]stg-bot linux-2.6.37-scst # echo 3 > /proc/sys/vm/drop_caches
[132958]stg-bot linux-2.6.37-scst # btrfsc
btrfsck btrfsctl
[132958]stg-bot linux-2.6.37-scst # btrfsck /dev/sdb
found 28672 bytes used err is 0
total csum bytes: 0
total tree bytes: 28672
total fs tree bytes: 8192
btree space waste bytes: 23875
file data blocks allocated: 0
referenced 0
Btrfs Btrfs v0.19
And still cannot mount.
Tomas
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-02-28 12:26 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <bug-29302-10286@https.bugzilla.kernel.org/>
2011-02-17 23:37 ` [Bugme-new] [Bug 29302] New: Null pointer dereference with large max_sectors_kb Andrew Morton
2011-02-18 17:43 ` David Sterba
2011-02-18 19:16 ` Chris Mason
2011-02-18 19:56 ` Andrew Morton
2011-02-18 20:18 ` Chris Mason
2011-02-20 11:06 ` Tomas Zvala
2011-02-21 15:08 ` Chris Mason
2011-02-28 12:26 ` Tomas Zvala
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox