Home | History | Annotate | Download | only in rumpvfs
History log of /src/sys/rump/librump/rumpvfs/rump_vfs.c
RevisionDateAuthorComments
 1.97  23-Sep-2023  ad Repply this change with a couple of bugs fixed:

- Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.96  12-Sep-2023  ad Back out recent change to replace pool_cache with then general allocator.
Will return to this when I have time again.
 1.95  10-Sep-2023  ad - Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.94  26-Oct-2022  riastradh sys/filedesc.h: New home for extern cwdi0.
 1.93  25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.92  20-Apr-2020  ad Rename buf_syncwait() to vfs_syncwait(), and have it wait on v_numoutput
rather than BC_BUSY. Removes the dependency on bufhash.
 1.91  13-Apr-2020  ad Replace most uses of vp->v_usecount with a call to vrefcnt(vp), a function
that hides the details and does atomic_load_relaxed(). Signature matches
FreeBSD.
 1.90  23-Feb-2020  ad branches: 1.90.4;
UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.89  17-Jan-2020  ad VFS_VGET(), VFS_ROOT(), VFS_FHTOVP(): give them a "int lktype" argument, to
allow us to get shared locks (or no lock) on the returned vnode. Matches
FreeBSD.
 1.88  20-Feb-2019  hannken branches: 1.88.6;
Attach "mnt_transinfo" to "dead_rootmount" so every mount has a
valid "mnt_transinfo" and remove now unneeded flag IMNT_HAS_TRANS.

Run fstrans_start()/fstrans_done() on dead_rootmount if FSTRANS_DEAD_ENABLED.
Should become the default for DIAGNOSTIC in the future.
 1.87  01-Apr-2017  riastradh branches: 1.87.14;
KASSERT(mutex_owned(vp->v_interlock)) in vnode iterator selector.
 1.86  17-Nov-2016  pgoyette branches: 1.86.2;
In addition to initializing the bufq subsystem, we also need to init
the individual strategy modules.
 1.85  16-Nov-2016  pgoyette Initialize the bufq stuff for rump, too.

This should fix the large number of tests that recently started to fail.
 1.84  26-Jan-2016  pooka branches: 1.84.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.83  22-Jul-2015  hannken rump_vfs_mount_print: use vfs_vnode_iterator to print attached vnodes.
 1.82  06-May-2015  hannken Remove miscfs/syncfs and

- move the syncer 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:
- vfs_syncer_add_to_worklist(struct mount *mp) to add
- vfs_syncer_remove_from_worklist(struct mount *mp) to remove a mount.

No objections on tech-kern@
 1.81  17-Nov-2014  pooka branches: 1.81.2;
Release all hypervisor-level resources for rump_etfs paths when the
rump kernel is halted.

Allows a Xen domU to not complain after it was shut down, or something
like that. Requested by Martin Lucina.
 1.80  23-May-2014  pooka Permissions work better if you specify them in octal ...

Also, do an explicit chmod of /tmp to account for cmask getting in the way.
 1.79  22-May-2014  pooka create /tmp at bootstrap, default TMPDIR used by some programs (e.g. ed)
 1.78  25-Apr-2014  pooka gardenize: function calls over #ifdefs
 1.77  10-Jun-2013  pooka branches: 1.77.2; 1.77.6;
create /dev with 0755 instead of 0777 (though it's now effectively the
same due to cmask)
 1.76  29-Apr-2013  pooka g/c unused
 1.75  29-Apr-2013  pooka Replace the various "get info from hypervisor" interfaces with one
unified rumpuser_getparam(), and make it return a plist. The
contents can come e.g. from the env or a config file. Make
identifiers starting with an underscore denote system identifiers
which must be implemented by hypervisor. (yea, j/k about the plist bit)
 1.74  29-Apr-2013  pooka Rework how the bio hypercalls work, part 1/n:

Reduce the set of hypercalls to one: "do block i/o". This not only
eliminates a lot of pseudo-duplicate code, it also gives the
hypervisor a lot more freedom on how to optimize the i/o.
 1.73  04-Apr-2013  pooka create /dev/null only after it's possible to create /dev/null
 1.72  03-Apr-2013  pooka Don't create a huge number of unnecessary device nodes automatically.
