Author: mckusick
Date: Thu Jan 23 06:02:52 2020
New Revision: 357029
URL: https://svnweb.freebsd.org/changeset/base/357029

Log:
  MFC of 356739
  
  Optimize quota sync'ing

Modified:
  stable/12/sys/ufs/ffs/ffs_vfsops.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- stable/12/sys/ufs/ffs/ffs_vfsops.c  Thu Jan 23 05:23:37 2020        
(r357028)
+++ stable/12/sys/ufs/ffs/ffs_vfsops.c  Thu Jan 23 06:02:52 2020        
(r357029)
@@ -1457,8 +1457,12 @@ ffs_sync_lazy(mp)
 
        allerror = 0;
        td = curthread;
-       if ((mp->mnt_flag & MNT_NOATIME) != 0)
-               goto qupdate;
+       if ((mp->mnt_flag & MNT_NOATIME) != 0) {
+#ifdef QUOTA
+               qsync(mp);
+#endif
+               goto sbupdate;
+       }
        MNT_VNODE_FOREACH_ACTIVE(vp, mp, mvp) {
                if (vp->v_type == VNON) {
                        VI_UNLOCK(vp);
@@ -1480,18 +1484,16 @@ ffs_sync_lazy(mp)
                if ((error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK,
                    td)) != 0)
                        continue;
+#ifdef QUOTA
+               qsyncvp(vp);
+#endif
                if (sync_doupdate(ip))
                        error = ffs_update(vp, 0);
                if (error != 0)
                        allerror = error;
                vput(vp);
        }
-
-qupdate:
-#ifdef QUOTA
-       qsync(mp);
-#endif
-
+sbupdate:
        if (VFSTOUFS(mp)->um_fs->fs_fmod != 0 &&
            (error = ffs_sbupdate(VFSTOUFS(mp), MNT_LAZY, 0)) != 0)
                allerror = error;
@@ -1584,6 +1586,9 @@ loop:
                        }
                        continue;
                }
+#ifdef QUOTA
+               qsyncvp(vp);
+#endif
                if ((error = ffs_syncvnode(vp, waitfor, 0)) != 0)
                        allerror = error;
                vput(vp);
@@ -1598,9 +1603,6 @@ loop:
                if (allerror == 0 && count)
                        goto loop;
        }
-#ifdef QUOTA
-       qsync(mp);
-#endif
 
        devvp = ump->um_devvp;
        bo = &devvp->v_bufobj;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to