USB DVD drives unable to eject from GuestVM or with physical button

Description

Windows 10 guest VMs are sometimes unable to eject CDs and DVDs from a USB drive. This can occur under several circumstances.

  1. After burning a CD or DVD, windows will sometimes report an error, unable to eject disk. The disk cannot be ejected through explorer, command line, or physical button. Must be ejected through UIVM.

  2. Sometimes after opening a CD or DVD using windows explorer, trying to eject the disk using physical button, windows explorer, or command line will fail. Only way to eject the disk is through UIVM.

Behaviour is inconsistent, does not repro every time. Attempt to burn or access a disk multiple times to see behavior.

Environment

Dell Latitude 7490
1.8.0 BIOS, UEFI, TPM2
GUESTS:
Windows 10 1803 - Legacy - Tools installed
Windows 10 1809 - Legacy - Tools installed
Rhel 7.6 - Legacy - No tools

Validation Steps

  1. Install OpenXT Stable 9 Build 6524, UEFI

  2. Install Guest VM, Windows 10 (1803 or 1809)

  3. Install guest tools and reboot guest VM

  4. In guest details, add USB device (external CD or DVD drive)

  5. In guest VM, burn a CD/DVD or access the files on an existing CD/DVD

  6. Try to eject disk through Windows Explorer, with physical button, or through command line

  7. If disk does not eject, try ejecting through UIVM

Activity

Show:
Mahantesh Salimath
June 28, 2019, 5:17 PM
Edited

udev is responsible for locking the drive. This is can be seen in udev rules present at

The reason for locking the drive is to look for DISK_EJECT_REQUEST event and then eject it.
This event is triggered by pressing the eject the button on the drive. In linux distributions (ex: debian), while monitoring udev, I could see that pressing the button triggers the event:

But this isn't the case in OpenXT. Not sure exactly why this event is not triggered on pressing the button.

This presents two possible solutions to the problem:

  1. Comment out the drive locking code in udev rules file if not remove the entire file, so that the drive is never locked.

  2. Find why DISK_EJECT_REQUEST is not triggered on pressing the drive eject button and fix it, this way when the event is triggered, udev takes care of ejecting the disk.

I tried solution 1 and it is working as expected, able to eject drive from the guest and also by pressing the button.
Solution 2 might sound like a proper fix, but not sure if it is possible in OpenXT (as systemd might be involved ?).

Any thoughts/suggestions ?

Rich Persaud
June 28, 2019, 8:09 PM

What is the behavior in OpenXT 8.0?

Mahantesh Salimath
June 28, 2019, 8:17 PM

Same, drive gets locked because of udev rules.

Rich Persaud
June 28, 2019, 8:27 PM
Edited

There's a (toolstack?) state machine for USB optical drives, to enable use in dom0 (e.g. VM installation) and a single guest. Testing and fixes need to cover the valid scenarios. There are also some security policies related to optical drives.

Chris Rogers
July 29, 2019, 3:00 PM

Verified in build 6674 using Validation Steps. Disk can be ejected using any method.

Fixed

Assignee

Mahantesh Salimath

Reporter

Andrew Jones

Labels

None

QA Assignee

Chris Rogers

QA Image URL

None

Epic Link

Fix versions

Affects versions

Priority

Minor
Configure