[Libcdio-devel] Export cd's without mounting them. samba vfs module using gnu's libcdio

Dan Sturtevant sturtx at gmail.com
Wed Jan 19 20:37:18 GMT 2005


>   Must link libcdio libraries statically because of what I think is a
>   bug in their make system. In the shared version of the libraries,
>   the iso9660_ifs_stat() function is not exported
> 
> I believe this is currently fixed in the libcdio CVS. It's not hard to
> patch either. Edit libcdio/lib/iso9660/libiso9660.sym
> 
> And add line like:
> 
> iso9660_ifs_stat
> 
Thanks for the info on fixing up the shared object.


> I think someone else asked about this with regard to writing something
> like a "tar" command for iso9660 images. Unless someone else works on
> it (and of course I enourage folks to do so), it probably won't be in
> the next release (0.72) which is focusing on cdparanoia support.
> 
> But assuming no one else handles by 0.72, I'll put it on the list of
> things for 0.73.
> 

Do you have any Rock Ridge documentation or do you know where to get it?
We might try to make a stab at it.


> I'm not sure I understand what this means. If you mean detect if the
> Media in the CD has changed, in the SCSI MMC spec I think there there
> is a flag that can be queried called "media changed". Not all drives
> support this, and right now there is no libcdio routine to what would
> be done. However there is a generic interface for issuing SCSI MMC
> commands. So one could craft the suitable command with some small
> logic around it and pass it along to the CD-ROM. If this information
> is relevant and this route is taken and if you send back the
> appropriate command or routine that encapsulates the logic, I can
> probably out that in libcdio.
> 

Thanks, we'll look at the generic SCSI MMC stuff.

> libcdio does have an cdio_eject() routine. So do you mean that it
> doesn't work? Apropos to cdio_eject, I've noticed that there is eject
> and there is I-really-mean-eject! The commands that are provided by an
> OS or issued via SCSI MMC may generally fail if the drive is mounted,
> someone has "locked" the CD, is playing it or whatnot. And this is
> generally what libcdio uses (although it may not be consistent here.)
> If you look at the various media players, they've enhanced the "eject"
> command with unmounts, kills, or just calls to
> system("/usr/bin/eject") to get the other kind of eject. Proabably
> this more forceful eject should be added to libcdio.

We don't care about ejecting the cd programatically.  We just want to know when
the user has pressed the button on the drive to eject it or if it has
been removed by some other means. (eject button)

What we're really trying to do here is emulate windows CD behavior
over a SMB share.
This means the drive should never be locked.  It seems like the kernel
is locking the door for us even though we just have an open handle to
the /dev/cdrom device.  We're not quite sure what's causing this.  The
eject command still works, but the button on the case does not.

Thanks again for writing libcdio.  It's a great piece of code.


More information about the samba-technical mailing list