Message ID | 1413881486-24710-2-git-send-email-mreitz@redhat.com |
---|---|
State | New |
Headers | show |
On 10/21/2014 02:51 AM, Max Reitz wrote: > There are macros for these operations, so make use of them. > > Signed-off-by: Max Reitz <mreitz@redhat.com> > --- > block/vdi.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > @@ -475,7 +474,7 @@ static int vdi_open(BlockDriverState *bs, QDict *options, int flags, > s->header = header; > > bmap_size = header.blocks_in_image * sizeof(uint32_t); > - bmap_size = (bmap_size + SECTOR_SIZE - 1) / SECTOR_SIZE; > + bmap_size = DIV_ROUND_UP(bmap_size, SECTOR_SIZE); Is it worth consolidating these two assignments into one: bmap_size = DIV_ROUND_UP(header.blocks_in_image * sizeof(uint32_t), SECTOR_SIZE); > @@ -736,10 +735,10 @@ static int vdi_create(const char *filename, QemuOpts *opts, Error **errp) > > /* We need enough blocks to store the given disk size, > so always round up. */ > - blocks = (bytes + block_size - 1) / block_size; > + blocks = DIV_ROUND_UP(bytes, block_size); > > bmap_size = blocks * sizeof(uint32_t); > - bmap_size = ((bmap_size + SECTOR_SIZE - 1) & ~(SECTOR_SIZE -1)); > + bmap_size = ROUND_UP(bmap_size, SECTOR_SIZE); and again? Either way, Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/block/vdi.c b/block/vdi.c index 9604721..19701ee 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -407,8 +407,7 @@ static int vdi_open(BlockDriverState *bs, QDict *options, int flags, We accept them but round the disk size to the next multiple of SECTOR_SIZE. */ logout("odd disk size %" PRIu64 " B, round up\n", header.disk_size); - header.disk_size += SECTOR_SIZE - 1; - header.disk_size &= ~(SECTOR_SIZE - 1); + header.disk_size = ROUND_UP(header.disk_size, SECTOR_SIZE); } if (header.signature != VDI_SIGNATURE) { @@ -475,7 +474,7 @@ static int vdi_open(BlockDriverState *bs, QDict *options, int flags, s->header = header; bmap_size = header.blocks_in_image * sizeof(uint32_t); - bmap_size = (bmap_size + SECTOR_SIZE - 1) / SECTOR_SIZE; + bmap_size = DIV_ROUND_UP(bmap_size, SECTOR_SIZE); s->bmap = qemu_try_blockalign(bs->file, bmap_size * SECTOR_SIZE); if (s->bmap == NULL) { ret = -ENOMEM; @@ -736,10 +735,10 @@ static int vdi_create(const char *filename, QemuOpts *opts, Error **errp) /* We need enough blocks to store the given disk size, so always round up. */ - blocks = (bytes + block_size - 1) / block_size; + blocks = DIV_ROUND_UP(bytes, block_size); bmap_size = blocks * sizeof(uint32_t); - bmap_size = ((bmap_size + SECTOR_SIZE - 1) & ~(SECTOR_SIZE -1)); + bmap_size = ROUND_UP(bmap_size, SECTOR_SIZE); memset(&header, 0, sizeof(header)); pstrcpy(header.text, sizeof(header.text), VDI_TEXT);
There are macros for these operations, so make use of them. Signed-off-by: Max Reitz <mreitz@redhat.com> --- block/vdi.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)