diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-25 11:14:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-25 11:14:59 -0400 |
commit | ece78b7df734726e790dcab207f463401ff80440 (patch) | |
tree | 4a0b23c28c6a727d5eebc8a88a22fe3720c425fd /fs/ext4 | |
parent | 07acfc2a9349a8ce45b236c2624dad452001966b (diff) | |
parent | 0324876628a9c7faf8127e20af29373dc6dec876 (diff) |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull ext2, ext3 and quota fixes from Jan Kara:
"Interesting bits are:
- removal of a special i_mutex locking subclass (I_MUTEX_QUOTA) since
quota code does not need i_mutex anymore in any unusual way.
- backport (from ext4) of a fix of a checkpointing bug (missing cache
flush) that could lead to fs corruption on power failure
The rest are just random small fixes & cleanups."
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
ext2: trivial fix to comment for ext2_free_blocks
ext2: remove the redundant comment for ext2_export_ops
ext3: return 32/64-bit dir name hash according to usage type
quota: Get rid of nested I_MUTEX_QUOTA locking subclass
quota: Use precomputed value of sb_dqopt in dquot_quota_sync
ext2: Remove i_mutex use from ext2_quota_write()
reiserfs: Remove i_mutex use from reiserfs_quota_write()
ext4: Remove i_mutex use from ext4_quota_write()
ext3: Remove i_mutex use from ext3_quota_write()
quota: Fix double lock in add_dquot_ref() with CONFIG_QUOTA_DEBUG
jbd: Write journal superblock with WRITE_FUA after checkpointing
jbd: protect all log tail updates with j_checkpoint_mutex
jbd: Split updating of journal superblock and marking journal empty
ext2: do not register write_super within VFS
ext2: Remove s_dirt handling
ext2: write superblock only once on unmount
ext3: update documentation with barrier=1 default
ext3: remove max_debt in find_group_orlov()
jbd: Refine commit writeout logic
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/super.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 436b4223df66..1867a98e0c49 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -4758,7 +4758,6 @@ static ssize_t ext4_quota_write(struct super_block *sb, int type, | |||
4758 | return -EIO; | 4758 | return -EIO; |
4759 | } | 4759 | } |
4760 | 4760 | ||
4761 | mutex_lock_nested(&inode->i_mutex, I_MUTEX_QUOTA); | ||
4762 | bh = ext4_bread(handle, inode, blk, 1, &err); | 4761 | bh = ext4_bread(handle, inode, blk, 1, &err); |
4763 | if (!bh) | 4762 | if (!bh) |
4764 | goto out; | 4763 | goto out; |
@@ -4774,16 +4773,13 @@ static ssize_t ext4_quota_write(struct super_block *sb, int type, | |||
4774 | err = ext4_handle_dirty_metadata(handle, NULL, bh); | 4773 | err = ext4_handle_dirty_metadata(handle, NULL, bh); |
4775 | brelse(bh); | 4774 | brelse(bh); |
4776 | out: | 4775 | out: |
4777 | if (err) { | 4776 | if (err) |
4778 | mutex_unlock(&inode->i_mutex); | ||
4779 | return err; | 4777 | return err; |
4780 | } | ||
4781 | if (inode->i_size < off + len) { | 4778 | if (inode->i_size < off + len) { |
4782 | i_size_write(inode, off + len); | 4779 | i_size_write(inode, off + len); |
4783 | EXT4_I(inode)->i_disksize = inode->i_size; | 4780 | EXT4_I(inode)->i_disksize = inode->i_size; |
4784 | ext4_mark_inode_dirty(handle, inode); | 4781 | ext4_mark_inode_dirty(handle, inode); |
4785 | } | 4782 | } |
4786 | mutex_unlock(&inode->i_mutex); | ||
4787 | return len; | 4783 | return len; |
4788 | } | 4784 | } |
4789 | 4785 | ||