Bug 566535 - udev appears to break CD-R burning
Summary: udev appears to break CD-R burning
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: udev
Version: 12
Hardware: All
OS: Linux
low
high
Target Milestone: ---
Assignee: Harald Hoyer
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-02-18 18:47 UTC by nayfield
Modified: 2010-04-23 22:58 UTC (History)
6 users (show)

Fixed In Version: udev-145-20.fc12
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 566581 582557 (view as bug list)
Environment:
Last Closed: 2010-04-23 22:58:24 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
Run with udevd killed (6.24 KB, text/plain)
2010-02-18 18:49 UTC, nayfield
no flags Details
commented log from udevadm monitor --udev --property --kernel (8.63 KB, text/plain)
2010-02-18 19:00 UTC, nayfield
no flags Details
udevadm monitor --udev --property --kernel logs for various DVD loading stages (1.54 KB, text/plain)
2010-04-07 17:04 UTC, Alan Bruce
no flags Details
udevadm monitor --udev --property --kernel logs for various DVD loading stages (56.01 KB, application/x-gzip)
2010-04-07 17:08 UTC, Alan Bruce
no flags Details

Description nayfield 2010-02-18 18:47:33 UTC
Description of problem:

By default, up-to-date F12 x86_64 installation can't burn on SATA burner.  A new burner was purchased and same result.

Version-Release number of selected component (if applicable):

udev-145-15.fc12.x86_64


How reproducible:

Always, 100%.  

Also, killing udevd fixes the problem 100%

Steps to Reproduce:
1. Attempt to burn CD with brasero (may be sata specific)
  
Actual results:

from running wodim by hand:
[...]
Performing OPC...
Sending CUE sheet...
SAO startsec: -11607
Writing lead-in...
Errno: 5 (Input/output error), write_g1 scsi sendcmd: no error
CDB:  2A 00 FF FF FB 49 00 02 8A 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: 70 00 05 00 00 00 00 0A 2A 00 00 80 30 05 00 00
Sense Key: 0x5 Illegal Request, Segment 0
Sense Code: 0x30 Qual 0x05 (cannot write medium - incompatible format) Fru 0x0
Sense flags: Blk 0 (not valid) 
cmd finished after 0.006s timeout 200s
write CD-Text data: error after 998400 bytes
wodim: Could not write Lead-in.
Writing  time:   18.527s
wodim: fifo had 255 puts and 0 gets.
wodim: fifo was 0 times empty and 0 times full, min fill was 100%.



Expected results:

no sense errors

Additional info:

* `sudo killall udevd` and then repeating the command will succeed.

* commenting out all lines in 70-persistent-cd.rules


My theory is that udev is acting on the kernel uevent that happens when brasero starts to write, and somehow impacts the system

Comment 1 nayfield 2010-02-18 18:49:25 UTC
Created attachment 394964 [details]
Run with udevd killed

Comment 2 nayfield 2010-02-18 19:00:13 UTC
Created attachment 394968 [details]
commented log from udevadm monitor --udev --property --kernel

Comment 3 nayfield 2010-02-18 19:03:51 UTC
Looking at udev rules I do see that everything gets passed to hal.

However, the issue still occurs after `service haldaemon stop`

Comment 4 nayfield 2010-02-18 19:12:54 UTC
it has to do with 60-cdrom_id.rules.

It seems that cdrom_id runs against the cd burner at the point where burning starts in the udev log I attached.




I can burn CDs / DVDs by creating an empty file with this name in /etc/udev/rules.d

Comment 5 nayfield 2010-02-18 20:56:01 UTC
digging around with systemtap it seems there are several things that open /dev/sr0 while wodim is burning.

I then disabled 60-persistent-storage.rules and ran them during burns to see what was causing the problem.


Summary:

Things that come from udev which read from sr0 that don't honor O_EXCL:
 blkid - kills burns instantly
 devkit-disks-part-id - kills burns instantly
 cdrom_id - doesn't kill burns
 scsi_id - doesn't kill burns

hald-addon-storage opens sr0 every second or so but uses O_EXCL and thus doesn't interfere.

Comment 6 nayfield 2010-02-18 21:24:55 UTC
Opened bz 566581 against util-linux-ng for the blkid issue.

Comment 7 Harald Hoyer 2010-02-19 10:32:41 UTC
Thanks for the detailed bug report!

@ Kay Sievers, Told you! :-)

Comment 8 nayfield 2010-03-13 14:06:43 UTC
Harald, any thoughts here?  

There are plenty of ways to fix it, I bet you like the last one:

