* 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.