* MTD/block regression (was Re: Slub debugging NAND error in 2.6.25.10.atmel.2) [not found] ` <20080829114828.279b79bc@hskinnemo-gx745.norway.atmel.com> @ 2008-08-29 14:28 ` Haavard Skinnemoen 2008-08-30 1:34 ` FUJITA Tomonori 0 siblings, 1 reply; 5+ messages in thread From: Haavard Skinnemoen @ 2008-08-29 14:28 UTC (permalink / raw) To: Haavard Skinnemoen Cc: Eirik Aanonsen, linux-mtd, kernel, David Woodhouse, FUJITA Tomonori, Jens Axboe, linux-kernel Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote: > Hmm...I just saw this when booting 2.6.27-rc5 on the NGW100: > > physmap platform flash device: 00800000 at 00000000 > physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank > Amd/Fujitsu Extended Query Table at 0x0041 > number of CFI chips: 1 > cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness. > RedBoot partition parsing not available > Using physmap partition information > Creating 3 MTD partitions on "physmap-flash.0": > 0x00000000-0x00020000 : "u-boot" > 0x00020000-0x007f0000 : "root" > kobject (91ce8410): tried to init an initialized object, something is seriously wrong. > Call trace: > [<90017184>] dump_stack+0x18/0x20 > [<900c1894>] kobject_init+0x28/0x5c > [<900c1bf6>] kobject_init_and_add+0xe/0x24 > [<900beff0>] blk_register_filter+0x28/0x40 > [<900be224>] add_disk+0x38/0x68 > [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184 > [<900e748e>] mtdblock_add_mtd+0x36/0x3c > [<900e6e38>] blktrans_notify_add+0x1a/0x3a > [<900e533c>] add_mtd_device+0x60/0xa0 > [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0 > [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c > [<900e0f24>] platform_drv_probe+0x10/0x12 > [<900e06d0>] driver_probe_device+0x84/0xf0 > [<900e076a>] __driver_attach+0x2e/0x44 > [<900e0096>] bus_for_each_dev+0x2e/0x4c > [<900e05b6>] driver_attach+0x12/0x14 > [<900e036c>] bus_add_driver+0x6c/0x178 > [<900e08a4>] driver_register+0x58/0xb0 > [<900e1126>] platform_driver_register+0x56/0x5c > [<9000aaf6>] physmap_init+0xa/0x10 > [<9001422a>] do_one_initcall+0x2a/0x10c > [<900005b8>] kernel_init+0x48/0x90 > [<9001fcc0>] do_exit+0x0/0x4cc > > 0x007f0000-0x00800000 : "env" > kobject (91ce8410): tried to init an initialized object, something is seriously wrong. > Call trace: > [<90017184>] dump_stack+0x18/0x20 > [<900c1894>] kobject_init+0x28/0x5c > [<900c1bf6>] kobject_init_and_add+0xe/0x24 > [<900beff0>] blk_register_filter+0x28/0x40 > [<900be224>] add_disk+0x38/0x68 > [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184 > [<900e748e>] mtdblock_add_mtd+0x36/0x3c > [<900e6e38>] blktrans_notify_add+0x1a/0x3a > [<900e533c>] add_mtd_device+0x60/0xa0 > [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0 > [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c > [<900e0f24>] platform_drv_probe+0x10/0x12 > [<900e06d0>] driver_probe_device+0x84/0xf0 > [<900e076a>] __driver_attach+0x2e/0x44 > [<900e0096>] bus_for_each_dev+0x2e/0x4c > [<900e05b6>] driver_attach+0x12/0x14 > [<900e036c>] bus_add_driver+0x6c/0x178 > [<900e08a4>] driver_register+0x58/0xb0 > [<900e1126>] platform_driver_register+0x56/0x5c > [<9000aaf6>] physmap_init+0xa/0x10 > [<9001422a>] do_one_initcall+0x2a/0x10c > [<900005b8>] kernel_init+0x48/0x90 > [<9001fcc0>] do_exit+0x0/0x4cc > > I wonder if it's related? Ok, it turns out it's not related. It's a newly introduced regression which I've bisected down to: commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Date: Sat Aug 16 14:10:05 2008 +0900 block: move cmdfilter from gendisk to request_queue cmd_filter works only for the block layer SG_IO with SCSI block devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI character devices (such as st). We hit a kernel crash with them. The problem is that cmd_filter code accesses to gendisk (having struct blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only SCSI block device files. With character device files, inode->i_bdev leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter isn't safe. SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be independent on any protocols. We shouldn't change ULDs to expose their gendisk. This patch moves struct blk_scsi_cmd_filter from gendisk to request_queue, a common object, which eveyone can access to. The user interface doesn't change; users can change the filters via /sys/block/. gendisk has a pointer to request_queue so the cmd_filter code accesses to struct blk_scsi_cmd_filter. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com> Unfortunately, I can't revert it cleanly, so it could be a false positive. But it does sort of make sense, since it makes the filter per-queue instead of per-gendisk, so if MTD uses the same queue for several block devices, the filter kobject might end up being initialized multiple times. Or something. Haavard ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: MTD/block regression (was Re: Slub debugging NAND error in 2.6.25.10.atmel.2) 2008-08-29 14:28 ` MTD/block regression (was Re: Slub debugging NAND error in 2.6.25.10.atmel.2) Haavard Skinnemoen @ 2008-08-30 1:34 ` FUJITA Tomonori 2008-08-30 10:49 ` Haavard Skinnemoen 2008-08-31 12:00 ` Geert Uytterhoeven 0 siblings, 2 replies; 5+ messages in thread From: FUJITA Tomonori @ 2008-08-30 1:34 UTC (permalink / raw) To: haavard.skinnemoen Cc: eaa, linux-mtd, kernel, dwmw2, fujita.tomonori, jens.axboe, linux-kernel On Fri, 29 Aug 2008 16:28:24 +0200 Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote: > Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote: > > Hmm...I just saw this when booting 2.6.27-rc5 on the NGW100: > > > > physmap platform flash device: 00800000 at 00000000 > > physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank > > Amd/Fujitsu Extended Query Table at 0x0041 > > number of CFI chips: 1 > > cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness. > > RedBoot partition parsing not available > > Using physmap partition information > > Creating 3 MTD partitions on "physmap-flash.0": > > 0x00000000-0x00020000 : "u-boot" > > 0x00020000-0x007f0000 : "root" > > kobject (91ce8410): tried to init an initialized object, something is seriously wrong. > > Call trace: > > [<90017184>] dump_stack+0x18/0x20 > > [<900c1894>] kobject_init+0x28/0x5c > > [<900c1bf6>] kobject_init_and_add+0xe/0x24 > > [<900beff0>] blk_register_filter+0x28/0x40 > > [<900be224>] add_disk+0x38/0x68 > > [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184 > > [<900e748e>] mtdblock_add_mtd+0x36/0x3c > > [<900e6e38>] blktrans_notify_add+0x1a/0x3a > > [<900e533c>] add_mtd_device+0x60/0xa0 > > [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0 > > [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c > > [<900e0f24>] platform_drv_probe+0x10/0x12 > > [<900e06d0>] driver_probe_device+0x84/0xf0 > > [<900e076a>] __driver_attach+0x2e/0x44 > > [<900e0096>] bus_for_each_dev+0x2e/0x4c > > [<900e05b6>] driver_attach+0x12/0x14 > > [<900e036c>] bus_add_driver+0x6c/0x178 > > [<900e08a4>] driver_register+0x58/0xb0 > > [<900e1126>] platform_driver_register+0x56/0x5c > > [<9000aaf6>] physmap_init+0xa/0x10 > > [<9001422a>] do_one_initcall+0x2a/0x10c > > [<900005b8>] kernel_init+0x48/0x90 > > [<9001fcc0>] do_exit+0x0/0x4cc > > > > 0x007f0000-0x00800000 : "env" > > kobject (91ce8410): tried to init an initialized object, something is seriously wrong. > > Call trace: > > [<90017184>] dump_stack+0x18/0x20 > > [<900c1894>] kobject_init+0x28/0x5c > > [<900c1bf6>] kobject_init_and_add+0xe/0x24 > > [<900beff0>] blk_register_filter+0x28/0x40 > > [<900be224>] add_disk+0x38/0x68 > > [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184 > > [<900e748e>] mtdblock_add_mtd+0x36/0x3c > > [<900e6e38>] blktrans_notify_add+0x1a/0x3a > > [<900e533c>] add_mtd_device+0x60/0xa0 > > [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0 > > [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c > > [<900e0f24>] platform_drv_probe+0x10/0x12 > > [<900e06d0>] driver_probe_device+0x84/0xf0 > > [<900e076a>] __driver_attach+0x2e/0x44 > > [<900e0096>] bus_for_each_dev+0x2e/0x4c > > [<900e05b6>] driver_attach+0x12/0x14 > > [<900e036c>] bus_add_driver+0x6c/0x178 > > [<900e08a4>] driver_register+0x58/0xb0 > > [<900e1126>] platform_driver_register+0x56/0x5c > > [<9000aaf6>] physmap_init+0xa/0x10 > > [<9001422a>] do_one_initcall+0x2a/0x10c > > [<900005b8>] kernel_init+0x48/0x90 > > [<9001fcc0>] do_exit+0x0/0x4cc > > > > I wonder if it's related? > > Ok, it turns out it's not related. It's a newly introduced regression > which I've bisected down to: > > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 > Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > Date: Sat Aug 16 14:10:05 2008 +0900 > > block: move cmdfilter from gendisk to request_queue Really sorry about that. A fix was queued in Jens' tree: http://marc.info/?l=linux-kernel&m=122000748432301&w=2 > Unfortunately, I can't revert it cleanly, so it could be a false > positive. But it does sort of make sense, since it makes the filter > per-queue instead of per-gendisk, so if MTD uses the same queue for > several block devices, the filter kobject might end up being > initialized multiple times. Or something. Right, the problem is that MTD uses the same queue for multiple gendisks. It would be great if a MTD developer could fix it. Thanks, ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: MTD/block regression (was Re: Slub debugging NAND error in 2.6.25.10.atmel.2) 2008-08-30 1:34 ` FUJITA Tomonori @ 2008-08-30 10:49 ` Haavard Skinnemoen 2008-08-31 12:00 ` Geert Uytterhoeven 1 sibling, 0 replies; 5+ messages in thread From: Haavard Skinnemoen @ 2008-08-30 10:49 UTC (permalink / raw) To: FUJITA Tomonori Cc: eaa, linux-mtd, kernel, dwmw2, fujita.tomonori, jens.axboe, linux-kernel On Sat, 30 Aug 2008 10:34:12 +0900 FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote: > Really sorry about that. A fix was queued in Jens' tree: > > http://marc.info/?l=linux-kernel&m=122000748432301&w=2 Ah, great. Sorry for not searching the list before posting. > > Unfortunately, I can't revert it cleanly, so it could be a false > > positive. But it does sort of make sense, since it makes the filter > > per-queue instead of per-gendisk, so if MTD uses the same queue for > > several block devices, the filter kobject might end up being > > initialized multiple times. Or something. > > Right, the problem is that MTD uses the same queue for multiple > gendisks. It would be great if a MTD developer could fix it. Yeah, I sort of suspected that MTD was doing something unusual. Unfortunately, I'm not familiar enough with the MTD and block code to help out here... Haavard ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: MTD/block regression (was Re: Slub debugging NAND error in 2.6.25.10.atmel.2) 2008-08-30 1:34 ` FUJITA Tomonori 2008-08-30 10:49 ` Haavard Skinnemoen @ 2008-08-31 12:00 ` Geert Uytterhoeven 2008-08-31 16:55 ` Jens Axboe 1 sibling, 1 reply; 5+ messages in thread From: Geert Uytterhoeven @ 2008-08-31 12:00 UTC (permalink / raw) To: FUJITA Tomonori Cc: haavard.skinnemoen, eaa, linux-mtd, kernel, dwmw2, jens.axboe, Andrew Morton, Linux Kernel Development, Linux/m68k On Sat, 30 Aug 2008, FUJITA Tomonori wrote: > On Fri, 29 Aug 2008 16:28:24 +0200 > Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote: > > Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote: > > > Hmm...I just saw this when booting 2.6.27-rc5 on the NGW100: > > > > > > kobject (91ce8410): tried to init an initialized object, something is seriously wrong. > > > Call trace: > > > [<90017184>] dump_stack+0x18/0x20 > > > [<900c1894>] kobject_init+0x28/0x5c > > > [<900c1bf6>] kobject_init_and_add+0xe/0x24 > > > [<900beff0>] blk_register_filter+0x28/0x40 > > > [<900be224>] add_disk+0x38/0x68 > > > [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184 > > > [<900e748e>] mtdblock_add_mtd+0x36/0x3c > > > [<900e6e38>] blktrans_notify_add+0x1a/0x3a > > > [<900e533c>] add_mtd_device+0x60/0xa0 > > > [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0 > > > [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c > > > [<900e0f24>] platform_drv_probe+0x10/0x12 > > > [<900e06d0>] driver_probe_device+0x84/0xf0 > > > [<900e076a>] __driver_attach+0x2e/0x44 > > > [<900e0096>] bus_for_each_dev+0x2e/0x4c > > > [<900e05b6>] driver_attach+0x12/0x14 > > > [<900e036c>] bus_add_driver+0x6c/0x178 > > > [<900e08a4>] driver_register+0x58/0xb0 > > > [<900e1126>] platform_driver_register+0x56/0x5c > > > [<9000aaf6>] physmap_init+0xa/0x10 > > > [<9001422a>] do_one_initcall+0x2a/0x10c > > > [<900005b8>] kernel_init+0x48/0x90 > > > [<9001fcc0>] do_exit+0x0/0x4cc > > > > Ok, it turns out it's not related. It's a newly introduced regression > > which I've bisected down to: > > > > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 > > Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > > Date: Sat Aug 16 14:10:05 2008 +0900 > > > > block: move cmdfilter from gendisk to request_queue > > Really sorry about that. A fix was queued in Jens' tree: > > http://marc.info/?l=linux-kernel&m=122000748432301&w=2 > > > > Unfortunately, I can't revert it cleanly, so it could be a false > > positive. But it does sort of make sense, since it makes the filter > > per-queue instead of per-gendisk, so if MTD uses the same queue for > > several block devices, the filter kobject might end up being > > initialized multiple times. Or something. > > Right, the problem is that MTD uses the same queue for multiple > gendisks. It would be great if a MTD developer could fix it. I'm also seeing it with drivers/block/ataflop.c (also a single queue) on ARAnyM. And from looking at drivers/block/floppy.c and drivers/block/amiflop.c, I guess it happens there, too. Any other single-queue drivers that got broken??? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: MTD/block regression (was Re: Slub debugging NAND error in 2.6.25.10.atmel.2) 2008-08-31 12:00 ` Geert Uytterhoeven @ 2008-08-31 16:55 ` Jens Axboe 0 siblings, 0 replies; 5+ messages in thread From: Jens Axboe @ 2008-08-31 16:55 UTC (permalink / raw) To: Geert Uytterhoeven Cc: FUJITA Tomonori, haavard.skinnemoen, eaa, linux-mtd, kernel, dwmw2, Andrew Morton, Linux Kernel Development, Linux/m68k On Sun, Aug 31 2008, Geert Uytterhoeven wrote: > On Sat, 30 Aug 2008, FUJITA Tomonori wrote: > > On Fri, 29 Aug 2008 16:28:24 +0200 > > Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote: > > > Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote: > > > > Hmm...I just saw this when booting 2.6.27-rc5 on the NGW100: > > > > > > > > kobject (91ce8410): tried to init an initialized object, something is seriously wrong. > > > > Call trace: > > > > [<90017184>] dump_stack+0x18/0x20 > > > > [<900c1894>] kobject_init+0x28/0x5c > > > > [<900c1bf6>] kobject_init_and_add+0xe/0x24 > > > > [<900beff0>] blk_register_filter+0x28/0x40 > > > > [<900be224>] add_disk+0x38/0x68 > > > > [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184 > > > > [<900e748e>] mtdblock_add_mtd+0x36/0x3c > > > > [<900e6e38>] blktrans_notify_add+0x1a/0x3a > > > > [<900e533c>] add_mtd_device+0x60/0xa0 > > > > [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0 > > > > [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c > > > > [<900e0f24>] platform_drv_probe+0x10/0x12 > > > > [<900e06d0>] driver_probe_device+0x84/0xf0 > > > > [<900e076a>] __driver_attach+0x2e/0x44 > > > > [<900e0096>] bus_for_each_dev+0x2e/0x4c > > > > [<900e05b6>] driver_attach+0x12/0x14 > > > > [<900e036c>] bus_add_driver+0x6c/0x178 > > > > [<900e08a4>] driver_register+0x58/0xb0 > > > > [<900e1126>] platform_driver_register+0x56/0x5c > > > > [<9000aaf6>] physmap_init+0xa/0x10 > > > > [<9001422a>] do_one_initcall+0x2a/0x10c > > > > [<900005b8>] kernel_init+0x48/0x90 > > > > [<9001fcc0>] do_exit+0x0/0x4cc > > > > > > Ok, it turns out it's not related. It's a newly introduced regression > > > which I've bisected down to: > > > > > > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 > > > Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > > > Date: Sat Aug 16 14:10:05 2008 +0900 > > > > > > block: move cmdfilter from gendisk to request_queue > > > > Really sorry about that. A fix was queued in Jens' tree: > > > > http://marc.info/?l=linux-kernel&m=122000748432301&w=2 > > > > > > > Unfortunately, I can't revert it cleanly, so it could be a false > > > positive. But it does sort of make sense, since it makes the filter > > > per-queue instead of per-gendisk, so if MTD uses the same queue for > > > several block devices, the filter kobject might end up being > > > initialized multiple times. Or something. > > > > Right, the problem is that MTD uses the same queue for multiple > > gendisks. It would be great if a MTD developer could fix it. > > I'm also seeing it with drivers/block/ataflop.c (also a single queue) on > ARAnyM. > > And from looking at drivers/block/floppy.c and drivers/block/amiflop.c, > I guess it happens there, too. > > Any other single-queue drivers that got broken??? The pending change will eliminate this problem so that single queue devices will work fine again. They should still work fine in -rc5, just with the annoying WARN_ON() for each device per queue. -- Jens Axboe ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-08-31 16:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <6B5648EA2E2C2D42AF2FF7691522AD92417C9D@wpr01.wprmedical.local>
[not found] ` <6B5648EA2E2C2D42AF2FF7691522AD92417CA6@wpr01.wprmedical.local>
[not found] ` <20080829114828.279b79bc@hskinnemo-gx745.norway.atmel.com>
2008-08-29 14:28 ` MTD/block regression (was Re: Slub debugging NAND error in 2.6.25.10.atmel.2) Haavard Skinnemoen
2008-08-30 1:34 ` FUJITA Tomonori
2008-08-30 10:49 ` Haavard Skinnemoen
2008-08-31 12:00 ` Geert Uytterhoeven
2008-08-31 16:55 ` Jens Axboe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
Powered by JetHome