Re: BD-RE mount problem
Gary Dale <[email protected]>
| Newsgroups | gmane.comp.audio.cd-record,gmane.linux.debian.user |
|---|---|
| Message-ID | <[email protected]> |
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 [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]