On Do November 27 2008, Frank Lichtenheld wrote: > On Wed, Nov 12, 2008 at 02:25:02PM +0100, Peter Poeschl wrote: > > For some time now, eject fails to eject a MO-disk from my Fujitsu > > MCM3130AP, an IDE device connected to the motherboard via a SATA-IDE > > bridge. Upon the eject command the drive spins down, but instead of > > ejecting the disk it reregisteres with the system. > > eject used to work with this hardware until about July. Since then > > several updates have taken place (including kernel 2.6.25 -> 2.6.26), but > > I cannot say which broke eject, as I don't use the drive very often. > > > > It does not matter if the command is issued as root or normal user. > > Some things you could try: > 1) run the eject command under strace, this might tell us something > more. (although it might not, since the ioctls seem to succeed according > to the verbose output) $ LANG=C strace -o strace-v.txt eject -v /media/mo1 See attached file.
> 2) use the version of eject from experimental. It doesn't seem to > change anything related though, but probably doesn't hurt to try. I installed 2.1.5+deb1+cvs20081104-2 from experimental and *it works now*. I cannot see any significant difference in the strace-output strace-v.exp.txt, though. Best regards, Peter Pöschl
execve("/usr/bin/eject", ["eject", "-v", "/media/mo1"], [/* 35 vars */]) = 0 brk(0) = 0x68b000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f73388000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f73386000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=60352, ...}) = 0 mmap(NULL, 60352, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f5f73377000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\342\1\0\0\0\0\0@"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1375536, ...}) = 0 mmap(NULL, 3482232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5f72e1b000 mprotect(0x7f5f72f65000, 2093056, PROT_NONE) = 0 mmap(0x7f5f73164000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x149000) = 0x7f5f73164000 mmap(0x7f5f73169000, 17016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5f73169000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f73376000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f73375000 arch_prctl(ARCH_SET_FS, 0x7f5f733756e0) = 0 mprotect(0x7f5f73164000, 12288, PROT_READ) = 0 munmap(0x7f5f73377000, 60352) = 0 brk(0) = 0x68b000 brk(0x6ac000) = 0x6ac000 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f73385000 write(1, "eject: device name is `/media/mo1"..., 35) = 35 access("/media/mo1", F_OK) = 0 write(1, "eject: expanded name is `/media/m"..., 37) = 37 readlink("/media/mo1", 0x7fff7b388520, 4095) = -1 EINVAL (Invalid argument) stat("/media/mo1", {st_mode=S_IFDIR|S_ISVTX|0775, st_size=104, ...}) = 0 open("/etc/mtab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=724, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f73384000 read(3, "/dev/sda8 / ext3 rw,noatime 0 0\nt"..., 4096) = 724 stat("/dev/sda8", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 8), ...}) = 0 stat("tmpfs", 0x7fff7b388840) = -1 ENOENT (No such file or directory) stat("proc", 0x7fff7b388840) = -1 ENOENT (No such file or directory) stat("sysfs", 0x7fff7b388840) = -1 ENOENT (No such file or directory) stat("procbususb", 0x7fff7b388840) = -1 ENOENT (No such file or directory) stat("udev", 0x7fff7b388840) = -1 ENOENT (No such file or directory) stat("tmpfs", 0x7fff7b388840) = -1 ENOENT (No such file or directory) stat("devpts", 0x7fff7b388840) = -1 ENOENT (No such file or directory) stat("/dev/sda4", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 4), ...}) = 0 stat("/dev/sda6", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 6), ...}) = 0 stat("/dev/sda7", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 7), ...}) = 0 stat("/mnt/.loc/apt/lenny-amd64", {st_mode=S_IFDIR|0755, st_size=160, ...}) = 0 stat("/mnt/.loc/home", {st_mode=S_IFDIR|0755, st_size=72, ...}) = 0 stat("/mnt/.loc/srv", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0 stat("/mnt/.tmp/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 stat("/mnt/.tmp/var-tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 stat("/dev/sdb1", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 17), ...}) = 0 close(3) = 0 munmap(0x7f5f73384000, 4096) = 0 write(1, "eject: `/dev/sdb1' is mounted at "..., 46) = 46 stat("/dev/sdb1", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 17), ...}) = 0 write(1, "eject: unmounting device `/dev/sd"..., 55) = 55 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5f73375770) = 3550 wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 3550 --- SIGCHLD (Child exited) @ 0 (0) --- write(1, "eject: `/dev/sdb1' is a multipart"..., 46) = 46 open("/etc/mtab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=659, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5f73384000 read(3, "/dev/sda8 / ext3 rw,noatime 0 0\nt"..., 4096) = 659 read(3, ""..., 4096) = 0 close(3) = 0 munmap(0x7f5f73384000, 4096) = 0 open("/dev/sdb1", O_RDWR|O_NONBLOCK) = 3 write(1, "eject: trying to eject `/dev/sdb1"..., 62) = 62 ioctl(3, CDROMEJECT, 0x7f5f731699a0) = -1 EIO (Input/output error) write(1, "eject: CD-ROM eject command faile"..., 35) = 35 write(1, "eject: trying to eject `/dev/sdb1"..., 55) = 55 ioctl(3, SG_GET_VERSION_NUM, 0x7fff7b38979c) = 0 ioctl(3, SG_IO, {'S', SG_DXFER_NONE, cmd[6]=[1e, 00, 00, 00, 00, 00], mx_sb_len=32, iovec_count=0, dxfer_len=0, timeout=2000, flags=0, status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=0, info=0}) = 0 ioctl(3, SG_IO, {'S', SG_DXFER_NONE, cmd[6]=[1b, 00, 00, 00, 01, 00], mx_sb_len=32, iovec_count=0, dxfer_len=0, timeout=2000, flags=0, status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=4, info=0}) = 0 ioctl(3, SG_IO, {'S', SG_DXFER_NONE, cmd[6]=[1b, 00, 00, 00, 02, 00], mx_sb_len=32, iovec_count=0, dxfer_len=0, timeout=2000, flags=0, status=02, masked_status=01, sb[22]=[72, 0b, 00, 00, 00, 00, 00, 0e, 09, 0c, 00, 00, 00, 03, 00, 00, 00, 00, 00, 00, a0, 40], host_status=0, driver_status=0x8, resid=0, duration=2612, info=0x1}) = 0 ioctl(3, BLKRRPART, 0x7fff7b389670) = -1 EINVAL (Invalid argument) write(1, "eject: SCSI eject succeeded\n"..., 28) = 28 close(3) = 0 exit_group(0) = ?
execve("/usr/bin/eject", ["eject", "-v", "/media/mo1"], [/* 35 vars */]) = 0 brk(0) = 0x1f46000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b8507000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b8505000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=60352, ...}) = 0 mmap(NULL, 60352, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa6b84f6000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\342\1\0\0\0\0\0@"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1375536, ...}) = 0 mmap(NULL, 3482232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa6b7f9a000 mprotect(0x7fa6b80e4000, 2093056, PROT_NONE) = 0 mmap(0x7fa6b82e3000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x149000) = 0x7fa6b82e3000 mmap(0x7fa6b82e8000, 17016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fa6b82e8000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b84f5000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b84f4000 arch_prctl(ARCH_SET_FS, 0x7fa6b84f46e0) = 0 mprotect(0x7fa6b82e3000, 12288, PROT_READ) = 0 munmap(0x7fa6b84f6000, 60352) = 0 brk(0) = 0x1f46000 brk(0x1f67000) = 0x1f67000 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b8504000 write(1, "eject: device name is `/media/mo1"..., 35) = 35 access("/media/mo1", F_OK) = 0 write(1, "eject: expanded name is `/media/m"..., 37) = 37 readlink("/media/mo1", 0x7fffc05056a0, 4095) = -1 EINVAL (Invalid argument) stat("/media/mo1", {st_mode=S_IFDIR|S_ISVTX|0775, st_size=104, ...}) = 0 open("/etc/mtab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=724, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b8503000 read(3, "/dev/sda8 / ext3 rw,noatime 0 0\nt"..., 4096) = 724 stat("/dev/sda8", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 8), ...}) = 0 stat("tmpfs", 0x7fffc05059d0) = -1 ENOENT (No such file or directory) stat("proc", 0x7fffc05059d0) = -1 ENOENT (No such file or directory) stat("sysfs", 0x7fffc05059d0) = -1 ENOENT (No such file or directory) stat("procbususb", 0x7fffc05059d0) = -1 ENOENT (No such file or directory) stat("udev", 0x7fffc05059d0) = -1 ENOENT (No such file or directory) stat("tmpfs", 0x7fffc05059d0) = -1 ENOENT (No such file or directory) stat("devpts", 0x7fffc05059d0) = -1 ENOENT (No such file or directory) stat("/dev/sda4", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 4), ...}) = 0 stat("/dev/sda6", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 6), ...}) = 0 stat("/dev/sda7", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 7), ...}) = 0 stat("/mnt/.loc/apt/lenny-amd64", {st_mode=S_IFDIR|0755, st_size=160, ...}) = 0 stat("/mnt/.loc/home", {st_mode=S_IFDIR|0755, st_size=72, ...}) = 0 stat("/mnt/.loc/srv", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0 stat("/mnt/.tmp/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 stat("/mnt/.tmp/var-tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 stat("/dev/sdb1", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 17), ...}) = 0 close(3) = 0 munmap(0x7fa6b8503000, 4096) = 0 write(1, "eject: `/dev/sdb1' is mounted at "..., 46) = 46 stat("/dev/sdb1", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 17), ...}) = 0 write(1, "eject: unmounting device `/dev/sd"..., 55) = 55 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa6b84f4770) = 5256 wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 5256 --- SIGCHLD (Child exited) @ 0 (0) --- write(1, "eject: `/dev/sdb1' is a multipart"..., 46) = 46 open("/etc/mtab", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=659, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa6b8503000 read(3, "/dev/sda8 / ext3 rw,noatime 0 0\nt"..., 4096) = 659 read(3, ""..., 4096) = 0 close(3) = 0 munmap(0x7fa6b8503000, 4096) = 0 open("/dev/sdb1", O_RDWR|O_NONBLOCK) = 3 write(1, "eject: trying to eject `/dev/sdb1"..., 62) = 62 ioctl(3, CDROMEJECT, 0x7fa6b82e89a0) = -1 EIO (Input/output error) write(1, "eject: CD-ROM eject command faile"..., 35) = 35 write(1, "eject: trying to eject `/dev/sdb1"..., 55) = 55 ioctl(3, SG_GET_VERSION_NUM, 0x7fffc050691c) = 0 ioctl(3, SG_IO, {'S', SG_DXFER_NONE, cmd[6]=[1e, 00, 00, 00, 00, 00], mx_sb_len=32, iovec_count=0, dxfer_len=0, timeout=10000, flags=0, status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=4, info=0}) = 0 ioctl(3, SG_IO, {'S', SG_DXFER_NONE, cmd[6]=[1b, 00, 00, 00, 01, 00], mx_sb_len=32, iovec_count=0, dxfer_len=0, timeout=10000, flags=0, status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=0, info=0}) = 0 ioctl(3, SG_IO, {'S', SG_DXFER_NONE, cmd[6]=[1b, 00, 00, 00, 02, 00], mx_sb_len=32, iovec_count=0, dxfer_len=0, timeout=10000, flags=0, status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=3680, info=0}) = 0 ioctl(3, BLKRRPART, 0x7fffc05067f0) = -1 EINVAL (Invalid argument) write(1, "eject: SCSI eject succeeded\n"..., 28) = 28 close(3) = 0 exit_group(0) = ?