All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.