diff options
Diffstat (limited to 'fs/f2fs/inline.c')
| -rw-r--r-- | fs/f2fs/inline.c | 17 | 
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index bb6a152310ef..404d2462a0fe 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c @@ -420,6 +420,14 @@ static int f2fs_move_inline_dirents(struct inode *dir, struct page *ipage,  	stat_dec_inline_dir(dir);  	clear_inode_flag(dir, FI_INLINE_DENTRY); +	/* +	 * should retrieve reserved space which was used to keep +	 * inline_dentry's structure for backward compatibility. +	 */ +	if (!f2fs_sb_has_flexible_inline_xattr(F2FS_I_SB(dir)) && +			!f2fs_has_inline_xattr(dir)) +		F2FS_I(dir)->i_inline_xattr_size = 0; +  	f2fs_i_depth_write(dir, 1);  	if (i_size_read(dir) < PAGE_SIZE)  		f2fs_i_size_write(dir, PAGE_SIZE); @@ -501,6 +509,15 @@ static int f2fs_move_rehashed_dirents(struct inode *dir, struct page *ipage,  	stat_dec_inline_dir(dir);  	clear_inode_flag(dir, FI_INLINE_DENTRY); + +	/* +	 * should retrieve reserved space which was used to keep +	 * inline_dentry's structure for backward compatibility. +	 */ +	if (!f2fs_sb_has_flexible_inline_xattr(F2FS_I_SB(dir)) && +			!f2fs_has_inline_xattr(dir)) +		F2FS_I(dir)->i_inline_xattr_size = 0; +  	kvfree(backup_dentry);  	return 0;  recover:  |