Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S267819AbUIPHh4 (ORCPT ); Thu, 16 Sep 2004 03:37:56 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S267823AbUIPHh4 (ORCPT ); Thu, 16 Sep 2004 03:37:56 -0400 Received: from ns.virtualhost.dk ([195.184.98.160]:63953 "EHLO virtualhost.dk") by vger.kernel.org with ESMTP id S267819AbUIPHhv (ORCPT ); Thu, 16 Sep 2004 03:37:51 -0400 Date: Thu, 16 Sep 2004 09:36:17 +0200 From: Jens Axboe To: "Bc. Michal Semler" Cc: linux-kernel@vger.kernel.org Subject: Re: CD-ROM can't be ejected Message-ID: <20040916073616.GO2300@suse.de> References: <200409160025.35961.cijoml@volny.cz> <20040916070906.GK2300@suse.de> <200409160918.40767.cijoml@volny.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <200409160918.40767.cijoml@volny.cz> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1698 Lines: 65 (don't top post, and don't trim cc list!) On Thu, Sep 16 2004, Bc. Michal Semler wrote: > notas:/home/cijoml# mount /cdrom/ > notas:/home/cijoml# umount /cdrom/ > notas:/home/cijoml# strace -o eject /dev/hdc > eject: unable to eject, last error: Nep??pustn? argument > > As you can see, I dont't enter to directory... > > And output is included > ioctl(3, CDROMEJECT, 0xbffffac8) = -1 EIO (Input/output error) That's the important bit, the reason you get EINVAL passed back is because eject tries the floppy eject as well and decides to print the warning from that. It really should just stop of it sees -EIO, only continue if EINVAL/ENOTTY is passed back. Try this little c program and report back what it tells you. Compile with gcc -Wall -o eject eject.c and run without arguments. #include #include #include #include #include #include int main(int argc, char *argv[]) { int fd = open("/dev/hdc", O_RDONLY | O_NONBLOCK); struct cdrom_generic_command cgc; struct request_sense sense; memset(&cgc, 0, sizeof(cgc)); memset(&sense, 0, sizeof(sense)); cgc.cmd[0] = 0x1b; cgc.cmd[4] = 0x02; cgc.sense = &sense; cgc.data_direction = CGC_DATA_NONE; if (ioctl(fd, CDROM_SEND_PACKET, &cgc) == 0) { printf("eject worked\n"); return 0; } printf("command failed - sense %x/%x/%x\n", sense.sense_key, sense.asc, sense.ascq); return 1; } -- Jens Axboe - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/