fs: ext4: Problem with ext4load and sparse files
authorGero Schumacher <Gero.Schumacher@peiker-cee.de>
Tue, 26 Feb 2019 15:45:22 +0000 (15:45 +0000)
committerTom Rini <trini@konsulko.com>
Wed, 10 Apr 2019 00:04:03 +0000 (20:04 -0400)
commit1c48fda3e5a88159130b4d4805fbdf367212afab
tree4a088301bce63febd6a4bea46fe3c6541d5f144e
parentef79284e7a6ba141b56478f8ed1456ef5c27ae47
fs: ext4: Problem with ext4load and sparse files

Hi,

when I try to load a sparse file via ext4load, I am getting the error message
'invalid extent'

After a deeper look in the code, it seems to be an issue in the function ext4fs_get_extent_block in fs/ext4/ext4_common.c:

The file starts with 1k of zeros. The blocksize is 1024. So the first extend block contains the following information:

eh_entries: 1
eh_depth: 1
ei_block 1

When the upper layer (ext4fs_read_file) asks for fileblock 0, we are running in the 'invalid extent' error message.
For me it seems, that the code is not prepared for handling a sparse block at the beginning of the file. The following change, solved my problem:

I am really not an expert in ext4 filesystems. Can somebody please have a look at this issue and give me a feedback, if I am totally wrong or not?
fs/ext4/ext4_common.c