From: dk-arm-linux@gmx.de (Dieter Kiermaier)
To: linux-arm-kernel@lists.infradead.org
Subject: kirkwood / openrd: umount problem using mdev (busybox)
Date: Wed, 11 Nov 2009 15:55:02 +0100 [thread overview]
Message-ID: <200911111555.02938.dk-arm-linux@gmx.de> (raw)
In-Reply-To: <200911061559.47922.dk-arm-linux@gmx.de>
Hi again,
> Hi all,
>
> I've encountered a new problem with regards to busybox mdev while umounting a usb pendrive:
> I'm using kernel
> sh-3.2# uname -a
> Linux DB88FXX81 2.6.32-rc4 #2 PREEMPT Thu Nov 5 13:41:41 CET 2009 armv5tel GNU/Linux
> sh-3.2#
>
>
> Mounting and umounting manually works like a charm without any problems. But if I disconnected a
> mounted pendrive and wants mdev to umount it on a remove event the umount call hangs until I get a
> message from my kernel (see below).
>
This problem also doesn't exist with marvell stock 2.6.22.18 kernel.
So I would assume it is no busybox problem.
It looks like another kernel problem with current mainline kernel?
mounting / umounting with busybox mdev works reliable and as expected.
Dieter
>
>
> A strace of the umount call gives:
> execve("/bin/umount", ["umount", "-f", "-l", "/dev/sda1"], [/* 14 vars */]) = 0
> brk(0) = 0xf5000
> uname({sys="Linux", node="DB88FXX81", ...}) = 0
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4001d000
> access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
> open("/etc/ld.so.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
> open("/lib/tls/v5l/fast-mult/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls/v5l/fast-mult/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/tls/v5l/fast-mult/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls/v5l/fast-mult", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/tls/v5l/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls/v5l/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/tls/v5l/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls/v5l", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/tls/fast-mult/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls/fast-mult/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/tls/fast-mult/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls/fast-mult", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/tls/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/tls/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/tls", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/v5l/fast-mult/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/v5l/fast-mult/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/v5l/fast-mult/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/v5l/fast-mult", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/v5l/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/v5l/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/v5l/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/v5l", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/fast-mult/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/fast-mult/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/fast-mult/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/fast-mult", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/lib/half", 0xbed722f8) = -1 ENOENT (No such file or directory)
> open("/lib/libm.so.6", O_RDONLY) = 4
> read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0342\0\0004\0\0\0"..., 512) = 512
> fstat64(4, {st_mode=S_IFREG|0755, st_size=693352, ...}) = 0
> mmap2(NULL, 712856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x40026000
> mprotect(0x400cc000, 28672, PROT_NONE) = 0
> mmap2(0x400d3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0xa5) = 0x400d3000
> close(4) = 0
> open("/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/v5l/fast-mult/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls/v5l/fast-mult/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/v5l/fast-mult/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls/v5l/fast-mult", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/v5l/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls/v5l/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/v5l/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls/v5l", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/fast-mult/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls/fast-mult/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/fast-mult/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls/fast-mult", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/tls/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/tls", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/v5l/fast-mult/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/v5l/fast-mult/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/v5l/fast-mult/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/v5l/fast-mult", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/v5l/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/v5l/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/v5l/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/v5l", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/fast-mult/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/fast-mult/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/fast-mult/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/fast-mult", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/half/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat64("/usr/lib/half", 0xbed722e0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/libgcc_s.so.1", O_RDONLY) = 4
> read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\304\"\0\0004\0\0\0"..., 512) = 512
> fstat64(4, {st_mode=S_IFREG|0644, st_size=65824, ...}) = 0
> mmap2(NULL, 78540, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x400d5000
> mprotect(0x400e1000, 28672, PROT_NONE) = 0
> mmap2(0x400e8000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0xb) = 0x400e8000
> close(4) = 0
> open("/lib/libc.so.6", O_RDONLY) = 4
> read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\340J\1\0004\0\0\0"..., 512) = 512
> fstat64(4, {st_mode=S_IFREG|0755, st_size=1249460, ...}) = 0
> mmap2(NULL, 1237404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x400e9000
> mprotect(0x4020b000, 28672, PROT_NONE) = 0
> mmap2(0x40212000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x121) = 0x40212000
> mmap2(0x40215000, 8604, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40215000
> close(4) = 0
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4001e000
> set_tls(0x4001e720, 0x400256f4, 0x4001edf8, 0x40025058, 0x40) = 0
> mprotect(0x40212000, 8192, PROT_READ) = 0
> mprotect(0x400d3000, 4096, PROT_READ) = 0
> getpid() = 562
> getuid32() = 0
> brk(0) = 0xf5000
> brk(0x117000) = 0x117000
> open("/proc/mounts", O_RDONLY) = 4
> fstat64(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4001f000
> read(4, "rootfs / rootfs rw 0 0\n/dev/root"..., 1024) = 655
> read(4, "", 1024) = 0
> close(4) = 0
> munmap(0x4001f000, 4096) = 0
> lstat64("/dev", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=2880, ...}) = 0
> lstat64("/dev/sda1", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 1), ...}) = 0
> umount("/mnt/usbdisk", 0
>
> And after that the process hangs:
>
> sh-3.2# ps
> PID USER VSZ STAT COMMAND
> 1 root 3256 S init
> 2 root 0 SW [kthreadd]
> 3 root 0 SW [ksoftirqd/0]
> 4 root 0 SW [watchdog/0]
> 5 root 0 SW [events/0]
> 6 root 0 SW [khelper]
> 9 root 0 SW [async/mgr]
> 133 root 0 SW [sync_supers]
> 135 root 0 SW [bdi-default]
> 137 root 0 SW [kblockd/0]
> 143 root 0 SW [ata/0]
> 144 root 0 SW [ata_aux]
> 152 root 0 SW [khubd]
> 155 root 0 SW [kseriod]
> 158 root 0 SW [kmmcd]
> 178 root 0 SW [rpciod/0]
> 186 root 0 SW [khungtaskd]
> 187 root 0 SW [kswapd0]
> 236 root 0 SW [aio/0]
> 244 root 0 SW [nfsiod]
> 250 root 0 SW [crypto/0]
> 387 root 0 SW [scsi_eh_0]
> 390 root 0 SW [scsi_eh_1]
> 397 root 0 SW [mtdblockd]
> 411 root 0 SW [orion_spi]
> 494 root 0 SW [usbhid_resumer]
> 515 root 2280 S /bin/sh /sbin/mini_httpd_wrapper
> 516 root 2644 S -/bin/sh
> 519 root 2176 S /sbin/mini_httpd -D -d /var/www -u root -c **.cgi -i
> 527 root 0 SW [scsi_eh_2]
> 550 root 3264 S /sbin/mdev block
> 554 root 2604 S /bin/sh /sbin/mdev_mount_usbdisk.sh
> 561 root 1836 S strace umount -f -l /dev/sda1
> 562 root 3260 D umount -f -l /dev/sda1
> 564 root 3260 R ps
> sh-3.2#
>
> After a while I get this from my kernel every now and then:
>
> sh-3.2# INFO: task umount:562 blocked for more than 120 seconds.
> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> umount D c03467c0 0 562 561 0x00000100
> [<c03467c0>] (schedule+0x360/0x3f0) from [<c00d18f0>] (bdi_sched_wait+0xc/0x18)
> [<c00d18f0>] (bdi_sched_wait+0xc/0x18) from [<c03472e4>] (__wait_on_bit+0x60/0xac)
> [<c03472e4>] (__wait_on_bit+0x60/0xac) from [<c03473a4>] (out_of_line_wait_on_bit+0x74/0x80)
> [<c03473a4>] (out_of_line_wait_on_bit+0x74/0x80) from [<c00d1984>] (sync_inodes_sb+0x88/0x17c)
> [<c00d1984>] (sync_inodes_sb+0x88/0x17c) from [<c00d5c38>] (__sync_filesystem+0x30/0x6c)
> [<c00d5c38>] (__sync_filesystem+0x30/0x6c) from [<c00b6248>] (generic_shutdown_super+0x2c/0x130)
> [<c00b6248>] (generic_shutdown_super+0x2c/0x130) from [<c00b6368>] (kill_block_super+0x1c/0x38)
> [<c00b6368>] (kill_block_super+0x1c/0x38) from [<c00b66c0>] (deactivate_super+0x68/0x8c)
> [<c00b66c0>] (deactivate_super+0x68/0x8c) from [<c00cd734>] (sys_umount+0x2c8/0x2fc)
> [<c00cd734>] (sys_umount+0x2c8/0x2fc) from [<c0026b1c>] (__sys_trace_return+0x0/0x24)
>
> Any help would be welcome!
>
> Many thanks,
> Dieter
>
>
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
next prev parent reply other threads:[~2009-11-11 14:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-06 14:59 kirkwood / openrd: umount problem using mdev (busybox) Dieter Kiermaier
2009-11-11 14:55 ` Dieter Kiermaier [this message]
2009-11-11 16:11 ` Nicolas Pitre
2009-11-11 16:27 ` Dieter Kiermaier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200911111555.02938.dk-arm-linux@gmx.de \
--to=dk-arm-linux@gmx.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.