Patchwork [1/2] e2image: fix logic bug which could cause a raw image not to be extended

login
register
mail settings
Submitter Theodore Ts'o
Date Feb. 17, 2012, 2:32 p.m.
Message ID <1329489163-21918-1-git-send-email-tytso@mit.edu>
Download mbox | patch
Permalink /patch/141833/
State Accepted
Headers show

Comments

Theodore Ts'o - Feb. 17, 2012, 2:32 p.m.
If the size of the last "hole" in the raw file was an exact multiple
of a megabyte, then we wouldn't write a null at the end of the file in
order to extend the size of the raw image to correspond with the file
system size.  Thanks to Lukas Czerner for suggesting the fix, and
Phillip Susi for pointing out the problem.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
 misc/e2image.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)
Lukas Czerner - Feb. 17, 2012, 8:18 p.m.
On Fri, 17 Feb 2012, Theodore Ts'o wrote:

> If the size of the last "hole" in the raw file was an exact multiple
> of a megabyte, then we wouldn't write a null at the end of the file in
> order to extend the size of the raw image to correspond with the file
> system size.  Thanks to Lukas Czerner for suggesting the fix, and
> Phillip Susi for pointing out the problem.
> 
> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
> ---
>  misc/e2image.c |    7 +++----
>  1 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/misc/e2image.c b/misc/e2image.c
> index d888e5a..3cb92fe 100644
> --- a/misc/e2image.c
> +++ b/misc/e2image.c
> @@ -504,10 +504,9 @@ static void output_meta_data_blocks(ext2_filsys fs, int fd)
>  				continue;
>  			}
>  			sparse += fs->blocksize;
> -			if (sparse >= 1024*1024) {
> -
> -				write_block(fd, 0, sparse, 0, 0);
> -				sparse = 0;
> +			if (sparse > 1024*1024) {
> +				write_block(fd, 0, 1024*1024, 0, 0);
> +				sparse -= 1024*1024;
>  			}
>  		}
>  	}
> 

Looks good, thanks!

-Lukas
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/misc/e2image.c b/misc/e2image.c
index d888e5a..3cb92fe 100644
--- a/misc/e2image.c
+++ b/misc/e2image.c
@@ -504,10 +504,9 @@  static void output_meta_data_blocks(ext2_filsys fs, int fd)
 				continue;
 			}
 			sparse += fs->blocksize;
-			if (sparse >= 1024*1024) {
-
-				write_block(fd, 0, sparse, 0, 0);
-				sparse = 0;
+			if (sparse > 1024*1024) {
+				write_block(fd, 0, 1024*1024, 0, 0);
+				sparse -= 1024*1024;
 			}
 		}
 	}