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; Cheers, Jes