On Mon, Jan 19, 2015 at 10:12 PM, Programmingkid <programmingk...@gmail.com> wrote: > Subject was: > Re: [PATCH v7] block/raw-posix.c: Fixes raw_getlength() > on Mac OS X so that it reports the correct length of a real CD > > This patch allows Mac OS X to use a real CDROM disc in QEMU. > Testing this patch will require using QEMU v2.2.0 because the > current git version has a bug in it that prevents /dev/cdrom from > being used. "make check" did pass and my Debian boot disc did work. > > Signed-off-by: John Arbuckle <programmingk...@gmail.com> > > --- > Fixed code indentation to be inline with removed > size = LLONG_MAX. > > block/raw-posix.c | 15 ++++++++++++++- > 1 files changed, 14 insertions(+), 1 deletions(-) > > diff --git a/block/raw-posix.c b/block/raw-posix.c > index e51293a..fa431b2 100644 > --- a/block/raw-posix.c > +++ b/block/raw-posix.c > @@ -1312,7 +1312,20 @@ again: > if (size == 0) > #endif > #if defined(__APPLE__) && defined(__MACH__) > - size = LLONG_MAX; > + { > + uint64_t sectors = 0; > + uint32_t sector_size = 0; > + > + if (ioctl(fd, DKIOCGETBLOCKCOUNT, §ors) == 0 > + && ioctl(fd, DKIOCGETBLOCKSIZE, §or_size) == 0) { > + size = sectors * sector_size; > + } else { > + size = lseek(fd, 0LL, SEEK_END); > + if (size < 0) { > + return -errno; > + } > + } > + } > #else > size = lseek(fd, 0LL, SEEK_END); > if (size < 0) {
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>