diff mbox

package/mke2img: always create sparse files

Message ID 1418064064-30506-1-git-send-email-yann.morin.1998@free.fr
State Accepted
Headers show

Commit Message

Yann E. MORIN Dec. 8, 2014, 6:41 p.m. UTC
When the user specifies a number of blocks (and we do not auto-compute
them), the generated filesystem can be quite large with large zones with
only zeroes in them.

Thus, always create the filesystem as a sparse file.

Sparse files behave the same as normal files, except those long runs of
zeroes do not actually use space on the (host) filesystem. Also, this
should not break current behaviour, as neither cp nor dd nor cat preserve
sparseness by default. So users relying on the zeroed parts to actually
be written won;t see a change. Users that were expressly using cp or dd
to copy files to a sparse destination will however see a little bit of
improvements, as the zeroed out parts won't even be read from disk.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/mke2img/mke2img | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Samuel Martin Dec. 8, 2014, 10:04 p.m. UTC | #1
On Mon, Dec 8, 2014 at 7:41 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> When the user specifies a number of blocks (and we do not auto-compute
> them), the generated filesystem can be quite large with large zones with
> only zeroes in them.
>
> Thus, always create the filesystem as a sparse file.
>
> Sparse files behave the same as normal files, except those long runs of
> zeroes do not actually use space on the (host) filesystem. Also, this
> should not break current behaviour, as neither cp nor dd nor cat preserve
> sparseness by default. So users relying on the zeroed parts to actually
> be written won;t see a change. Users that were expressly using cp or dd
> to copy files to a sparse destination will however see a little bit of
> improvements, as the zeroed out parts won't even be read from disk.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Reviewed-by: Samuel Martin <s.martin49@gmail.com>

> ---
>  package/mke2img/mke2img | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
> index 9c56bc2..b186290 100755
> --- a/package/mke2img/mke2img
> +++ b/package/mke2img/mke2img
> @@ -98,7 +98,7 @@ main() {
>      fi
>
>      # Generate the filesystem
> -    genext2fs_opts=( -b ${nb_blocks} -N ${nb_inodes} -d "${root_dir}" )
> +    genext2fs_opts=( -z -b ${nb_blocks} -N ${nb_inodes} -d "${root_dir}" )
>      if [ -n "${nb_res_blocks}" ]; then
>          genext2fs_opts+=( -m ${nb_res_blocks} )
>      fi
> --
> 1.9.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Karoly Kasza Dec. 9, 2014, 1:20 p.m. UTC | #2
Hi Yann, Thomas, Samuel, list,

On Mon, Dec 8, 2014 at 11:04 PM, Samuel Martin <s.martin49@gmail.com> wrote:

> On Mon, Dec 8, 2014 at 7:41 PM, Yann E. MORIN <yann.morin.1998@free.fr>
> wrote:
> > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> > Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>
> Reviewed-by: Samuel Martin <s.martin49@gmail.com>
>

Tested-by: Karoly Kasza <kaszak@gmail.com>
Reviewed-by: Karoly Kasza <kaszak@gmail.com>

Tested with the same configs as the previous 3 (except w/ kernel 3.18),
successfully built different rootfs.ext images and booted them.
Tested with master branch, x86_64 arch in QEMU, internal toolchain GCC
4.9.2 w/ uclibc, Linux 3.18.

Regards,
Karoly
Thomas Petazzoni Dec. 28, 2014, 9:42 p.m. UTC | #3
Dear Yann E. MORIN,

On Mon,  8 Dec 2014 19:41:04 +0100, Yann E. MORIN wrote:
> When the user specifies a number of blocks (and we do not auto-compute
> them), the generated filesystem can be quite large with large zones with
> only zeroes in them.
> 
> Thus, always create the filesystem as a sparse file.
> 
> Sparse files behave the same as normal files, except those long runs of
> zeroes do not actually use space on the (host) filesystem. Also, this
> should not break current behaviour, as neither cp nor dd nor cat preserve
> sparseness by default. So users relying on the zeroed parts to actually
> be written won;t see a change. Users that were expressly using cp or dd
> to copy files to a sparse destination will however see a little bit of
> improvements, as the zeroed out parts won't even be read from disk.
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  package/mke2img/mke2img | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied, thanks!

Thomas
diff mbox

Patch

diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
index 9c56bc2..b186290 100755
--- a/package/mke2img/mke2img
+++ b/package/mke2img/mke2img
@@ -98,7 +98,7 @@  main() {
     fi
 
     # Generate the filesystem
-    genext2fs_opts=( -b ${nb_blocks} -N ${nb_inodes} -d "${root_dir}" )
+    genext2fs_opts=( -z -b ${nb_blocks} -N ${nb_inodes} -d "${root_dir}" )
     if [ -n "${nb_res_blocks}" ]; then
         genext2fs_opts+=( -m ${nb_res_blocks} )
     fi