UBIFS: problems writing to the partition
Alemao
xcarandiru at gmail.com
Wed Nov 25 07:03:59 EST 2009
Hi all,
I have de following scenario:
- Freescale MPC8541
- U-Boot-2009.03
- Linux-2.6.26
- NAND flash 512Mbit (64MB), page: 512 bytes, erase block: 16KB
And Im creating UBI image with this parameters:
mkfs.ubifs -r rootfs/ -m 512 -c 3897 -e 15872 -o ubi.temp
ubinize -o rootfs.ubifs -m 512 -p 16384 -s 256 ubinize.cfg
My ubinize.cfg
[ubifs]
mode=ubi
image=ubi.temp
vol_id=0
vol_size=60MiB
vol_type=dynamic
vol_name=ubipart
vol_alignment=1
vol_flags=autoresize
Im loading the linux kernel from UBIFS partition in U-Boot and
mounting again in kernel with no problem:
# mount -t ubifs -o rw ubi0!ubipart /mnt/nand
UBIFS: mounted UBI device 0, volume 0, name "ubipart"
UBIFS: file system size: 61392896 bytes (59954 KiB, 58 MiB, 3868 LEBs)
UBIFS: journal size: 8015360 bytes (7827 KiB, 7 MiB, 505 LEBs)
UBIFS: media format: 4 (latest is 4)
UBIFS: default compressor: lzo
UBIFS: reserved for root: 0 bytes (0 KiB)
# ls /mnt/nand/
cfg www logs readme.txt
But when I try to write something...
# echo hi > /mnt/nand/hi.txt
UBI error: paranoid_check_peb_vid_hdr: bad VID header CRC at PEB 0,
calculated 0xb730eb2, read 0xffffffff
UBI error: paranoid_check_peb_vid_hdr: paranoid check failed for PEB 0
Call Trace:
[df003c20] [c0006a4c] show_stack+0x50/0x170 (unreliable)
[df003c50] [c01bad88] ubi_io_write+0x258/0x354
[df003c90] [c01b8c34] ubi_eba_write_leb+0xd8/0x654
[df003ce0] [c01b7568] ubi_leb_write+0x11c/0x140
[df003d10] [c011fd28] dbg_leb_write+0xc0/0xe8
[df003d40] [c00ff1ac] ubifs_wbuf_write_nolock+0x338/0x544
[df003d70] [c00f2804] ubifs_jnl_write_data+0x23c/0x2c0
[df003db0] [c00f5510] do_writepage+0xb8/0x1cc
[df003df0] [c0049c3c] __writepage+0x24/0x68
[df003e00] [c004ace0] write_cache_pages+0x1c0/0x334
[df003e90] [c004aecc] do_writepages+0x50/0x78
[df003ea0] [c0044248] __filemap_fdatawrite_range+0x7c/0x98
[df003f00] [c0084520] do_fsync+0x3c/0xb0
[df003f20] [c00845c0] __do_fsync+0x2c/0x50
[df003f40] [c000d134] ret_from_syscall+0x0/0x3c
UBI warning: ubi_eba_write_leb: failed to write data to PEB 0
UBI warning: ubi_ro_mode: switch to read-only mode
UBIFS error (pid 13868): ubifs_wbuf_write_nolock: cannot write 2289
bytes to LEB 2896:0, error -22
Dont know if Im creating the image with the right parameters.
One thing that I notice is that when I DONT load the kernel from UBIFS
in U-Boot, I can write to the partition in kernel with no problem. But
after a reboot, I got some recovery messages:
# mount -t ubifs -o rw ubi0!ubipart /mnt/nand
UBIFS: recovery needed
UBIFS: recovery completed
UBIFS: mounted UBI device 0, volume 0, name "ubipart"
UBIFS: file system size: 61392896 bytes (59954 KiB, 58 MiB, 3868 LEBs)
UBIFS: journal size: 8015360 bytes (7827 KiB, 7 MiB, 505 LEBs)
UBIFS: media format: 4 (latest is 4)
UBIFS: default compressor: lzo
UBIFS: reserved for root: 0 bytes (0 KiB)
Here some messages from UBIFS kernel initialization:
NAND device: Manufacturer ID: 0x20, Chip ID: 0x76 (ST Micro NAND 64MiB
3,3V 8-bit)
Scanning device for bad blocks
Creating 1 MTD partitions on "60000000.nand":
0x00000000-0x04000000 : "ubipart"
UBI: attaching mtd3 to ubi0
UBI: physical eraseblock size: 16384 bytes (16 KiB)
UBI: logical eraseblock size: 15872 bytes
UBI: smallest flash I/O unit: 512
UBI: sub-page size: 256
UBI: VID header offset: 256 (aligned 256)
UBI: data offset: 512
UBI: attached mtd3 to ubi0
UBI: MTD device name: "ubipart"
UBI: MTD device size: 64 MiB
UBI: number of good PEBs: 4096
UBI: number of bad PEBs: 0
UBI: max. allowed volumes: 92
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 1
UBI: available PEBs: 0
UBI: total number of reserved PEBs: 4096
UBI: number of PEBs reserved for bad PEB handling: 40
UBI: max/mean erase counter: 2/0
And my bootargs (U-Boot):
root=/dev/ram rw console=ttyS0,115200 ubi.mtd=3
or
root=/dev/ram console=ttyS0,115200 ubi.mtd=3
Any ideas about what could be happening?
Thanks in advance,
--
Alemao
More information about the linux-mtd
mailing list