Message ID | CB31C849-5B06-4878-8228-5DFD82849F89@gmail.com |
---|---|
State | New |
Headers | show |
On Mon, Jul 27, 2015 at 12:28:03PM -0400, Programmingkid wrote: > Add support for caching options that can be specified from > the command line. Please squash this into the commit message when merging: The CD-ROM raw char device bypasses the host page cache and therefore has alignment requirements. Alignment probing is necessary so only use the raw char device if BDRV_O_NOCACHE is set. This patch fixes -cdrom /dev/cdrom on Mac OS X hosts, where bdrv_read() used to fail due to misaligned requests during image format probing. Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
On Jul 28, 2015, at 6:18 AM, Stefan Hajnoczi wrote: > On Mon, Jul 27, 2015 at 12:28:03PM -0400, Programmingkid wrote: >> Add support for caching options that can be specified from >> the command line. > > Please squash this into the commit message when merging: Is this message meant for Kevin Wolf? > > The CD-ROM raw char device bypasses the host page cache and therefore > has alignment requirements. Alignment probing is necessary so only use > the raw char device if BDRV_O_NOCACHE is set. > > This patch fixes -cdrom /dev/cdrom on Mac OS X hosts, where bdrv_read() > used to fail due to misaligned requests during image format probing. > > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
On Tue, Jul 28, 2015 at 4:26 PM, Programmingkid <programmingkidx@gmail.com> wrote: > > On Jul 28, 2015, at 6:18 AM, Stefan Hajnoczi wrote: > >> On Mon, Jul 27, 2015 at 12:28:03PM -0400, Programmingkid wrote: >>> Add support for caching options that can be specified from >>> the command line. >> >> Please squash this into the commit message when merging: > > Is this message meant for Kevin Wolf? Yes. He maintains block/raw-posix.c and will see the message when reviewing this patch series. Stefan
diff --git a/block/raw-posix.c b/block/raw-posix.c index cbe6574..67d1d48 100644 --- a/block/raw-posix.c +++ b/block/raw-posix.c @@ -1973,8 +1973,8 @@ BlockDriver bdrv_file = { #if defined(__APPLE__) && defined(__MACH__) static kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator ); -static kern_return_t GetBSDPath( io_iterator_t mediaIterator, char *bsdPath, CFIndex maxPathSize ); - +static kern_return_t GetBSDPath(io_iterator_t mediaIterator, char *bsdPath, + CFIndex maxPathSize, int flags); kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator ) { kern_return_t kernResult; @@ -2001,7 +2001,8 @@ kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator ) return kernResult; } -kern_return_t GetBSDPath( io_iterator_t mediaIterator, char *bsdPath, CFIndex maxPathSize ) +kern_return_t GetBSDPath(io_iterator_t mediaIterator, char *bsdPath, + CFIndex maxPathSize, int flags) { io_object_t nextMedia; kern_return_t kernResult = KERN_FAILURE; @@ -2014,7 +2015,9 @@ kern_return_t GetBSDPath( io_iterator_t mediaIterator, char *bsdPath, CFIndex ma if ( bsdPathAsCFString ) { size_t devPathLength; strcpy( bsdPath, _PATH_DEV ); - strcat( bsdPath, "r" ); + if (flags & BDRV_O_NOCACHE) { + strcat(bsdPath, "r"); + } devPathLength = strlen( bsdPath ); if ( CFStringGetCString( bsdPathAsCFString, bsdPath + devPathLength, maxPathSize - devPathLength, kCFStringEncodingASCII ) ) { kernResult = KERN_SUCCESS; @@ -2126,8 +2129,8 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags, int fd; kernResult = FindEjectableCDMedia( &mediaIterator ); - kernResult = GetBSDPath( mediaIterator, bsdPath, sizeof( bsdPath ) ); - + kernResult = GetBSDPath(mediaIterator, bsdPath, sizeof(bsdPath), + flags); if ( bsdPath[ 0 ] != '\0' ) { strcat(bsdPath,"s0"); /* some CDs don't have a partition 0 */
Add support for caching options that can be specified from the command line. Signed-off-by: John Arbuckle <programmingkidx@gmail.com> --- block/raw-posix.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)