aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/resize.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-08 16:03:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-08 16:03:35 -0400
commitf8409abdc592e13cefbe4e4a24a84b3d5741e85f (patch)
treeb016b7158eb080d59bf79605958cb746d545f56d /fs/ext4/resize.c
parentb20dcab9d4589ef9918a13c888c5493945adfc13 (diff)
parentbd9db175dde14b606265e0d37e8319d96fe1a58f (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.c13
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;