From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=57668 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q7lFq-0000Lf-D1 for qemu-devel@nongnu.org; Thu, 07 Apr 2011 05:11:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q7lFn-0004GG-Sm for qemu-devel@nongnu.org; Thu, 07 Apr 2011 05:11:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57415) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q7lFn-0004G2-KC for qemu-devel@nongnu.org; Thu, 07 Apr 2011 05:11:51 -0400 Date: Thu, 7 Apr 2011 14:41:39 +0530 From: Amit Shah Message-ID: <20110407091139.GC11546@amit-x200.redhat.com> References: <4D9D7CE8.7070001@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4D9D7CE8.7070001@redhat.com> Subject: [Qemu-devel] Re: [PATCH v2 1/2] cdrom: Allow the TEST_UNIT_READY command after a cdrom change List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: Gleb Natapov , Juan Quintela , Stefan Hajnoczi , Markus Armbruster , qemu list On (Thu) 07 Apr 2011 [10:59:20], Kevin Wolf wrote: > Am 07.04.2011 07:05, schrieb Amit Shah: > > We restrict the commands that a guest can send us after a cdrom change > > event. The current list includes REQUEST_SENSE and INQUIRY commands. > > Guests can also issue TEST_UNIT_READY to inquire for the status, so > > allow this command as well. > > > > Signed-off-by: Amit Shah > > Hm... MMC-5, section 4.1.6.1 seems to conflict with this: > > "If a Host issues a command other than GET CONFIGURATION, GET EVENT > STATUS NOTIFICATION, INQUIRY or REQUEST SENSE while a unit attention > condition exists for that Host, the Drive shall not perform the command > and shall report CHECK CONDITION status unless a higher priority status > as defined by the Drive is also pending." > > So while you're right that our list is incomplete, TEST UNIT READY > doesn't seem to be among the missing commands. Hm - older Linux guests (pre 2.6.38) and Windows guests, as Gleb's commit mentioned, rely on this command to get CD change notifications: /* identical to scsi_test_unit_ready except that it doesn't * eat the NOT_READY returns for removable media */ int sr_test_unit_ready(struct scsi_device *sdev, struct scsi_sense_hdr *sshdr) { int retries = MAX_RETRIES; int the_result; u8 cmd[] = {TEST_UNIT_READY, 0, 0, 0, 0, 0 }; /* issue TEST_UNIT_READY until the initial startup UNIT_ATTENTION * conditions are gone, or a timeout happens */ do { the_result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, sshdr, SR_TIMEOUT, retries--, NULL); if (scsi_sense_valid(sshdr) && sshdr->sense_key == UNIT_ATTENTION) sdev->changed = 1; } while (retries > 0 && (!scsi_status_is_good(the_result) || (scsi_sense_valid(sshdr) && sshdr->sense_key == UNIT_ATTENTION))); return the_result; } There could be something else brewing as well. We never report a 'tray open' condition; maybe the guest will be happy with such a thing as well. Will have to check. Amit