return 0;
if (inode->i_flags & EXT4_EXTENTS_FL) {
+ if (inode->i_flags & EXT4_INLINE_DATA_FL)
+ return 0;
if (inode->i_size > fs->blocksize)
return 0;
if (ext2fs_extent_open2(fs, ino, inode, &handle))
blocks = ext2fs_inode_data_blocks2(fs, inode);
if (blocks) {
+ if (inode->i_flags & EXT4_INLINE_DATA_FL)
+ return 0;
if ((inode->i_size >= fs->blocksize) ||
(blocks != fs->blocksize >> 9) ||
(inode->i_block[0] < fs->super->s_first_data_block) ||
len = strnlen(buf, fs->blocksize);
if (len == fs->blocksize)
return 0;
+ } else if (inode->i_flags & EXT4_INLINE_DATA_FL) {
+ char *inline_buf = NULL;
+ size_t inline_sz = 0;
+
+ if (ext2fs_inline_data_size(fs, ino, &inline_sz))
+ return 0;
+ if (inode->i_size != inline_sz)
+ return 0;
+ if (ext2fs_get_mem(inline_sz + 1, &inline_buf))
+ return 0;
+ i = 0;
+ if (ext2fs_inline_data_get(fs, ino, inode, inline_buf, NULL))
+ goto exit_inline;
+ inline_buf[inline_sz] = 0;
+ len = strnlen(inline_buf, inline_sz);
+ if (len != inline_sz)
+ goto exit_inline;
+ i = 1;
+exit_inline:
+ ext2fs_free_mem(&inline_buf);
+ return i;
} else {
if (inode->i_size >= sizeof(inode->i_block))
return 0;