Creating them takes 70-or-so ms on a RPi, and can almost double the
bootstrap time of a rump kernel on that hardware.
 1.71  14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.70  22-Nov-2012  pooka satisfy the slightly more picky clang
 1.69  18-Nov-2012  pooka Finally remove the "temporary" __VTYPE_DEFINED stuff I added >5 years ago.
 1.68  05-Nov-2012  dholland Disentangle the namecache from the internals of namei.

- Move the namecache's hash computation to inside the namecache code,
instead of being spread out all over the place. Remove cn_hash from
struct componentname and delete all uses of it.

- It is no longer necessary (if it ever was) for cache_lookup and
cache_lookup_raw to clear MAKEENTRY from cnp->cn_flags for the cases
that cache_enter already checks for.

- Rearrange the interface of cache_lookup (and cache_lookup_raw) to
make it somewhat simpler, to exclude certain nonexistent error
conditions, and (most importantly) to make it not require write access
to cnp->cn_flags.

This change requires a kernel bump.
 1.67  04-Jul-2011  mrg branches: 1.67.2; 1.67.12;
don't define multiple cwdi0's, mark this one as extern.

fixes various mips build issues i've seen with both GCC 4.1 and 4.5.
 1.66  12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.65  07-Jan-2011  pooka branches: 1.65.6;
Censor no-longer-relevant flags which may be passed down from
somewhere (e.g. an older kernel). We really can't do anything
about new flags or flags changing meaning, though.
 1.64  06-Jan-2011  pooka cwdi0 lock is now initialized in proc0_init()
 1.63  30-Nov-2010  pooka remove unnecessary interface
 1.62  30-Nov-2010  pooka fix broken rototill
 1.61  30-Nov-2010  dholland SAVENAME and HASBUF namei flags have been removed; update rumpvfs accordingly.
 1.60  21-Nov-2010  pooka I can't think of any reason why a rump kernel has to allow vfsusermount
by default, nor do I remember why i originally added it in 2008
==> remove.
 1.59  19-Nov-2010  dholland Introduce struct pathbuf. This is an abstraction to hold a pathname
and the metadata required to interpret it. Callers of namei must now
create a pathbuf and pass it to NDINIT (instead of a string and a
uio_seg), then destroy the pathbuf after the namei session is
complete.

Update all namei call sites accordingly. Add a pathbuf(9) man page and
update namei(9).

The pathbuf interface also now appears in a couple of related
additional places that were passing string/uio_seg pairs that were
later fed into NDINIT. Update other call sites accordingly.
 1.58  07-Sep-2010  pooka Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out. For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory. Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available). Anyway, it ~works for now and
it's by no means worse than what it was before.
 1.57  07-Sep-2010  pooka Retire the prehistoric chroot/cwd interfaces now that there is a
process model in rump.
 1.56  30-Jun-2010  pooka Run vfs component constructors.
 1.55  24-Jun-2010  hannken Clean up vnode lock operations pass 2:

VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.

Welcome to 5.99.32.

Discussed on tech-kern.
 1.54  08-Jun-2010  pooka The previous revision worked brilliantly if all you wanted to test
was autoload *not* working with an alternate path. This revision
make the code double as good in the sense that it now works also
in case you *do* want it to work.
 1.53  08-Jun-2010  pooka Allow to set a non-standard module_base for host kernel module loading.
 1.52  26-May-2010  pooka Add public namespace helper routine for dumping info on mountpoints.
 1.51  20-May-2010  pooka open VFS_EXTATTRCTL to user namespace
 1.50  11-May-2010  pooka Set default number of vnodes to 1k instead of 64k: a large default
reserves a large amount of memory by default and this is not
desirable in a rump kernel where the typical usage is minimal.
Maybe I should write a few lines to autoscale desiredvnodes up to
a hard limit after the soft limit is reached?
 1.49  01-May-2010  pooka cleanup non-used code (superceded by rump_printevcnts)
 1.48  30-Apr-2010  pooka Autogenerate /dev nodes. Use (recreate) the naming policy in
