2012-02-21 16:20:20

by Phillip Susi

[permalink] [raw]
Subject: [PATCH] e2image: add -a switch to include all data

Normally the raw and QCOW2 images only contain fs metadata.
Add a new switch ( -a ) to include all data. This makes it
possible to use e2image to clone a whole filesystem.

Signed-off-by: Phillip Susi <[email protected]>
---
misc/e2image.8.in | 22 +++++++++++++++++++++-
misc/e2image.c | 12 ++++++++----
2 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/misc/e2image.8.in b/misc/e2image.8.in
index 74d2a0b..b075ced 100644
--- a/misc/e2image.8.in
+++ b/misc/e2image.8.in
@@ -8,7 +8,7 @@ e2image \- Save critical ext2/ext3/ext4 filesystem metadata to a file
.SH SYNOPSIS
.B e2image
[
-.B \-rsI
+.B \-rsIQa
]
.I device
.I image-file
@@ -171,6 +171,26 @@ is regular QCOW2 image and can be processed by tools aware of QCOW2 format
such as for example
.BR qemu-img .
.PP
+You can convert a qcow2 image into a raw image with:
+.PP
+.br
+\ \fBe2image \-r hda1.qcow2 hda1.raw\fR
+.br
+.PP
+This can be useful to write a qcow2 image containing all data to a
+sparse image file where it can be loop mounted, or to a disk partition.
+Note that this may not work with qcow2 images not generated by e2image.
+.PP
+.SH INCLUDING DATA
+Normally
+.B e2image
+only includes fs metadata, not regular file data. The
+.B \-a
+option can be specified to include all data. This will
+give an image that is suitible to use to clone the entire FS or
+for backup purposes. Note that this option only works with the
+raw or QCOW2 formats.
+.PP
.SH AUTHOR
.B e2image
was written by Theodore Ts'o ([email protected]).
diff --git a/misc/e2image.c b/misc/e2image.c
index 93359cf..4343a3d 100644
--- a/misc/e2image.c
+++ b/misc/e2image.c
@@ -52,6 +52,7 @@ extern int optind;

const char * program_name = "e2image";
char * device_name = NULL;
+char all_data;

static void lseek_error_and_exit(int errnum)
{
@@ -84,7 +85,7 @@ static int get_bits_from_size(size_t size)

static void usage(void)
{
- fprintf(stderr, _("Usage: %s [-rsIQ] device image_file\n"),
+ fprintf(stderr, _("Usage: %s [-rsIQa] device image_file\n"),
program_name);
exit (1);
}
@@ -309,7 +310,7 @@ static int process_file_block(ext2_filsys fs EXT2FS_ATTR((unused)),
int ref_offset EXT2FS_ATTR((unused)),
void *priv_data EXT2FS_ATTR((unused)))
{
- if (blockcnt < 0) {
+ if (blockcnt < 0 || all_data) {
ext2fs_mark_block_bitmap2(meta_block_map, *block_nr);
meta_blocks_count++;
}
@@ -1125,7 +1126,7 @@ static void write_raw_image_file(ext2_filsys fs, int fd, int type, int flags)
if ((inode.i_flags & EXT4_EXTENTS_FL) ||
inode.i_block[EXT2_IND_BLOCK] ||
inode.i_block[EXT2_DIND_BLOCK] ||
- inode.i_block[EXT2_TIND_BLOCK]) {
+ inode.i_block[EXT2_TIND_BLOCK] || all_data) {
retval = ext2fs_block_iterate3(fs,
ino, BLOCK_FLAG_READ_ONLY, block_buf,
process_file_block, &pb);
@@ -1253,7 +1254,7 @@ int main (int argc, char ** argv)
if (argc && *argv)
program_name = *argv;
add_error_table(&et_ext2_error_table);
- while ((c = getopt(argc, argv, "rsIQ")) != EOF)
+ while ((c = getopt(argc, argv, "rsIQa")) != EOF)
switch (c) {
case 'I':
flags |= E2IMAGE_INSTALL_FLAG;
@@ -1271,6 +1272,9 @@ int main (int argc, char ** argv)
case 's':
flags |= E2IMAGE_SCRAMBLE_FLAG;
break;
+ case 'a':
+ all_data = 1;
+ break;
default:
usage();
}
--
1.7.5.4



2012-03-15 14:38:28

by Phillip Susi

[permalink] [raw]
Subject: Re: [PATCH] e2image: add -a switch to include all data

On 2/21/2012 11:20 AM, Phillip Susi wrote:
> Normally the raw and QCOW2 images only contain fs metadata.
> Add a new switch ( -a ) to include all data. This makes it
> possible to use e2image to clone a whole filesystem.
>
> Signed-off-by: Phillip Susi<[email protected]>

Bump?


2012-06-13 20:41:14

by Phillip Susi

[permalink] [raw]
Subject: Re: [PATCH] e2image: add -a switch to include all data

Hey Ted, I still haven't heard anything about this. Do you not like the
patch?

On 2/21/2012 11:20 AM, Phillip Susi wrote:
> Normally the raw and QCOW2 images only contain fs metadata.
> Add a new switch ( -a ) to include all data. This makes it
> possible to use e2image to clone a whole filesystem.
>
> Signed-off-by: Phillip Susi<[email protected]>