UBIFS Corrupt during power failure

Adrian Hunter adrian.hunter at nokia.com
Tue Mar 24 11:30:17 EDT 2009


Eric Holmberg wrote:
> Using kernel 2.6.27 on NOR flash memory, I'm seeing corruption of UBIFS
> when power is removed from the device during a write to flash.  We are
> doing this as a torture test and it appears that we typically make it
> around 50 power cycles during the Linux boot-up sequence before the
> failure occurs.
> 
> Note that the system runs fine if we do continuous writes, but do an
> orderly shutdown.  Pulling the power during a write or during recovery
> seems to cause this issue.
>  
> Kernel:  2.6.27
> Memory type:  NOR Flash
> Usage pattern:  Robustness testing - removing power during normal
> operation
> Result:  Unable to mount UBIFS resulting in total loss of data
> Write caching:  Enabled
> 
> I'm going to disabled write caching and see if that improves
> reliability.
> 
> My main questions are:
>  1) Is this a known issue

No

>  2) Has this been fixed in 2.6.28

No

>  3) Is there a way to do a recovery

Possibly, but we need more information - see below

>  4) Any other robustness suggestions

Not at the moment

> 
> Thanks,
> 
> Eric Holmberg
> 
> Kernel log: 
>  
> [42949373.970000] Using physmap partition information
> [42949373.970000] Creating 3 MTD partitions on "physmap-flash.1":
> [42949373.980000] 0x00000000-0x00200000 : "kernel"
> [42949373.990000] 0x00200000-0x00400000 : "kernel-failsafe"
> [42949373.990000] 0x00400000-0x02000000 : "root"
> [42949374.010000] UBI: attaching mtd7 to ubi0
> [42949374.010000] UBI: physical eraseblock size:   131072 bytes (128
> KiB)
> [42949374.020000] UBI: logical eraseblock size:    130944 bytes
> [42949374.020000] UBI: smallest flash I/O unit:    1
> [42949374.030000] UBI: VID header offset:          64 (aligned 64)
> [42949374.030000] UBI: data offset:                128
> [42949374.920000] UBI: attached mtd7 to ubi0
> [42949374.930000] UBI: MTD device name:            "root"
> [42949374.930000] UBI: MTD device size:            28 MiB
> [42949374.940000] UBI: number of good PEBs:        224
> [42949374.940000] UBI: number of bad PEBs:         0
> [42949374.950000] UBI: max. allowed volumes:       128
> [42949374.950000] UBI: wear-leveling threshold:    4096
> [42949374.960000] UBI: number of internal volumes: 1
> [42949374.960000] UBI: number of user volumes:     1
> [42949374.970000] UBI: available PEBs:             0
> [42949374.970000] UBI: total number of reserved PEBs: 224
> [42949374.980000] UBI: number of PEBs reserved for bad PEB handling: 0
> [42949374.980000] UBI: max/mean erase counter: 7/2
> ...
> [42949375.450000] UBIFS: recovery needed
> [42949375.510000] UBIFS error (pid 1): ubifs_scan: corrupt empty space
> at LEB 4:44512
> [42949375.510000] UBIFS error (pid 1): ubifs_scanned_corruption:
> corrupted data at LEB 4:44512
> [42949375.540000] UBIFS error (pid 1): ubifs_scan: LEB 4 scanning failed
> [42949375.590000] UBIFS error (pid 1): ubifs_recover_leb: corrupt empty
> space at LEB 4:480
> [42949375.590000] UBIFS error (pid 1): ubifs_scanned_corruption:
> corrupted data at LEB 4:480
> [42949375.620000] UBIFS error (pid 1): ubifs_recover_leb: LEB 4 scanning
> failed
> [42949375.630000] VFS: Cannot open root device "ubi0:rootfs" or
> unknown-block(0,0)
> [42949375.640000] Please append a correct "root=" boot option; here are
> the available partitions:
> [42949375.640000] 1f00         16 mtdblock0 (driver?)
> [42949375.650000] 1f01          8 mtdblock1 (driver?)
> [42949375.650000] 1f02          8 mtdblock2 (driver?)
> [42949375.660000] 1f03         32 mtdblock3 (driver?)
> [42949375.660000] 1f04        960 mtdblock4 (driver?)
> [42949375.670000] 1f05       2048 mtdblock5 (driver?)
> [42949375.670000] 1f06       2048 mtdblock6 (driver?)
> [42949375.680000] 1f07      28672 mtdblock7 (driver?)
> [42949375.680000] Kernel panic - not syncing: VFS: Unable to mount root
> fs on unknown-block(0,0)

Please enable UBIFS debugging and set the UBIFS Default message level to 3.

Or for fewer messages, enable UBIFS debugging and set the kernel command line parameter
ubifs.debug_msgs=6144

And send us the log.

Also, could you tell us what MTD drivers you are using?




More information about the linux-mtd mailing list