* ubi_wl_get_peb: Unable to get a free PEB from user WL pool
@ 2015-08-05 21:22 Jörg Krause
2015-08-05 21:30 ` Richard Weinberger
0 siblings, 1 reply; 12+ messages in thread
From: Jörg Krause @ 2015-08-05 21:22 UTC (permalink / raw)
To: linux-mtd; +Cc: Richard Weinberger
Hi,
after updating a custom build Linux Kernel from 4.0.8 to 4.1.4 my
system fails to attach an MTD partition. Note, that everything worked
fine with Linux Kernels before 4.1.
The error message is:
ubi_wl_get_peb: Unable to get a free PEB from user WL pool
autoresize: cannot auto-resize volume 0
The MTD partition has a size of 36 MB. The UBIFS image is created with:
mkfs.ubifs -v -F -m 2048 -e 124KiB -c 264 -d user -o user.ubifs
The UBI image is created with:
ubinize -v -o data.ubi -m 2048 -p 128KiB ubinize.ini
ubinize.ini:
[user]
mode=ubi
image=user.ubifs
vol_id=0
vol_type=dynamic
vol_name=user
vol_flags=autoresize
It works, if I replace the vol_flags with vol_size=32480KiB. But that's
not a final solution for me.
Any idea what is wrong here?
Best regards
Jörg Krause
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-05 21:22 ubi_wl_get_peb: Unable to get a free PEB from user WL pool Jörg Krause @ 2015-08-05 21:30 ` Richard Weinberger 2015-08-05 21:38 ` Jörg Krause 0 siblings, 1 reply; 12+ messages in thread From: Richard Weinberger @ 2015-08-05 21:30 UTC (permalink / raw) To: Jörg Krause, linux-mtd Jörg, Am 05.08.2015 um 23:22 schrieb Jörg Krause: > Hi, > > after updating a custom build Linux Kernel from 4.0.8 to 4.1.4 my > system fails to attach an MTD partition. Note, that everything worked > fine with Linux Kernels before 4.1. UBI Fastmap saw a lot of changes in 4.1. > The error message is: > ubi_wl_get_peb: Unable to get a free PEB from user WL pool > autoresize: cannot auto-resize volume 0 Can you please share the full kernel log? Especially I'm interested in the fastmap pool sizes. > The MTD partition has a size of 36 MB. The UBIFS image is created with: > mkfs.ubifs -v -F -m 2048 -e 124KiB -c 264 -d user -o user.ubifs > > The UBI image is created with: > ubinize -v -o data.ubi -m 2048 -p 128KiB ubinize.ini > > ubinize.ini: > [user] > mode=ubi > image=user.ubifs > vol_id=0 > vol_type=dynamic > vol_name=user > vol_flags=autoresize > > > It works, if I replace the vol_flags with vol_size=32480KiB. But that's > not a final solution for me. > > Any idea what is wrong here? Not sure. Maybe fastmap claims too much PEBs. BTW: Are you actually using fastmap or is it just enabled in your kernel config? Thanks, //richard ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-05 21:30 ` Richard Weinberger @ 2015-08-05 21:38 ` Jörg Krause 2015-08-05 21:45 ` Richard Weinberger 0 siblings, 1 reply; 12+ messages in thread From: Jörg Krause @ 2015-08-05 21:38 UTC (permalink / raw) To: Richard Weinberger, linux-mtd [-- Attachment #1: Type: text/plain, Size: 1423 bytes --] On Mi, 2015-08-05 at 23:30 +0200, Richard Weinberger wrote: > Jörg, > > Am 05.08.2015 um 23:22 schrieb Jörg Krause: > > Hi, > > > > after updating a custom build Linux Kernel from 4.0.8 to 4.1.4 my > > system fails to attach an MTD partition. Note, that everything > > worked > > fine with Linux Kernels before 4.1. > > UBI Fastmap saw a lot of changes in 4.1. > > > The error message is: > > ubi_wl_get_peb: Unable to get a free PEB from user WL pool > > autoresize: cannot auto-resize volume 0 > > Can you please share the full kernel log? > Especially I'm interested in the fastmap pool sizes. I attached the kernel boot log. > > > The MTD partition has a size of 36 MB. The UBIFS image is created > > with: > > mkfs.ubifs -v -F -m 2048 -e 124KiB -c 264 -d user -o user.ubifs > > > > The UBI image is created with: > > ubinize -v -o data.ubi -m 2048 -p 128KiB ubinize.ini > > > > ubinize.ini: > > [user] > > mode=ubi > > image=user.ubifs > > vol_id=0 > > vol_type=dynamic > > vol_name=user > > vol_flags=autoresize > > > > > > It works, if I replace the vol_flags with vol_size=32480KiB. But > > that's > > not a final solution for me. > > > > Any idea what is wrong here? > > Not sure. Maybe fastmap claims too much PEBs. > BTW: Are you actually using fastmap or is it just enabled in your > kernel config? It is enabled in the kernel config. Not sure how to use it. [-- Attachment #2: kernel.log --] [-- Type: text/x-log, Size: 11285 bytes --] Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.1.4-LINTECH (joerg@nzxt) (gcc version 4.9.2 (Buildroot 2015.05-00046-gbab9d23) ) #3 PREEMPT Wed Aug 5 22:04:07 CEST 2015 [ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f [ 0.000000] CPU: VIVT data cache, VIVT instruction cache [ 0.000000] Machine model: HBM10 [ 0.000000] Memory policy: Data cache writeback [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 [ 0.000000] Kernel command line: console=ttyAMA0,115200n8 mtdparts=gpmi-nand:1m(bootarea)ro,1m(uboot-0),1m(uboot-1),512k(env-0),512k(env-1),44m(ubi-0),44m(ubi-1),-(data) ubi.mtd=ubi-0 ubi.mtd=data root=ubi0:rootfs rootfstype=ubifs init=/etc/preinit [ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes) [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Memory: 50632K/65536K available (4352K kernel code, 189K rwdata, 1284K rodata, 160K init, 8180K bss, 14904K reserved, 0K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xc4800000 - 0xff000000 ( 936 MB) [ 0.000000] lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0xc0008000 - 0xc0589488 (5638 kB) [ 0.000000] .init : 0xc058a000 - 0xc05b2000 ( 160 kB) [ 0.000000] .data : 0xc05b2000 - 0xc05e1520 ( 190 kB) [ 0.000000] .bss : 0xc05e1520 - 0xc0dde8e8 (8181 kB) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Running RCU self tests [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] RCU lockdep checking is enabled. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] clocksource mxs_timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000034] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns [ 0.001969] Console: colour dummy device 80x30 [ 0.002162] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.002202] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.002229] ... MAX_LOCK_DEPTH: 48 [ 0.002254] ... MAX_LOCKDEP_KEYS: 8191 [ 0.002278] ... CLASSHASH_SIZE: 4096 [ 0.002300] ... MAX_LOCKDEP_ENTRIES: 32768 [ 0.002321] ... MAX_LOCKDEP_CHAINS: 65536 [ 0.002342] ... CHAINHASH_SIZE: 32768 [ 0.002363] memory used by lock dependency info: 5167 kB [ 0.002385] per task-struct memory footprint: 1152 bytes [ 0.002534] Calibrating delay loop... 226.09 BogoMIPS (lpj=1130496) [ 0.071381] pid_max: default: 32768 minimum: 301 [ 0.072129] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.072202] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.079918] CPU: Testing write buffer coherency: ok [ 0.084088] Setting up static identity map for 0x40008400 - 0x4000843c [ 0.103232] devtmpfs: initialized [ 0.180916] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.183255] pinctrl core: initialized pinctrl subsystem [ 0.198783] NET: Registered protocol family 16 [ 0.201468] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.296268] Serial: AMBA PL011 UART driver [ 0.298942] 80074000.serial: ttyAMA0 at MMIO 0x80074000 (irq = 217, base_baud = 0) is a PL011 rev2 [ 0.631046] console [ttyAMA0] enabled [ 0.734071] mxs-dma 80004000.dma-apbh: initialized [ 0.750960] mxs-dma 80024000.dma-apbx: initialized [ 0.764478] SCSI subsystem initialized [ 0.771368] usbcore: registered new interface driver usbfs [ 0.777557] usbcore: registered new interface driver hub [ 0.783926] usbcore: registered new device driver usb [ 0.790908] pps_core: LinuxPPS API ver. 1 registered [ 0.796076] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.805534] PTP clock support registered [ 0.812673] Advanced Linux Sound Architecture Driver Initialized. [ 0.834663] cfg80211: Calling CRDA to update world regulatory domain [ 0.842645] Switched to clocksource mxs_timer [ 0.853273] FS-Cache: Loaded [ 0.942972] NET: Registered protocol family 2 [ 0.954757] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.962103] TCP bind hash table entries: 1024 (order: 3, 36864 bytes) [ 0.969678] TCP: Hash tables configured (established 1024 bind 1024) [ 0.976755] UDP hash table entries: 256 (order: 2, 20480 bytes) [ 0.983415] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) [ 0.992337] NET: Registered protocol family 1 [ 1.006574] futex hash table entries: 256 (order: 1, 11264 bytes) [ 1.089972] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.107920] io scheduler noop registered [ 1.111986] io scheduler deadline registered (default) [ 1.126181] 8006a000.serial: ttyAPP0 at MMIO 0x8006a000 (irq = 216, base_baud = 1500000) is a 8006a000.serial [ 1.138907] mxs-auart 8006a000.serial: Found APPUART 3.1.0 [ 1.156861] nand: device found, Manufacturer ID: 0x98, Chip ID: 0xd1 [ 1.163615] nand: Toshiba NAND 128MiB 3,3V 8-bit [ 1.168303] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64 [ 1.176321] Scanning device for bad blocks [ 1.691736] 8 cmdlinepart partitions found on MTD device gpmi-nand [ 1.698116] Creating 8 MTD partitions on "gpmi-nand": [ 1.703405] 0x000000000000-0x000000100000 : "bootarea" [ 1.714550] 0x000000100000-0x000000200000 : "uboot-0" [ 1.723032] 0x000000200000-0x000000300000 : "uboot-1" [ 1.731396] 0x000000300000-0x000000380000 : "env-0" [ 1.739509] 0x000000380000-0x000000400000 : "env-1" [ 1.747783] 0x000000400000-0x000003000000 : "ubi-0" [ 1.756140] 0x000003000000-0x000005c00000 : "ubi-1" [ 1.764477] 0x000005c00000-0x000008000000 : "data" [ 1.772887] gpmi-nand 8000c000.gpmi-nand: driver registered. [ 1.915269] libphy: fec_enet_mii_bus: probed [ 1.926575] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.934308] usbcore: registered new interface driver usb-storage [ 1.967053] stmp3xxx-rtc 80056000.rtc: rtc core: registered 80056000.rtc as rtc0 [ 1.976118] i2c /dev entries driver [ 1.984726] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: initialized watchdog with heartbeat 19s [ 2.032982] mxs-mmc 80014000.ssp: initialized [ 2.067296] usbcore: registered new interface driver usbhid [ 2.073433] usbhid: USB HID core driver [ 2.107226] mmc0: new high speed SDIO card at address 0001 [ 2.128583] mxs-wm8524 sound: wm8524-hifi <-> 80042000.saif mapping ok [ 2.136388] mxs-wm8524 sound: wm8524-hifi <-> 80046000.saif mapping ok [ 2.159350] ipip: IPv4 over IPv4 tunneling driver [ 2.175604] NET: Registered protocol family 10 [ 2.193551] sit: IPv6 over IPv4 tunneling driver [ 2.204237] NET: Registered protocol family 17 [ 2.210472] Key type dns_resolver registered [ 2.220794] registered taskstats version 1 [ 2.235005] ubi0: default fastmap pool size: 15 [ 2.239602] ubi0: default fastmap WL pool size: 7 [ 2.244822] ubi0: attaching mtd5 [ 3.075916] ubi0: scanning is finished [ 3.107807] ubi0 warning: print_rsvd_warning: cannot reserve enough PEBs for bad PEB handling, reserved 18, need 20 [ 3.136509] ubi0: attached mtd5 (name "ubi-0", size 44 MiB) [ 3.142148] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 3.149309] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 3.156278] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 3.163403] ubi0: good PEBs: 352, bad PEBs: 0, corrupted PEBs: 0 [ 3.169462] ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128 [ 3.176838] ubi0: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 1409686509 [ 3.186128] ubi0: available PEBs: 0, total reserved PEBs: 352, PEBs reserved for bad PEB handling: 18 [ 3.195855] ubi0: background thread "ubi_bgt0d" started, PID 41 [ 3.202421] ubi1: default fastmap pool size: 10 [ 3.207174] ubi1: default fastmap WL pool size: 5 [ 3.211950] ubi1: attaching mtd7 [ 3.570120] ubi1: scanning is finished [ 3.608408] ubi1 error: ubi_wl_get_peb: Unable to get a free PEB from user WL pool [ 3.616304] ubi1 error: autoresize: cannot auto-resize volume 0 [ 3.625328] UBI error: cannot attach mtd7 [ 3.636199] input: gpio-keys as /devices/soc0/gpio-keys/input/input0 [ 3.645160] random: nonblocking pool is initialized [ 3.656902] stmp3xxx-rtc 80056000.rtc: setting system clock to 1970-01-01 00:01:20 UTC (80) [ 3.720212] ALSA device list: [ 3.723413] #0: mxs_wm8524 [ 3.730930] uart-pl011 80074000.serial: no DMA platform data [ 4.014974] cfg80211: Calling CRDA to update world regulatory domain [ 4.034577] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "rootfs", R/O mode [ 4.043245] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes [ 4.053361] UBIFS (ubi0:1): FS size: 40378368 bytes (38 MiB, 318 LEBs), journal size 5586944 bytes (5 MiB, 44 LEBs) [ 4.063960] UBIFS (ubi0:1): reserved for root: 0 bytes (0 KiB) [ 4.069859] UBIFS (ubi0:1): media format: w4/r0 (latest is w4/r0), UUID 3F6F3705-5F75-41A9-98C0-9FFF1CC2B9FB, small LPT model [ 4.091395] VFS: Mounted root (ubifs filesystem) readonly on device 0:13. [ 4.108972] devtmpfs: mounted [ 4.113768] Freeing unused kernel memory: 160K (c058a000 - c05b2000) [ 4.526339] UBIFS error (pid: 42): cannot open "/dev/ubi1_0", error -22mount: mounting /dev/ubi1_0 on /mnt/user failed: Invalid argument mkdir: can't create directory '/mnt/user/overlay': Read-only file system mkdir: can't create directory '/mnt/user/work': Read-only file system [ 4.642034] overlayfs: failed to resolve '/mnt/user/overlay': -2 mount: mounting overlay on /mnt/overlay failed: No such file or directory mount: mounting /dev on /mnt/overlay/dev failed: No such file or directory mount: mounting /mnt/user on /mnt/overlay/mnt/user failed: No such file or directory chroot: can't execute '/sbin/init': No such file or directory [ 4.728498] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 [ 4.728498] [ 4.737710] CPU: 0 PID: 1 Comm: chroot Not tainted 4.1.4-LINTECH #3 [ 4.744005] Hardware name: Freescale MXS (Device Tree) [ 4.749232] [<c000eacc>] (unwind_backtrace) from [<c000ce34>] (show_stack+0x10/0x14) [ 4.757044] [<c000ce34>] (show_stack) from [<c041f9bc>] (panic+0x98/0x200) [ 4.763988] [<c041f9bc>] (panic) from [<c00188bc>] (do_exit+0x89c/0x8d4) [ 4.770742] [<c00188bc>] (do_exit) from [<c0019cd4>] (do_group_exit+0x3c/0xbc) [ 4.778020] [<c0019cd4>] (do_group_exit) from [<c0019d64>] (__wake_up_parent+0x0/0x18) [ 4.786141] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-05 21:38 ` Jörg Krause @ 2015-08-05 21:45 ` Richard Weinberger 2015-08-05 21:53 ` Jörg Krause 0 siblings, 1 reply; 12+ messages in thread From: Richard Weinberger @ 2015-08-05 21:45 UTC (permalink / raw) To: Jörg Krause, linux-mtd Jörg, Am 05.08.2015 um 23:38 schrieb Jörg Krause: > On Mi, 2015-08-05 at 23:30 +0200, Richard Weinberger wrote: >> Jörg, >> >> Am 05.08.2015 um 23:22 schrieb Jörg Krause: >>> Hi, >>> >>> after updating a custom build Linux Kernel from 4.0.8 to 4.1.4 my >>> system fails to attach an MTD partition. Note, that everything >>> worked >>> fine with Linux Kernels before 4.1. >> >> UBI Fastmap saw a lot of changes in 4.1. >> >>> The error message is: >>> ubi_wl_get_peb: Unable to get a free PEB from user WL pool >>> autoresize: cannot auto-resize volume 0 >> >> Can you please share the full kernel log? >> Especially I'm interested in the fastmap pool sizes. > > I attached the kernel boot log. Thanks. That's a really small UBI setup. [ 3.202421] ubi1: default fastmap pool size: 10 [ 3.207174] ubi1: default fastmap WL pool size: 5 >> >>> The MTD partition has a size of 36 MB. The UBIFS image is created >>> with: >>> mkfs.ubifs -v -F -m 2048 -e 124KiB -c 264 -d user -o user.ubifs >>> >>> The UBI image is created with: >>> ubinize -v -o data.ubi -m 2048 -p 128KiB ubinize.ini >>> >>> ubinize.ini: >>> [user] >>> mode=ubi >>> image=user.ubifs >>> vol_id=0 >>> vol_type=dynamic >>> vol_name=user >>> vol_flags=autoresize >>> >>> >>> It works, if I replace the vol_flags with vol_size=32480KiB. But >>> that's >>> not a final solution for me. >>> >>> Any idea what is wrong here? >> >> Not sure. Maybe fastmap claims too much PEBs. >> BTW: Are you actually using fastmap or is it just enabled in your >> kernel config? > > It is enabled in the kernel config. Not sure how to use it. Then just disable it. :) Meanwhile I'll find out what exactly is going on. Thanks, //richard ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-05 21:45 ` Richard Weinberger @ 2015-08-05 21:53 ` Jörg Krause 2015-08-05 22:01 ` Richard Weinberger 0 siblings, 1 reply; 12+ messages in thread From: Jörg Krause @ 2015-08-05 21:53 UTC (permalink / raw) To: Richard Weinberger, linux-mtd On Mi, 2015-08-05 at 23:45 +0200, Richard Weinberger wrote: > Jörg, > > Am 05.08.2015 um 23:38 schrieb Jörg Krause: > > On Mi, 2015-08-05 at 23:30 +0200, Richard Weinberger wrote: [snip] > > > > I attached the kernel boot log. > > Thanks. > That's a really small UBI setup. > [ 3.202421] ubi1: default fastmap pool size: 10 > [ 3.207174] ubi1: default fastmap WL pool size: 5 What do you exactly mean by small UBI setup? The fastmap pool size? The UBI layout? [snip] > > > > It is enabled in the kernel config. Not sure how to use it. > > Then just disable it. :) I did :) I thought fastmap is used automatically by the UBI driver? > Meanwhile I'll find out what exactly is going on. Many thanks! ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-05 21:53 ` Jörg Krause @ 2015-08-05 22:01 ` Richard Weinberger 2015-08-05 22:17 ` Jörg Krause 0 siblings, 1 reply; 12+ messages in thread From: Richard Weinberger @ 2015-08-05 22:01 UTC (permalink / raw) To: Jörg Krause, linux-mtd [-- Attachment #1: Type: text/plain, Size: 1126 bytes --] Am 05.08.2015 um 23:53 schrieb Jörg Krause: > On Mi, 2015-08-05 at 23:45 +0200, Richard Weinberger wrote: >> Jörg, >> >> Am 05.08.2015 um 23:38 schrieb Jörg Krause: >>> On Mi, 2015-08-05 at 23:30 +0200, Richard Weinberger wrote: > > [snip] > >>> >>> I attached the kernel boot log. >> >> Thanks. >> That's a really small UBI setup. >> [ 3.202421] ubi1: default fastmap pool size: 10 >> [ 3.207174] ubi1: default fastmap WL pool size: 5 > > What do you exactly mean by small UBI setup? The fastmap pool size? The > UBI layout? The UBI image it self. Your MTD is very small. But it should not matter. > [snip] > >>> >>> It is enabled in the kernel config. Not sure how to use it. >> >> Then just disable it. :) > > I did :) I thought fastmap is used automatically by the UBI driver? It will *use* fastmap automatically but not convert non-fastmap UBI images to fastmap. You can enable ubi.fm_autoconvert to do so. >> Meanwhile I'll find out what exactly is going on. > > Many thanks! Can you please apply the attached debug patch? I wonder why exactly the auto resize function is failing. Thanks, //richard [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: debug.diff --] [-- Type: text/x-patch; name="debug.diff", Size: 1012 bytes --] diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c index 22fd19c..89aa7ac9 100644 --- a/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c @@ -820,8 +820,8 @@ static int autoresize(struct ubi_device *ubi, int vol_id) err = ubi_resize_volume(&desc, old_reserved_pebs + ubi->avail_pebs); if (err) - ubi_err(ubi, "cannot auto-resize volume %d", - vol_id); + ubi_err(ubi, "cannot auto-resize volume %d: %d", + vol_id, err); } if (err) diff --git a/drivers/mtd/ubi/vmt.c b/drivers/mtd/ubi/vmt.c index 1ae17bb..7be6fa3 100644 --- a/drivers/mtd/ubi/vmt.c +++ b/drivers/mtd/ubi/vmt.c @@ -498,8 +498,10 @@ int ubi_resize_volume(struct ubi_volume_desc *desc, int reserved_pebs) if (pebs < 0) { for (i = 0; i < -pebs; i++) { err = ubi_eba_unmap_leb(ubi, vol, reserved_pebs + i); - if (err) + if (err) { + ubi_err(ubi, "unable to unmap LEB"); goto out_acc; + } } spin_lock(&ubi->volumes_lock); ubi->rsvd_pebs += pebs; ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-05 22:01 ` Richard Weinberger @ 2015-08-05 22:17 ` Jörg Krause 2015-08-06 7:30 ` Richard Weinberger 0 siblings, 1 reply; 12+ messages in thread From: Jörg Krause @ 2015-08-05 22:17 UTC (permalink / raw) To: Richard Weinberger, linux-mtd On Do, 2015-08-06 at 00:01 +0200, Richard Weinberger wrote: > Am 05.08.2015 um 23:53 schrieb Jörg Krause: > > On Mi, 2015-08-05 at 23:45 +0200, Richard Weinberger wrote: > > > Jörg, > > > > > > Am 05.08.2015 um 23:38 schrieb Jörg Krause: > > > > On Mi, 2015-08-05 at 23:30 +0200, Richard Weinberger wrote: > > > > [snip] > > > > > > > > > > I attached the kernel boot log. > > > > > > Thanks. > > > That's a really small UBI setup. > > > [ 3.202421] ubi1: default fastmap pool size: 10 > > > [ 3.207174] ubi1: default fastmap WL pool size: 5 > > > > What do you exactly mean by small UBI setup? The fastmap pool size? > > The > > UBI layout? > > The UBI image it self. Your MTD is very small. > But it should not matter. > > > [snip] > > > > > > > > > > It is enabled in the kernel config. Not sure how to use it. > > > > > > Then just disable it. :) > > > > I did :) I thought fastmap is used automatically by the UBI driver? > > It will *use* fastmap automatically but not convert non-fastmap UBI > images > to fastmap. > You can enable ubi.fm_autoconvert to do so. Sorry for asking, but how do I create an UBI image with fastmap support? I've never read something about this. > > > Meanwhile I'll find out what exactly is going on. > > > > Many thanks! > > Can you please apply the attached debug patch? > I wonder why exactly the auto resize function is failing. autoresize: cannot auto-resize volume 0: -28 Jörg ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-05 22:17 ` Jörg Krause @ 2015-08-06 7:30 ` Richard Weinberger 2015-08-06 8:10 ` Jörg Krause 0 siblings, 1 reply; 12+ messages in thread From: Richard Weinberger @ 2015-08-06 7:30 UTC (permalink / raw) To: Jörg Krause, linux-mtd [-- Attachment #1: Type: text/plain, Size: 1691 bytes --] Jörg, Am 06.08.2015 um 00:17 schrieb Jörg Krause: >>>> Then just disable it. :) >>> >>> I did :) I thought fastmap is used automatically by the UBI driver? >> >> It will *use* fastmap automatically but not convert non-fastmap UBI >> images >> to fastmap. >> You can enable ubi.fm_autoconvert to do so. > > Sorry for asking, but how do I create an UBI image with fastmap > support? I've never read something about this. You have to use the ubi.fm_autoconvert parameter. The UBI will automatically write down a fastmap if needed. Currently it is not possible to create a fastmap-enabled UBI image using ubinize. The reason is that fastmap stores the LEB->PEB mappings to allow a fast attach. ubinize cannot know which PEBs are bad. So, we'd need a tool which creates the fastmap while flashing to the nand. >>>> Meanwhile I'll find out what exactly is going on. >>> >>> Many thanks! >> >> Can you please apply the attached debug patch? >> I wonder why exactly the auto resize function is failing. > > autoresize: cannot auto-resize volume 0: -28 I have good and bad news. The good news is that I know what is going on, the bad one is that I don't have an good solution for it. UBI is requesting a new PEB but your system is still busy with erasing them. With fastmap disabled UBI can use produce_free_peb() and wait for a new erased PEB. But fastmap cannot use this helper as it releases ->wl_lock and would lead to a inconsistent fastmap state. Kernels < 4.1 did so and faced interesting fastmap corruptions. I hoped using the current retry logic the issue you're facing cannot happen. But as it seems I was wrong. Can you please give the attached patch a try? Thanks, //richard [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: dirty_hack.diff --] [-- Type: text/x-patch; name="dirty_hack.diff", Size: 509 bytes --] diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c index b2a6653..e47974d 100644 --- a/drivers/mtd/ubi/fastmap-wl.c +++ b/drivers/mtd/ubi/fastmap-wl.c @@ -206,12 +206,12 @@ again: if (pool->used == pool->size) { spin_unlock(&ubi->wl_lock); - if (retried) { + if (retried > 5) { ubi_err(ubi, "Unable to get a free PEB from user WL pool"); ret = -ENOSPC; goto out; } - retried = 1; + retried++; up_read(&ubi->fm_eba_sem); goto again; } ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-06 7:30 ` Richard Weinberger @ 2015-08-06 8:10 ` Jörg Krause 2015-08-06 8:12 ` Richard Weinberger 2015-08-06 18:16 ` Richard Weinberger 0 siblings, 2 replies; 12+ messages in thread From: Jörg Krause @ 2015-08-06 8:10 UTC (permalink / raw) To: Richard Weinberger, linux-mtd On Do, 2015-08-06 at 09:30 +0200, Richard Weinberger wrote: > Jörg, > > Am 06.08.2015 um 00:17 schrieb Jörg Krause: > > > > > Then just disable it. :) > > > > > > > > I did :) I thought fastmap is used automatically by the UBI > > > > driver? > > > > > > It will *use* fastmap automatically but not convert non-fastmap > > > UBI > > > images > > > to fastmap. > > > You can enable ubi.fm_autoconvert to do so. > > > > Sorry for asking, but how do I create an UBI image with fastmap > > support? I've never read something about this. > > You have to use the ubi.fm_autoconvert parameter. The UBI will > automatically > write down a fastmap if needed. > > Currently it is not possible to create a fastmap-enabled UBI image > using ubinize. > The reason is that fastmap stores the LEB->PEB mappings to allow > a fast attach. ubinize cannot know which PEBs are bad. > So, we'd need a tool which creates the fastmap while flashing to the > nand. > I see! > > > > > Meanwhile I'll find out what exactly is going on. > > > > > > > > Many thanks! > > > > > > Can you please apply the attached debug patch? > > > I wonder why exactly the auto resize function is failing. > > > > autoresize: cannot auto-resize volume 0: -28 > > I have good and bad news. > The good news is that I know what is going on, the bad one > is that I don't have an good solution for it. > > UBI is requesting a new PEB but your system is still busy with > erasing them. With fastmap disabled UBI can use produce_free_peb() > and wait for a new erased PEB. > But fastmap cannot use this helper as it releases ->wl_lock > and would lead to a inconsistent fastmap state. > Kernels < 4.1 did so and faced interesting fastmap corruptions. > I hoped using the current retry logic the issue you're facing cannot > happen. But as it seems I was wrong. > > Can you please give the attached patch a try? > I tried the "dirty hack", but it does not solves the problem. I also tested with 100 retries, but the error remains. I will turn fastmap off for now, but feel free to send more patches to try. Jörg ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-06 8:10 ` Jörg Krause @ 2015-08-06 8:12 ` Richard Weinberger 2015-08-06 18:16 ` Richard Weinberger 1 sibling, 0 replies; 12+ messages in thread From: Richard Weinberger @ 2015-08-06 8:12 UTC (permalink / raw) To: Jörg Krause, linux-mtd Am 06.08.2015 um 10:10 schrieb Jörg Krause: > I tried the "dirty hack", but it does not solves the problem. I also > tested with 100 retries, but the error remains. > > I will turn fastmap off for now, but feel free to send more patches to > try. Okay. Maybe you're facing something completely different. Let me cook a more advanced debug patch to find out what is going on. LG, //richard ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-06 8:10 ` Jörg Krause 2015-08-06 8:12 ` Richard Weinberger @ 2015-08-06 18:16 ` Richard Weinberger 2015-08-06 18:43 ` Jörg Krause 1 sibling, 1 reply; 12+ messages in thread From: Richard Weinberger @ 2015-08-06 18:16 UTC (permalink / raw) To: Jörg Krause, linux-mtd [-- Attachment #1: Type: text/plain, Size: 191 bytes --] Am 06.08.2015 um 10:10 schrieb Jörg Krause: > I will turn fastmap off for now, but feel free to send more patches to > try. Can you please give the attached patch a try? Thanks, //richard [-- Attachment #2: fastmap_produce_peb.diff --] [-- Type: text/x-patch, Size: 1071 bytes --] diff --git a/drivers/mtd/ubi/fastmap-wl.c b/drivers/mtd/ubi/fastmap-wl.c index b2a6653..bbd30dc 100644 --- a/drivers/mtd/ubi/fastmap-wl.c +++ b/drivers/mtd/ubi/fastmap-wl.c @@ -172,6 +172,30 @@ void ubi_refill_pools(struct ubi_device *ubi) } /** + * produce_free_peb - produce a free physical eraseblock. + * @ubi: UBI device description object + * + * This function tries to make a free PEB by means of synchronous execution of + * pending works. This may be needed if, for example the background thread is + * disabled. Returns zero in case of success and a negative error code in case + * of failure. + */ +static int produce_free_peb(struct ubi_device *ubi) +{ + int err; + + while (!ubi->free.rb_node && ubi->works_count) { + dbg_wl("do one work synchronously"); + err = do_work(ubi); + + if (err) + return err; + } + + return 0; +} + +/** * ubi_wl_get_peb - get a physical eraseblock. * @ubi: UBI device description object * @@ -213,6 +237,7 @@ again: } retried = 1; up_read(&ubi->fm_eba_sem); + produce_free_peb(ubi); goto again; } ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: ubi_wl_get_peb: Unable to get a free PEB from user WL pool 2015-08-06 18:16 ` Richard Weinberger @ 2015-08-06 18:43 ` Jörg Krause 0 siblings, 0 replies; 12+ messages in thread From: Jörg Krause @ 2015-08-06 18:43 UTC (permalink / raw) To: Richard Weinberger, linux-mtd On Do, 2015-08-06 at 20:16 +0200, Richard Weinberger wrote: > Am 06.08.2015 um 10:10 schrieb Jörg Krause: > > I will turn fastmap off for now, but feel free to send more patches > > to > > try. > > Can you please give the attached patch a try? > Congratulations! That fix it :-) Here is the corresponding snap from the kernel log: [ 3.175194] ubi1: default fastmap pool size: 10 [ 3.179937] ubi1: default fastmap WL pool size: 5 [ 3.184713] ubi1: attaching mtd7 [ 3.539869] ubi1: scanning is finished [ 3.623707] ubi1: volume 0 ("user") re-sized from 13 to 262 LEBs [ 3.634937] ubi1: attached mtd7 (name "data", size 36 MiB) [ 3.640722] ubi1: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes [ 3.647772] ubi1: min./max. I/O unit sizes: 2048/2048, sub-page size 2048 [ 3.654611] ubi1: VID header offset: 2048 (aligned 2048), data offset: 4096 [ 3.661714] ubi1: good PEBs: 288, bad PEBs: 0, corrupted PEBs: 0 [ 3.667890] ubi1: user volume: 1, internal volumes: 1, max. volumes count: 128 [ 3.675168] ubi1: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 1059544151 [ 3.684448] ubi1: available PEBs: 0, total reserved PEBs: 288, PEBs reserved for bad PEB handling: 20 [ 3.693923] ubi1: background thread "ubi_bgt1d" started, PID 42 Many thanks for this! Jörg ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-08-06 18:44 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-08-05 21:22 ubi_wl_get_peb: Unable to get a free PEB from user WL pool Jörg Krause 2015-08-05 21:30 ` Richard Weinberger 2015-08-05 21:38 ` Jörg Krause 2015-08-05 21:45 ` Richard Weinberger 2015-08-05 21:53 ` Jörg Krause 2015-08-05 22:01 ` Richard Weinberger 2015-08-05 22:17 ` Jörg Krause 2015-08-06 7:30 ` Richard Weinberger 2015-08-06 8:10 ` Jörg Krause 2015-08-06 8:12 ` Richard Weinberger 2015-08-06 18:16 ` Richard Weinberger 2015-08-06 18:43 ` Jörg Krause
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox