On 01 May 2015, at 14:16, Christos Zoulas <[email protected]> wrote:

> In article <[email protected]>,
> J. Hannken-Illjes <[email protected]> wrote:
>> Our miscfs/syncfs originating from the softdep import is a pseudo
>> file system with one VOP.  Its vnodes get used as a kind of marker
>> on the syncer worklist so the syncer may run lazy VFS_SYNC for
>> all mounted file systems.
>> 
>> For this to work, it creates a vnode attached to the mount point
>> with a special (syncfs) operations vector.  This concept breaks
>> some rules making it nearly is impossible to implement it with
>> the new vcache operations.
>> 
>> I propose to completely remove miscfs/syncfs and
>> 
>> - move the syncer sched_sync into kern/vfs_subr.c
>> - change the syncer to process the mountlist and VFS_SYNC as appropriate.
>> - use an API for mount points similiar to the API for vnodes.
>> 
>> Diff at http://www.netbsd.org/~hannken/rm-miscfs-syncfs-1.diff
>> 
>> Comments or objections anyone?
> 
> Have you tested its performance?

With ten mounts I got no problems.  All it adds is once per second:

  mutex_enter(&mountlist_lock);
  for (mp = TAILQ_FIRST(&mountlist); mp != NULL; mp = nmp) {
    if (NOTHING_TO_DO(mp)) {
        nmp = TAILQ_NEXT(mp, mnt_list);
        continue;
      }
  }
  mutex_exit(&mountlist_lock);


> Out of the 4 time_t tunables, two are not being used;

All tunables are used:

kern/vfs_subr.c:461:    delayx = dirdelay;
kern/vfs_subr.c:465:    delayx = metadelay;
kern/vfs_subr.c:470:    delayx = filedelay;
kern/vfs_subr.c:622:    return mp->mnt_wapbl != NULL ? metadelay : syncdelay;
kern/vfs_subr.c:847:    synced ? syncdelay : lockdelay);
miscfs/genfs/genfs_io.c:95:     vn_syncer_add_to_worklist(vp, filedelay);

> The other two are truncated to int's, why use time_t then?

Because I didn't change anything here.  As these tunables are sysctl
nodes we had to change their size breaking backwards compatibility.

--
J. Hannken-Illjes - [email protected] - TU Braunschweig (Germany)

Reply via email to