mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2024-11-30 21:43:40 +08:00
libext2fs: handle inline_data in block iterator by returning an error code
An inode with inline data has no data blocks, so we can not iterate over such an inode. Return an error code which indicates this fact; callers can use this to determine whether or not the inode has inline data, and then call some routine to iterate over the directory intries in the line data or read the inline data, as appropriate. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
00716339da
commit
a7f4c6353f
@ -344,6 +344,13 @@ errcode_t ext2fs_block_iterate3(ext2_filsys fs,
|
||||
if (ctx.errcode)
|
||||
return ctx.errcode;
|
||||
|
||||
/*
|
||||
* An inode with inline data has no blocks over which to
|
||||
* iterate, so return an error code indicating this fact.
|
||||
*/
|
||||
if (inode.i_flags & EXT4_INLINE_DATA_FL)
|
||||
return EXT2_ET_INLINE_DATA_CANT_ITERATE;
|
||||
|
||||
/*
|
||||
* Check to see if we need to limit large files
|
||||
*/
|
||||
|
@ -479,4 +479,7 @@ ec EXT2_ET_FILE_EXISTS,
|
||||
ec EXT2_ET_BLOCK_BITMAP_CSUM_INVALID,
|
||||
"Block bitmap checksum does not match bitmap"
|
||||
|
||||
ec EXT2_ET_INLINE_DATA_CANT_ITERATE,
|
||||
"Cannot block iterate on an inode containing inline data"
|
||||
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user