qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Sanidhya Kashyap <sanidhya.iiith@gmail.com>
Cc: Amit Shah <amit.shah@redhat.com>,
	qemu list <qemu-devel@nongnu.org>,
	Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4 8/8] BitmapLog: python script for extracting bitmap from a binary file
Date: Fri, 18 Jul 2014 12:17:18 +0100	[thread overview]
Message-ID: <20140718111717.GH2384@work-vm> (raw)
In-Reply-To: <1405596081-29701-9-git-send-email-sanidhya.iiith@gmail.com>

* Sanidhya Kashyap (sanidhya.iiith@gmail.com) wrote:
> Signed-off-by: Sanidhya Kashyap <sanidhya.iiith@gmail.com>

I'm not really a python-person, but one observation:

> +def get_string(value, length):
> +	name = struct.unpack('<'+str(length)+'s', value)[0]
> +	for i in range(len(name)):
> +		if name[i] == '\x00':
> +			return name[:i]

Would it have been easier for you to format the strings in the stream
the same way the migration does it; i.e. a length byte followed by the text
of the string?

Dave

> +
> +def dump_ram_block_info(infile):
> +	total_blocks = get_integer(infile.read(int_bytes))
> +	for i in range(total_blocks):
> +		block_name = get_string(infile.read(string_bytes), string_bytes)
> +		block_offset = get_unsigned_long_integer(infile.read(long_bytes))
> +		block_length = get_unsigned_long_integer(infile.read(long_bytes))
> +		block_list.append(dict(name=block_name, offset=block_offset, length=block_length))
> +	print block_list
> +
> +def dump_bitmap(infile, bitmap_length):
> +	marker = 'M'
> +	count = 0
> +	value = ' '
> +	while True:
> +		if len(value) == 0  or marker != 'M':
> +			print len(complete_bitmap_list)
> +			print "issue with the dump"
> +			return
> +		bitmap_list = []
> +		bitmap_raw_value = infile.read(long_bytes * bitmap_length)
> +		if not bitmap_raw_value:
> +			print len(bitmap_raw_value)
> +			break
> +		count+=1
> +		for i in range(bitmap_length):
> +			mark = i * long_bytes
> +			bitmap_list.append(hex(get_unsigned_long_integer(bitmap_raw_value[mark:mark+long_bytes])))
> +		complete_bitmap_list.append(bitmap_list)
> +		value = infile.read(1)
> +		marker = get_char(value)
> +	print complete_bitmap_list
> +
> +def main():
> +	extracter = argparse.ArgumentParser(description='Extract dirty bitmap from binary file.')
> +	extracter.add_argument('infile', help='Input file to extract the bitmap')
> +	args = extracter.parse_args()
> +	print 'The filename is {}'.format(args.infile)
> +
> +	infile = open(format(args.infile), 'rb')
> +
> +	ram_bitmap_pages = get_long_integer(infile.read(long_bytes))
> +	print ram_bitmap_pages
> +	dump_ram_block_info(infile)
> +	bitmap_length = ram_bitmap_pages / (long_bytes * byte_size)
> +	if ram_bitmap_pages % (long_bytes * byte_size) != 0:
> +		bitmap_length += 1
> +	print bitmap_length
> +
> +	dump_bitmap(infile, bitmap_length);
> +
> +	infile.close()
> +
> +if __name__ == '__main__':
> +	main()
> -- 
> 1.9.3
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  reply	other threads:[~2014-07-18 11:17 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-17 11:21 [Qemu-devel] [PATCH v4 0/8] Obtain dirty bitmap via VM logging Sanidhya Kashyap
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 1/8] enable sharing of the function between migration and bitmap dump Sanidhya Kashyap
2014-07-18 11:00   ` Dr. David Alan Gilbert
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 2/8] RunState: added two new flags for bitmap dump and migration process Sanidhya Kashyap
2014-07-18 11:02   ` Dr. David Alan Gilbert
2014-07-18 12:16   ` Eric Blake
2014-07-18 18:01     ` Sanidhya Kashyap
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 3/8] BitmapLog: bitmap dump code via QAPI framework with runstates Sanidhya Kashyap
2014-07-18 11:12   ` Dr. David Alan Gilbert
2014-07-18 18:18     ` Sanidhya Kashyap
2014-07-18 11:14   ` Dr. David Alan Gilbert
2014-07-18 18:09     ` Sanidhya Kashyap
2014-07-18 12:20   ` Eric Blake
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 4/8] BitmapLog: hmp interface for dirty bitmap dump Sanidhya Kashyap
2014-07-18 11:15   ` Dr. David Alan Gilbert
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 5/8] BitmapLog: cancel mechanism for an already running dump bitmap process Sanidhya Kashyap
2014-07-18 12:22   ` Eric Blake
2014-07-18 17:51     ` Sanidhya Kashyap
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 6/8] BitmapLog: set the frequency of the " Sanidhya Kashyap
2014-07-18 12:28   ` Eric Blake
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 7/8] BitmapLog: get the information about the parameters Sanidhya Kashyap
2014-07-18 12:35   ` Eric Blake
2014-07-18 17:41     ` Sanidhya Kashyap
2014-07-17 11:21 ` [Qemu-devel] [PATCH v4 8/8] BitmapLog: python script for extracting bitmap from a binary file Sanidhya Kashyap
2014-07-18 11:17   ` Dr. David Alan Gilbert [this message]
2014-07-18 10:56 ` [Qemu-devel] [PATCH v4 0/8] Obtain dirty bitmap via VM logging Dr. David Alan Gilbert
2014-07-18 13:42   ` Eric Blake
2014-07-18 17:28   ` Sanidhya Kashyap
2014-07-18 17:42     ` Dr. David Alan Gilbert
2014-07-18 12:39 ` Eric Blake

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=20140718111717.GH2384@work-vm \
    --to=dgilbert@redhat.com \
    --cc=amit.shah@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=sanidhya.iiith@gmail.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).