Re: [PATCH v4 rebase 00/10] Fix cdrom autoclose

From: Jens Axboe
Date: Tue Nov 26 2019 - 18:13:40 EST


On 11/26/19 1:21 PM, Michal SuchÃnek wrote:
> On Tue, Nov 26, 2019 at 01:01:42PM -0700, Jens Axboe wrote:
>> On 11/26/19 12:54 PM, Michal Suchanek wrote:
>>> Hello,
>>>
>>> there is cdrom autoclose feature that is supposed to close the tray,
>>> wait for the disc to become ready, and then open the device.
>>>
>>> This used to work in ancient times. Then in old times there was a hack
>>> in util-linux which worked around the breakage which probably resulted
>>> from switching to scsi emulation.
>>>
>>> Currently util-linux maintainer refuses to merge another hack on the
>>> basis that kernel still has the feature so it should be fixed there.
>>> The code needs not be replicated in every userspace utility like mount
>>> or dd which has no business knowing which devices are CD-roms and where
>>> the autoclose setting is in the kernel.
>>>
>>> This is rebase on top of current master.
>>>
>>> Also it seems that most people think that this is fix for WMware because
>>> there is one patch dealing with WMware.
>>
>> I think the main complaint with this is that it's kind of a stretch to
>> add core functionality for a device type that's barely being
>> manufactured anymore and is mostly used in a virtualized fashion. I
>> think it you could fix this without 10 patches of churn and without
>> adding a new ->open() addition to fops, then people would be a lot more
>> receptive to the idea of improving cdrom auto-close.
>
> I see no way to do that cleanly.
>
> There are two open modes for cdrom devices - blocking and
> non-blocking.
>
> In blocking mode open() should analyze the medium so that it's ready
> when it returns. In non-blocking mode it should return immediately so
> long as you can talk to the device.
>
> When waiting in open() with locks held the processes trying to open
> the device are locked out regradless of the mode they use.
>
> The only way to solve this is to pretend that the device is open and
> do the wait afterwards with the device unlocked.

How is this any different from an open on a file that needs to bring in
meta data on a busy rotating device, which can also take seconds?

--
Jens Axboe