MAKEDEV. -- Not the famous irrational file system devfs, but an
incredible simulation.
 1.47  26-Apr-2010  pooka Register module_base as an etfs recursive subdirectory. This means
that rump will autoload kernel modules from the host
/stand/arch/vers/modules directory.
 1.46  21-Apr-2010  pooka Reduce #ifdef spew by attaching wapbl as a module.
(no, it's still too ifdef-ridden to be able to actually do anything
useful and module-like like load into any kernel)
 1.45  12-Apr-2010  pooka Support real file system transactions/suspension (vfs_trans.c)
instead of just stubbing it.
 1.44  26-Mar-2010  pooka rootfstype is not a vfs stub, so it doesn't belong in vfs_stubs
 1.43  05-Mar-2010  pooka branches: 1.43.2;
Use improved kernel module interfaces: instead of adding + loading
modules in bootstrap, just add them. Load them later the same way
as the kernel does: module_init_class().

Change the signature of rump_module_init() to take a vector instead
of just one module. All modules in a DSO should be init'd at the
same time because they might depend on each other, and code outside
the rump kernel cannot know which way. (binary kernel modules are
still loaded with rump_sys_modctl() the usual way).
 1.42  17-Dec-2009  pooka branches: 1.42.2;
* implement rump_vfs_makeonedevnode(), where the interface for creating
multiple nodes doesn't make sense: e.g. /dev/null would've had to
be created with ("/dev/nul", 'l', 1)
* implement said /dev/null (just for show)
 1.41  03-Dec-2009  pooka * create /dev on the rump rootfs automatically
* make rump_vfs_makedevnodes() take a full basepath instead of hardcoding
an assumption that the device node is created in /dev
+ the caller is responsible that the directory the nodes are being
created in exists
 1.40  03-Dec-2009  pooka Call spec_init() to avoid device open lossage.
 1.39  03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.38  01-Dec-2009  pooka call cache_cpu_init() for all cpus
 1.37  27-Nov-2009  pooka Move rootfs-related init from init_main() to vfs_mountroot().
Reduces code re-written in rump.
 1.36  26-Nov-2009  pooka Make sure rumpfs is attached on all host platforms.
 1.35  26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.34  19-Nov-2009  pooka Create async i/o "interrupt" thread from within the kernel so that
it gets a kernel thread context.
 1.33  15-Oct-2009  pooka rump_cpu is now a pointer
 1.32  14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.31  14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.30  09-Oct-2009  pooka Provide an interface for reboot.
 1.29  07-Oct-2009  pooka use vref() for increasing reference count instead of homegrown brilliance
 1.28  07-Oct-2009  pooka g/c some prehistoric interfaces which have been superceded by others.
 1.27  06-Oct-2009  pooka Give a p2k node an internal state. This allows us to do proper
reference counting and not release nodes based just on puffs'
impression of if they are free.

This also allows us to reclaim vnodes already in inactive if the
file system so desires. Some file systems, most notably ffs, change
file state already in inactive. This could lead to a deadlock in
the middle of inactive and reclaim if some other puffs operation
was processed in between (as exposed by haad's open(at) test
program).

Also, properly thread the componentname from lookup to the actual
vnode operation. This required the changes the rump componentname
routines. Yes, the rename case is truly mindbogglingly disgusting.
Puke for yourself.
 1.26  04-Oct-2009  pooka Include firmload. Although it may be used by devices, it's pure
vfs in nature, and therefore it belongs here (can't load a firmware
from a file system without file system support, right?). Rename
rump_cwdi to cwdi0, since firmload depends on that name (naughty
firmload).
 1.25  02-Oct-2009  elad First part of secmodel cleanup and other misc. changes:

- Separate the suser part of the bsd44 secmodel into its own secmodel
and directory, pending even more cleanups. For revision history
purposes, the original location of the files was

src/sys/secmodel/bsd44/secmodel_bsd44_suser.c
src/sys/secmodel/bsd44/suser.h

- Add a man-page for secmodel_suser(9) and update the one for
secmodel_bsd44(9).

- Add a "secmodel" module class and use it. Userland program and
documentation updated.

- Manage secmodel count (nsecmodels) through the module framework.
This eliminates the need for secmodel_{,de}register() calls in
secmodel code.

- Prepare for secmodel modularization by adding relevant module bits.
The secmodels don't allow auto unload. The bsd44 secmodel depends
on the suser and securelevel secmodels. The overlay secmodel depends
on the bsd44 secmodel. As the module class is only cosmetic, and to
prevent ambiguity, the bsd44 and overlay secmodels are prefixed with
"secmodel_".

- Adapt the overlay secmodel to recent changes (mainly vnode scope).

- Stop using link-sets for the sysctl node(s) creation.

- Keep sysctl variables under nodes of their relevant secmodels. In
other words, don't create duplicates for the suser/securelevel
secmodels under the bsd44 secmodel, as the latter is merely used
for "grouping".

- For the suser and securelevel secmodels, "advertise presence" in
relevant sysctl nodes (sysctl.security.models.{suser,securelevel}).

- Get rid of the LKM preprocessor stuff.

- As secmodels are now modules, there's no need for an explicit call
to secmodel_start(); it's handled by the module framework. That
said, the module framework was adjusted to properly load secmodels
early during system startup.

- Adapt rump to changes: Instead of using empty stubs for securelevel,
simply use the suser secmodel. Also replace secmodel_start() with a
call to secmodel_suser_start().

- 5.99.20.

Testing was done on i386 ("release" build). Spearated module_init()
changes were tested on sparc and sparc64 as well by martin@ (thanks!).

Mailing list reference:

http://mail-index.netbsd.org/tech-kern/2009/09/25/msg006135.html
 1.24  03-Aug-2009  pooka * get rid of the old fakeblk registration interface. Instead,
introduce a new and improved "etfs" interface, which can be used
to register host files accessible from rump fs namespace. This
new interface is not restriced to block devices, and neither does
it require the same pathname in host namespace and rump namespace.
Therefore, the same host file can be represented both as a char
and block device in rump namespace.

* adjust rumpblk to make the above possible

* improve rumpfs: nodes are now created properly and not implicitly
tied to the vnode lifecycle
 1.23  29-Jun-2009  dholland Another namei_simple like the previous ones; was added after I did the
initial sweep and I guess I missed it while merging.
 1.22  22-May-2009  pooka fix __KERNEL_RCSID
 1.21  04-May-2009  pooka Nuke RUMPCN_HASNTBUF. The inspiration behind it must've been ... deep.
 1.20  03-May-2009  pooka branches: 1.20.2;
Rename rump_cred_destroy() to rump_cred_put() -- they've been
refcounted since forever now.
 1.19  03-May-2009  pooka Add rump_vfs_getmp(), which returns struct mount for a given path.
(yes, it does not take a reference to the mountpoint)
 1.18  01-May-2009  pooka in case of error, return instead of continuing
 1.17  29-Apr-2009  pooka Use cwdinit() for proc0's cwdi.
 1.16  26-Apr-2009  pooka * set syncdelay to 0 only if we don't have a syncer thread
* add some #if0'd debug code to unmount for printing event counters
 1.15  18-Apr-2009  pooka If running in multithreaded mode, create sched_sync thread.
 1.14  18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.13  22-Feb-2009  ad PR kern/26878 FFSv2 + softdep = livelock (no free ram)
PR kern/16942 panic with softdep and quotas
PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch
PR kern/26274 softdep panic: allocdirect_merge: ...
PR kern/26374 Long delay before non-root users can write to softdep partitions
PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem
PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption
PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk
PR kern/31981 stopping scsi disk can cause panic (softdep)
PR kern/32116 kernel panic in softdep (assertion failure)
PR kern/32532 softdep_trackbufs deadlock
PR kern/37191 softdep: locking against myself
PR kern/40474 Kernel panic after remounting raid root with softdep

Retire softdep, pass 2. As discussed and later formally announced on the
mailing lists.
 1.12  06-Feb-2009  pooka branches: 1.12.2;
Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.11  13-Jan-2009  pooka branches: 1.11.2; 1.11.4;
lf_init()
 1.10  13-Jan-2009  pooka misc cleanup, mainly header polish
 1.9  13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.8  31-Dec-2008  pooka yank debug printf from previous
 1.7  31-Dec-2008  pooka Reset proc0 cwdi after unmount. Makes is possible to mount/unmount/mount
in one process.
(XXX: this code is still horrible)

problem reported by stacktic
 1.6  29-Dec-2008  pooka Register a dummy block device for rump, since some file systems do
a sanity check to see if the block device exists. This dummy block
device should eventually replace rump specfs.
 1.5  18-Dec-2008  pooka __KERNEL_RCSID
 1.4  27-Nov-2008  pooka * hang all mountpoints from rootvnode in our virtual mount hierarchy
* set VV_ROOT for the rootvnode to make getcwd realize it has met
its journey's end
 1.3  25-Nov-2008  pooka Take reference for proc0 rootdir vnode.
 1.2  21-Nov-2008  pooka rump_vfs_load() is really rump_module_load(), so call it that and
move it from rumpvfs to rumpkern.
 1.1  19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.11.4.4  28-Apr-2009  skrll Sync with HEAD.
 1.11.4.3  03-Mar-2009  skrll Sync with HEAD.
 1.11.4.2  19-Jan-2009  skrll Sync with HEAD.
 1.11.4.1  13-Jan-2009  skrll file rump_vfs.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.11.2.2  17-Jan-2009  mjf Sync with HEAD.
 1.11.2.1  13-Jan-2009  mjf file rump_vfs.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.12.2.2  23-Jul-2009  jym Sync with HEAD.
 1.12.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.20.2.9  09-Oct-2010  yamt sync with head
 1.20.2.8  11-Aug-2010  yamt sync with head.
 1.20.2.7  11-Mar-2010  yamt sync with head
 1.20.2.6  19-Aug-2009  yamt sync with head.
 1.20.2.5  18-Jul-2009  yamt sync with head.
 1.20.2.4  20-Jun-2009  yamt sync with head
 1.20.2.3  16-May-2009  yamt sync with head
 1.20.2.2  04-May-2009  yamt sync with head.
 1.20.2.1  03-May-2009  yamt file rump_vfs.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.42.2.3  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.42.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.42.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.43.2.4  05-Mar-2011  rmind sync with head
 1.43.2.3  03-Jul-2010  rmind sync with head
 1.43.2.2  30-May-2010  rmind sync with head
 1.43.2.1  16-Mar-2010  rmind Change struct uvm_object::vmobjlock to be dynamically allocated with
mutex_obj_alloc(). It allows us to share the locks among UVM objects.
 1.65.6.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.67.12.5  03-Dec-2017  jdolecek update from HEAD
 1.67.12.4  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.67.12.3  23-Jun-2013  tls resync from head
 1.67.12.2  25-Feb-2013  tls resync with head
 1.67.12.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.67.2.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.67.2.2  23-Jan-2013  yamt sync with head
 1.67.2.1  16-Jan-2013  yamt sync with (a bit old) head
 1.77.6.1  10-Aug-2014  tls Rebase.
 1.77.2.1  18-May-2014  rmind sync with head
 1.81.2.5  28-Aug-2017  skrll Sync with HEAD
 1.81.2.4  05-Dec-2016  skrll Sync with HEAD
 1.81.2.3  19-Mar-2016  skrll Sync with HEAD
 1.81.2.2  22-Sep-2015  skrll Sync with HEAD
 1.81.2.1  06-Jun-2015  skrll Sync with HEAD
 1.84.2.2  26-Apr-2017  pgoyette Sync with HEAD
 1.84.2.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.86.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.87.14.3  21-Apr-2020  martin Sync with HEAD
 1.87.14.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.87.14.1  10-Jun-2019  christos Sync with HEAD
 1.88.6.2  29-Feb-2020  ad Sync with head.
 1.88.6.1  17-Jan-2020  ad Sync with head.
 1.90.4.2  25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.90.4.1  20-Apr-2020  bouyer Sync with HEAD

RSS XML Feed