public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* CD-ROM problems in at least 2.6.2-rc1-mm2 and above
@ 2004-02-09 20:44 Ari Pollak
  2004-02-09 20:55 ` Andries Brouwer
  0 siblings, 1 reply; 2+ messages in thread
From: Ari Pollak @ 2004-02-09 20:44 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 542 bytes --]

The attached program for manually locking the CD-ROM tray used to work 
in 2.6.0 and 2.6.1, and possibly some earlier versions of 2.6.2 when 
called like "cd-lock /dev/hdc", where hdc is my CD-ROM drive. However, 
under 2.6.2-rc1-mm2 and 2.6.2-mm1, calling the program with an empty 
drive (which used to work) results in the following:

open failed: No medium found

Has anything changed recently which would cause open() to fail with an 
empty CD drive? Just for good measure, I've attached the output of 
strace when running this program.

[-- Attachment #2: cdlock.c --]
[-- Type: text/x-c, Size: 763 bytes --]

//Written by Shaya Potter <spotter@cs.columbia.edu>
//Placed in the Public Domain

#include <sys/ioctl.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/cdrom.h>
#include <string.h>
#include <libgen.h>

int main(int argc, char *argv[])
{
	int fd;
	int lock;

	char *cmd1;

	cmd1 = basename(argv[0]);

	if (!strcmp(cmd1, "cd-lock"))
		lock = 1;
	else if (!strcmp(cmd1, "cd-unlock"))
		lock = 0;
	else {
		printf("program must be called cd-lock or cd-unlock\n");
		return 1;
	}

	if (argc != 2) {
		printf("not enough options\nUsage:\n\t%s device\n", cmd1);
		return 2;
	}
			

	if ((fd = open(argv[1], O_RDONLY)) <= 0) {
		perror("open failed");
		return 3;
	}

	if (ioctl(fd, CDROM_LOCKDOOR, lock)) {
		perror("ioctl failed");
		return 4;
	}

	return 0;
}

[-- Attachment #3: strace-out --]
[-- Type: text/plain, Size: 1899 bytes --]

execve("/home/ari/bin/cd-lock", ["cd-lock", "/dev/cdrom"], [/* 27 vars */]) = 0
uname({sys="Linux", node="ewok", ...})  = 0
brk(0)                                  = 0x804a000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=54887, ...}) = 0
old_mmap(NULL, 54887, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/libc.so.6", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240X\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1271388, ...}) = 0
old_mmap(NULL, 1281772, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40026000
old_mmap(0x40154000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x12d000) = 0x40154000
old_mmap(0x4015d000, 7916, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4015d000
close(3)                                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4015f000
set_thread_area({entry_number:-1 -> 6, base_addr:0x4015f2a0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0x40018000, 54887)               = 0
open("/dev/cdrom", O_RDONLY)            = -1 ENOMEDIUM (No medium found)
dup(2)                                  = 3
fcntl64(3, F_GETFL)                     = 0x8001 (flags O_WRONLY|O_LARGEFILE)
close(3)                                = 0
write(2, "open failed: No medium found\n", 29open failed: No medium found
) = 29
exit_group(3)                           = ?

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: CD-ROM problems in at least 2.6.2-rc1-mm2 and above
  2004-02-09 20:44 CD-ROM problems in at least 2.6.2-rc1-mm2 and above Ari Pollak
@ 2004-02-09 20:55 ` Andries Brouwer
  0 siblings, 0 replies; 2+ messages in thread
From: Andries Brouwer @ 2004-02-09 20:55 UTC (permalink / raw)
  To: Ari Pollak; +Cc: linux-kernel

On Mon, Feb 09, 2004 at 03:44:03PM -0500, Ari Pollak wrote:

> The attached program for manually locking the CD-ROM tray used to work 
> in 2.6.0 and 2.6.1, and possibly some earlier versions of 2.6.2 when 
> called like "cd-lock /dev/hdc", where hdc is my CD-ROM drive. However, 
> under 2.6.2-rc1-mm2 and 2.6.2-mm1, calling the program with an empty 
> drive (which used to work) results in the following:
> 
> open failed: No medium found

> open("/dev/cdrom", O_RDONLY)            = -1 ENOMEDIUM (No medium found)

Things will work better with
	open("/dev/cdrom", O_RDONLY | O_NONBLOCK);

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-02-09 20:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-09 20:44 CD-ROM problems in at least 2.6.2-rc1-mm2 and above Ari Pollak
2004-02-09 20:55 ` Andries Brouwer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox