Merge tag 'ext4_for_linus-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / fs / ext4 / super.c
index f5e5a44..cfb8449 100644 (file)
@@ -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;