Message ID | 1357828767-2327-1-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
Am 10.01.2013 15:39, schrieb Paolo Bonzini: > A blank CD or DVD is visible as a zero-sized disks. Probing such > disks will lead to an EIO and a failure to start the VM. Treating > them as raw is a better solution. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > block.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block.c b/block.c > index c05875f..b9da10e 100644 > --- a/block.c > +++ b/block.c > @@ -532,7 +532,7 @@ static int find_image_format(const char *filename, BlockDriver **pdrv) > } > > /* Return the raw BlockDriver * to scsi-generic devices or empty drives */ > - if (bs->sg || !bdrv_is_inserted(bs)) { > + if (bs->sg || !bdrv_is_inserted(bs) || bdrv_getlength(bs) == 0) { > bdrv_delete(bs); > drv = bdrv_find_format("raw"); > if (!drv) { > Thanks, rebased and applied to the block branch. Kevin
On 01/10/2013 07:39 AM, Paolo Bonzini wrote: > A blank CD or DVD is visible as a zero-sized disks. Probing such > disks will lead to an EIO and a failure to start the VM. Treating > them as raw is a better solution. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > block.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block.c b/block.c > index c05875f..b9da10e 100644 > --- a/block.c > +++ b/block.c > @@ -532,7 +532,7 @@ static int find_image_format(const char *filename, BlockDriver **pdrv) > } > > /* Return the raw BlockDriver * to scsi-generic devices or empty drives */ > - if (bs->sg || !bdrv_is_inserted(bs)) { > + if (bs->sg || !bdrv_is_inserted(bs) || bdrv_getlength(bs) == 0) { Do we need to extend this to all files with size smaller than the length of the header used in probing to determine a non-raw file? Or is the case of someone passing a 1-byte file as a backing file of a device too unlikely, where refusing to start the VM is okay for that case?
On Thu, Jan 10, 2013 at 03:39:27PM +0100, Paolo Bonzini wrote: > A blank CD or DVD is visible as a zero-sized disks. Probing such > disks will lead to an EIO and a failure to start the VM. Treating > them as raw is a better solution. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > block.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block.c b/block.c > index c05875f..b9da10e 100644 > --- a/block.c > +++ b/block.c > @@ -532,7 +532,7 @@ static int find_image_format(const char *filename, BlockDriver **pdrv) > } > > /* Return the raw BlockDriver * to scsi-generic devices or empty drives */ > - if (bs->sg || !bdrv_is_inserted(bs)) { > + if (bs->sg || !bdrv_is_inserted(bs) || bdrv_getlength(bs) == 0) { Looks good but I wouldn't understand the reason for the zero size check when reading the code. Please add a comment so no one changes/removes this code in the future. Stefan
diff --git a/block.c b/block.c index c05875f..b9da10e 100644 --- a/block.c +++ b/block.c @@ -532,7 +532,7 @@ static int find_image_format(const char *filename, BlockDriver **pdrv) } /* Return the raw BlockDriver * to scsi-generic devices or empty drives */ - if (bs->sg || !bdrv_is_inserted(bs)) { + if (bs->sg || !bdrv_is_inserted(bs) || bdrv_getlength(bs) == 0) { bdrv_delete(bs); drv = bdrv_find_format("raw"); if (!drv) {
A blank CD or DVD is visible as a zero-sized disks. Probing such disks will lead to an EIO and a failure to start the VM. Treating them as raw is a better solution. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- block.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)