Potential bug in fs/ext4/inline.c?
In ext4_find_inline_entry(), there is the following:
if (ext4_get_inline_size(dir) == EXT4_MIN_INLINE_DATA_SIZE) goto out;
Am I missing something, or shouldn't this be:
if (ext4_get_inline_size(dir) <= EXT4_MIN_INLINE_DATA_SIZE) goto out;
?
Thanks,
- Ted
Quoted 11 lines · Theodore Ts'o
In
ext4_find_inline_entry(), there is the following:if (ext4_get_inline_size(dir) == EXT4_MIN_INLINE_DATA_SIZE) goto out;Am I missing something, or shouldn't this be:
if (ext4_get_inline_size(dir) <= EXT4_MIN_INLINE_DATA_SIZE) goto out;?
I'm not sure it matters, since I see:
EXT4_I(inode)->i_inline_size = len + EXT4_MIN_INLINE_DATA_SIZE
scattered all over the code. I'm not sure I like the idea that both ext4 and e2fsprogs think that the inline data size is never <= 60, but afaict it doesn't cause any problems.
--D
Quoted 12 lines
Thanks,
- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 9 lines · Theodore Ts'o
In
ext4_find_inline_entry(), there is the following:if (ext4_get_inline_size(dir) == EXT4_MIN_INLINE_DATA_SIZE) goto out;Am I missing something, or shouldn't this be:
if (ext4_get_inline_size(dir) <= EXT4_MIN_INLINE_DATA_SIZE) goto out;
Hi Ted,
The original design idea is that the size of inline data shouldn't be less than EXT4_MIN_INLINE_DATA_SIZE (60 bytes). That means that the inline data will occupy the whole i_block[] space.
If we create a new dir with inline data feature, the disk layout will looks like below (ext4_try_create_inline_dir()):
i_block[0]: parent ino (4 bytes)
i_block+4: dir entry (ino 0, rec_len 56 bytes)
Regards,
- Zheng