if (ap->a_waitfor != MNT_LAZY) return (0);
LIST_REMOVE(syncvp, v_synclist); vn_syncer_add_to_worklist(syncvp, syncdelay);
sync_fsync(v)	void *v;{      struct vop_fsync_args /* {              struct vnode *a_vp;              struct ucred *a_cred;              int a_waitfor;              struct proc *a_p;      } */ *ap = v;      struct vnode *syncvp = ap->a_vp;      struct mount *mp = syncvp->v_mount;      int asyncflag;      /*       * We only need to do something if this is a lazy evaluation.       */      if (ap->a_waitfor != MNT_LAZY)              return (0);      /*       * Move ourselves to the back of the sync list.       */      LIST_REMOVE(syncvp, v_synclist);      vn_syncer_add_to_worklist(syncvp, syncdelay);      /*       * Walk the list of vnodes pushing all that are dirty and       * not already on the sync list.       */      simple_lock(&mountlist_slock);      if (vfs_busy(mp, LK_NOWAIT, &mountlist_slock, ap->a_p) == 0) {              asyncflag = mp->mnt_flag & MNT_ASYNC;              mp->mnt_flag &= ~MNT_ASYNC;              VFS_SYNC(mp, MNT_LAZY, ap->a_cred, ap->a_p);              if (asyncflag)                      mp->mnt_flag |= MNT_ASYNC;              vfs_unbusy(mp, ap->a_p);      }      return (0);}