Re: cdrecord dev=ATA cannont scanbus as non-root [u]

From: Martin Schlemmer [c]
Date: Wed Dec 01 2004 - 16:17:53 EST


On Tue, 2004-11-30 at 08:16 +0100, Jens Axboe wrote:
> On Mon, Nov 29 2004, J.A. Magallon wrote:
> > dev=ATAPI uses ide-scsi interface, through /dev/sgX. And:
> >
> > > scsibus: -1 target: -1 lun: -1
> > > Warning: Using ATA Packet interface.
> > > Warning: The related Linux kernel interface code seems to be unmaintained.
> > > Warning: There is absolutely NO DMA, operations thus are slow.
> >
> > dev=ATA uses direct IDE burning. Try that as root. In my box, as root:
>
> Oh no, not this again... Please check the facts: the ATAPI method uses
> the SG_IO ioctl, which is direct-to-device. It does _not_ go through
> /dev/sgX, unless you actually give /dev/sgX as the device name. It has
> nothing to do with ide-scsi. Period.
>
> ATA uses CDROM_SEND_PACKET. This has nothing to do with direct IDE
> burning, it's a crippled interface from the CDROM layer that should not
> be used for anything. scsi-linux-ata.c should be ripped from the
> cdrecord sources, or at least cdrecord should _never_ select that
> transport for 2.6 kernels. For 2.4 you are far better off using
> ide-scsi.
>
> > The scan through ATA lasts much less than with ATAPI, and you can burn with
> > dev=ATA:1,0,0 or dev=/dev/burner, which is the new recommended way.
>
> No! ATAPI is the recommended way.
>

Ok, so I am a bit confused here. We basically have 3 ways to use
cdrecord on linux-2.6 without ide-scsi:

1) cdrecord dev=/dev/hdx
2) cdrecord dev=ATA
3) cdrecord dev=ATAPI

Now, if I run all three and grep for '^Warning', I get:

-----
$ cdrecord dev=/dev/cdrw -scanbus 2>&1 | grep '^Warning'
Warning: Open by 'devname' is unintentional and not supported.
$ cdrecord dev=ATA -scanbus 2>&1 | grep '^Warning'
Warning: Using badly designed ATAPI via /dev/hd* interface.
$ cdrecord dev=ATAPI -scanbus 2>&1 | grep '^Warning'
Warning: Using ATA Packet interface.
Warning: The related Linux kernel interface code seems to be unmaintained.
Warning: There is absolutely NO DMA, operations thus are slow.
$
-----

Which means:

1) dev=/dev/hdx - Open by 'devname' is unintentional and not supported.
2) dev=ATA - Using badly designed ATAPI via /dev/hd* interface.
3) dev=ATAPI - Using ATA Packet interface.
(And some nice things about it not being maintained and
slow)

If I check the source for that, I get:

-----
libscg $ grep "Open by 'devname' is unintentional and not supported." *
scsi-linux-sg.c: "Warning: Open by 'devname' is unintentional and not supported.\n");
libscg $ grep 'Using badly designed ATAPI via /dev/hd\* interface.' *
scsi-linux-sg.c: "Warning: Using badly designed ATAPI via /dev/hd* interface.\n");
libscg $ grep 'Using ATA Packet interface.' *
scsi-linux-ata.c: error("Warning: Using ATA Packet interface.\n");
libscg #
-----

Which hopefully (without really checking the source) means each are
implemented in these source files:

1) dev=/dev/hdx - scsi-linux-sg.c
2) dev=ATA - scsi-linux-sg.c
3) dev=ATAPI - scsi-linux-ata.c

So if I take note of you comment above about scsi-linux-ata.c (or actually
give a fart about Jorg's warning about unmaintained and slow), should ATA
rather than ATAPI not be the recommended way??

Also, how about having the kernel print a warning when the depreciated
interface (ATAPI??) is used ?


Thanks,

--
Martin Schlemmer

Attachment: signature.asc
Description: This is a digitally signed message part