diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-08 16:03:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-08 16:03:35 -0400 |
commit | f8409abdc592e13cefbe4e4a24a84b3d5741e85f (patch) | |
tree | b016b7158eb080d59bf79605958cb746d545f56d /fs/ext4/resize.c | |
parent | b20dcab9d4589ef9918a13c888c5493945adfc13 (diff) | |
parent | bd9db175dde14b606265e0d37e8319d96fe1a58f (diff) |
Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
Pull ext4 updates from Ted Ts'o:
"Clean ups and miscellaneous bug fixes, in particular for the new
collapse_range and zero_range fallocate functions. In addition,
improve the scalability of adding and remove inodes from the orphan
list"
* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (25 commits)
ext4: handle symlink properly with inline_data
ext4: fix wrong assert in ext4_mb_normalize_request()
ext4: fix zeroing of page during writeback
ext4: remove unused local variable "stored" from ext4_readdir(...)
ext4: fix ZERO_RANGE test failure in data journalling
ext4: reduce contention on s_orphan_lock
ext4: use sbi in ext4_orphan_{add|del}()
ext4: use EXT_MAX_BLOCKS in ext4_es_can_be_merged()
ext4: add missing BUFFER_TRACE before ext4_journal_get_write_access
ext4: remove unnecessary double parentheses
ext4: do not destroy ext4_groupinfo_caches if ext4_mb_init() fails
ext4: make local functions static
ext4: fix block bitmap validation when bigalloc, ^flex_bg
ext4: fix block bitmap initialization under sparse_super2
ext4: find the group descriptors on a 1k-block bigalloc,meta_bg filesystem
ext4: avoid unneeded lookup when xattr name is invalid
ext4: fix data integrity sync in ordered mode
ext4: remove obsoleted check
ext4: add a new spinlock i_raw_lock to protect the ext4's raw inode
ext4: fix locking for O_APPEND writes
...
Diffstat (limited to 'fs/ext4/resize.c')
-rw-r--r-- | fs/ext4/resize.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index 08b3c116915b..bb0e80f03e2e 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c | |||
@@ -348,6 +348,7 @@ static struct buffer_head *bclean(handle_t *handle, struct super_block *sb, | |||
348 | bh = sb_getblk(sb, blk); | 348 | bh = sb_getblk(sb, blk); |
349 | if (unlikely(!bh)) | 349 | if (unlikely(!bh)) |
350 | return ERR_PTR(-ENOMEM); | 350 | return ERR_PTR(-ENOMEM); |
351 | BUFFER_TRACE(bh, "get_write_access"); | ||
351 | if ((err = ext4_journal_get_write_access(handle, bh))) { | 352 | if ((err = ext4_journal_get_write_access(handle, bh))) { |
352 | brelse(bh); | 353 | brelse(bh); |
353 | bh = ERR_PTR(err); | 354 | bh = ERR_PTR(err); |
@@ -426,6 +427,7 @@ static int set_flexbg_block_bitmap(struct super_block *sb, handle_t *handle, | |||
426 | if (unlikely(!bh)) | 427 | if (unlikely(!bh)) |
427 | return -ENOMEM; | 428 | return -ENOMEM; |
428 | 429 | ||
430 | BUFFER_TRACE(bh, "get_write_access"); | ||
429 | err = ext4_journal_get_write_access(handle, bh); | 431 | err = ext4_journal_get_write_access(handle, bh); |
430 | if (err) | 432 | if (err) |
431 | return err; | 433 | return err; |
@@ -518,6 +520,7 @@ static int setup_new_flex_group_blocks(struct super_block *sb, | |||
518 | goto out; | 520 | goto out; |
519 | } | 521 | } |
520 | 522 | ||
523 | BUFFER_TRACE(gdb, "get_write_access"); | ||
521 | err = ext4_journal_get_write_access(handle, gdb); | 524 | err = ext4_journal_get_write_access(handle, gdb); |
522 | if (err) { | 525 | if (err) { |
523 | brelse(gdb); | 526 | brelse(gdb); |
@@ -790,14 +793,17 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
790 | goto exit_dind; | 793 | goto exit_dind; |
791 | } | 794 | } |
792 | 795 | ||
796 | BUFFER_TRACE(EXT4_SB(sb)->s_sbh, "get_write_access"); | ||
793 | err = ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh); | 797 | err = ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh); |
794 | if (unlikely(err)) | 798 | if (unlikely(err)) |
795 | goto exit_dind; | 799 | goto exit_dind; |
796 | 800 | ||
801 | BUFFER_TRACE(gdb_bh, "get_write_access"); | ||
797 | err = ext4_journal_get_write_access(handle, gdb_bh); | 802 | err = ext4_journal_get_write_access(handle, gdb_bh); |
798 | if (unlikely(err)) | 803 | if (unlikely(err)) |
799 | goto exit_dind; | 804 | goto exit_dind; |
800 | 805 | ||
806 | BUFFER_TRACE(dind, "get_write_access"); | ||
801 | err = ext4_journal_get_write_access(handle, dind); | 807 | err = ext4_journal_get_write_access(handle, dind); |
802 | if (unlikely(err)) | 808 | if (unlikely(err)) |
803 | ext4_std_error(sb, err); | 809 | ext4_std_error(sb, err); |
@@ -902,6 +908,7 @@ static int add_new_gdb_meta_bg(struct super_block *sb, | |||
902 | EXT4_SB(sb)->s_group_desc = n_group_desc; | 908 | EXT4_SB(sb)->s_group_desc = n_group_desc; |
903 | EXT4_SB(sb)->s_gdb_count++; | 909 | EXT4_SB(sb)->s_gdb_count++; |
904 | ext4_kvfree(o_group_desc); | 910 | ext4_kvfree(o_group_desc); |
911 | BUFFER_TRACE(gdb_bh, "get_write_access"); | ||
905 | err = ext4_journal_get_write_access(handle, gdb_bh); | 912 | err = ext4_journal_get_write_access(handle, gdb_bh); |
906 | if (unlikely(err)) | 913 | if (unlikely(err)) |
907 | brelse(gdb_bh); | 914 | brelse(gdb_bh); |
@@ -977,6 +984,7 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode, | |||
977 | } | 984 | } |
978 | 985 | ||
979 | for (i = 0; i < reserved_gdb; i++) { | 986 | for (i = 0; i < reserved_gdb; i++) { |
987 | BUFFER_TRACE(primary[i], "get_write_access"); | ||
980 | if ((err = ext4_journal_get_write_access(handle, primary[i]))) | 988 | if ((err = ext4_journal_get_write_access(handle, primary[i]))) |
981 | goto exit_bh; | 989 | goto exit_bh; |
982 | } | 990 | } |
@@ -1084,6 +1092,7 @@ static void update_backups(struct super_block *sb, int blk_off, char *data, | |||
1084 | ext4_debug("update metadata backup %llu(+%llu)\n", | 1092 | ext4_debug("update metadata backup %llu(+%llu)\n", |
1085 | backup_block, backup_block - | 1093 | backup_block, backup_block - |
1086 | ext4_group_first_block_no(sb, group)); | 1094 | ext4_group_first_block_no(sb, group)); |
1095 | BUFFER_TRACE(bh, "get_write_access"); | ||
1087 | if ((err = ext4_journal_get_write_access(handle, bh))) | 1096 | if ((err = ext4_journal_get_write_access(handle, bh))) |
1088 | break; | 1097 | break; |
1089 | lock_buffer(bh); | 1098 | lock_buffer(bh); |
@@ -1163,6 +1172,7 @@ static int ext4_add_new_descs(handle_t *handle, struct super_block *sb, | |||
1163 | */ | 1172 | */ |
1164 | if (gdb_off) { | 1173 | if (gdb_off) { |
1165 | gdb_bh = sbi->s_group_desc[gdb_num]; | 1174 | gdb_bh = sbi->s_group_desc[gdb_num]; |
1175 | BUFFER_TRACE(gdb_bh, "get_write_access"); | ||
1166 | err = ext4_journal_get_write_access(handle, gdb_bh); | 1176 | err = ext4_journal_get_write_access(handle, gdb_bh); |
1167 | 1177 | ||
1168 | if (!err && reserved_gdb && ext4_bg_num_gdb(sb, group)) | 1178 | if (!err && reserved_gdb && ext4_bg_num_gdb(sb, group)) |
@@ -1433,6 +1443,7 @@ static int ext4_flex_group_add(struct super_block *sb, | |||
1433 | goto exit; | 1443 | goto exit; |
1434 | } | 1444 | } |
1435 | 1445 | ||
1446 | BUFFER_TRACE(sbi->s_sbh, "get_write_access"); | ||
1436 | err = ext4_journal_get_write_access(handle, sbi->s_sbh); | 1447 | err = ext4_journal_get_write_access(handle, sbi->s_sbh); |
1437 | if (err) | 1448 | if (err) |
1438 | goto exit_journal; | 1449 | goto exit_journal; |
@@ -1645,6 +1656,7 @@ static int ext4_group_extend_no_check(struct super_block *sb, | |||
1645 | return err; | 1656 | return err; |
1646 | } | 1657 | } |
1647 | 1658 | ||
1659 | BUFFER_TRACE(EXT4_SB(sb)->s_sbh, "get_write_access"); | ||
1648 | err = ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh); | 1660 | err = ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh); |
1649 | if (err) { | 1661 | if (err) { |
1650 | ext4_warning(sb, "error %d on journal write access", err); | 1662 | ext4_warning(sb, "error %d on journal write access", err); |
@@ -1804,6 +1816,7 @@ static int ext4_convert_meta_bg(struct super_block *sb, struct inode *inode) | |||
1804 | if (IS_ERR(handle)) | 1816 | if (IS_ERR(handle)) |
1805 | return PTR_ERR(handle); | 1817 | return PTR_ERR(handle); |
1806 | 1818 | ||
1819 | BUFFER_TRACE(sbi->s_sbh, "get_write_access"); | ||
1807 | err = ext4_journal_get_write_access(handle, sbi->s_sbh); | 1820 | err = ext4_journal_get_write_access(handle, sbi->s_sbh); |
1808 | if (err) | 1821 | if (err) |
1809 | goto errout; | 1822 | goto errout; |