linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* mdadm --assemble --scan always fail if bulit with uClibc.
@ 2012-02-27 11:47 Piotr Karbowski
  0 siblings, 0 replies; only message in thread
From: Piotr Karbowski @ 2012-02-27 11:47 UTC (permalink / raw)
  To: linux-raid

Hi there.

There is a weird mdadm problem if build with uClibc. The 'mdadm 
--assemble --scan' always fail with messages about missing superblock 
whatever it is 3.2.3 or latest git code. However exact the same sources 
bulit with glibc does work. In this testcase I am using raid1 array with 
/dev/vdb member and 2nd one marked as missing.

It is 100% reproducable, I am using Aboriginal Linux's root-filesystem 
images (images with bash2, busybox, uclibc and gcc) from 
http://landley.net/code/aboriginal/bin/

heres how it looks like in my initramfs:

remote rescueshell ~ # mdadm --assemble --scan
mdadm: failed to add 252:16 to /dev/md/2: Invalid argument
mdadm: /dev/md/2 assembled from 0 drives - not enough to start the array.
remote rescueshell ~ # mdadm --assemble --scan --verbose
mdadm: looking for devices for /dev/md/2
mdadm: no RAID superblock on 252:3
mdadm: no RAID superblock on 252:2
mdadm: no RAID superblock on 252:1
mdadm: no RAID superblock on 252:0
mdadm: 252:16 is identified as a member of /dev/md/2, slot 0.
mdadm: no uptodate device for slot 1 of /dev/md/2
mdadm: failed to add 252:16 to /dev/md/2: Invalid argument
mdadm: /dev/md/2 assembled from 0 drives - not enough to start the array.


But I can do 'mdadm --assemble /dev/md2 /dev/vdb' it does work, the 
working /dev/md2 is created.


The kernel logs after '--assemble --scan':
md: md2 stopped.
md: vda does not have a valid v1.2 superblock, not importing!
md: md_import_device returned -22

I tried amd64 and i686 binaries (I found a note in Makefile that 
mdadm.udlibc does not work on x86_64), mdassamble print exact the same 
error like mdadm. Also I tried with /dev as devtmpfs and with 
mdev-created nodes on tmpfs mountpoint.

The strace:

### STRACE:
execve("/bin/mdadm", ["/bin/mdadm", "--assemble", "--scan"], [/* 10 vars 
*/]) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo 
...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3dca0) = -1 ENOTTY 
(Inappropriate ioctl for device)
time(NULL)                              = 1330341443
getpid()                                = 872
brk(0)                                  = 0x80e6200
brk(0x80e7200)                          = 0x80e7200
brk(0x80e8000)                          = 0x80e8000
open("/etc/mdadm.conf", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3d640) = -1 ENOTTY 
(Inappropriate ioctl for device)
read(3, "ARRAY /dev/md/2 metadata=1.2 UUI"..., 4096) = 87
read(3, "", 4096)                       = 0
close(3)                                = 0
uname({sys="Linux", node="(none)", ...}) = 0
geteuid32()                             = 0
open("/proc/partitions", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3d1e0) = -1 ENOTTY 
(Inappropriate ioctl for device)
read(3, "major minor  #blocks  name\n\n 252"..., 4096) = 176
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
read(3, "", 4096)                       = 0
close(3)                                = 0
open("/proc/mdstat", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3d580) = -1 ENOTTY 
(Inappropriate ioctl for device)
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
read(3, "Personalities : [raid1] \nunused "..., 4096) = 48
read(3, "", 4096)                       = 0
dup(3)                                  = 4
fcntl64(4, F_SETFD, FD_CLOEXEC)         = 0
close(3)                                = 0
mkdir("/dev/.mdadm", 0755)              = -1 EEXIST (File exists)
open("/dev/.mdadm/map.lock", O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0600) = 3
fcntl(3, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3d5d0) = -1 ENOTTY 
(Inappropriate ioctl for device)
flock(3, LOCK_EX)                       = 0
fstat64(3, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
open("/dev/.mdadm/map", O_RDONLY|O_LARGEFILE) = 5
fcntl(5, F_GETFL)                       = 0x8000 (flags 
O_RDONLY|O_LARGEFILE)
ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3b480) = -1 ENOTTY 
(Inappropriate ioctl for device)
brk(0x80e9000)                          = 0x80e9000
read(5, "md2 1.2 00196000:bb52dbaa:8dfe7c"..., 4096) = 54
read(5, "", 4096)                       = 0
close(5)                                = 0
uname({sys="Linux", node="(none)", ...}) = 0
open("/proc/partitions", O_RDONLY|O_LARGEFILE) = 5
ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3c990) = -1 ENOTTY 
(Inappropriate ioctl for device)
read(5, "major minor  #blocks  name\n\n 252"..., 4096) = 176
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
read(5, "", 4096)                       = 0
close(5)                                = 0
_llseek(4, 0, [0], SEEK_SET)            = 0
dup(4)                                  = 5
fcntl(5, F_GETFL)                       = 0x8000 (flags 
O_RDONLY|O_LARGEFILE)
ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3cd30) = -1 ENOTTY 
(Inappropriate ioctl for device)
fcntl64(5, F_SETFD, FD_CLOEXEC)         = 0
read(5, "Personalities : [raid1] \nunused "..., 4096) = 48
read(5, "", 4096)                       = 0
close(5)                                = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:16", S_IFBLK|0600, makedev(252, 16)) = 0
open("/dev/.tmp.md.872:252:16", O_RDONLY|O_EXCL|O_DIRECT|O_LARGEFILE) = 5
unlink("/dev/.tmp.md.872:252:16")       = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 16), ...}) = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 16), ...}) = 0
ioctl(5, 0x800c0910, 0xbfd3ce8c)        = -1 ENOTTY (Inappropriate ioctl 
for device)
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 16), ...}) = 0
ioctl(5, BLKGETSIZE64, 0xbfd3ce50)      = 0
ioctl(5, BLKFLSBUF, 0)                  = 0
_llseek(5, 4096, [4096], SEEK_SET)      = 0
ioctl(5, BLKSSZGET, 0xbfd3ce4c)         = 0
read(5, 
"\374N+\251\1\0\0\0\0\0\0\0\0\0\0\0\0`\31\0\252\333R\273Z|\376\215\32\177\336\265"..., 
1024) = 1024
close(5)                                = 0
stat64("/sys/dev/block/252:16/partition", 0xbfd3cc68) = -1 ENOENT (No 
such file or directory)
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:3", S_IFBLK|0600, makedev(252, 3)) = 0
open("/dev/.tmp.md.872:252:3", O_RDONLY|O_EXCL|O_DIRECT|O_LARGEFILE) = 5
unlink("/dev/.tmp.md.872:252:3")        = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 3), ...}) = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 3), ...}) = 0
ioctl(5, 0x800c0910, 0xbfd3ce8c)        = -1 ENOTTY (Inappropriate ioctl 
for device)
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 3), ...}) = 0
ioctl(5, BLKGETSIZE64, 0xbfd3ce50)      = 0
ioctl(5, BLKFLSBUF, 0)                  = 0
_llseek(5, 4096, [4096], SEEK_SET)      = 0
ioctl(5, BLKSSZGET, 0xbfd3ce4c)         = 0
read(5, 
"\1\0\10\0\21\0\10\0!\0\10\0\332\2\275\1;\2\4\0\0\0\0\0\0\0\0\0\274\1>+"..., 
1024) = 1024
close(5)                                = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:2", S_IFBLK|0600, makedev(252, 2)) = 0
open("/dev/.tmp.md.872:252:2", O_RDONLY|O_EXCL|O_DIRECT|O_LARGEFILE) = 5
unlink("/dev/.tmp.md.872:252:2")        = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 2), ...}) = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 2), ...}) = 0
ioctl(5, 0x800c0910, 0xbfd3ce8c)        = -1 ENOTTY (Inappropriate ioctl 
for device)
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 2), ...}) = 0
ioctl(5, BLKGETSIZE64, 0xbfd3ce50)      = 0
ioctl(5, BLKFLSBUF, 0)                  = 0
_llseek(5, 4096, [4096], SEEK_SET)      = 0
ioctl(5, BLKSSZGET, 0xbfd3ce4c)         = 0
read(5, "\306=\0\0\22\0\0\0\0 
\0\0\0\0\0\0\0pG\1\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
close(5)                                = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:1", S_IFBLK|0600, makedev(252, 1)) = 0
open("/dev/.tmp.md.872:252:1", O_RDONLY|O_EXCL|O_DIRECT|O_LARGEFILE) = 5
unlink("/dev/.tmp.md.872:252:1")        = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 1), ...}) = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 1), ...}) = 0
ioctl(5, 0x800c0910, 0xbfd3ce8c)        = -1 ENOTTY (Inappropriate ioctl 
for device)
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 1), ...}) = 0
ioctl(5, BLKGETSIZE64, 0xbfd3ce50)      = 0
ioctl(5, BLKFLSBUF, 0)                  = 0
_llseek(5, 4096, [4096], SEEK_SET)      = 0
ioctl(5, BLKSSZGET, 0xbfd3ce4c)         = 0
read(5, "\4 \0\0\4`\0\0\4\240\0\0\4\340\0\0\4 
\1\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
close(5)                                = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:0", S_IFBLK|0600, makedev(252, 0)) = 0
open("/dev/.tmp.md.872:252:0", O_RDONLY|O_EXCL|O_DIRECT|O_LARGEFILE) = 5
unlink("/dev/.tmp.md.872:252:0")        = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 0), ...}) = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 0), ...}) = 0
ioctl(5, 0x800c0910, 0xbfd3ce8c)        = -1 ENOTTY (Inappropriate ioctl 
for device)
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 0), ...}) = 0
ioctl(5, BLKGETSIZE64, 0xbfd3ce50)      = 0
ioctl(5, BLKFLSBUF, 0)                  = 0
_llseek(5, 4096, [4096], SEEK_SET)      = 0
ioctl(5, BLKSSZGET, 0xbfd3ce4c)         = 0
read(5, 
"\0\213E\f%\0\377\0\0=\0\377\0\0t&\213E\f%\0\0\377\0=\0\0\377\0\17\204\6"..., 
1024) = 1024
close(5)                                = 0
open("/proc/mdstat", O_RDONLY|O_LARGEFILE) = 5
ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3c9e0) = -1 ENOTTY 
(Inappropriate ioctl for device)
brk(0x80ea000)                          = 0x80ea000
fcntl64(5, F_SETFD, FD_CLOEXEC)         = 0
read(5, "Personalities : [raid1] \nunused "..., 4096) = 48
read(5, "", 4096)                       = 0
close(5)                                = 0
stat64("/dev/.udev", 0xbfd3cb08)        = -1 ENOENT (No such file or 
directory)
lstat64("/dev/md2", {st_mode=S_IFBLK|0600, st_rdev=makedev(9, 2), ...}) = 0
mkdir("/dev/md", 0700)                  = -1 EEXIST (File exists)
unlink("/dev/md/2")                     = 0
lstat64("/dev/md/2", 0xbfd3cb08)        = -1 ENOENT (No such file or 
directory)
symlink("/dev/md2", "/dev/md/2")        = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:9:2", S_IFBLK|0600, makedev(9, 2)) = 0
open("/dev/.tmp.md.872:9:2", O_RDWR|O_EXCL|O_DIRECT|O_LARGEFILE) = 5
unlink("/dev/.tmp.md.872:9:2")          = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(9, 2), ...}) = 0
ioctl(5, 0x800c0910, 0xbfd3cebc)        = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(9, 2), ...}) = 0
open("/proc/mdstat", O_RDONLY|O_LARGEFILE) = 6
ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3cda0) = -1 ENOTTY 
(Inappropriate ioctl for device)
fcntl64(6, F_SETFD, FD_CLOEXEC)         = 0
read(6, "Personalities : [raid1] \nunused "..., 4096) = 48
read(6, "", 4096)                       = 0
close(6)                                = 0
ioctl(5, 0x932, 0)                      = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:16", S_IFBLK|0600, makedev(252, 16)) = 0
open("/dev/.tmp.md.872:252:16", O_RDWR|O_EXCL|O_DIRECT|O_LARGEFILE) = 6
unlink("/dev/.tmp.md.872:252:16")       = 0
fstat64(6, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 16), ...}) = 0
ioctl(6, BLKGETSIZE64, 0xbfd3ce50)      = 0
ioctl(6, BLKFLSBUF, 0)                  = 0
_llseek(6, 4096, [4096], SEEK_SET)      = 0
ioctl(6, BLKSSZGET, 0xbfd3ce4c)         = 0
read(6, 
"\374N+\251\1\0\0\0\0\0\0\0\0\0\0\0\0`\31\0\252\333R\273Z|\376\215\32\177\336\265"..., 
1024) = 1024
close(6)                                = 0
stat64("252:16", 0xbfd3cec8)            = -1 ENOENT (No such file or 
directory)
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:16", S_IFBLK|0600, makedev(252, 16)) = 0
open("/dev/.tmp.md.872:252:16", O_RDONLY|O_EXCL|O_DIRECT|O_LARGEFILE) = 6
unlink("/dev/.tmp.md.872:252:16")       = 0
fstat64(6, {st_mode=S_IFBLK|0600, st_rdev=makedev(252, 16), ...}) = 0
ioctl(6, BLKGETSIZE64, 0xbfd3ce50)      = 0
ioctl(6, BLKFLSBUF, 0)                  = 0
_llseek(6, 4096, [4096], SEEK_SET)      = 0
ioctl(6, BLKSSZGET, 0xbfd3ce4c)         = 0
read(6, 
"\374N+\251\1\0\0\0\0\0\0\0\0\0\0\0\0`\31\0\252\333R\273Z|\376\215\32\177\336\265"..., 
1024) = 1024
close(6)                                = 0
ioctl(5, 0x800c0910, 0xbfd3cf1c)        = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(9, 2), ...}) = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(9, 2), ...}) = 0
open("/dev/.mdadm/map", O_RDONLY|O_LARGEFILE) = 6
fcntl(6, F_GETFL)                       = 0x8000 (flags 
O_RDONLY|O_LARGEFILE)
ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3ac80) = -1 ENOTTY 
(Inappropriate ioctl for device)
read(6, "md2 1.2 00196000:bb52dbaa:8dfe7c"..., 4096) = 54
read(6, "", 4096)                       = 0
close(6)                                = 0
mkdir("/dev/.mdadm", 0755)              = -1 EEXIST (File exists)
open("/dev/.mdadm/map.new", O_RDWR|O_CREAT|O_LARGEFILE, 0600) = 6
fcntl(6, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfd3cd90) = -1 ENOTTY 
(Inappropriate ioctl for device)
write(6, "md2 1.2 00196000:bb52dbaa:8dfe7c"..., 54) = 54
close(6)                                = 0
rename("/dev/.mdadm/map.new", "/dev/.mdadm/map") = 0
fstat64(5, {st_mode=S_IFBLK|0600, st_rdev=makedev(9, 2), ...}) = 0
ioctl(5, 0x800c0910, 0xbfd3ce4c)        = 0
ioctl(5, 0x40480923, 0xbfd3ced4)        = 0
lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=4900, ...}) = 0
getpid()                                = 872
mknod("/dev/.tmp.md.872:252:16", S_IFBLK|0600, makedev(252, 16)) = 0
open("/dev/.tmp.md.872:252:16", O_RDWR|O_EXCL|O_DIRECT|O_LARGEFILE) = 6
unlink("/dev/.tmp.md.872:252:16")       = 0
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 EINVAL (Invalid argument)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
ioctl(6, BLKPG, 0xbfd3cf18)             = -1 ENXIO (No such device or 
address)
close(6)                                = 0
ioctl(5, 0x40140921, 0x80e75a8)         = -1 EINVAL (Invalid argument)
write(2, "mdadm: failed to add ", 21mdadm: failed to add )   = 21
write(2, "252:16", 6252:16)                   = 6
write(2, " to ", 4 to )                     = 4
write(2, "/dev/md/2", 9/dev/md/2)                = 9
write(2, ": ", 2: )                       = 2
write(2, "Invalid argument", 16Invalid argument)        = 16
write(2, "\n", 1
)                       = 1
write(2, "mdadm: ", 7mdadm: )                  = 7
write(2, "/dev/md/2", 9/dev/md/2)                = 9
write(2, " assembled from ", 16 assembled from )        = 16
write(2, "0", 10)                        = 1
write(2, " drive", 6 drive)                   = 6
write(2, "s", 1s)                        = 1
write(2, " - not enough to start the array"..., 34 - not enough to start 
the array.
) = 34
close(5)                                = 0
unlink("/dev/.mdadm/map.lock")          = 0
close(3)                                = 0
_exit(1)
###

-- Piotr.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-02-27 11:47 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-27 11:47 mdadm --assemble --scan always fail if bulit with uClibc Piotr Karbowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).