On Tue, Apr 5, 2011 at 7:41 AM, Amit Shah <amit.shah@xxxxxxxxxx> wrote: > On (Mon) 04 Apr 2011 [16:09:05], Stefan Hajnoczi wrote: >> On Mon, Apr 4, 2011 at 2:49 PM, Avi Kivity <avi@xxxxxxxxxx> 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. > > See http://www.spinics.net/lists/linux-scsi/msg51504.html I don't think that patch updates the block inode size. We'd need to call fs/block_dev.c:revalidate_disk() instead of directly calling cdi->disk->fops->revalidate_disk(cdi->disk). fs/block_dev.c:revalidate_disk() calls check_disk_size_change(), which will update the inode size. Here are the steps to reproduce the issue: https://lkml.org/lkml/2011/3/23/156 Stefan -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list