Skip to contentSkip to conversation

3GB limit? *2* GB limit?!

DISCUSSION Miles Nordin 4 participants 6 messages Feb 4, 2009 – Feb 5, 2009 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

I'm trying to experiment with ubifs on a 16GB USB stick. I've downloaded and built:

~2009-02-01
git://git.infradead.org/~dedekind/ubifs-v2.6.25.git -- full kernel tree. :(
git://git.infradead.org/mtd-utils.git (sys-fs/mtd-utils-9999 in gentoo)

I'm running these commands and getting this output:

-----8<-----

# uname -a
Linux fishstick 2.6.25-gentoo-r8 #2 SMP PREEMPT Wed Feb 4 05:23:36 UTC 2009 i686 AMD Phenom(tm) 9850 Quad-Core Processor AuthenticAMD GNU/Linux
# ls -l /dev/mtd*
ls: cannot access /dev/mtd*: No such file or directory
# modprobe block2mtd block2mtd=/dev/sdj,128KiB
# modprobe mtdchar
# ls -l /dev/mtd*
crw-rw---- 1 root root 90, 0 Feb  4 06:29 /dev/mtd0
crw-rw---- 1 root root 90, 1 Feb  4 06:29 /dev/mtd0ro
fishstick devices # ubiformat /dev/mtd0
ubiformat: mtd0 (RAM-based), size 3246391296 bytes (3.0 GiB), 131072 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 1 bytes
libscan: scanning eraseblock 16384 -- 66 % complete  libmtd: error!: cannot seek mtd0 to offset 18446744071562067968
        error 22 (Invalid argument)
ubiformat: error!: failed to scan mtd0 (/dev/mtd0)
# fdisk /dev/sdj
Device contains neither a valid DOS partition table, nor Sun, SGI 
[...]
Command (m for help): p

Disk /dev/sdj: 16.1 GB, 16131293184 bytes
-----8<-----

sooo.....first, size is 3.0GiB? not 16GiB?

second, ubiformat has 2GB limit? Is this FAT or something---what gives? Have I missed a ``wings stay on'' switch in 'make menuconfig'?

#1 lore raw
Quoted 2 lines · Miles Nordin

I'm trying to experiment with ubifs on a 16GB USB stick. I've downloaded and built:

snip

Quoted 17 lines

-----8<-----

# uname -a
Linux fishstick 2.6.25-gentoo-r8 #2 SMP PREEMPT Wed Feb 4 05:23:36 UTC 2009 i686 AMD Phenom(tm) 9850 Quad-Core Processor AuthenticAMD GNU/Linux
# ls -l /dev/mtd*
ls: cannot access /dev/mtd*: No such file or directory
# modprobe block2mtd block2mtd=/dev/sdj,128KiB
# modprobe mtdchar
# ls -l /dev/mtd*
crw-rw---- 1 root root 90, 0 Feb  4 06:29 /dev/mtd0
crw-rw---- 1 root root 90, 1 Feb  4 06:29 /dev/mtd0ro
fishstick devices # ubiformat /dev/mtd0
ubiformat: mtd0 (RAM-based), size 3246391296 bytes (3.0 GiB), 131072 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 1 bytes
libscan: scanning eraseblock 16384 -- 66 % complete  libmtd: error!: cannot seek mtd0 to offset 18446744071562067968
        error 22 (Invalid argument)
ubiformat: error!: failed to scan mtd0 (/dev/mtd0)
# fdisk /dev/sdj
Device contains neither a valid DOS partition table, nor Sun, SGI 

MTD user-space interface is 32-bit, and is simited by 2GiB. You have to upgrade it to use larger devices.

Signature · 2 lines
Best regards,
Artem Bityutskiy (Битюцкий Артём)
#2 lore raw
Quoted 19 lines · Artem Bityutskiy
Quoted 17 lines · Miles Nordin

-----8<-----

