On 10/08/12 10:33 AM, Thomas Schmitt wrote:
Hi,

i can reproduce the symptoms by a read-only situation of drive and
media. (It should not happen with BD-RE in a BD writer, of course.)

open_sr0.c with O_NDELAY yielded:
open: fd= 3 , errno= 0
write: ret= 2048 , errno= 0
I get the same behavior when i put a DVD into a DVD-ROM drive.
It allows me to dump my data into a black hole and reports no error
to the userspace program.
In /var/log/messages i find

   sr 6:0:0:0: [sr1] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
   sr 6:0:0:0: [sr1] Sense Key : Illegal Request [current]
   sr 6:0:0:0: [sr1] Add. Sense: Invalid command operation code
   sr 6:0:0:0: [sr1] CDB: Write(10): 2a 00 00 00 00 00 00 00 01 00
   lost page write due to I/O error on sr1

Looks like an old kernel bug resp. unwanted way to silently
shoot your own foot.
It happens too with 8 subsequent write() calls with sleep(1) inbetween.
No delayed error is returned.


-------------------------------------------------------------------

I dug out the reason why libburn (underneath xorriso) uses O_NDELAY
when it opens the drive device file.

A note to myself in libburn/sg-linux.c:

            O_NONBLOCK is prescribed by<linux/cdrom.h>
            Switched to O_NDELAY for LKML statement 2007/4/11/141 by Alan Cox:
            "open() has side effects. The CD layer allows you to open
             with O_NDELAY if you want to avoid them."

In Debian squeeze's /usr/include/linux/cdrom.h:

  * Additionally, as of Linux 2.1.x, all Linux application programs
  * should use the O_NONBLOCK option when opening a CD-ROM device
  * for subsequent ioctl commands.  This allows for neat system errors
  * like "No medium found" or "Wrong medium type" upon attempting to
  * mount or play an empty slot, mount an audio disc, or play a data disc.

This explains why open() does not fail with O_NDELAY (= O_NOBLOCK):
For ioctl(SG_IO) one needs w-permission. So it must tolerate
   O_RDWR | O_NDELAY
But why does not write(2) fail afterwards ?


Have a nice day :)

Thomas
I did try this when booting from System Rescue CD (sub stick) as well. I get the same results. I'm hoping to get another system up and running next week that also has a BluRay writer. I'll give that a try too.

Thanks.


--
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/50253af7.7080...@rogers.com

Reply via email to