fs->blocksize is int(4 bytes), while data is off_t(8 bytes),
'data_blk = data & ~(fs->blocksize - 1)' will cause data_blk
lose high 4 bytes of data if data > 4G and it'll cause file
inconsistent when using -d option to populate ext4 image file.
[ This was also fixed upstream via
1eec7413677e: "create_inode: fix
copying large files". This commit is just to clean up
whitespace/formatting issues. -- tytso ]
Signed-off-by: Chen Lin Z <lin.z.chen@intel.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
From AOSP commit:
999dd56f2586fadec7bfe846b8cb52c5e528248f
continue;
}
err = ext2fs_file_llseek(e2_file, off + bpos,
- EXT2_SEEK_SET, NULL);
+ EXT2_SEEK_SET, NULL);
if (err)
goto fail;
while (blen > 0) {
return EXT2_ET_UNIMPLEMENTED;
data_blk = data & ~(off_t)(fs->blocksize - 1);
- hole_blk = (hole + (off_t)(fs->blocksize - 1)) & ~(off_t)(fs->blocksize - 1);
+ hole_blk = ((hole + (off_t)(fs->blocksize - 1)) &
+ ~(off_t)(fs->blocksize - 1));
err = copy_file_chunk(fs, fd, e2_file, data_blk, hole_blk, buf,
zerobuf);
if (err)