Now, we depend on fsck to ensure quota file data is ok,
so we scan whole partition if checkpoint without umount
flag. It's same for quota off error case, which may make
quota file data inconsistent.

Signed-off-by: Yunlei He <heyun...@huawei.com>
---
 fs/f2fs/super.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 73d7d7e..679af0a 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1820,7 +1820,9 @@ static int f2fs_quota_off(struct super_block *sb, int 
type)
        if (!inode || !igrab(inode))
                return dquot_quota_off(sb, type);
 
-       f2fs_quota_sync(sb, type);
+       err = f2fs_quota_sync(sb, type);
+       if (err)
+               goto out_put;
 
        err = dquot_quota_off(sb, type);
        if (err || f2fs_sb_has_quota_ino(sb))
@@ -1839,9 +1841,18 @@ static int f2fs_quota_off(struct super_block *sb, int 
type)
 void f2fs_quota_off_umount(struct super_block *sb)
 {
        int type;
+       int err;
 
-       for (type = 0; type < MAXQUOTAS; type++)
-               f2fs_quota_off(sb, type);
+       for (type = 0; type < MAXQUOTAS; type++) {
+               err = f2fs_quota_off(sb, type);
+               if (err) {
+                       f2fs_msg(sb, KERN_ERR,
+                               "Failed to off quota tracking "
+                               "(type=%d, err=%d). Please run "
+                               "fsck to fix.", type, err);
+                       set_sbi_flag(F2FS_SB(sb), SBI_NEED_FSCK);
+               }
+       }
 }
 
 static int f2fs_get_projid(struct inode *inode, kprojid_t *projid)
-- 
1.9.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to