On Fri, 17 Feb 2012, Theodore Ts'o wrote: > If ftruncate64() exists, try to use it to set i_size. This isn't > guaranteed to work, per SuSv3, but if it doesn't work, it's guaranteed > to return an error. So for file systems and/or operating systems that > don't support extending i_size via ftruncate64(), fall back to writing > the trailing null. Looks good, thanks. -Lukas > > Signed-off-by: "Theodore Ts'o" <tytso@xxxxxxx> > --- > > Oops, sent the wrong version of the patch. My bad. > > misc/e2image.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/misc/e2image.c b/misc/e2image.c > index 3cb92fe..93359cf 100644 > --- a/misc/e2image.c > +++ b/misc/e2image.c > @@ -510,8 +510,19 @@ static void output_meta_data_blocks(ext2_filsys fs, int fd) > } > } > } > +#ifdef HAVE_FTRUNCATE64 > + if (sparse) { > + ext2_loff_t offset = ext2fs_llseek(fd, sparse, SEEK_CUR); > + > + if (offset < 0) > + lseek_error_and_exit(errno); > + if (ftruncate64(fd, offset) < 0) > + write_block(fd, zero_buf, -1, 1, -1); > + } > +#else > if (sparse) > write_block(fd, zero_buf, sparse-1, 1, -1); > +#endif > ext2fs_free_mem(&zero_buf); > ext2fs_free_mem(&buf); > } > -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html