diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-02 13:06:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-02 13:06:20 -0400 |
commit | f1f8935a5c38a2c61e86a42bc971a2539eef2211 (patch) | |
tree | 694950045f2f5d89507d7206cf6595e09cdfbd2c /fs/ext4/xattr.c | |
parent | 34116645d912f65d7eb4508a1db3c9d0e45facb1 (diff) | |
parent | f2a44523b20f323e4aef7c16261d34d6f0a4bf06 (diff) |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (97 commits)
jbd2: Unify log messages in jbd2 code
jbd/jbd2: validate sb->s_first in journal_get_superblock()
ext4: let ext4_ext_rm_leaf work with EXT_DEBUG defined
ext4: fix a syntax error in ext4_ext_insert_extent when debugging enabled
ext4: fix a typo in struct ext4_allocation_context
ext4: Don't normalize an falloc request if it can fit in 1 extent.
ext4: remove comments about extent mount option in ext4_new_inode()
ext4: let ext4_discard_partial_buffers handle unaligned range correctly
ext4: return ENOMEM if find_or_create_pages fails
ext4: move vars to local scope in ext4_discard_partial_page_buffers_no_lock()
ext4: Create helper function for EXT4_IO_END_UNWRITTEN and i_aiodio_unwritten
ext4: optimize locking for end_io extent conversion
ext4: remove unnecessary call to waitqueue_active()
ext4: Use correct locking for ext4_end_io_nolock()
ext4: fix race in xattr block allocation path
ext4: trace punch_hole correctly in ext4_ext_map_blocks
ext4: clean up AGGRESSIVE_TEST code
ext4: move variables to their scope
ext4: fix quota accounting during migration
ext4: migrate cleanup
...
Diffstat (limited to 'fs/ext4/xattr.c')
-rw-r--r-- | fs/ext4/xattr.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index c757adc97250..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 | ||
@@ -985,11 +991,7 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, | |||
985 | no_expand = ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND); | 991 | no_expand = ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND); |
986 | ext4_set_inode_state(inode, EXT4_STATE_NO_EXPAND); | 992 | ext4_set_inode_state(inode, EXT4_STATE_NO_EXPAND); |
987 | 993 | ||
988 | error = ext4_get_inode_loc(inode, &is.iloc); | 994 | error = ext4_reserve_inode_write(handle, inode, &is.iloc); |
989 | if (error) | ||
990 | goto cleanup; | ||
991 | |||
992 | error = ext4_journal_get_write_access(handle, is.iloc.bh); | ||
993 | if (error) | 995 | if (error) |
994 | goto cleanup; | 996 | goto cleanup; |
995 | 997 | ||