Patch "ext4: fix incorrect quotaoff if the quota feature is enabled" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ext4: fix incorrect quotaoff if the quota feature is enabled
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ext4-fix-incorrect-quotaoff-if-the-quota-feature-is-enabled.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
b0a5a9589decd07db755d6a8d9c0910d96ff7992Mon Sep 17 00:00:00 2001
From: "zhangyi (F)" <[email protected]>
Date: Thu, 24 Aug 2017 15:19:39 -0400
Subject: ext4: fix incorrect quotaoff if the quota feature is enabled
From: zhangyi (F) <[email protected]>
commit b0a5a9589decd07db755d6a8d9c0910d96ff7992 upstream.
Current ext4 quota should always "usage enabled" if the quota feautre is enabled. But in ext4_orphan_cleanup(), it turn quotas off directly (used for the older journaled quota), so we cannot turn it on again via "quotaon" unless umount and remount ext4.
Simple reproduce:
mkfs.ext4 -O project,quota /dev/vdb1
mount -o prjquota /dev/vdb1 /mnt
chattr -p 123 /mnt
chattr +P /mnt
touch /mnt/aa /mnt/bb
exec 100<>/mnt/aa
rm -f /mnt/aa
sync
echo c > /proc/sysrq-trigger
#reboot and mount
mount -o prjquota /dev/vdb1 /mnt
#query status
quotaon -Ppv /dev/vdb1
#output
quotaon: Cannot find mountpoint for device /dev/vdb1
quotaon: No correct mountpoint specified.
This patch add check for journaled quotas to avoid incorrect quotaoff when ext4 has quota feautre.
--- fs/ext4/super.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
fs/ext4/super.c +3 -3
@@ -2243,7 +2243,7 @@ static void ext4_orphan_cleanup(struct s#ifdef CONFIG_QUOTA /* Needed for iput() to work correctly and not trash data */ sb->s_flags |=MS_ACTIVE ; -/* Turn on quotas so that they are updated correctly */ +/* Turn on journaled quotas so that they are updated correctly */ for (i =0 ; i <EXT4_MAXQUOTAS ; i++) {if (EXT4_SB (sb)->s_qf_names[i]) {int ret =ext4_quota_on_mount (sb, i);
@@ -2309,9 +2309,9 @@ static void ext4_orphan_cleanup(struct sext4_msg (sb,KERN_INFO ,"%d truncate%s cleaned up" ,PLURAL (nr_truncates));#ifdef CONFIG_QUOTA -/* Turn quotas off */ +/* Turn off journaled quotas if they were enabled for orphan cleanup */ for (i =0 ; i <EXT4_MAXQUOTAS ; i++) { -if (sb_dqopt (sb)->files[i]) +if (EXT4_SB (sb)->s_qf_names[i] &&sb_dqopt (sb)->files[i])dquot_quota_off (sb, i); }#endif
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/ext4-fix-quota-inconsistency-during-orphan-cleanup-for-read-only-mounts.patch queue-4.4/ext4-fix-incorrect-quotaoff-if-the-quota-feature-is-enabled.patch