Re: CD writing in future Linux (stirring up a hornets' nest)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Feb 13, 2006 at 07:49:21AM -0800, Greg KH wrote:
> On Mon, Feb 13, 2006 at 02:26:54PM +0100, Joerg Schilling wrote:
> > Greg KH <[email protected]> wrote:
> > 
> > > On Fri, Feb 10, 2006 at 04:06:39PM -0500, Bill Davidsen wrote:
> > > > 
> > > > The kernel could provide a list of devices by category. It doesn't have 
> > > > to name them, run scripts, give descriptions, or paint them blue. Just a 
> > > > list of all block devices, tapes, by major/minor and category (ie. 
> > > > block, optical, floppy) would give the application layer a chance to do 
> > > > it's own interpretation.
> > >
> > > It does so today in sysfs, that is what it is there for.
> > 
> > Do you really whant libscg to open _every_ non-directory file under /sys?
> 
> Of course not.  Here's one line of bash that gets you the major:minor
> file of every block device in the system:
> 	block_devices="$(echo /sys/block/*/dev /sys/block/*/*/dev)"

Of course, that's entirely useless if you're not root.

So what you _really_ have to do is to call udevinfo -e.  If that
fails, call udevinfo -d, that's the old name for the option which got
changed along the way.  The result is blocks of text lines separated
by blank lines, text lines of the form:

I: value

Where I is a one-letter uppercase identifier, and value a value.

If you get E: entries, you're lucky.  All cdroms have a E: ID_CDROM=1
entry, but these entries appeared late.  Otherwise, the best bet is to
scan the S: entries for something matching /cdrom/.  When you have a
bloc of lines, get the N: entry, that's the node name, and prepend it
with the result of udevinfo -r (usually /dev/, but that's not
mandatory).  That will give you the device node path to open (don't
forget O_EXCL to avoid Hal stomping all over you), which you can then
use SG_IO with.

If udevinfo is not available, you'll have to try opening all /dev/hd*,
/dev/sr*, /dev/scd*, /dev/sg*, /dev/cdr* and /dev/dvd* (don't stop at
the first -EANYTHING though, otherwise you'll miss some).  Then you
can poke the device carefully with SG_IO.

  OG.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux