Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Aug 2002 21:40:07 -0700 (PDT)
From:      "Kenneth D. Merry" <ken@kdm.org>
To:        freebsd-scsi@FreeBSD.org
Subject:   Re: kern/15608: acd0 / cd0 give inconsistent errors on empty tray open()
Message-ID:  <200208230440.g7N4e72K060737@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/15608; it has been noted by GNATS.

From: "Kenneth D. Merry" <ken@kdm.org>
To: Bruce Evans <bde@zeta.org.au>
Cc: "M. Warner Losh" <imp@bsdimp.com>, johan@FreeBSD.ORG,
	nsayer@quack.kfu.com, freebsd-gnats-submit@FreeBSD.ORG,
	freebsd-scsi@FreeBSD.ORG, freebsd-standards@FreeBSD.ORG,
	sos@FreeBSD.ORG
Subject: Re: kern/15608: acd0 / cd0 give inconsistent errors on empty tray open()
Date: Thu, 22 Aug 2002 22:32:04 -0600

 On Fri, Aug 23, 2002 at 12:41:28 +1000, Bruce Evans wrote:
 > On Thu, 22 Aug 2002, M. Warner Losh wrote:
 > 
 > > In message: <20020822150931.A10866@panzer.kdm.org>
 > >             "Kenneth D. Merry" <ken@kdm.org> writes:
 > > : So is there any opinion on -standards as to what sort of error we should
 > > : return on open if there is no media in a drive?
 > >
 > > EIO means "The device is there, but the driver had problems
 > > interacting with it" while ENXIO means "the device isn't there at
 > > all."  As such, EIO is the more correct error to return in this case.
 > 
 > No, EIO means that an input/output arror occurred.  open.2 only documents
 > EIO for creating files.  Otherwise open() normally doesn't do any i/o.
 > So ENXIO is the more correct error.
 
 Cool.
 
 > I think the bug is that the open doesn't succeed.  The device is
 > reported as being there at boot time, and there is enough of it there
 > to tell which parts of it aren't there, so why not open() it so that
 > you do things like ioctl() on it to close its door and make it there?
 
 There is no ioctl in the interface for loading a CD.  None of the other
 ioctls, I think, make much sense without media in the drive.
 
 The reason we need to do a read capacity in the open() routine, which is
 why the open fails when there is no media, is so we can fill in the
 d_secsize and d_secperunit fields in the disklabel.
 
 > > I don't know if the standards speak to this specific issue (no or bad
 > > media in a device with removable media).
 > 
 > POSIX doesn't say anything much different from open.2 about this.
 > 
 > Bruce
 
 Ken
 -- 
 Kenneth Merry
 ken@kdm.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208230440.g7N4e72K060737>