On Mon, Apr 4, 2011 at 2:49 PM, Avi Kivity <avi(a)redhat.com> wrote:
On 04/04/2011 04:38 PM, Anthony Liguori wrote:
>
> On 04/04/2011 08:22 AM, Avi Kivity wrote:
>>
>> On 04/03/2011 02:57 PM, Stefan Hajnoczi wrote:
>>>
>>> In order for media change to work with Linux host CD-ROM it is
>>> necessary to reopen the file (otherwise the inode size will not
>>> refresh, this is an issue with existing kernels).
>>>
>>
>> Maybe we should fix the bug in Linux (and backport as necessary)?
>>
>> I think cd-rom assignment is sufficiently obscure that we can require a
>> fixed kernel instead of providing a workaround.
>
> Do reads fail after CD change? Or do they succeed and the size is just
> reported incorrectly?
>
> If it's the later, I'd agree that it needs fixing in the kernel. If
it's
> the former, I'd say it's clearly a feature.
>
Even if it's a documented or intentional feature, we can add an ioctl to
"refresh" the device with up-to-date data.
It's possible to fix this in the kernel. I just haven't written the
patch yet. The inode size needs to be updated when the new medium is
detected.
I haven't tested but I suspect reads within the size of the previous
medium will succeed. But if the new medium is larger then reads
beyond the old medium size will fail.
The size reported by lseek(fd, 0, SEEK_END) is outdated.
Stefan