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
Created attachment 394964 [details] Run with udevd killed
Created attachment 394968 [details] commented log from udevadm monitor --udev --property --kernel
Looking at udev rules I do see that everything gets passed to hal. However, the issue still occurs after `service haldaemon stop`
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
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.
Opened bz 566581 against util-linux-ng for the blkid issue.
Thanks for the detailed bug report! @ Kay Sievers, Told you! :-)
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)
(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 :)
udev-145-16.fc12 has been submitted as an update for Fedora 12. http://admin.fedoraproject.org/updates/udev-145-16.fc12
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.
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
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.
still not complete, blkid needs O_EXCL
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.
(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?
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.
Created attachment 405031 [details] udevadm monitor --udev --property --kernel logs for various DVD loading stages
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
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.
udev-145-20.fc12 has been submitted as an update for Fedora 12. http://admin.fedoraproject.org/updates/udev-145-20.fc12
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
Just some feedback. Since upgrading to udev-145-20.fc12 I have had no problems with udev and loading dvds. thanks Alan
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.