Merge tag 'ext4_for_linus-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
Pull ext4 updates from Ted Ts'o: "Ext4 bug fixes and cleanups, plus some additional kunit tests" * tag 'ext4_for_linus-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (23 commits) ext4: initialize sbi->s_freeclusters_counter and sbi->s_dirtyclusters_counter before use in kunit test ext4: hold group lock in ext4 kunit test ext4: alloc test super block from sget ext4: kunit: use dynamic inode allocation ext4: enable meta_bg only when new desc blocks are needed ext4: remove unused parameter biop in ext4_issue_discard() ext4: remove SLAB_MEM_SPREAD flag usage ext4: verify s_clusters_per_group even without bigalloc ext4: fix corruption during on-line resize ext4: don't report EOPNOTSUPP errors from discard ext4: drop duplicate ea_inode handling in ext4_xattr_block_set() ext4: fold quota accounting into ext4_xattr_inode_lookup_create() ext4: correct best extent lstart adjustment logic ext4: forbid commit inconsistent quota data when errors=remount-ro ext4: add a hint for block bitmap corrupt state in mb_groups ext4: fix the comment of ext4_map_blocks()/ext4_ext_map_blocks() ext4: improve error msg for ext4_mb_seq_groups_show ext4: remove unused buddy_loaded in ext4_mb_seq_groups_show ext4: Add unit test for ext4_mb_mark_diskspace_used ext4: Add unit test for mb_free_blocks ...
This commit is contained in:
@ -4421,22 +4421,6 @@ static int ext4_handle_clustersize(struct super_block *sb)
|
||||
}
|
||||
sbi->s_cluster_bits = le32_to_cpu(es->s_log_cluster_size) -
|
||||
le32_to_cpu(es->s_log_block_size);
|
||||
sbi->s_clusters_per_group =
|
||||
le32_to_cpu(es->s_clusters_per_group);
|
||||
if (sbi->s_clusters_per_group > sb->s_blocksize * 8) {
|
||||
ext4_msg(sb, KERN_ERR,
|
||||
"#clusters per group too big: %lu",
|
||||
sbi->s_clusters_per_group);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (sbi->s_blocks_per_group !=
|
||||
(sbi->s_clusters_per_group * (clustersize / sb->s_blocksize))) {
|
||||
ext4_msg(sb, KERN_ERR, "blocks per group (%lu) and "
|
||||
"clusters per group (%lu) inconsistent",
|
||||
sbi->s_blocks_per_group,
|
||||
sbi->s_clusters_per_group);
|
||||
return -EINVAL;
|
||||
}
|
||||
} else {
|
||||
if (clustersize != sb->s_blocksize) {
|
||||
ext4_msg(sb, KERN_ERR,
|
||||
@ -4450,9 +4434,21 @@ static int ext4_handle_clustersize(struct super_block *sb)
|
||||
sbi->s_blocks_per_group);
|
||||
return -EINVAL;
|
||||
}
|
||||
sbi->s_clusters_per_group = sbi->s_blocks_per_group;
|
||||
sbi->s_cluster_bits = 0;
|
||||
}
|
||||
sbi->s_clusters_per_group = le32_to_cpu(es->s_clusters_per_group);
|
||||
if (sbi->s_clusters_per_group > sb->s_blocksize * 8) {
|
||||
ext4_msg(sb, KERN_ERR, "#clusters per group too big: %lu",
|
||||
sbi->s_clusters_per_group);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (sbi->s_blocks_per_group !=
|
||||
(sbi->s_clusters_per_group * (clustersize / sb->s_blocksize))) {
|
||||
ext4_msg(sb, KERN_ERR,
|
||||
"blocks per group (%lu) and clusters per group (%lu) inconsistent",
|
||||
sbi->s_blocks_per_group, sbi->s_clusters_per_group);
|
||||
return -EINVAL;
|
||||
}
|
||||
sbi->s_cluster_ratio = clustersize / sb->s_blocksize;
|
||||
|
||||
/* Do we have standard group size of clustersize * 8 blocks ? */
|
||||
@ -6864,6 +6860,10 @@ static int ext4_write_dquot(struct dquot *dquot)
|
||||
if (IS_ERR(handle))
|
||||
return PTR_ERR(handle);
|
||||
ret = dquot_commit(dquot);
|
||||
if (ret < 0)
|
||||
ext4_error_err(dquot->dq_sb, -ret,
|
||||
"Failed to commit dquot type %d",
|
||||
dquot->dq_id.type);
|
||||
err = ext4_journal_stop(handle);
|
||||
if (!ret)
|
||||
ret = err;
|
||||
@ -6880,6 +6880,10 @@ static int ext4_acquire_dquot(struct dquot *dquot)
|
||||
if (IS_ERR(handle))
|
||||
return PTR_ERR(handle);
|
||||
ret = dquot_acquire(dquot);
|
||||
if (ret < 0)
|
||||
ext4_error_err(dquot->dq_sb, -ret,
|
||||
"Failed to acquire dquot type %d",
|
||||
dquot->dq_id.type);
|
||||
err = ext4_journal_stop(handle);
|
||||
if (!ret)
|
||||
ret = err;
|
||||
@ -6899,6 +6903,10 @@ static int ext4_release_dquot(struct dquot *dquot)
|
||||
return PTR_ERR(handle);
|
||||
}
|
||||
ret = dquot_release(dquot);
|
||||
if (ret < 0)
|
||||
ext4_error_err(dquot->dq_sb, -ret,
|
||||
"Failed to release dquot type %d",
|
||||
dquot->dq_id.type);
|
||||
err = ext4_journal_stop(handle);
|
||||
if (!ret)
|
||||
ret = err;
|
||||
|
Reference in New Issue
Block a user