. make blkid honor O_EXCL (another package) and devkit-disks-part-id
. make the kernel force O_EXCL on non EXCL opens like on a floppy
  (I know that this won't happen, just putting it down)
. make udev rules not do this stuff when cd-r is open EXCL
. make udev rules not do this detection at all for cd-roms
  (since haldaemon does this for runlevel 5 users, and those in runlevel 3 probably don't want automatic mount of cd's anyway)

Comment 9 Harald Hoyer 2010-03-16 10:31:52 UTC
(In reply to comment #8)
> Harald, any thoughts here?  
> 
> There are plenty of ways to fix it, I bet you like the last one:
> 
> . make blkid honor O_EXCL (another package) and devkit-disks-part-id
> . make the kernel force O_EXCL on non EXCL opens like on a floppy
>   (I know that this won't happen, just putting it down)
> . make udev rules not do this stuff when cd-r is open EXCL
> . make udev rules not do this detection at all for cd-roms
>   (since haldaemon does this for runlevel 5 users, and those in runlevel 3
> probably don't want automatic mount of cd's anyway)    

I already have a patch for blkid, which adds an option to open the device O_EXCL and O_NONBLOCK. The patch also checks, if the device is already mounted and then drop the O_EXCL. Patience :)

Comment 10 Fedora Update System 2010-03-19 11:12:00 UTC
udev-145-16.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/udev-145-16.fc12

Comment 11 Harald Hoyer 2010-03-19 11:20:28 UTC
This is the first part of O_EXCL in udev. The second part will be provided, if blkid ships with an option to use O_EXCL.

Comment 12 Fedora Update System 2010-03-23 23:39:09 UTC
udev-145-19.fc12 has been pushed to the Fedora 12 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update udev'.  You can provide feedback for this update here: http://admin.fedoraproject.org/updates/udev-145-19.fc12

Comment 13 Fedora Update System 2010-03-25 22:34:33 UTC
udev-145-19.fc12 has been pushed to the Fedora 12 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 14 Harald Hoyer 2010-03-26 07:56:05 UTC
still not complete, blkid needs O_EXCL

Comment 15 Alan Bruce 2010-04-06 17:14:13 UTC
2.6.32.10-90.fc12.x86_64 #1 SMP
with
udev-145-19.fc12.x86_64

My actions

Burning Fedora 12 DVD (i386 or x86_64) at 12x (in 16x burner)

Result

After burning several DVDs (1 or 2) the newly burned DVD does not get mounted.
It shows up ok for a few times, then not at all. This is reproducible after reboot.
Subsequently I can manually eject using the button on the drive.
Then when placing blank disc in drive, it does not show up on desktop or in any place. The drive in /dev shows as unmounted.

BUT ...

I can still burn a disc using Brasero !
It fails a disc check though.

Expected result

Disc shows up on Desktop or in /dev

Work around

Run start_udev from a terminal, the blank or burned disc shows up instantly.


I'm not sure if this is related, but I can't eject or unmount any discs by right clicking and using the context menu, I get a crash. This is why I only ever eject using the drive controls. I set Brasero to eject when finished but it never does, and never has.

I burn a lot of discs as I am in Freemedia group.

Comment 16 Harald Hoyer 2010-04-07 10:13:53 UTC
(In reply to comment #15)
> I'm not sure if this is related, but I can't eject or unmount any discs by
> right clicking and using the context menu, I get a crash.

crash? which app crashes? do you have any coredumps?

Comment 17 Alan Bruce 2010-04-07 16:58:39 UTC
I've just tested again and eject appears to work fine now ! Typical...
I haven't used it for a while because of the crashes. I did use the auto reporting tool to submit the reports when it happened before.

I've logged the udev events when loading or unloading blank and burned DVDs which still do not get mounted until start_udev is executed.

Comment 18 Alan Bruce 2010-04-07 17:04:08 UTC
Created attachment 405031 [details]
udevadm monitor --udev --property --kernel logs for various DVD loading stages

Comment 19 Alan Bruce 2010-04-07 17:08:31 UTC
Created attachment 405032 [details]
udevadm monitor --udev --property --kernel logs for various DVD loading stages

Sorry, meant to add all logs. Now in tar.gz

Comment 20 Alan Bruce 2010-04-07 17:13:06 UTC
The order of the logs is :

load_blank_dvd.log
run_start_udev_on_blank_dvd.log
manual_eject_blank_dvd.log
load_burned_dvd.log
run_start_udev_on_burned_dvd.log
context_menu_eject_burned_dvd.log

Just to recap, nothing shows up on the desktop or in /dev until start_udev is run.

Comment 21 Fedora Update System 2010-04-13 16:40:51 UTC
udev-145-20.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/udev-145-20.fc12

Comment 22 Fedora Update System 2010-04-15 03:16:06 UTC
udev-145-20.fc12 has been pushed to the Fedora 12 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update udev'.  You can provide feedback for this update here: http://admin.fedoraproject.org/updates/udev-145-20.fc12

Comment 23 Alan Bruce 2010-04-18 17:02:30 UTC
Just some feedback.

Since upgrading to udev-145-20.fc12 I have had no problems with udev and loading dvds.

thanks

Alan

Comment 24 Fedora Update System 2010-04-23 22:57:57 UTC
udev-145-20.fc12 has been pushed to the Fedora 12 stable repository.  If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.