cvs commit: src/sys/dev/ata atapi-cd.c atapi-cd.h

Poul-Henning Kamp phk at
Fri Nov 16 09:42:09 PST 2007

In message <473DCF61.6010107 at>, Scott Long writes:

>> What I've sortof talked phk into is that if I return the "right" error 
>> code in the "start" function, it will back off and not retry nor chatter.
>> We still need the "access" function to return OK if HW present or we 
>> cannot send ioctl calls to an empty drive.
>IMHO, overloading g_start just adds more cruft to the problem.

The fundamental problem is that the CDROM ioctls don't distinguish
between drive and media.

In a nutshell: we are forced to let the open succeed, so the ioctl
to close the tray can be issued, before we can get at the media.

The problem with letting the open (aka g_access) succeed, is that
the GEOM tasting starts.

Redefining the ioctls is not a realistic option at this point, so
the task is to find a workaround for the API-deficiency.

What sos@ and I talked about is that we need to have an error return
that says "The drive is here, but there is no media", to fail the
tasting without GEOM reporting I/O errors on the console.

The simplest way to do this, is probably to overload ENOENT or some
other currently undefined errno for this effect.

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.

More information about the cvs-src mailing list