Am 20.07.2010 18:04, schrieb Jes Sorensen: > On 07/20/10 17:40, Kevin Wolf wrote: >>> diff --git a/block/raw-posix.c b/block/raw-posix.c >>> index 291699f..0ea79b6 100644 >>> --- a/block/raw-posix.c >>> +++ b/block/raw-posix.c >>> @@ -1139,6 +1139,11 @@ static int cdrom_open(BlockDriverState *bs, const >>> char *filename, int flags) >>> BDRVRawState *s = bs->opaque; >>> >>> s->type = FTYPE_CD; >>> + if (flags & BDRV_O_NOCACHE) { >>> + fprintf(stderr, "Disabling unsupported O_DIRECT (cache=none) for " >>> + "CDROM/DVD device (%s)\n", filename); >>> + flags &= ~BDRV_O_NOCACHE; >>> + } >> >> Good point. Just one detail: We should probably change bs->open_flags, >> too, to keep things consistent. > > Thats effectively what my patch does. cdrom_open() calls > raw_open_common() which has this part: > > /* Use O_DSYNC for write-through caching, no flags for write-back > caching, > * and O_DIRECT for no caching. */ > if ((bdrv_flags & BDRV_O_NOCACHE)) > s->open_flags |= O_DIRECT;
s and bs both have a field open_flags (and I think they share some more field names, which has caused confusion more than once). I meant the bs one here. Kevin