| From f902b216501094495ff75834035656e8119c537f Mon Sep 17 00:00:00 2001 |
| From: Jan Kara <jack@suse.cz> |
| Date: Wed, 18 Nov 2020 16:30:32 +0100 |
| Subject: ext4: fix bogus warning in ext4_update_dx_flag() |
| |
| From: Jan Kara <jack@suse.cz> |
| |
| commit f902b216501094495ff75834035656e8119c537f upstream. |
| |
| The idea of the warning in ext4_update_dx_flag() is that we should warn |
| when we are clearing EXT4_INODE_INDEX on a filesystem with metadata |
| checksums enabled since after clearing the flag, checksums for internal |
| htree nodes will become invalid. So there's no need to warn (or actually |
| do anything) when EXT4_INODE_INDEX is not set. |
| |
| Link: https://lore.kernel.org/r/20201118153032.17281-1-jack@suse.cz |
| Fixes: 48a34311953d ("ext4: fix checksum errors with indexed dirs") |
| Reported-by: Eric Biggers <ebiggers@kernel.org> |
| Reviewed-by: Eric Biggers <ebiggers@google.com> |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Signed-off-by: Theodore Ts'o <tytso@mit.edu> |
| Cc: stable@kernel.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ext4/ext4.h | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/fs/ext4/ext4.h |
| +++ b/fs/ext4/ext4.h |
| @@ -2427,7 +2427,8 @@ void ext4_insert_dentry(struct inode *in |
| struct ext4_filename *fname); |
| static inline void ext4_update_dx_flag(struct inode *inode) |
| { |
| - if (!ext4_has_feature_dir_index(inode->i_sb)) { |
| + if (!ext4_has_feature_dir_index(inode->i_sb) && |
| + ext4_test_inode_flag(inode, EXT4_INODE_INDEX)) { |
| /* ext4_iget() should have caught this... */ |
| WARN_ON_ONCE(ext4_has_feature_metadata_csum(inode->i_sb)); |
| ext4_clear_inode_flag(inode, EXT4_INODE_INDEX); |