From: Ray Wang <raywang@linux.vnet.ibm.com>
To: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] cloop.c: use gfree,instead of free
Date: Mon, 17 Oct 2011 14:23:55 +0800 [thread overview]
Message-ID: <4E9BC9FB.3060601@linux.vnet.ibm.com> (raw)
In-Reply-To: <1318831906-26113-1-git-send-email-wdongxu@linux.vnet.ibm.com>
On 10/17/2011 02:11 PM, Dong Xu Wang wrote:
> Use gfree, to pair with g_malloc. Also fix coding style.
Should it be g_free, instead of gfree.
> Signed-off-by: Dong Xu Wang<wdongxu@linux.vnet.ibm.com>
> ---
> block/cloop.c | 114 +++++++++++++++++++++++++++++++--------------------------
> 1 files changed, 62 insertions(+), 52 deletions(-)
>
> diff --git a/block/cloop.c b/block/cloop.c
> index 8cff9f2..708093e 100644
> --- a/block/cloop.c
> +++ b/block/cloop.c
> @@ -39,21 +39,23 @@ typedef struct BDRVCloopState {
>
> static int cloop_probe(const uint8_t *buf, int buf_size, const char *filename)
> {
> - const char* magic_version_2_0="#!/bin/sh\n"
> - "#V2.0 Format\n"
> - "modprobe cloop file=$0&& mount -r -t iso9660 /dev/cloop $1\n";
> - int length=strlen(magic_version_2_0);
> - if(length>buf_size)
> - length=buf_size;
> - if(!memcmp(magic_version_2_0,buf,length))
> - return 2;
> + const char *magic_version_2_0 = "#!/bin/sh\n"
> + "#V2.0 Format\n"
> + "modprobe cloop file=$0&& mount -r -t iso9660 /dev/cloop $1\n";
> + int length = strlen(magic_version_2_0);
> + if (length> buf_size) {
> + length = buf_size;
> + }
> + if (!memcmp(magic_version_2_0, buf, length)) {
> + return 2;
> + }
> return 0;
> }
>
> static int cloop_open(BlockDriverState *bs, int flags)
> {
> BDRVCloopState *s = bs->opaque;
> - uint32_t offsets_size,max_compressed_block_size=1,i;
> + uint32_t offsets_size, max_compressed_block_size = 1, i;
>
> bs->read_only = 1;
>
> @@ -73,26 +75,28 @@ static int cloop_open(BlockDriverState *bs, int flags)
> s->offsets = g_malloc(offsets_size);
> if (bdrv_pread(bs->file, 128 + 4 + 4, s->offsets, offsets_size)<
> offsets_size) {
> - goto cloop_close;
> + goto cloop_close;
> }
> for(i=0;i<s->n_blocks;i++) {
> - s->offsets[i]=be64_to_cpu(s->offsets[i]);
> - if(i>0) {
> - uint32_t size=s->offsets[i]-s->offsets[i-1];
> - if(size>max_compressed_block_size)
> - max_compressed_block_size=size;
> - }
> + s->offsets[i] = be64_to_cpu(s->offsets[i]);
> + if (i> 0) {
> + uint32_t size = s->offsets[i]-s->offsets[i - 1];
> + if (size> max_compressed_block_size) {
> + max_compressed_block_size = size;
> + }
> + }
> }
>
> /* initialize zlib engine */
> - s->compressed_block = g_malloc(max_compressed_block_size+1);
> + s->compressed_block = g_malloc(max_compressed_block_size + 1);
> s->uncompressed_block = g_malloc(s->block_size);
> - if(inflateInit(&s->zstream) != Z_OK)
> - goto cloop_close;
> - s->current_block=s->n_blocks;
> + if (inflateInit(&s->zstream) != Z_OK) {
> + goto cloop_close;
> + }
> + s->current_block = s->n_blocks;
>
> s->sectors_per_block = s->block_size/512;
> - bs->total_sectors = s->n_blocks*s->sectors_per_block;
> + bs->total_sectors = s->n_blocks * s->sectors_per_block;
> return 0;
>
> cloop_close:
> @@ -104,26 +108,29 @@ static inline int cloop_read_block(BlockDriverState *bs, int block_num)
> BDRVCloopState *s = bs->opaque;
>
> if(s->current_block != block_num) {
> - int ret;
> - uint32_t bytes = s->offsets[block_num+1]-s->offsets[block_num];
> + int ret;
> + uint32_t bytes = s->offsets[block_num+1] - s->offsets[block_num];
>
> ret = bdrv_pread(bs->file, s->offsets[block_num], s->compressed_block,
> bytes);
> - if (ret != bytes)
> + if (ret != bytes) {
> return -1;
> + }
> +
> + s->zstream.next_in = s->compressed_block;
> + s->zstream.avail_in = bytes;
> + s->zstream.next_out = s->uncompressed_block;
> + s->zstream.avail_out = s->block_size;
> + ret = inflateReset(&s->zstream);
> + if (ret != Z_OK) {
> + return -1;
> + }
> + ret = inflate(&s->zstream, Z_FINISH);
> + if (ret != Z_STREAM_END || s->zstream.total_out != s->block_size) {
> + return -1;
> + }
>
> - s->zstream.next_in = s->compressed_block;
> - s->zstream.avail_in = bytes;
> - s->zstream.next_out = s->uncompressed_block;
> - s->zstream.avail_out = s->block_size;
> - ret = inflateReset(&s->zstream);
> - if(ret != Z_OK)
> - return -1;
> - ret = inflate(&s->zstream, Z_FINISH);
> - if(ret != Z_STREAM_END || s->zstream.total_out != s->block_size)
> - return -1;
> -
> - s->current_block = block_num;
> + s->current_block = block_num;
> }
> return 0;
> }
> @@ -134,12 +141,14 @@ static int cloop_read(BlockDriverState *bs, int64_t sector_num,
> BDRVCloopState *s = bs->opaque;
> int i;
>
> - for(i=0;i<nb_sectors;i++) {
> - uint32_t sector_offset_in_block=((sector_num+i)%s->sectors_per_block),
> - block_num=(sector_num+i)/s->sectors_per_block;
> - if(cloop_read_block(bs, block_num) != 0)
> - return -1;
> - memcpy(buf+i*512,s->uncompressed_block+sector_offset_in_block*512,512);
> + for (i = 0; i< nb_sectors; i++) {
> + uint32_t sector_offset_in_block = ((sector_num + i) % s->sectors_per_block),
> + block_num = (sector_num + i) / s->sectors_per_block;
> + if (cloop_read_block(bs, block_num) != 0) {
> + return -1;
> + }
> + memcpy(buf + i * 512, s->uncompressed_block +
> + sector_offset_in_block * 512, 512);
> }
> return 0;
> }
> @@ -147,20 +156,21 @@ static int cloop_read(BlockDriverState *bs, int64_t sector_num,
> static void cloop_close(BlockDriverState *bs)
> {
> BDRVCloopState *s = bs->opaque;
> - if(s->n_blocks>0)
> - free(s->offsets);
> - free(s->compressed_block);
> - free(s->uncompressed_block);
> + if (s->n_blocks> 0) {
> + g_free(s->offsets);
> + }
> + g_free(s->compressed_block);
> + g_free(s->uncompressed_block);
> inflateEnd(&s->zstream);
> }
>
> static BlockDriver bdrv_cloop = {
> - .format_name = "cloop",
> - .instance_size = sizeof(BDRVCloopState),
> - .bdrv_probe = cloop_probe,
> - .bdrv_open = cloop_open,
> - .bdrv_read = cloop_read,
> - .bdrv_close = cloop_close,
> + .format_name = "cloop",
> + .instance_size = sizeof(BDRVCloopState),
> + .bdrv_probe = cloop_probe,
> + .bdrv_open = cloop_open,
> + .bdrv_read = cloop_read,
> + .bdrv_close = cloop_close,
> };
>
> static void bdrv_cloop_init(void)
Reviewed_by: raywang@linux.vnet.ibm.com
--
Regards,
Ray Wang
prev parent reply other threads:[~2011-10-17 6:24 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-17 6:11 [Qemu-devel] [PATCH] cloop.c: use gfree,instead of free Dong Xu Wang
2011-10-17 6:23 ` Ray Wang [this message]
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=4E9BC9FB.3060601@linux.vnet.ibm.com \
--to=raywang@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=wdongxu@linux.vnet.ibm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.