diff options
-rw-r--r-- | fs/ext4/xattr.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 0ae3668520f8..93a00d89a220 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
@@ -820,8 +820,14 @@ inserted: | |||
820 | if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) | 820 | if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) |
821 | goal = goal & EXT4_MAX_BLOCK_FILE_PHYS; | 821 | goal = goal & EXT4_MAX_BLOCK_FILE_PHYS; |
822 | 822 | ||
823 | /* | ||
824 | * take i_data_sem because we will test | ||
825 | * i_delalloc_reserved_flag in ext4_mb_new_blocks | ||
826 | */ | ||
827 | down_read((&EXT4_I(inode)->i_data_sem)); | ||
823 | block = ext4_new_meta_blocks(handle, inode, goal, 0, | 828 | block = ext4_new_meta_blocks(handle, inode, goal, 0, |
824 | NULL, &error); | 829 | NULL, &error); |
830 | up_read((&EXT4_I(inode)->i_data_sem)); | ||
825 | if (error) | 831 | if (error) |
826 | goto cleanup; | 832 | goto cleanup; |
827 | 833 | ||