diff options
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/ext4_sb.h | 6 | ||||
-rw-r--r-- | fs/ext4/inode.c | 4 | ||||
-rw-r--r-- | fs/ext4/namei.c | 3 | ||||
-rw-r--r-- | fs/ext4/super.c | 15 |
4 files changed, 16 insertions, 12 deletions
diff --git a/fs/ext4/ext4_sb.h b/fs/ext4/ext4_sb.h index 445fde603df8..b21f16713db0 100644 --- a/fs/ext4/ext4_sb.h +++ b/fs/ext4/ext4_sb.h | |||
@@ -146,4 +146,10 @@ struct ext4_sb_info { | |||
146 | struct flex_groups *s_flex_groups; | 146 | struct flex_groups *s_flex_groups; |
147 | }; | 147 | }; |
148 | 148 | ||
149 | static inline spinlock_t * | ||
150 | sb_bgl_lock(struct ext4_sb_info *sbi, unsigned int block_group) | ||
151 | { | ||
152 | return bgl_lock_ptr(&sbi->s_blockgroup_lock, block_group); | ||
153 | } | ||
154 | |||
149 | #endif /* _EXT4_SB */ | 155 | #endif /* _EXT4_SB */ |
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 7c3325e0b005..6702a49992a6 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -1346,7 +1346,7 @@ retry: | |||
1346 | goto out; | 1346 | goto out; |
1347 | } | 1347 | } |
1348 | 1348 | ||
1349 | page = __grab_cache_page(mapping, index); | 1349 | page = grab_cache_page_write_begin(mapping, index, flags); |
1350 | if (!page) { | 1350 | if (!page) { |
1351 | ext4_journal_stop(handle); | 1351 | ext4_journal_stop(handle); |
1352 | ret = -ENOMEM; | 1352 | ret = -ENOMEM; |
@@ -2550,7 +2550,7 @@ retry: | |||
2550 | goto out; | 2550 | goto out; |
2551 | } | 2551 | } |
2552 | 2552 | ||
2553 | page = __grab_cache_page(mapping, index); | 2553 | page = grab_cache_page_write_begin(mapping, index, flags); |
2554 | if (!page) { | 2554 | if (!page) { |
2555 | ext4_journal_stop(handle); | 2555 | ext4_journal_stop(handle); |
2556 | ret = -ENOMEM; | 2556 | ret = -ENOMEM; |
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index da98a9012fa5..9fd2a5e1be4d 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
@@ -2212,8 +2212,7 @@ retry: | |||
2212 | * We have a transaction open. All is sweetness. It also sets | 2212 | * We have a transaction open. All is sweetness. It also sets |
2213 | * i_size in generic_commit_write(). | 2213 | * i_size in generic_commit_write(). |
2214 | */ | 2214 | */ |
2215 | err = __page_symlink(inode, symname, l, | 2215 | err = __page_symlink(inode, symname, l, 1); |
2216 | mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS); | ||
2217 | if (err) { | 2216 | if (err) { |
2218 | clear_nlink(inode); | 2217 | clear_nlink(inode); |
2219 | unlock_new_inode(inode); | 2218 | unlock_new_inode(inode); |
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 04158ad74dbb..9494bb249390 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -803,7 +803,9 @@ static struct dquot_operations ext4_quota_operations = { | |||
803 | .acquire_dquot = ext4_acquire_dquot, | 803 | .acquire_dquot = ext4_acquire_dquot, |
804 | .release_dquot = ext4_release_dquot, | 804 | .release_dquot = ext4_release_dquot, |
805 | .mark_dirty = ext4_mark_dquot_dirty, | 805 | .mark_dirty = ext4_mark_dquot_dirty, |
806 | .write_info = ext4_write_info | 806 | .write_info = ext4_write_info, |
807 | .alloc_dquot = dquot_alloc, | ||
808 | .destroy_dquot = dquot_destroy, | ||
807 | }; | 809 | }; |
808 | 810 | ||
809 | static struct quotactl_ops ext4_qctl_operations = { | 811 | static struct quotactl_ops ext4_qctl_operations = { |
@@ -1142,8 +1144,7 @@ static int parse_options(char *options, struct super_block *sb, | |||
1142 | case Opt_grpjquota: | 1144 | case Opt_grpjquota: |
1143 | qtype = GRPQUOTA; | 1145 | qtype = GRPQUOTA; |
1144 | set_qf_name: | 1146 | set_qf_name: |
1145 | if ((sb_any_quota_enabled(sb) || | 1147 | if (sb_any_quota_loaded(sb) && |
1146 | sb_any_quota_suspended(sb)) && | ||
1147 | !sbi->s_qf_names[qtype]) { | 1148 | !sbi->s_qf_names[qtype]) { |
1148 | printk(KERN_ERR | 1149 | printk(KERN_ERR |
1149 | "EXT4-fs: Cannot change journaled " | 1150 | "EXT4-fs: Cannot change journaled " |
@@ -1182,8 +1183,7 @@ set_qf_name: | |||
1182 | case Opt_offgrpjquota: | 1183 | case Opt_offgrpjquota: |
1183 | qtype = GRPQUOTA; | 1184 | qtype = GRPQUOTA; |
1184 | clear_qf_name: | 1185 | clear_qf_name: |
1185 | if ((sb_any_quota_enabled(sb) || | 1186 | if (sb_any_quota_loaded(sb) && |
1186 | sb_any_quota_suspended(sb)) && | ||
1187 | sbi->s_qf_names[qtype]) { | 1187 | sbi->s_qf_names[qtype]) { |
1188 | printk(KERN_ERR "EXT4-fs: Cannot change " | 1188 | printk(KERN_ERR "EXT4-fs: Cannot change " |
1189 | "journaled quota options when " | 1189 | "journaled quota options when " |
@@ -1202,8 +1202,7 @@ clear_qf_name: | |||
1202 | case Opt_jqfmt_vfsv0: | 1202 | case Opt_jqfmt_vfsv0: |
1203 | qfmt = QFMT_VFS_V0; | 1203 | qfmt = QFMT_VFS_V0; |
1204 | set_qf_format: | 1204 | set_qf_format: |
1205 | if ((sb_any_quota_enabled(sb) || | 1205 | if (sb_any_quota_loaded(sb) && |
1206 | sb_any_quota_suspended(sb)) && | ||
1207 | sbi->s_jquota_fmt != qfmt) { | 1206 | sbi->s_jquota_fmt != qfmt) { |
1208 | printk(KERN_ERR "EXT4-fs: Cannot change " | 1207 | printk(KERN_ERR "EXT4-fs: Cannot change " |
1209 | "journaled quota options when " | 1208 | "journaled quota options when " |
@@ -1222,7 +1221,7 @@ set_qf_format: | |||
1222 | set_opt(sbi->s_mount_opt, GRPQUOTA); | 1221 | set_opt(sbi->s_mount_opt, GRPQUOTA); |
1223 | break; | 1222 | break; |
1224 | case Opt_noquota: | 1223 | case Opt_noquota: |
1225 | if (sb_any_quota_enabled(sb)) { | 1224 | if (sb_any_quota_loaded(sb)) { |
1226 | printk(KERN_ERR "EXT4-fs: Cannot change quota " | 1225 | printk(KERN_ERR "EXT4-fs: Cannot change quota " |
1227 | "options when quota turned on.\n"); | 1226 | "options when quota turned on.\n"); |
1228 | return 0; | 1227 | return 0; |