On Mon, Aug 24, 2015 at 10:13:16PM +0200, Max Reitz wrote: > On 24.08.2015 21:34, Peter Lieven wrote: > > Am 24.08.2015 um 20:39 schrieb Max Reitz: > >> On 24.08.2015 10:06, Peter Lieven wrote: > >>> If the file is readonly its not expected to grow so > >>> save the blocking call to nfs_fstat_async and use > >>> the value saved at connection time. Also important > >>> the monitor (and thus the main loop) will not hang > >>> if block device info is queried and the NFS share > >>> is unresponsive. > >>> > >>> Signed-off-by: Peter Lieven <p...@kamp.de> > >>> --- > >>> v1->v2: update cache on reopen_prepare [Max] > >>> > >>> block/nfs.c | 35 +++++++++++++++++++++++++++++++++++ > >>> 1 file changed, 35 insertions(+) > >> Reviewed-by: Max Reitz <mre...@redhat.com> > >> > >> I hope you're ready for the "Stale actual-size value with > >> cache=direct,read-only=on,format=raw files on NFS" reports. :-) > > actually a good point, maybe the cache should only be used if > > > > !(bs->open_flags & BDRV_O_NOCACHE) > > Good enough a point to fix it? ;-) > > Max >
It seems more inline with expected behavior, to add the cache checking in before using the size cache. Would you be opposed to a v3 with this check added in? One other concern I have is similar to a concern Max raised earlier - about an external program modifying the raw image, while QEMU has it opened r/o. In particular, I wonder about an NFS server making an image either sparse / non-sparse. If it was exported read-only, it may be a valid assumption that this could be done safely, as it would not change the reported file size or contents, just the allocated size on disk.