Message ID | 20100426163126.GD4364@logfs.org |
---|---|
State | New, archived |
Headers | show |
On Mon, Apr 26 2010, Jörn Engel wrote: > Otherwise we hit a BUG_ON in bdi_queue_work(). > > Signed-off-by: Joern Engel <joern@logfs.org> > --- > drivers/mtd/mtdcore.c | 17 ++++++++++++++++- > 1 files changed, 16 insertions(+), 1 deletions(-) > > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c > index cb4858b..8dd3e46 100644 > --- a/drivers/mtd/mtdcore.c > +++ b/drivers/mtd/mtdcore.c > @@ -322,6 +322,12 @@ int add_mtd_device(struct mtd_info *mtd) > if (!mtd_table[i]) { > struct mtd_notifier *not; > > + err = bdi_register(mtd->backing_dev_info, NULL, "mtd%d", > + i); > + if (err) { > + /* We lose the errno information :( */ > + break; > + } This is not a good idea, even if it'll currently work. > @@ -692,6 +698,15 @@ static int __init init_mtd(void) > int ret; > ret = class_register(&mtd_class); > > + ret = bdi_init(&mtd_bdi_unmappable); > + if (ret) > + return ret; > + ret = bdi_init(&mtd_bdi_ro_mappable); > + if (ret) > + return ret; > + ret = bdi_init(&mtd_bdi_rw_mappable); > + if (ret) > + return ret; Do the bdi_register() here as well.
On Mon, 26 April 2010 19:02:48 +0200, Jens Axboe wrote: > On Mon, Apr 26 2010, Jörn Engel wrote: > > Otherwise we hit a BUG_ON in bdi_queue_work(). > > > > Signed-off-by: Joern Engel <joern@logfs.org> > > --- > > drivers/mtd/mtdcore.c | 17 ++++++++++++++++- > > 1 files changed, 16 insertions(+), 1 deletions(-) > > > > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c > > index cb4858b..8dd3e46 100644 > > --- a/drivers/mtd/mtdcore.c > > +++ b/drivers/mtd/mtdcore.c > > @@ -322,6 +322,12 @@ int add_mtd_device(struct mtd_info *mtd) > > if (!mtd_table[i]) { > > struct mtd_notifier *not; > > > > + err = bdi_register(mtd->backing_dev_info, NULL, "mtd%d", > > + i); > > + if (err) { > > + /* We lose the errno information :( */ > > + break; > > + } > > This is not a good idea, even if it'll currently work. > > > @@ -692,6 +698,15 @@ static int __init init_mtd(void) > > int ret; > > ret = class_register(&mtd_class); > > > > + ret = bdi_init(&mtd_bdi_unmappable); > > + if (ret) > > + return ret; > > + ret = bdi_init(&mtd_bdi_ro_mappable); > > + if (ret) > > + return ret; > > + ret = bdi_init(&mtd_bdi_rw_mappable); > > + if (ret) > > + return ret; > > Do the bdi_register() here as well. -ENOBRAIN Initially I wanted to do just than. Then I looked at the block layer and thought we could create one backing_dev_info per mtd as well. Not necessarily a bad if I would actually _create_ them and not just reuse the same ones over and over again. Jörn
On Mon, Apr 26 2010, Jörn Engel wrote: > On Mon, 26 April 2010 19:02:48 +0200, Jens Axboe wrote: > > On Mon, Apr 26 2010, Jörn Engel wrote: > > > Otherwise we hit a BUG_ON in bdi_queue_work(). > > > > > > Signed-off-by: Joern Engel <joern@logfs.org> > > > --- > > > drivers/mtd/mtdcore.c | 17 ++++++++++++++++- > > > 1 files changed, 16 insertions(+), 1 deletions(-) > > > > > > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c > > > index cb4858b..8dd3e46 100644 > > > --- a/drivers/mtd/mtdcore.c > > > +++ b/drivers/mtd/mtdcore.c > > > @@ -322,6 +322,12 @@ int add_mtd_device(struct mtd_info *mtd) > > > if (!mtd_table[i]) { > > > struct mtd_notifier *not; > > > > > > + err = bdi_register(mtd->backing_dev_info, NULL, "mtd%d", > > > + i); > > > + if (err) { > > > + /* We lose the errno information :( */ > > > + break; > > > + } > > > > This is not a good idea, even if it'll currently work. > > > > > @@ -692,6 +698,15 @@ static int __init init_mtd(void) > > > int ret; > > > ret = class_register(&mtd_class); > > > > > > + ret = bdi_init(&mtd_bdi_unmappable); > > > + if (ret) > > > + return ret; > > > + ret = bdi_init(&mtd_bdi_ro_mappable); > > > + if (ret) > > > + return ret; > > > + ret = bdi_init(&mtd_bdi_rw_mappable); > > > + if (ret) > > > + return ret; > > > > Do the bdi_register() here as well. > > -ENOBRAIN > > Initially I wanted to do just than. Then I looked at the block layer > and thought we could create one backing_dev_info per mtd as well. Not > necessarily a bad if I would actually _create_ them and not just reuse > the same ones over and over again. I cooked up that patch myself, here: http://git.kernel.dk/?p=linux-2.6-block.git;a=commit;h=0661b1ac5d48eb47c8a5948c0554fea25e0895ab Care to give it a quick spin?
I Jens, I'm Paolo Minazzi and I have a problem with logfs and 2.6.34rc5. Can I apply the patch to rc5 and make a test on my ARM board ? Paolo On Tue, Apr 27, 2010 at 9:52 AM, Jens Axboe <jens.axboe@oracle.com> wrote: > On Mon, Apr 26 2010, Jörn Engel wrote: >> On Mon, 26 April 2010 19:02:48 +0200, Jens Axboe wrote: >> > On Mon, Apr 26 2010, Jörn Engel wrote: >> > > Otherwise we hit a BUG_ON in bdi_queue_work(). >> > > >> > > Signed-off-by: Joern Engel <joern@logfs.org> >> > > --- >> > > drivers/mtd/mtdcore.c | 17 ++++++++++++++++- >> > > 1 files changed, 16 insertions(+), 1 deletions(-) >> > > >> > > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c >> > > index cb4858b..8dd3e46 100644 >> > > --- a/drivers/mtd/mtdcore.c >> > > +++ b/drivers/mtd/mtdcore.c >> > > @@ -322,6 +322,12 @@ int add_mtd_device(struct mtd_info *mtd) >> > > if (!mtd_table[i]) { >> > > struct mtd_notifier *not; >> > > >> > > + err = bdi_register(mtd->backing_dev_info, NULL, "mtd%d", >> > > + i); >> > > + if (err) { >> > > + /* We lose the errno information :( */ >> > > + break; >> > > + } >> > >> > This is not a good idea, even if it'll currently work. >> > >> > > @@ -692,6 +698,15 @@ static int __init init_mtd(void) >> > > int ret; >> > > ret = class_register(&mtd_class); >> > > >> > > + ret = bdi_init(&mtd_bdi_unmappable); >> > > + if (ret) >> > > + return ret; >> > > + ret = bdi_init(&mtd_bdi_ro_mappable); >> > > + if (ret) >> > > + return ret; >> > > + ret = bdi_init(&mtd_bdi_rw_mappable); >> > > + if (ret) >> > > + return ret; >> > >> > Do the bdi_register() here as well. >> >> -ENOBRAIN >> >> Initially I wanted to do just than. Then I looked at the block layer >> and thought we could create one backing_dev_info per mtd as well. Not >> necessarily a bad if I would actually _create_ them and not just reuse >> the same ones over and over again. > > I cooked up that patch myself, here: > > http://git.kernel.dk/?p=linux-2.6-block.git;a=commit;h=0661b1ac5d48eb47c8a5948c0554fea25e0895ab > > Care to give it a quick spin? > > -- > Jens Axboe > >
I have tried this patch. I have enabled LOGFS, but not mounted partition with it. /dev/mtdblock1 is my romfs root partition and it is OK. The problem is that init cannot mount my /dev/mtdblock1 romfs root. This is the fault : Platform: Cirrus Logic EDB9315A Board (ARM920T) Rev A Copyright (C) 2000, 2001, 2002, Red Hat, Inc. |---------------------------------------------- Raw file loaded 0x00080000-0x001dce6b, assumed entry at 0x00080000----------------------------------------------------------- RedBoot> exec -s 0x00b00000 -r 0x00a00000 -c "root=/dev/mtdblock1 console=ttyAM console=tty1"-------------------------------- ENTRY=0xc0008000------------------------------------------------------------------------------------------------------------- LENGTH=0x00300000------------------------------------------------------------------------------------------------------------ BASE_ADDR=0x00080000--------------------------------------------------------------------------------------------------------- Using base address 0x00080000 and length 0x00300000-------------------------------------------------------------------------- Uncompressing Linux... done, booting the kernel. Linux version 2.6.34-rc5 (root@darkstar) (gcc version 3.4.3) #18 Tue Apr 27 10:55:55 CEST 2010 CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177 CPU: VIVT data cache, VIVT instruction cache Machine: Cirrus Logic EDB9315A Evaluation Board Memory policy: ECC disabled, Data cache writeback Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 Kernel command line: root=/dev/mtdblock1 console=ttyAM console=tty1 PID hash table entries: 512 (order: -1, 2048 bytes) Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 128MB = 128MB total Memory: 126928k/126928k available, 4144k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) DMA : 0xffc00000 - 0xffe00000 ( 2 MB) vmalloc : 0xc8800000 - 0xfe800000 ( 864 MB) lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .init : 0xc0008000 - 0xc0036000 ( 184 kB) .text : 0xc0036000 - 0xc02ab000 (2516 kB) .data : 0xc02ac000 - 0xc02c4e00 ( 100 kB) SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 Hierarchical RCU implementation. NR_IRQS:120 VIC @fefb0000: id 0x00041190, vendor 0x41 VIC @fefc0000: id 0x00041190, vendor 0x41 Console: colour dummy device 80x30 console [tty1] enabled Calibrating delay loop... 99.73 BogoMIPS (lpj=498688) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 ep93xx clock: PLL1 running at 200 MHz, PLL2 at 48 MHz ep93xx clock: FCLK 200 MHz, HCLK 100 MHz, PCLK 50 MHz ep93xx dma_m2p: M2P DMA subsystem initialized bio: create slab <bio-0> at 0 SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. ***REGISTER LOGFS ***REGISTER LOGFS DONE ret=0 ROMFS MTD (C) 2007 Red Hat, Inc. msgmni has been set to 247 io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) Console: switching to colour frame buffer device 100x37 graphics fb0: registered. Mode = 800x600-16 Serial: AMBA driver apb:uart1: ttyAM0 at MMIO 0x808c0000 (irq = 52) is a AMBA console [ttyAM0] enabled apb:uart2: ttyAM1 at MMIO 0x808d0000 (irq = 54) is a AMBA apb:uart3: ttyAM2 at MMIO 0x808e0000 (irq = 55) is a AMBA dev->num_resources=1 physmap platform flash device: 02000000 at 60000000 physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank physmap-flash.0: Found 1 x16 devices at 0x1000000 in 16-bit bank Intel/Sharp Extended Query Table at 0x0031 Intel/Sharp Extended Query Table at 0x0031 Using buffer write method cfi_cmdset_0001: Erase suspend on write enabled cmdlinepart partition parsing not available Searching for RedBoot partition table in physmap-flash.0 at offset 0x1fe0000 6 RedBoot partitions found on MTD device physmap-flash.0 Creating 6 MTD partitions on "physmap-flash.0": 0x000000000000-0x000000040000 : "RedBoot" 0x000000040000-0x000000b40000 : "ramdisk" 0x000000b40000-0x000000e40000 : "zImage" 0x000000e40000-0x000001fc0000 : "jffs2" 0x000001fc0000-0x000001fe0000 : "RedBoot config" 0x000001fe0000-0x000002000000 : "FIS directory" PPP generic driver version 2.4.2 PPP Deflate Compression module registered PPP BSD Compression module registered ep93xx-eth version 0.1 loading eth0: ep93xx on-chip ethernet, IRQ 39, 00:00:11:22:33:36 ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver ep93xx-ohci ep93xx-ohci: EP93xx OHCI ep93xx-ohci ep93xx-ohci: new USB bus registered, assigned bus number 1 ep93xx-ohci ep93xx-ohci: irq 56, io mem 0x80020000 hub 1-0:1.0: USB hub found hub 1-0:1.0: 3 ports detected usbcore: registered new interface driver cdc_acm cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. ep93xx-rtc ep93xx-rtc: rtc core: registered ep93xx-rtc as rtc0 usbcore: registered new interface driver usbhid usbhid: USB HID core driver TCP cubic registered NET: Registered protocol family 17 Last power-down at UTC 08:47:16 on 27/04/2010 ep93xx-rtc ep93xx-rtc: setting system clock to 2010-04-27 08:47:16 UTC (1272358036) VFS: Cannot open root device "mtdblock1" or unknown-block(31,1) Please append a correct "root=" boot option; here are the available partitions: 1f00 256 mtdblock0 (driver?) 1f01 11264 mtdblock1 (driver?) 1f02 3072 mtdblock2 (driver?) 1f03 17920 mtdblock3 (driver?) 1f04 128 mtdblock4 (driver?) 1f05 128 mtdblock5 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,1) Backtrace: [<c003a3dc>] (dump_backtrace+0x0/0x12c) from [<c003a520>] (dump_stack+0x18/0x1c) r7:c7c11000 r6:fffffffb r5:c7c11000 r4:00000000 [<c003a508>] (dump_stack+0x0/0x1c) from [<c0046628>] (panic+0x3c/0xc4) [<c00465ec>] (panic+0x0/0xc4) from [<c0008d58>] (mount_block_root+0x110/0x2e8) r3:00000000 r2:20000013 r1:c7c27f58 r0:c0276b44 [<c0008c48>] (mount_block_root+0x0/0x2e8) from [<c0008f84>] (mount_root+0x54/0x6c) [<c0008f30>] (mount_root+0x0/0x6c) from [<c0009094>] (prepare_namespace+0xf8/0x194) r5:c001a56c r4:c001a570 [<c0008f9c>] (prepare_namespace+0x0/0x194) from [<c0008aa4>] (kernel_init+0x114/0x15c) r6:c0019b0c r5:c0019d5c r4:c02c4e18 [<c0008990>] (kernel_init+0x0/0x15c) from [<c0048e98>] (do_exit+0x0/0x628) r6:00000000 r5:00000000 r4:00000000 If I disable logfs, my root /dev/mtdblock1 is mounted correclty. Any ideas ? Paolo On Mon, Apr 26, 2010 at 6:31 PM, Jörn Engel <joern@logfs.org> wrote: > Otherwise we hit a BUG_ON in bdi_queue_work(). > > Signed-off-by: Joern Engel <joern@logfs.org> > --- > drivers/mtd/mtdcore.c | 17 ++++++++++++++++- > 1 files changed, 16 insertions(+), 1 deletions(-) > > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c > index cb4858b..8dd3e46 100644 > --- a/drivers/mtd/mtdcore.c > +++ b/drivers/mtd/mtdcore.c > @@ -299,7 +299,7 @@ static struct device_type mtd_devtype = { > > int add_mtd_device(struct mtd_info *mtd) > { > - int i; > + int i, err; > > if (!mtd->backing_dev_info) { > switch (mtd->type) { > @@ -322,6 +322,12 @@ int add_mtd_device(struct mtd_info *mtd) > if (!mtd_table[i]) { > struct mtd_notifier *not; > > + err = bdi_register(mtd->backing_dev_info, NULL, "mtd%d", > + i); > + if (err) { > + /* We lose the errno information :( */ > + break; > + } > mtd_table[i] = mtd; > mtd->index = i; > mtd->usecount = 0; > @@ -692,6 +698,15 @@ static int __init init_mtd(void) > int ret; > ret = class_register(&mtd_class); > > + ret = bdi_init(&mtd_bdi_unmappable); > + if (ret) > + return ret; > + ret = bdi_init(&mtd_bdi_ro_mappable); > + if (ret) > + return ret; > + ret = bdi_init(&mtd_bdi_rw_mappable); > + if (ret) > + return ret; > if (ret) { > pr_err("Error registering mtd class: %d\n", ret); > return ret; > -- > 1.6.2.1 > >
On Tue, Apr 27 2010, Paolo Minazzi wrote: > I have tried this patch. > I have enabled LOGFS, but not mounted partition with it. > /dev/mtdblock1 is my romfs root partition and it is OK. > > The problem is that init cannot mount my /dev/mtdblock1 romfs root. > > This is the fault : > Platform: Cirrus Logic EDB9315A Board (ARM920T) Rev A > Copyright (C) 2000, 2001, 2002, Red Hat, Inc. > |---------------------------------------------- > Raw file loaded 0x00080000-0x001dce6b, assumed entry at > 0x00080000----------------------------------------------------------- > RedBoot> exec -s 0x00b00000 -r 0x00a00000 -c "root=/dev/mtdblock1 > console=ttyAM console=tty1"-------------------------------- > ENTRY=0xc0008000------------------------------------------------------------------------------------------------------------- > LENGTH=0x00300000------------------------------------------------------------------------------------------------------------ > BASE_ADDR=0x00080000--------------------------------------------------------------------------------------------------------- > Using base address 0x00080000 and length > 0x00300000-------------------------------------------------------------------------- > Uncompressing Linux... done, booting the kernel. > Linux version 2.6.34-rc5 (root@darkstar) (gcc version 3.4.3) #18 Tue > Apr 27 10:55:55 CEST 2010 > CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Cirrus Logic EDB9315A Evaluation Board > Memory policy: ECC disabled, Data cache writeback > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 > Kernel command line: root=/dev/mtdblock1 console=ttyAM console=tty1 > PID hash table entries: 512 (order: -1, 2048 bytes) > Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) > Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) > Memory: 128MB = 128MB total > Memory: 126928k/126928k available, 4144k reserved, 0K highmem > Virtual kernel memory layout: > vector : 0xffff0000 - 0xffff1000 ( 4 kB) > fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > DMA : 0xffc00000 - 0xffe00000 ( 2 MB) > vmalloc : 0xc8800000 - 0xfe800000 ( 864 MB) > lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) > modules : 0xbf000000 - 0xc0000000 ( 16 MB) > .init : 0xc0008000 - 0xc0036000 ( 184 kB) > .text : 0xc0036000 - 0xc02ab000 (2516 kB) > .data : 0xc02ac000 - 0xc02c4e00 ( 100 kB) > SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > Hierarchical RCU implementation. > NR_IRQS:120 > VIC @fefb0000: id 0x00041190, vendor 0x41 > VIC @fefc0000: id 0x00041190, vendor 0x41 > Console: colour dummy device 80x30 > console [tty1] enabled > Calibrating delay loop... 99.73 BogoMIPS (lpj=498688) > Mount-cache hash table entries: 512 > CPU: Testing write buffer coherency: ok > NET: Registered protocol family 16 > ep93xx clock: PLL1 running at 200 MHz, PLL2 at 48 MHz > ep93xx clock: FCLK 200 MHz, HCLK 100 MHz, PCLK 50 MHz > ep93xx dma_m2p: M2P DMA subsystem initialized > bio: create slab <bio-0> at 0 > SCSI subsystem initialized > usbcore: registered new interface driver usbfs > usbcore: registered new interface driver hub > usbcore: registered new device driver usb > NET: Registered protocol family 2 > IP route cache hash table entries: 1024 (order: 0, 4096 bytes) > TCP established hash table entries: 4096 (order: 3, 32768 bytes) > TCP bind hash table entries: 4096 (order: 2, 16384 bytes) > TCP: Hash tables configured (established 4096 bind 4096) > TCP reno registered > UDP hash table entries: 256 (order: 0, 4096 bytes) > UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > NET: Registered protocol family 1 > JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. > ***REGISTER LOGFS > ***REGISTER LOGFS DONE ret=0 > ROMFS MTD (C) 2007 Red Hat, Inc. > msgmni has been set to 247 > io scheduler noop registered > io scheduler deadline registered > io scheduler cfq registered (default) > Console: switching to colour frame buffer device 100x37 > graphics fb0: registered. Mode = 800x600-16 > Serial: AMBA driver > apb:uart1: ttyAM0 at MMIO 0x808c0000 (irq = 52) is a AMBA > console [ttyAM0] enabled > apb:uart2: ttyAM1 at MMIO 0x808d0000 (irq = 54) is a AMBA > apb:uart3: ttyAM2 at MMIO 0x808e0000 (irq = 55) is a AMBA > dev->num_resources=1 > physmap platform flash device: 02000000 at 60000000 > physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank > physmap-flash.0: Found 1 x16 devices at 0x1000000 in 16-bit bank > Intel/Sharp Extended Query Table at 0x0031 > Intel/Sharp Extended Query Table at 0x0031 > Using buffer write method > cfi_cmdset_0001: Erase suspend on write enabled > cmdlinepart partition parsing not available > Searching for RedBoot partition table in physmap-flash.0 at offset 0x1fe0000 > 6 RedBoot partitions found on MTD device physmap-flash.0 > Creating 6 MTD partitions on "physmap-flash.0": > 0x000000000000-0x000000040000 : "RedBoot" > 0x000000040000-0x000000b40000 : "ramdisk" > 0x000000b40000-0x000000e40000 : "zImage" > 0x000000e40000-0x000001fc0000 : "jffs2" > 0x000001fc0000-0x000001fe0000 : "RedBoot config" > 0x000001fe0000-0x000002000000 : "FIS directory" > PPP generic driver version 2.4.2 > PPP Deflate Compression module registered > PPP BSD Compression module registered > ep93xx-eth version 0.1 loading > eth0: ep93xx on-chip ethernet, IRQ 39, 00:00:11:22:33:36 > ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > ep93xx-ohci ep93xx-ohci: EP93xx OHCI > ep93xx-ohci ep93xx-ohci: new USB bus registered, assigned bus number 1 > ep93xx-ohci ep93xx-ohci: irq 56, io mem 0x80020000 > hub 1-0:1.0: USB hub found > hub 1-0:1.0: 3 ports detected > usbcore: registered new interface driver cdc_acm > cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and > ISDN adapters > Initializing USB Mass Storage driver... > usbcore: registered new interface driver usb-storage > USB Mass Storage support registered. > ep93xx-rtc ep93xx-rtc: rtc core: registered ep93xx-rtc as rtc0 > usbcore: registered new interface driver usbhid > usbhid: USB HID core driver > TCP cubic registered > NET: Registered protocol family 17 > Last power-down at UTC 08:47:16 on 27/04/2010 > ep93xx-rtc ep93xx-rtc: setting system clock to 2010-04-27 08:47:16 UTC > (1272358036) > VFS: Cannot open root device "mtdblock1" or unknown-block(31,1) > Please append a correct "root=" boot option; here are the available partitions: > 1f00 256 mtdblock0 (driver?) > 1f01 11264 mtdblock1 (driver?) > 1f02 3072 mtdblock2 (driver?) > 1f03 17920 mtdblock3 (driver?) > 1f04 128 mtdblock4 (driver?) > 1f05 128 mtdblock5 (driver?) > Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,1) > Backtrace: > [<c003a3dc>] (dump_backtrace+0x0/0x12c) from [<c003a520>] (dump_stack+0x18/0x1c) > r7:c7c11000 r6:fffffffb r5:c7c11000 r4:00000000 > [<c003a508>] (dump_stack+0x0/0x1c) from [<c0046628>] (panic+0x3c/0xc4) > [<c00465ec>] (panic+0x0/0xc4) from [<c0008d58>] (mount_block_root+0x110/0x2e8) > r3:00000000 r2:20000013 r1:c7c27f58 r0:c0276b44 > [<c0008c48>] (mount_block_root+0x0/0x2e8) from [<c0008f84>] > (mount_root+0x54/0x6c) > [<c0008f30>] (mount_root+0x0/0x6c) from [<c0009094>] > (prepare_namespace+0xf8/0x194) > r5:c001a56c r4:c001a570 > [<c0008f9c>] (prepare_namespace+0x0/0x194) from [<c0008aa4>] > (kernel_init+0x114/0x15c) > r6:c0019b0c r5:c0019d5c r4:c02c4e18 > [<c0008990>] (kernel_init+0x0/0x15c) from [<c0048e98>] (do_exit+0x0/0x628) > r6:00000000 r5:00000000 r4:00000000 > > > > If I disable logfs, my root /dev/mtdblock1 is mounted correclty. So this issue looks unrelated, but a bug none the less (if just enabling logfs breaks the mount).
To be precise, I say : - downloaded 2.6.34rc5 - apply the jens patch - the logfs code is the code in the 2.6.34rc5 (I have no applied other jorn patch) Paolo On Tue, Apr 27, 2010 at 11:16 AM, Jens Axboe <jens.axboe@oracle.com> wrote: > On Tue, Apr 27 2010, Paolo Minazzi wrote: >> I have tried this patch. >> I have enabled LOGFS, but not mounted partition with it. >> /dev/mtdblock1 is my romfs root partition and it is OK. >> >> The problem is that init cannot mount my /dev/mtdblock1 romfs root. >> >> This is the fault : >> Platform: Cirrus Logic EDB9315A Board (ARM920T) Rev A >> Copyright (C) 2000, 2001, 2002, Red Hat, Inc. >> |---------------------------------------------- >> Raw file loaded 0x00080000-0x001dce6b, assumed entry at >> 0x00080000----------------------------------------------------------- >> RedBoot> exec -s 0x00b00000 -r 0x00a00000 -c "root=/dev/mtdblock1 >> console=ttyAM console=tty1"-------------------------------- >> ENTRY=0xc0008000------------------------------------------------------------------------------------------------------------- >> LENGTH=0x00300000------------------------------------------------------------------------------------------------------------ >> BASE_ADDR=0x00080000--------------------------------------------------------------------------------------------------------- >> Using base address 0x00080000 and length >> 0x00300000-------------------------------------------------------------------------- >> Uncompressing Linux... done, booting the kernel. >> Linux version 2.6.34-rc5 (root@darkstar) (gcc version 3.4.3) #18 Tue >> Apr 27 10:55:55 CEST 2010 >> CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177 >> CPU: VIVT data cache, VIVT instruction cache >> Machine: Cirrus Logic EDB9315A Evaluation Board >> Memory policy: ECC disabled, Data cache writeback >> Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 >> Kernel command line: root=/dev/mtdblock1 console=ttyAM console=tty1 >> PID hash table entries: 512 (order: -1, 2048 bytes) >> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) >> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) >> Memory: 128MB = 128MB total >> Memory: 126928k/126928k available, 4144k reserved, 0K highmem >> Virtual kernel memory layout: >> vector : 0xffff0000 - 0xffff1000 ( 4 kB) >> fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) >> DMA : 0xffc00000 - 0xffe00000 ( 2 MB) >> vmalloc : 0xc8800000 - 0xfe800000 ( 864 MB) >> lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) >> modules : 0xbf000000 - 0xc0000000 ( 16 MB) >> .init : 0xc0008000 - 0xc0036000 ( 184 kB) >> .text : 0xc0036000 - 0xc02ab000 (2516 kB) >> .data : 0xc02ac000 - 0xc02c4e00 ( 100 kB) >> SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 >> Hierarchical RCU implementation. >> NR_IRQS:120 >> VIC @fefb0000: id 0x00041190, vendor 0x41 >> VIC @fefc0000: id 0x00041190, vendor 0x41 >> Console: colour dummy device 80x30 >> console [tty1] enabled >> Calibrating delay loop... 99.73 BogoMIPS (lpj=498688) >> Mount-cache hash table entries: 512 >> CPU: Testing write buffer coherency: ok >> NET: Registered protocol family 16 >> ep93xx clock: PLL1 running at 200 MHz, PLL2 at 48 MHz >> ep93xx clock: FCLK 200 MHz, HCLK 100 MHz, PCLK 50 MHz >> ep93xx dma_m2p: M2P DMA subsystem initialized >> bio: create slab <bio-0> at 0 >> SCSI subsystem initialized >> usbcore: registered new interface driver usbfs >> usbcore: registered new interface driver hub >> usbcore: registered new device driver usb >> NET: Registered protocol family 2 >> IP route cache hash table entries: 1024 (order: 0, 4096 bytes) >> TCP established hash table entries: 4096 (order: 3, 32768 bytes) >> TCP bind hash table entries: 4096 (order: 2, 16384 bytes) >> TCP: Hash tables configured (established 4096 bind 4096) >> TCP reno registered >> UDP hash table entries: 256 (order: 0, 4096 bytes) >> UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) >> NET: Registered protocol family 1 >> JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. >> ***REGISTER LOGFS >> ***REGISTER LOGFS DONE ret=0 >> ROMFS MTD (C) 2007 Red Hat, Inc. >> msgmni has been set to 247 >> io scheduler noop registered >> io scheduler deadline registered >> io scheduler cfq registered (default) >> Console: switching to colour frame buffer device 100x37 >> graphics fb0: registered. Mode = 800x600-16 >> Serial: AMBA driver >> apb:uart1: ttyAM0 at MMIO 0x808c0000 (irq = 52) is a AMBA >> console [ttyAM0] enabled >> apb:uart2: ttyAM1 at MMIO 0x808d0000 (irq = 54) is a AMBA >> apb:uart3: ttyAM2 at MMIO 0x808e0000 (irq = 55) is a AMBA >> dev->num_resources=1 >> physmap platform flash device: 02000000 at 60000000 >> physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank >> physmap-flash.0: Found 1 x16 devices at 0x1000000 in 16-bit bank >> Intel/Sharp Extended Query Table at 0x0031 >> Intel/Sharp Extended Query Table at 0x0031 >> Using buffer write method >> cfi_cmdset_0001: Erase suspend on write enabled >> cmdlinepart partition parsing not available >> Searching for RedBoot partition table in physmap-flash.0 at offset 0x1fe0000 >> 6 RedBoot partitions found on MTD device physmap-flash.0 >> Creating 6 MTD partitions on "physmap-flash.0": >> 0x000000000000-0x000000040000 : "RedBoot" >> 0x000000040000-0x000000b40000 : "ramdisk" >> 0x000000b40000-0x000000e40000 : "zImage" >> 0x000000e40000-0x000001fc0000 : "jffs2" >> 0x000001fc0000-0x000001fe0000 : "RedBoot config" >> 0x000001fe0000-0x000002000000 : "FIS directory" >> PPP generic driver version 2.4.2 >> PPP Deflate Compression module registered >> PPP BSD Compression module registered >> ep93xx-eth version 0.1 loading >> eth0: ep93xx on-chip ethernet, IRQ 39, 00:00:11:22:33:36 >> ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver >> ep93xx-ohci ep93xx-ohci: EP93xx OHCI >> ep93xx-ohci ep93xx-ohci: new USB bus registered, assigned bus number 1 >> ep93xx-ohci ep93xx-ohci: irq 56, io mem 0x80020000 >> hub 1-0:1.0: USB hub found >> hub 1-0:1.0: 3 ports detected >> usbcore: registered new interface driver cdc_acm >> cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and >> ISDN adapters >> Initializing USB Mass Storage driver... >> usbcore: registered new interface driver usb-storage >> USB Mass Storage support registered. >> ep93xx-rtc ep93xx-rtc: rtc core: registered ep93xx-rtc as rtc0 >> usbcore: registered new interface driver usbhid >> usbhid: USB HID core driver >> TCP cubic registered >> NET: Registered protocol family 17 >> Last power-down at UTC 08:47:16 on 27/04/2010 >> ep93xx-rtc ep93xx-rtc: setting system clock to 2010-04-27 08:47:16 UTC >> (1272358036) >> VFS: Cannot open root device "mtdblock1" or unknown-block(31,1) >> Please append a correct "root=" boot option; here are the available partitions: >> 1f00 256 mtdblock0 (driver?) >> 1f01 11264 mtdblock1 (driver?) >> 1f02 3072 mtdblock2 (driver?) >> 1f03 17920 mtdblock3 (driver?) >> 1f04 128 mtdblock4 (driver?) >> 1f05 128 mtdblock5 (driver?) >> Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,1) >> Backtrace: >> [<c003a3dc>] (dump_backtrace+0x0/0x12c) from [<c003a520>] (dump_stack+0x18/0x1c) >> r7:c7c11000 r6:fffffffb r5:c7c11000 r4:00000000 >> [<c003a508>] (dump_stack+0x0/0x1c) from [<c0046628>] (panic+0x3c/0xc4) >> [<c00465ec>] (panic+0x0/0xc4) from [<c0008d58>] (mount_block_root+0x110/0x2e8) >> r3:00000000 r2:20000013 r1:c7c27f58 r0:c0276b44 >> [<c0008c48>] (mount_block_root+0x0/0x2e8) from [<c0008f84>] >> (mount_root+0x54/0x6c) >> [<c0008f30>] (mount_root+0x0/0x6c) from [<c0009094>] >> (prepare_namespace+0xf8/0x194) >> r5:c001a56c r4:c001a570 >> [<c0008f9c>] (prepare_namespace+0x0/0x194) from [<c0008aa4>] >> (kernel_init+0x114/0x15c) >> r6:c0019b0c r5:c0019d5c r4:c02c4e18 >> [<c0008990>] (kernel_init+0x0/0x15c) from [<c0048e98>] (do_exit+0x0/0x628) >> r6:00000000 r5:00000000 r4:00000000 >> >> >> >> If I disable logfs, my root /dev/mtdblock1 is mounted correclty. > > So this issue looks unrelated, but a bug none the less (if just enabling > logfs breaks the mount). > > -- > Jens Axboe > >
On Tue, Apr 27 2010, Paolo Minazzi wrote: > On Tue, Apr 27, 2010 at 11:16 AM, Jens Axboe <jens.axboe@oracle.com> wrote: > > On Tue, Apr 27 2010, Paolo Minazzi wrote: > >> I have tried this patch. > >> I have enabled LOGFS, but not mounted partition with it. > >> /dev/mtdblock1 is my romfs root partition and it is OK. > >> > >> The problem is that init cannot mount my /dev/mtdblock1 romfs root. > >> > >> This is the fault : > >> Platform: Cirrus Logic EDB9315A Board (ARM920T) Rev A > >> Copyright (C) 2000, 2001, 2002, Red Hat, Inc. > >> |---------------------------------------------- > >> Raw file loaded 0x00080000-0x001dce6b, assumed entry at > >> 0x00080000----------------------------------------------------------- > >> RedBoot> exec -s 0x00b00000 -r 0x00a00000 -c "root=/dev/mtdblock1 > >> console=ttyAM console=tty1"-------------------------------- > >> ENTRY=0xc0008000------------------------------------------------------------------------------------------------------------- > >> LENGTH=0x00300000------------------------------------------------------------------------------------------------------------ > >> BASE_ADDR=0x00080000--------------------------------------------------------------------------------------------------------- > >> Using base address 0x00080000 and length > >> 0x00300000-------------------------------------------------------------------------- > >> Uncompressing Linux... done, booting the kernel. > >> Linux version 2.6.34-rc5 (root@darkstar) (gcc version 3.4.3) #18 Tue > >> Apr 27 10:55:55 CEST 2010 > >> CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177 > >> CPU: VIVT data cache, VIVT instruction cache > >> Machine: Cirrus Logic EDB9315A Evaluation Board > >> Memory policy: ECC disabled, Data cache writeback > >> Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 > >> Kernel command line: root=/dev/mtdblock1 console=ttyAM console=tty1 > >> PID hash table entries: 512 (order: -1, 2048 bytes) > >> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) > >> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) > >> Memory: 128MB = 128MB total > >> Memory: 126928k/126928k available, 4144k reserved, 0K highmem > >> Virtual kernel memory layout: > >> vector : 0xffff0000 - 0xffff1000 ( 4 kB) > >> fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > >> DMA : 0xffc00000 - 0xffe00000 ( 2 MB) > >> vmalloc : 0xc8800000 - 0xfe800000 ( 864 MB) > >> lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) > >> modules : 0xbf000000 - 0xc0000000 ( 16 MB) > >> .init : 0xc0008000 - 0xc0036000 ( 184 kB) > >> .text : 0xc0036000 - 0xc02ab000 (2516 kB) > >> .data : 0xc02ac000 - 0xc02c4e00 ( 100 kB) > >> SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > >> Hierarchical RCU implementation. > >> NR_IRQS:120 > >> VIC @fefb0000: id 0x00041190, vendor 0x41 > >> VIC @fefc0000: id 0x00041190, vendor 0x41 > >> Console: colour dummy device 80x30 > >> console [tty1] enabled > >> Calibrating delay loop... 99.73 BogoMIPS (lpj=498688) > >> Mount-cache hash table entries: 512 > >> CPU: Testing write buffer coherency: ok > >> NET: Registered protocol family 16 > >> ep93xx clock: PLL1 running at 200 MHz, PLL2 at 48 MHz > >> ep93xx clock: FCLK 200 MHz, HCLK 100 MHz, PCLK 50 MHz > >> ep93xx dma_m2p: M2P DMA subsystem initialized > >> bio: create slab <bio-0> at 0 > >> SCSI subsystem initialized > >> usbcore: registered new interface driver usbfs > >> usbcore: registered new interface driver hub > >> usbcore: registered new device driver usb > >> NET: Registered protocol family 2 > >> IP route cache hash table entries: 1024 (order: 0, 4096 bytes) > >> TCP established hash table entries: 4096 (order: 3, 32768 bytes) > >> TCP bind hash table entries: 4096 (order: 2, 16384 bytes) > >> TCP: Hash tables configured (established 4096 bind 4096) > >> TCP reno registered > >> UDP hash table entries: 256 (order: 0, 4096 bytes) > >> UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > >> NET: Registered protocol family 1 > >> JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. > >> ***REGISTER LOGFS > >> ***REGISTER LOGFS DONE ret=0 > >> ROMFS MTD (C) 2007 Red Hat, Inc. > >> msgmni has been set to 247 > >> io scheduler noop registered > >> io scheduler deadline registered > >> io scheduler cfq registered (default) > >> Console: switching to colour frame buffer device 100x37 > >> graphics fb0: registered. Mode = 800x600-16 > >> Serial: AMBA driver > >> apb:uart1: ttyAM0 at MMIO 0x808c0000 (irq = 52) is a AMBA > >> console [ttyAM0] enabled > >> apb:uart2: ttyAM1 at MMIO 0x808d0000 (irq = 54) is a AMBA > >> apb:uart3: ttyAM2 at MMIO 0x808e0000 (irq = 55) is a AMBA > >> dev->num_resources=1 > >> physmap platform flash device: 02000000 at 60000000 > >> physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank > >> physmap-flash.0: Found 1 x16 devices at 0x1000000 in 16-bit bank > >> Intel/Sharp Extended Query Table at 0x0031 > >> Intel/Sharp Extended Query Table at 0x0031 > >> Using buffer write method > >> cfi_cmdset_0001: Erase suspend on write enabled > >> cmdlinepart partition parsing not available > >> Searching for RedBoot partition table in physmap-flash.0 at offset 0x1fe0000 > >> 6 RedBoot partitions found on MTD device physmap-flash.0 > >> Creating 6 MTD partitions on "physmap-flash.0": > >> 0x000000000000-0x000000040000 : "RedBoot" > >> 0x000000040000-0x000000b40000 : "ramdisk" > >> 0x000000b40000-0x000000e40000 : "zImage" > >> 0x000000e40000-0x000001fc0000 : "jffs2" > >> 0x000001fc0000-0x000001fe0000 : "RedBoot config" > >> 0x000001fe0000-0x000002000000 : "FIS directory" > >> PPP generic driver version 2.4.2 > >> PPP Deflate Compression module registered > >> PPP BSD Compression module registered > >> ep93xx-eth version 0.1 loading > >> eth0: ep93xx on-chip ethernet, IRQ 39, 00:00:11:22:33:36 > >> ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > >> ep93xx-ohci ep93xx-ohci: EP93xx OHCI > >> ep93xx-ohci ep93xx-ohci: new USB bus registered, assigned bus number 1 > >> ep93xx-ohci ep93xx-ohci: irq 56, io mem 0x80020000 > >> hub 1-0:1.0: USB hub found > >> hub 1-0:1.0: 3 ports detected > >> usbcore: registered new interface driver cdc_acm > >> cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and > >> ISDN adapters > >> Initializing USB Mass Storage driver... > >> usbcore: registered new interface driver usb-storage > >> USB Mass Storage support registered. > >> ep93xx-rtc ep93xx-rtc: rtc core: registered ep93xx-rtc as rtc0 > >> usbcore: registered new interface driver usbhid > >> usbhid: USB HID core driver > >> TCP cubic registered > >> NET: Registered protocol family 17 > >> Last power-down at UTC 08:47:16 on 27/04/2010 > >> ep93xx-rtc ep93xx-rtc: setting system clock to 2010-04-27 08:47:16 UTC > >> (1272358036) > >> VFS: Cannot open root device "mtdblock1" or unknown-block(31,1) > >> Please append a correct "root=" boot option; here are the available partitions: > >> 1f00 256 mtdblock0 (driver?) > >> 1f01 11264 mtdblock1 (driver?) > >> 1f02 3072 mtdblock2 (driver?) > >> 1f03 17920 mtdblock3 (driver?) > >> 1f04 128 mtdblock4 (driver?) > >> 1f05 128 mtdblock5 (driver?) > >> Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,1) > >> Backtrace: > >> [<c003a3dc>] (dump_backtrace+0x0/0x12c) from [<c003a520>] (dump_stack+0x18/0x1c) > >> r7:c7c11000 r6:fffffffb r5:c7c11000 r4:00000000 > >> [<c003a508>] (dump_stack+0x0/0x1c) from [<c0046628>] (panic+0x3c/0xc4) > >> [<c00465ec>] (panic+0x0/0xc4) from [<c0008d58>] (mount_block_root+0x110/0x2e8) > >> r3:00000000 r2:20000013 r1:c7c27f58 r0:c0276b44 > >> [<c0008c48>] (mount_block_root+0x0/0x2e8) from [<c0008f84>] > >> (mount_root+0x54/0x6c) > >> [<c0008f30>] (mount_root+0x0/0x6c) from [<c0009094>] > >> (prepare_namespace+0xf8/0x194) > >> r5:c001a56c r4:c001a570 > >> [<c0008f9c>] (prepare_namespace+0x0/0x194) from [<c0008aa4>] > >> (kernel_init+0x114/0x15c) > >> r6:c0019b0c r5:c0019d5c r4:c02c4e18 > >> [<c0008990>] (kernel_init+0x0/0x15c) from [<c0048e98>] (do_exit+0x0/0x628) > >> r6:00000000 r5:00000000 r4:00000000 > >> > >> > >> > >> If I disable logfs, my root /dev/mtdblock1 is mounted correclty. > > > > So this issue looks unrelated, but a bug none the less (if just enabling > > logfs breaks the mount). > > To be precise, I say : > > - downloaded 2.6.34rc5 > - apply the jens patch > - the logfs code is the code in the 2.6.34rc5 (I have no applied other > jorn patch) (please stop top posting, I fixed this one up for you). Just to be on the safe side - without the patch, does it work or not?
> Just to be on the safe side - without the patch, does it work or not? > > -- > Jens Axboe Without the patch for me means the standard 2.6.34rc5. In this case : - enabling logfs I have an oop in fs/write-back.c:157 before kernel calls init. - disabling logfs I can do normal mount my root /dev/mtdblock1 This is my experience. Paolo
On Tue, 27 April 2010 11:01:04 +0200, Paolo Minazzi wrote: > > I have tried this patch. > I have enabled LOGFS, but not mounted partition with it. > /dev/mtdblock1 is my romfs root partition and it is OK. > > The problem is that init cannot mount my /dev/mtdblock1 romfs root. > > This is the fault : > Platform: Cirrus Logic EDB9315A Board (ARM920T) Rev A > Copyright (C) 2000, 2001, 2002, Red Hat, Inc. > |---------------------------------------------- > Raw file loaded 0x00080000-0x001dce6b, assumed entry at > 0x00080000----------------------------------------------------------- > RedBoot> exec -s 0x00b00000 -r 0x00a00000 -c "root=/dev/mtdblock1 > console=ttyAM console=tty1"-------------------------------- > ENTRY=0xc0008000------------------------------------------------------------------------------------------------------------- > LENGTH=0x00300000------------------------------------------------------------------------------------------------------------ > BASE_ADDR=0x00080000--------------------------------------------------------------------------------------------------------- > Using base address 0x00080000 and length > 0x00300000-------------------------------------------------------------------------- > Uncompressing Linux... done, booting the kernel. > Linux version 2.6.34-rc5 (root@darkstar) (gcc version 3.4.3) #18 Tue > Apr 27 10:55:55 CEST 2010 > CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Cirrus Logic EDB9315A Evaluation Board > Memory policy: ECC disabled, Data cache writeback > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 > Kernel command line: root=/dev/mtdblock1 console=ttyAM console=tty1 If you add "rootfstype=romfs" to the command line, does the problem still exist? Jörn
On Tue, 27 April 2010 09:52:29 +0200, Jens Axboe wrote: > > I cooked up that patch myself, here: > > http://git.kernel.dk/?p=linux-2.6-block.git;a=commit;h=0661b1ac5d48eb47c8a5948c0554fea25e0895ab > > Care to give it a quick spin? Works for me. Acked-and-tested-by: Joern Engel <joern@logfs.org> Jörn
> If you add "rootfstype=romfs" to the command line, does the problem > still exist? > > Jörn Jorn , you are right. It seems work.... please wait....
On Tue, Apr 27 2010, Jörn Engel wrote: > On Tue, 27 April 2010 09:52:29 +0200, Jens Axboe wrote: > > > > I cooked up that patch myself, here: > > > > http://git.kernel.dk/?p=linux-2.6-block.git;a=commit;h=0661b1ac5d48eb47c8a5948c0554fea25e0895ab > > > > Care to give it a quick spin? > > Works for me. Goodness, thanks for testing. Now we are pretty close to have something we can send out.
On Tue, 27 April 2010 13:31:11 +0200, Paolo Minazzi wrote: > > > If you add "rootfstype=romfs" to the command line, does the problem > > still exist? > > Jorn , you are right. > It seems work.... > please wait.... Ok, I'm pretty sure that logfs returns -EIO where it should return -EINVAL. If filesystems are tried in alphabetical order, logfs comes first and -EIO tells the kernel to stop trying and panic, essentially. Will cook up a patch... Jörn
Ok, now it is very better. My problem now is that logfs does not save files in the following case: 1) power-off, then power-on (without umount) 2) sync, then power-off, then power-on (without umount) Using umount sometimes seems works, sometimes I have the following oop : ~ # mount -t logfs /dev/mtdblock7 /mitrolbackup ~ # cd /mitrolbackup /mitrolbackup # echo ciao > ciao /mitrolbackup # echo pino > pino /mitrolbackup # ls ciao pino /mitrolbackup # cd .. ~ # umount /mitrolbackup/ kernel BUG at fs/logfs/readwrite.c:1976! Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c7db0000 [00000000] *pgd=c7dac031, *pte=00000000, *ppte=00000000 Internal error: Oops: 817 [#1] last sysfs file: Modules linked in: CPU: 0 Not tainted (2.6.34-rc5 #19) PC is at __bug+0x20/0x2c LR is at release_console_sem+0x1b8/0x1ec pc : [<c003a1ac>] lr : [<c004760c>] psr: 60000013 sp : c7d5fe60 ip : c7d5fd98 fp : c7d5fe6c r10: 00000003 r9 : 00000000 r8 : c7d5feb4 r7 : 00000003 r6 : c7d5feb4 r5 : c7819878 r4 : c7819870 r3 : 00000000 r2 : 60000013 r1 : 000019c2 r0 : 0000002f Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: c000717f Table: c7db0000 DAC: 00000015 Process umount (pid: 307, stack limit = 0xc7d5e260) Stack: (0xc7d5fe60 to 0xc7d60000) fe60: c7d5fe7c c7d5fe70 c00fb2f0 c003a19c c7d5fe90 c7d5fe80 c00ad358 c00fb274 fe80: c7819870 c7d5feb0 c7d5fe94 c00ad3e4 c00ad2bc c7d46a64 c7d46a54 c7819880 fea0: c7d46a64 c7d5fee4 c7d5feb4 c00ad5a8 c00ad3d0 c7d5feb4 c7d5feb4 c7d46a00 fec0: c7d5e000 c022a324 00000000 c7d5ff54 c7d2b880 00000000 c7d5ff00 c7d5fee8 fee0: c009c8ec c00ad4c0 c7d46a00 c7c14000 c7d2b880 c7d5ff1c c7d5ff04 c00feb38 ff00: c009c84c c7d46a00 c02b7b84 c7d2b880 c7d5ff34 c7d5ff20 c009c740 c00feb00 ff20: c7d2b880 c7d46a00 c7d5ff4c c7d5ff38 c00b0bd0 c009c708 00000000 c7d2b898 ff40: c7d5ff94 c7d5ff50 c00b1e90 c00b0b7c 00000000 c7d5ff54 c7d5ff54 c7d5ff5c ff60: c7d5ff5c c7d2b880 c7817500 be8e3e0c 00000000 be8e5fb4 00000016 c00370a4 ff80: c7d5e000 be8e5eec c7d5ffa4 c7d5ff98 c00b2164 c00b1e34 00000000 c7d5ffa8 ffa0: c0036f00 c00b2160 be8e3e0c 00000000 be8e5fb4 be8e3e0c be8e3e1a 00000000 ffc0: be8e3e0c 00000000 be8e5fb4 00000000 00000000 00000000 be8e5eec 00000000 ffe0: 40099450 be8e3de4 0006779c 40099458 20000010 be8e5fb4 e0830007 e0833006 Backtrace: [<c003a18c>] (__bug+0x0/0x2c) from [<c00fb2f0>] (logfs_clear_inode+0x8c/0xb0) [<c00fb264>] (logfs_clear_inode+0x0/0xb0) from [<c00ad358>] (clear_inode+0xac/0x114) [<c00ad2ac>] (clear_inode+0x0/0x114) from [<c00ad3e4>] (dispose_list+0x24/0xf0) r4:c7819870 [<c00ad3c0>] (dispose_list+0x0/0xf0) from [<c00ad5a8>] (invalidate_inodes+0xf8/0x12c) r7:c7d46a64 r6:c7819880 r5:c7d46a54 r4:c7d46a64 [<c00ad4b0>] (invalidate_inodes+0x0/0x12c) from [<c009c8ec>] (generic_shutdown_super+0xb0/0x11c) [<c009c83c>] (generic_shutdown_super+0x0/0x11c) from [<c00feb38>] (logfs_kill_sb+0x48/0xfc) r6:c7d2b880 r5:c7c14000 r4:c7d46a00 [<c00feaf0>] (logfs_kill_sb+0x0/0xfc) from [<c009c740>] (deactivate_super+0x48/0x60) r6:c7d2b880 r5:c02b7b84 r4:c7d46a00 [<c009c6f8>] (deactivate_super+0x0/0x60) from [<c00b0bd0>] (mntput_no_expire+0x64/0xbc) r5:c7d46a00 r4:c7d2b880 [<c00b0b6c>] (mntput_no_expire+0x0/0xbc) from [<c00b1e90>] (sys_umount+0x6c/0x32c) r5:c7d2b898 r4:00000000 [<c00b1e24>] (sys_umount+0x0/0x32c) from [<c00b2164>] (sys_oldumount+0x14/0x18) [<c00b2150>] (sys_oldumount+0x0/0x18) from [<c0036f00>] (ret_fast_syscall+0x0/0x2c) Code: e1a01000 e59f000c eb003605 e3a03000 (e5833000) ---[ end trace 979e02c61e928049 ]--- ------------[ cut here ]------------ WARNING: at kernel/exit.c:907 do_exit+0x50c/0x628() Modules linked in: Backtrace: [<c003a3dc>] (dump_backtrace+0x0/0x12c) from [<c003a520>] (dump_stack+0x18/0x1c) r7:00000000 r6:c00493a4 r5:c02794cc r4:0000038b [<c003a508>] (dump_stack+0x0/0x1c) from [<c0046a38>] (warn_slowpath_common+0x4c/0x64) [<c00469ec>] (warn_slowpath_common+0x0/0x64) from [<c0046a68>] (warn_slowpath_null+0x18/0x1c) r7:c7d5fcdf r6:c7c8cc00 r5:00000000 r4:0000000b [<c0046a50>] (warn_slowpath_null+0x0/0x1c) from [<c00493a4>] (do_exit+0x50c/0x628) [<c0048e98>] (do_exit+0x0/0x628) from [<c003a7bc>] (die+0x27c/0x2b4) [<c003a540>] (die+0x0/0x2b4) from [<c003be7c>] (__do_kernel_fault+0x6c/0x8c) [<c003be10>] (__do_kernel_fault+0x0/0x8c) from [<c003c108>] (do_page_fault+0x198/0x1d8) r8:00000000 r7:00010000 r6:c7d341b4 r5:c7d34180 r4:c7d33d74 [<c003bf70>] (do_page_fault+0x0/0x1d8) from [<c0036210>] (do_DataAbort+0x40/0xa8) [<c00361d0>] (do_DataAbort+0x0/0xa8) from [<c0036a80>] (__dabt_svc+0x40/0x60) Exception stack(0xc7d5fe18 to 0xc7d5fe60) fe00: 0000002f 000019c2 fe20: 60000013 00000000 c7819870 c7819878 c7d5feb4 00000003 c7d5feb4 00000000 fe40: 00000003 c7d5fe6c c7d5fd98 c7d5fe60 c004760c c003a1ac 60000013 ffffffff r8:c7d5feb4 r7:00000003 r6:c7d5feb4 r5:c7d5fe4c r4:ffffffff [<c003a18c>] (__bug+0x0/0x2c) from [<c00fb2f0>] (logfs_clear_inode+0x8c/0xb0) [<c00fb264>] (logfs_clear_inode+0x0/0xb0) from [<c00ad358>] (clear_inode+0xac/0x114) [<c00ad2ac>] (clear_inode+0x0/0x114) from [<c00ad3e4>] (dispose_list+0x24/0xf0) r4:c7819870 [<c00ad3c0>] (dispose_list+0x0/0xf0) from [<c00ad5a8>] (invalidate_inodes+0xf8/0x12c) r7:c7d46a64 r6:c7819880 r5:c7d46a54 r4:c7d46a64 [<c00ad4b0>] (invalidate_inodes+0x0/0x12c) from [<c009c8ec>] (generic_shutdown_super+0xb0/0x11c) [<c009c83c>] (generic_shutdown_super+0x0/0x11c) from [<c00feb38>] (logfs_kill_sb+0x48/0xfc) r6:c7d2b880 r5:c7c14000 r4:c7d46a00 [<c00feaf0>] (logfs_kill_sb+0x0/0xfc) from [<c009c740>] (deactivate_super+0x48/0x60) r6:c7d2b880 r5:c02b7b84 r4:c7d46a00 [<c009c6f8>] (deactivate_super+0x0/0x60) from [<c00b0bd0>] (mntput_no_expire+0x64/0xbc) r5:c7d46a00 r4:c7d2b880 [<c00b0b6c>] (mntput_no_expire+0x0/0xbc) from [<c00b1e90>] (sys_umount+0x6c/0x32c) r5:c7d2b898 r4:00000000 [<c00b1e24>] (sys_umount+0x0/0x32c) from [<c00b2164>] (sys_oldumount+0x14/0x18) [<c00b2150>] (sys_oldumount+0x0/0x18) from [<c0036f00>] (ret_fast_syscall+0x0/0x2c) ---[ end trace 979e02c61e92804a ]--- Segmentation fault Today I have to work for money....probably I have no much time to test .... As soon as I can I'm happy to give my contribute to test. Paolo
On Tue, 27 April 2010 13:54:09 +0200, Paolo Minazzi wrote: > > Ok, now it is very better. > My problem now is that logfs does not save files in the following case: > 1) power-off, then power-on (without umount) > 2) sync, then power-off, then power-on (without umount) Ok, I'll have a look. Can we move this and any other logfs problems to a seperate thread? I'd like to leave this one for the sync issues and not spam everyone on Cc: with unrelated bugs. :) Jörn
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index cb4858b..8dd3e46 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -299,7 +299,7 @@ static struct device_type mtd_devtype = { int add_mtd_device(struct mtd_info *mtd) { - int i; + int i, err; if (!mtd->backing_dev_info) { switch (mtd->type) { @@ -322,6 +322,12 @@ int add_mtd_device(struct mtd_info *mtd) if (!mtd_table[i]) { struct mtd_notifier *not; + err = bdi_register(mtd->backing_dev_info, NULL, "mtd%d", + i); + if (err) { + /* We lose the errno information :( */ + break; + } mtd_table[i] = mtd; mtd->index = i; mtd->usecount = 0; @@ -692,6 +698,15 @@ static int __init init_mtd(void) int ret; ret = class_register(&mtd_class); + ret = bdi_init(&mtd_bdi_unmappable); + if (ret) + return ret; + ret = bdi_init(&mtd_bdi_ro_mappable); + if (ret) + return ret; + ret = bdi_init(&mtd_bdi_rw_mappable); + if (ret) + return ret; if (ret) { pr_err("Error registering mtd class: %d\n", ret); return ret;
Otherwise we hit a BUG_ON in bdi_queue_work(). Signed-off-by: Joern Engel <joern@logfs.org> --- drivers/mtd/mtdcore.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)