All of lore.kernel.org
 help / color / mirror / Atom feed
From: Douglas Gilbert <dgilbert@interlog.com>
To: fangxiaozhi 00110321 <huananhu@huawei.com>
Cc: linux-scsi@vger.kernel.org
Subject: Re: Can not send SCSI command to the cdrom device.
Date: Sat, 17 Jan 2009 11:40:07 -0500	[thread overview]
Message-ID: <497209E7.4020205@interlog.com> (raw)
In-Reply-To: <face93d65cecd.5cecdface93d6@huawei.com>

fangxiaozhi 00110321 wrote:
> Dear all:
>  
>   I have a CDROM device, and after I plug it into the Linux system, the Linux system will generate three device files in the directory of /dev/, such as:
>   scd1: block special (11/0)
>   sr1:  link to scd1
>   sg1: character special(21/1)
>  
>   And I write a c program to send the SCSI command of SPACE to my CDROM device. Such as :
>  
>    fd = open("/dev/sg1", 0_RDWR);
>    ioctl(fd, SCSI_IOCTL_SEND_COMMAND, cmdbuff);
>  
>   And I found that I can send the SPACE command to my CDROM device, if I open the file of /dev/sg1.
>   But if I open the file of /dev/scd1, then I can not send the SPACE command to my CDROM device.
>  
>    Why I can not send SCSI command through /dev/scd1 ?

Probably because you don't have media in the drive in which case
open("/dev/scd1", ...) will block. You might try or-ing in
O_NONBLOCK as in open("/dev/scd1", 0_RDWR | O_NONBLOCK).

If you are using any Linux system made in the last 5 years then
you should _not_ be using the SCSI_IOCTL_SEND_COMMAND ioctl. Try
the SG_IO ioctl instead.

>    What difference between /dev/sg1 and /dev/scd1 ?

The sg driver makes a lot less assumptions about the SCSI
device and is designed for lower-level, pass-through access at
the SCSI command level. The bsg driver in recent kernels plays
a similar role to the older sg driver which dates from 1992.

>    And how can I send send the command through /dev/scd1?

Answered above. BTW In the lk 2.6 series the SG_IO ioctl will
work on both "sg" and "scd/sr" drivers.

For examples on the use of SG_IO have a look at my sg3_utils
package, specifically the examples directory. You may find the
sg_get_config utility interesting to use on a CD/DVD/BD drive.

Doug Gilbert

      reply	other threads:[~2009-01-17 16:40 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-17  9:02 Can not send SCSI command to the cdrom device fangxiaozhi 00110321
2009-01-17 16:40 ` Douglas Gilbert [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=497209E7.4020205@interlog.com \
    --to=dgilbert@interlog.com \
    --cc=huananhu@huawei.com \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.