# uname -a
Linux fishstick 2.6.25-gentoo-r8 #2 SMP PREEMPT Wed Feb 4 05:23:36 UTC 2009 i686 AMD Phenom(tm) 9850 Quad-Core Processor AuthenticAMD GNU/Linux
# ls -l /dev/mtd*
ls: cannot access /dev/mtd*: No such file or directory
# modprobe block2mtd block2mtd=/dev/sdj,128KiB
# modprobe mtdchar
# ls -l /dev/mtd*
crw-rw---- 1 root root 90, 0 Feb  4 06:29 /dev/mtd0
crw-rw---- 1 root root 90, 1 Feb  4 06:29 /dev/mtd0ro
fishstick devices # ubiformat /dev/mtd0
ubiformat: mtd0 (RAM-based), size 3246391296 bytes (3.0 GiB), 131072 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 1 bytes
libscan: scanning eraseblock 16384 -- 66 % complete  libmtd: error!: cannot seek mtd0 to offset 18446744071562067968
        error 22 (Invalid argument)
ubiformat: error!: failed to scan mtd0 (/dev/mtd0)
# fdisk /dev/sdj
Device contains neither a valid DOS partition table, nor Sun, SGI
Quoted 2 lines

MTD user-space interface is 32-bit, and is simited by 2GiB. You have to upgrade it to use larger devices.

you mean the MTD user-space code he is currently using, not current MTD user-space in general ?
-mike

#4 lore raw
In reply to Artem Bityutskiy
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"ab" == Artem Bityutskiy <[email protected]> writes:

ab> MTD user-space interface is 32-bit, and is simited by ab> 2GiB. You have to upgrade it to use larger devices.

I am using mtd-tools from git, pulled a couple days ago. or thought I was. What do you mean by upgrade? Do you mean ``redesign the interface and rewrite the tools'' or ``use Linux/amd64'' or ``pull something else from git''?

#3 lore raw
In reply to Mike Frysinger
Quoted 19 lines · Mike Frysinger
Quoted 18 lines · Artem Bityutskiy
Quoted 17 lines · Miles Nordin

-----8<-----

# uname -a
Linux fishstick 2.6.25-gentoo-r8 #2 SMP PREEMPT Wed Feb 4 05:23:36 UTC 2009 i686 AMD Phenom(tm) 9850 Quad-Core Processor AuthenticAMD GNU/Linux
# ls -l /dev/mtd*
ls: cannot access /dev/mtd*: No such file or directory
# modprobe block2mtd block2mtd=/dev/sdj,128KiB
# modprobe mtdchar
# ls -l /dev/mtd*
crw-rw---- 1 root root 90, 0 Feb  4 06:29 /dev/mtd0
crw-rw---- 1 root root 90, 1 Feb  4 06:29 /dev/mtd0ro
fishstick devices # ubiformat /dev/mtd0
ubiformat: mtd0 (RAM-based), size 3246391296 bytes (3.0 GiB), 131072 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 1 bytes
libscan: scanning eraseblock 16384 -- 66 % complete  libmtd: error!: cannot seek mtd0 to offset 18446744071562067968
        error 22 (Invalid argument)
ubiformat: error!: failed to scan mtd0 (/dev/mtd0)
# fdisk /dev/sdj
Device contains neither a valid DOS partition table, nor Sun, SGI
Quoted 8 lines
Quoted 2 lines

MTD user-space interface is 32-bit, and is simited by 2GiB. You have to upgrade it to use larger devices.

you mean the MTD user-space code he is currently using, not current MTD user-space in general ?
-mike

From 2.6.29, the internal MTD API will support 64-bit sizes,

however, presently it only supports 32-bits (probably only 1GiB safely).

However, in any case, the MTD ioctls use unsigned 32-bit integers for sizes, so they must be hacked or 64-bit ioctls added to use MTD's that are 4GiB or over.

#5 lore raw
In reply to Miles Nordin
Quoted 9 lines · Miles Nordin
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"ab" == Artem Bityutskiy <[email protected]> writes:

ab> MTD user-space interface is 32-bit, and is simited by ab> 2GiB. You have to upgrade it to use larger devices.

I am using mtd-tools from git, pulled a couple days ago. or thought I was. What do you mean by upgrade? Do you mean ``redesign the interface and rewrite the tools'' or ``use Linux/amd64'' or ``pull something else from git''?

Miles,

please, glance at the include/mtd/mtd-abi.h file. This file defines the interface between user-space applications and MTD devices. Notice that the "size" field in the "struct mtd_info_user" data structure is 32-bit. So the size of the MTD device is limited by 4GiB. Look at other data structures and notice a similar thing.

Thus, you have to invent a new user-space interface for MTD. Internally, it is 64-bit already. You do not have to have amd64. You have to code, unfortunately.

Signature · 2 lines
Best regards,
Artem Bityutskiy (Битюцкий Артём)