qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Cody <jcody@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, grantwwu@gmail.com, qemu-devel@nongnu.org,
	stefanha@redhat.com, sbaugh@catern.com
Subject: [Qemu-devel] [PATCH for-2.6 4/7] block/vpc: Use the correct max sector count for VHD images
Date: Tue, 22 Mar 2016 23:33:41 -0400	[thread overview]
Message-ID: <fff4dc646b0bf70a33181e6907997f6217e4dc8c.1458702790.git.jcody@redhat.com> (raw)
In-Reply-To: <cover.1458702790.git.jcody@redhat.com>
In-Reply-To: <cover.1458702790.git.jcody@redhat.com>

The old VHD_MAX_SECTORS value is incorrect, and is a throwback
to the CHS calculations.  The VHD specification allows images up to 2040
GiB, which (using 512 byte sectors) corresponds to a maximum number of
sectors of 0xff000000, rather than the old value of 0xfe0001ff.

Update VHD_MAX_SECTORS to reflect the correct value.

Also, update comment references to the actual size limit, and correct
one compare so that we can have sizes up to the limit.

Signed-off-by: Jeff Cody <jcody@redhat.com>
---
 block/vpc.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/block/vpc.c b/block/vpc.c
index 6ad8406..2e023d0 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -51,7 +51,7 @@ enum vhd_type {
 #define VHD_CHS_MAX_H   16
 #define VHD_CHS_MAX_S   255
 
-#define VHD_MAX_SECTORS       (65535LL * 255 * 255)
+#define VHD_MAX_SECTORS       0xff000000    /* 2040 GiB max image size */
 #define VHD_MAX_GEOMETRY      (VHD_CHS_MAX_C * VHD_CHS_MAX_H * VHD_CHS_MAX_S)
 
 #define VPC_OPT_FORCE_SIZE "force_size"
@@ -316,8 +316,8 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
                                         BDRV_SECTOR_SIZE;
     }
 
-    /* Allow a maximum disk size of approximately 2 TB */
-    if (bs->total_sectors >= VHD_MAX_SECTORS) {
+    /* Allow a maximum disk size of 2040 GiB */
+    if (bs->total_sectors > VHD_MAX_SECTORS) {
         ret = -EFBIG;
         goto fail;
     }
@@ -721,7 +721,7 @@ static int64_t coroutine_fn vpc_co_get_block_status(BlockDriverState *bs,
  * Note that the geometry doesn't always exactly match total_sectors but
  * may round it down.
  *
- * Returns 0 on success, -EFBIG if the size is larger than ~2 TB. Override
+ * Returns 0 on success, -EFBIG if the size is larger than 2040 GiB. Override
  * the hardware EIDE and ATA-2 limit of 16 heads (max disk size of 127 GB)
  * and instead allow up to 255 heads.
  */
@@ -927,7 +927,7 @@ static int vpc_create(const char *filename, QemuOpts *opts, Error **errp)
 
     if ((int64_t)cyls * heads * secs_per_cyl == VHD_MAX_GEOMETRY) {
         total_sectors = total_size / BDRV_SECTOR_SIZE;
-        /* Allow a maximum disk size of approximately 2 TB */
+        /* Allow a maximum disk size of 2040 GiB */
         if (total_sectors > VHD_MAX_SECTORS) {
             error_setg(errp, "Disk size is too large, max size is 2040 GiB");
             ret = -EFBIG;
-- 
1.9.3

  parent reply	other threads:[~2016-03-23  3:33 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-23  3:33 [Qemu-devel] [PATCH for-2.6 0/7] block: VHD format fixes Jeff Cody
2016-03-23  3:33 ` [Qemu-devel] [PATCH for-2.6 1/7] block/vpc: fix VPC 'qemu-img create' regression Jeff Cody
2016-03-23 16:56   ` Stefan Hajnoczi
2016-04-13 15:40   ` Jeff Cody
2016-04-13 16:48     ` Kevin Wolf
2016-03-23  3:33 ` [Qemu-devel] [PATCH for-2.6 2/7] vpc: use current_size field for XenServer VHD images Jeff Cody
2016-03-23  3:33 ` [Qemu-devel] [PATCH for-2.6 3/7] block/vpc: use current_size field for XenConverter " Jeff Cody
2016-03-23  3:33 ` Jeff Cody [this message]
2016-03-23  3:33 ` [Qemu-devel] [PATCH for-2.6 5/7] block/vpc: make checks on max table size a bit more lax Jeff Cody
2016-03-23  3:33 ` [Qemu-devel] [PATCH for-2.6 6/7] block/vpc: set errp in vpc_open Jeff Cody
2016-03-23  3:33 ` [Qemu-devel] [PATCH for-2.6 7/7] block/vpc: update comments to be compliant w/coding guidelines Jeff Cody
2016-04-13 16:55   ` Kevin Wolf
2016-03-23 18:06 ` [Qemu-devel] [PATCH for-2.6 0/7] block: VHD format fixes Stefan Hajnoczi
2016-04-13 16:57 ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fff4dc646b0bf70a33181e6907997f6217e4dc8c.1458702790.git.jcody@redhat.com \
    --to=jcody@redhat.com \
    --cc=grantwwu@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sbaugh@catern.com \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).