FAILED: patch "[PATCH] ext4: update the cached overhead value in the superblock" failed to apply to 5.10-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From eb7054212eac8b451d727bf079eae3db8c88f9d3 Mon Sep 17 00:00:00 2001
From: Theodore Ts'o <[email protected]>
Date: Thu, 14 Apr 2022 22:39:00 -0400
Subject: [PATCH] ext4: update the cached overhead value in the superblock
If we (re-)calculate the file system overhead amount and it's different from the on-disk s_overhead_clusters value, update the on-disk version since this can take potentially quite a while on bigalloc file systems.
Signed-off-by Theodore Ts'o <[email protected]>
fs/ext4/ext4.h +1 -0
@@ -3068,6 +3068,7 @@ int ext4_fileattr_set(struct user_namespace *mnt_userns, struct dentry *dentry, struct fileattr *fa);int ext4_fileattr_get (struct dentry *dentry,struct fileattr *fa);extern void ext4_reset_inode_seed (struct inode *inode); +int ext4_update_overhead (struct super_block *sb);/* migrate.c */ extern int ext4_ext_migrate (struct inode *);
fs/ext4/ioctl.c +16 -0
@@ -1652,3 +1652,19 @@ long ext4_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) return ext4_ioctl(file, cmd, (unsigned long) compat_ptr(arg)); }#endif + +static void set_overhead (struct ext4_super_block *es,const void *arg) +{ + es->s_overhead_clusters =cpu_to_le32 (*((unsigned long *) arg)); +} + +int ext4_update_overhead (struct super_block *sb) +{ +struct ext4_sb_info *sbi =EXT4_SB (sb); + +if (sb_rdonly (sb) || sbi->s_overhead ==0 || + sbi->s_overhead ==le32_to_cpu (sbi->s_es->s_overhead_clusters)) +return 0 ; + +return ext4_update_superblocks_fn (sb, set_overhead, &sbi->s_overhead); +}
fs/ext4/super.c +2 -0
@@ -5618,6 +5618,8 @@ static int ext4_fill_super(struct super_block *sb, struct fs_context *fc)ext4_msg (sb,KERN_INFO ,"mounted filesystem with%s. " "Quota mode: %s." , descr,ext4_quota_mode (sb)); +/* Update the s_overhead_clusters if necessary */ +ext4_update_overhead (sb);return 0 ; free_sbi: