Home | History | Annotate | Download | only in rumpvfs
History log of /src/sys/rump/librump/rumpvfs/rumpfs.c
RevisionDateAuthorComments
 1.167  27-Jun-2023  andvar remove double/tripple o in comments, where it likely was not added on purpose.
 1.166  20-Oct-2021  thorpej Overhaul of the EVFILT_VNODE kevent(2) filter:

- Centralize vnode kevent handling in the VOP_*() wrappers, rather than
forcing each individual file system to deal with it (except VOP_RENAME(),
because VOP_RENAME() is a mess and we currently have 2 different ways
of handling it; at least it's reasonably well-centralized in the "new"
way).
- Add support for NOTE_OPEN, NOTE_CLOSE, NOTE_CLOSE_WRITE, and NOTE_READ,
compatible with the same events in FreeBSD.
- Track which kevent notifications clients are interested in receiving
to avoid doing work for events no one cares about (avoiding, e.g.
taking locks and traversing the klist to send a NOTE_WRITE when
someone is merely watching for a file to be deleted, for example).

In support of the above:

- Add support in vnode_if.sh for specifying PRE- and POST-op handlers,
to be invoked before and after vop_pre() and vop_post(), respectively.
Basic idea from FreeBSD, but implemented differently.
- Add support in vnode_if.sh for specifying CONTEXT fields in the
vop_*_args structures. These context fields are used to convey information
between the file system VOP function and the VOP wrapper, but do not
occupy an argument slot in the VOP_*() call itself. These context fields
are initialized and subsequently interpreted by PRE- and POST-op handlers.
- Version VOP_REMOVE(), uses the a context field for the file system to report
back the resulting link count of the target vnode. Return this in tmpfs,
udf, nfs, chfs, ext2fs, lfs, and ufs.

NetBSD 9.99.92.
 1.165  18-Jul-2021  dholland Use macros for the canned parts of device and fifo vnode op tables.

Add GENFS_SPECOP_ENTRIES and GENFS_FIFOOP_ENTRIES macros that contain
the portion of the vnode ops table declaration that is
(conservatively) the same in every fs. Use these in every fs that
supports devices and/or fifos with separate ops tables.

Note that ptyfs works differently (it has one type of vnode with
open-coded dispatch to the specfs code, which I haven't changed in
this commit) and rump/librump/rumpvfs/rumpfs.c has an indirect dynamic
dispatch that already does more or less the same thing, which I also
haven't changed.

Also note that this anticipates a few bits in the next changeset here
and there, and adds missing but unreachable calls in some cases (e.g.
most fses weren't defining whiteout on devices and fifos, but it isn't
reachable there), and it changes parsepath on devices and fifos to
genfs_badop from genfs_parsepath (but it's not reachable there
either).

It appears that devices in kernfs were missing kqfilter, so it's
possible that if you try to use kqueue on /kern/rootdev that it'll
explode.

And finally note that the ops declaration tables aren't
order-dependent. (Other than vop_default_desc has to come first.)
Otherwise this wouldn't work.
 1.164  29-Jun-2021  dholland Add parsepath for rumpfs in place of using cn_consume.
 1.163  29-Jun-2021  dholland - Add a new vnode op: VOP_PARSEPATH.
- Move namei_getcomponent to genfs_vnops.c and call it genfs_parsepath.
- Add a parsepath entry to every vnode ops table.

VOP_PARSEPATH takes a directory vnode to be searched and a complete
following path and chooses how much of that path to consume. To begin
with, all parsepath calls are genfs_parsepath, which locates the first
'/' as always.

Note that the call doesn't take the whole struct componentname, only
the string. The other bits of struct componentname should not be
needed and there's no reason to cause potential complications by
exposing them.
 1.162  16-May-2020  christos branches: 1.162.6;
Add ACL support for FFS. From FreeBSD.
 1.161  15-May-2020  christos PR/55102: Kamil Rytarowski: Duplicate fifo_vnodeop_entries,
fifo_vnodeop_opv_desc symbols.

Many filesystems ffs, lfs, ulfs, chfs, ext2fs etc. use fifofs
internally for their fifo vnops. NFS does too, but it also needs
networking anyway. Unfortunately fifofs brings in a lot of the
networking code so that the rumpkernel is not well partition. In
addition the fifo code is rarely used.

The existing hack depended on duplicating the above symbols and
adding minimal functionality for the majority of the the tests
(except the ffs and the puffs one). In these two cases both symbols
were loaded and the symbol sizes clashed which broke the sanitizers.
While this can be fixed with weak symbols and other kinds of
indirection, it is more straight forward to select between the
minimal and the full fifofs implementation by introducing a new
shared library librumpvfs_nofifofs.
 1.160  15-May-2020  christos Undo previous, need to fix differently (fifofs is needed by other fs's and
fifo brings in rumpnet)
 1.159  14-May-2020  christos PR/55102: Kamil Rytarowski: Remove fifo stuff duplicated in fifo_vnops.c
 1.158  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.157  23-Apr-2020  ad PR kern/54759 (vm.ubc_direct deadlock when read()/write() into mapping of itself)

- Add new flag UBC_ISMAPPED which tells ubc_uiomove() the object is mmap()ed
somewhere. Use it to decide whether to do direct-mapped copy, rather than
poking around directly in the vnode in ubc_uiomove(), which is ugly and
doesn't work for tmpfs. It would be nicer to contain all this in UVM but
the filesystem provides the needed locking here (VV_MAPPED) and to
reinvent that would suck more.

- Rename UBC_UNMAP_FLAG() to UBC_VNODE_FLAGS(). Pass in UBC_ISMAPPED where
appropriate.
 1.156  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.155  04-Apr-2020  kamil branches: 1.155.2;
Avoid copying zero-sized objects (from the NULL address)

Detected with UBSan
 1.154  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.153  04-Jun-2018  chs branches: 1.153.2; 1.153.8;
initialize the new gop_putrange method pointer in rumpfs_genfsops too.
 1.152  20-Nov-2017  martin branches: 1.152.2;
When truncating a file make sure to update mtime.
This fixes PR kern/51762 for rumpfs.
 1.151  20-Nov-2017  christos PR/52738: Martin Husemann: rumpfs does not support mtime
 1.150  28-May-2017  hannken branches: 1.150.2;
Suspend file system for vgone().
 1.149  26-May-2017  riastradh Make VOP_RECLAIM do the last unlock of the vnode.

VOP_RECLAIM naturally has exclusive access to the vnode, so having it
locked on entry is not strictly necessary -- but it means if there
are any final operations that must be done on the vnode, such as
ffs_update, requiring exclusive access to it, we can now kassert that
the vnode is locked in those operations.

We can't just have the caller release the last lock because some file
systems don't use genfs_lock, and require the vnode to remain valid
for VOP_UNLOCK to work, notably unionfs.
 1.148  26-Apr-2017  riastradh Change VOP_REMOVE and VOP_RMDIR to preserve lock/ref on dvp.

No change to vp -- the plan is to replace the node by the
componentname in the vop parameters, and let all directory vops do
lookups internally.

Proposed on tech-kern with no objections:
https://mail-index.netbsd.org/tech-kern/2017/04/17/msg021825.html
 1.147  17-Apr-2017  hannken Remove unused argument "nextp" from vfs_busy() and vfs_unbusy().
Remove argument "keepref" from vfs_unbusy() and add vfs_ref() where needed.
 1.146  11-Apr-2017  riastradh Make VOP_INACTIVE preserve vnode lock on return.

Discussed on tech-kern:
https://mail-index.netbsd.org/tech-kern/2017/04/01/msg021751.html

Ride 7.99.68, a bumpy bus of incremental vfs improvements!
 1.145  01-Mar-2017  hannken Change the protocol to update a mounted file system from read-write
to read-only and vice versa:

- Add an internal flag IMNT_WANTRDONLY.
- Set either IMNT_WANTRDWR or IMNT_WANTRDONLY if going from or to read-only.
- After successfull call to VFS_MOUNT() set or clear MNT_RDONLY.

Adapt tmpfs and rumpfs to the new protocol. Other file systems will be
updated when they get the IMNT_CAN_RWTORO property.

Welcome to 7.99.64
 1.144  17-Feb-2017  hannken Add generic genfs_suspendctl() and use it for all file systems.
Layered file systems need work.
 1.143  27-Jan-2017  hannken Run vflush() when going from read/write to read only.
Set link count to zero once a node has been removed.
"Implement" MNT_GETARGS.
 1.142  20-Aug-2016  hannken branches: 1.142.2;
Remove now obsolete operation vcache_remove().

Welcome to 7.99.36
 1.141  07-Jul-2016  msaitoh branches: 1.141.2;
KNF. Remove extra spaces. No functional change.
 1.140  07-Mar-2016  christos Avoid void * arithmetic
 1.139  06-Mar-2016  christos PR/50900: David Binderman: optimize memset
 1.138  02-Feb-2016  pooka optimize for size a.k.a. operation nuke trailing spaces
 1.137  02-Feb-2016  pooka Add capability to attach external memory to files on rumpfs. This
feature is useful e.g. for tight-memory systems where you don't need
block storage, but still need to provide some data via files.
 1.136  26-Jan-2016  pooka 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.135  23-Jun-2015  hannken VOP_INACTIVE() is a rump operation, not a specfs operation.
 1.134  07-Jan-2015  riastradh Name kmem_free(rn, sizeof(*rn)) as freeprivate to match makeprivate.

Per pooka's request from a year or so ago when I passed this patch by
him a year or so ago, if I recall correctly.
 1.133  07-Jan-2015  riastradh Don't leak rn on vcache_get failure.
 1.132  03-Jan-2015  hannken Always use (struct rumpfs_node **) as key to vcache operations.
 1.131  01-Jan-2015  hannken Change rumpfs to vcache.
 1.130  17-Aug-2014  justin branches: 1.130.2;
Fix memory leak on error case, as reported in
http://m00nbsd.net/ae123a9bae03f7dde5c6d654412daf5a.html#Report-2
 1.129  13-Jun-2014  pooka branches: 1.129.2;
Add rump_boot_etfs_register(), which can be used to specify etfs
nodes that will be available immediately when mountroot is done
and file systems are available.

The intended use is for example for firmware images to be available when
config_mountroot() hooks run.
 1.128  28-May-2014  justin Add missing __diagused in rump code
 1.127  25-Apr-2014  pooka Move the etfs linkage from rumpvfs to rumpkern, and replace the
weak alias show with an honest pointer indirection.

No client-visible change. (apart from this version working e.g.
on musl w/ dlopen)
 1.126  16-Mar-2014  njoly branches: 1.126.2;
When trying to extend a file, don't wait until the underlying memory
allocation succeed. Return ENOSPC upon failure.
 1.125  24-Feb-2014  pooka truncate is not a defined operation for host files
 1.124  07-Feb-2014  hannken Change vnode operation lookup to return the resulting vnode *vpp unlocked.
Change cache_lookup() to return an unlocked vnode.

Discussed on tech-kern@

Welcome to 6.99.31
 1.123  23-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to return
the resulting vnode *vpp unlocked.

Discussed on tech-kern@

Welcome to 6.99.30
 1.122  17-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to keep the
directory node dvp locked on return.

Discussed on tech-kern@

Welcome to 6.99.29
 1.121  23-Nov-2013  christos change the mountlist CIRCLEQ into a TAILQ
 1.120  05-Aug-2013  pooka Also check if root vnode is busy when unmounting.
 1.119  05-Aug-2013  pooka Only free file data we've allocated.
 1.118  04-Aug-2013  pooka Use standard file-is-valid-until-last-reference-is-dropped semantics
for file contents.

via Justin Cormack & valgrind on github
 1.117  14-Jun-2013  pooka branches: 1.117.2;
Allocate large struct from heap instead of stack for the benefit of
low-stack environments in which this code can run.
 1.116  12-Jun-2013  pooka Make sure root creds override fs mode (at least in a root cred secmodel).
The correct way is of course for the access method to perform this:

return kauth_authorize_vnode(cred, KAUTH_ACCESS_ACTION(mode,
vp->v_type, attr->va_mode), vp, NULL, genfs_can_access(vp->v_type,
attr->va_mode, attr->va_uid, attr->va_gid, mode, cred));
 1.115  10-Jun-2013  pooka Create inodes with the specified mode instead of hardcoding to 0755.
 1.114  30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.113  29-Apr-2013  pooka Reduce hypercalls related to reading to essentially an amalgamation
of readv and preadv. ditto for writing. Hypercalls are so seldomly
used that it doesn't justify 3x the calls for syntactic sugar.
 1.112  07-Apr-2013  stacktic Use genfs_null_putpages for fifo putpages op to ensure that the interlock gets unlocked
 1.111  14-Sep-2012  pooka Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
 1.110  30-Mar-2012  njoly branches: 1.110.2;
Do not ignore kauth errors when setting file flags.
 1.109  22-Mar-2012  njoly Use the appropriates vop_*_args structures.
 1.108  15-Mar-2012  njoly Use VOP va_vaflags attribute for genfs_can_chtimes(), not rumpfs node
one.
 1.107  13-Mar-2012  elad Replace the remaining KAUTH_GENERIC_ISSUSER authorization calls with
something meaningful. All relevant documentation has been updated or
written.

Most of these changes were brought up in the following messages:

http://mail-index.netbsd.org/tech-kern/2012/01/18/msg012490.html
http://mail-index.netbsd.org/tech-kern/2012/01/19/msg012502.html
http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012728.html

Thanks to christos, manu, njoly, and jmmv for input.

Huge thanks to pgoyette for spinning these changes through some build
cycles and ATF.
 1.106  31-Jan-2012  njoly Check credentials when setting uid, gid or mode attributes.
 1.105  30-Jan-2012  njoly Add permissions support to rump_vop_access(), to be used by
rump_vop_lookup().
 1.104  12-Dec-2011  njoly Start making fs read(2) fail with EISDIR if the implementation does
not allow read on directories (kernfs, rumpfs, ptyfs and sysvbfs).
Adjust man page accordingly, and add a small corresponding vfs
testcase.
 1.103  27-Sep-2011  mbalmer branches: 1.103.2; 1.103.6;
Underscores are sometimes overrated.
 1.102  27-Sep-2011  christos fix confusion between MAXPATHLEN and MAXNAMLEN
 1.101  27-Sep-2011  christos use RUMPFS_MAXNAMLEN consistently.
 1.100  27-Sep-2011  christos define RUMPFS_MAXNAMLEN and use it.
 1.99  23-Aug-2011  hannken When consuming only part of a path in rump_vop_lookup():

- Make sure to consume complete path components.
- Consume trailing slashes too.
- Do not clear REQUIREDIR.

Test rump/modautoload/t_modautoload now passes.
 1.98  07-Aug-2011  hannken Allow removal of a directory containing only whiteouts and free them first.
 1.97  05-Aug-2011  hannken Make whiteouts work on rumpfs:

- On lookup it is ok to create if the name exists and is a whiteout
- When replacing a whiteout directory entry remove the whiteout first.
- Set UF_OPAQUE when creating a node in place of a whiteout.
 1.96  19-Jun-2011  rmind - Fix a silly bug: remove umap from uobj in ubc_release() UBC_UNMAP case.
- Use UBC_WANT_UNMAP() consistently.

ARM (PMAP_CACHE_VIVT case) works again.
 1.95  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.94  27-Mar-2011  riz branches: 1.94.2;
Don't try to kmem_alloc() 0 bytes. Without this change, some trivial
kernel modules were not loadable by rump_server.
 1.93  21-Mar-2011  pooka Update copyright statements.

no functional change.
 1.92  01-Mar-2011  pooka Reset node's parent pointer when it's removed. Technically the
parent still exists, but allows us to avoid complicated g/c algorithms
if the parent *is* removed.
 1.91  02-Feb-2011  pooka Allow etfs for CREATE lookups too. This takes care of O_CREAT calls
to open(), which act just like lookups if the node exists (found
from etfs). If the node doesn't exist in etfs, nothing changes
from the previous situation.
 1.90  02-Feb-2011  pooka adjust inode size too if VOP_SETATTR changes size
 1.89  14-Jan-2011  pooka branches: 1.89.2; 1.89.4;
Release etfs node's backing vnode before freeing the etfs node.

spotted from the LOCKDEBUG run that martin accidentally did
 1.88  13-Jan-2011  pooka Respect DOWHITEOUT when removing a directory.
 1.87  13-Jan-2011  pooka support MNT_RDONLY
 1.86  12-Jan-2011  pooka unionfs voodoo
 1.85  12-Jan-2011  pooka Explicitly set *vpp to NULL in lookup. At least reluckup gets
upset if we don't explicitly nullify vpp in the error case.
 1.84  12-Jan-2011  pooka reject r/o mount attempts
 1.83  12-Jan-2011  pooka Mark rootfs r/w. Thanks to the incredible machine known as vfs,
the only one who noticed the inconsistency of writing to a r/o fs
was unionfs.
 1.82  11-Jan-2011  kefren add advlock to rumpfs, ok pooka@
 1.81  04-Jan-2011  pooka Need to check for VNOVAL when setting attrs.
 1.80  04-Jan-2011  pooka Don't try to change the size of non-reg nodes or when vattr doesn't
contain a new size.

from njoly
 1.79  01-Jan-2011  pooka Report correct file size + deal with ftruncate() and O_APPEND.
 1.78  18-Dec-2010  pooka Use correct spec_islocked method.
 1.77  30-Nov-2010  pooka simplify
 1.76  30-Nov-2010  dholland SAVENAME and HASBUF namei flags have been removed; update rumpvfs accordingly.
 1.75  30-Nov-2010  dholland Fix etfs pathname handling to not (mis)use namei's scratch space.

etfs objects must now be registered as absolute paths; however, it is now
possible to access them via relative paths and through symlinks, which
previously worked some times and not others depending on exactly what
namei was doing.

discussed on tech-kern and ok'd by pooka.
 1.74  22-Nov-2010  pooka Support VOP_SETATTR, otherwise e.g. open(O_TRUNC) fails.
 1.73  11-Nov-2010  pooka help me if you can i'm gcc
and i do appreciate work'round-eee'e
help me, get my head out of the ground
won't you please, please help me?
 1.72  11-Nov-2010  pooka +VOP_REMOVE
 1.71  11-Nov-2010  pooka support read/write & ubc
 1.70  11-Nov-2010  pooka support vop_pathconf
 1.69  11-Nov-2010  pooka support vfs_mount/unmount
 1.68  11-Nov-2010  pooka be friends with genfs
 1.67  11-Nov-2010  pooka Support non-hostbacked regular files, at least just a little bit.
 1.66  08-Nov-2010  pooka print some dmesg blub for etfs files attaching as block devices
 1.65  06-Sep-2010  pooka renamelock is mandatory
 1.64  06-Sep-2010  pooka Try to draw faster than Lucky Locke.
 1.63  21-Jul-2010  hannken Make holding v_interlock mandatory for callers of vget().

Announced some time ago on tech-kern.
 1.62  13-Jul-2010  pooka support dotdot lookups
 1.61  09-Jul-2010  hannken Replace vget() with vref()/vn_lock(), this node already has a reference.
 1.60  03-Jul-2010  pooka Support VOP_WHITEOUT (mostly so that unionfs tests don't always
need to first mount ffs)
 1.59  30-Jun-2010  pooka plug memory leaks (of course the function i copypasted for the
previous commit was the only one with the leak ...)
 1.58  30-Jun-2010  pooka Implement VOP_SYMLINK/READLINK. The allows me to be a little lazier
in other places.
 1.57  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.56  22-Jun-2010  pooka Remove overeager checks.
 1.55  16-Jun-2010  pooka * support VOP_SEEK
* correctly handle VOP_OPEN(FREAD|FWRITE)
* fix host file write offset
 1.54  16-Jun-2010  pooka report actual size from read/write vops
 1.53  15-Jun-2010  pooka Implement rumpblk_deregister, for unregistering fake block devices
(from etfs_deregister). Prompted by use case from njoly.
 1.52  15-Jun-2010  njoly Fix some rump_etfs_register/rump_etfs_remove memory leaks.
 1.51  14-Jun-2010  njoly Add rmdir(2) support for rump filsystem.

With help from pooka.
 1.50  11-May-2010  pooka Cache directory entry name length. This brings kernel bootstrap
time down: 14ms -> 12ms. Further hashing etc. did not seem to have
any noticable effect.
(without /dev node creation bootstrap time is 8ms, so it's still
the bottleneck)
 1.49  11-May-2010  pooka Fix reclaim locking so that we don't attempt lock reentry if making
a new rumpfs vnode triggers a reclaim for a rumpfs vnode.
 1.48  11-May-2010  pooka Reclaim spec-type vnodes properly.
 1.47  30-Apr-2010  pooka genfs_eopnotsuppify symlink, otherwise unlocky things happen!
 1.46  30-Apr-2010  pooka Add translation from vtype to dirent type. Convert rumpfs now.
I'll convert the rest of the file servers in need after the next
version bump to avoid the coding module crisis.
 1.45  30-Apr-2010  pooka Get better results if initialize a field before calling strlen().
(can't believe that worked last night. the stars must've been in
the "lottery, stupid" position)
 1.44  29-Apr-2010  pooka p2k asserts get upset if VOP_ISLOCKED() doesn't reflect lock status.
So let genfs do its thing.
 1.43  29-Apr-2010  pooka add simple VOP_READDIR for rumpfs
 1.42  27-Apr-2010  pooka Fix off-by-atleast-1 error.

Note: etfs doesn't work if rumpfs is not mounted as root. Given
that rumpfs_mount always return EOPNOTSUPP (except for mountroot),
this is not a pressible tragedy currently, but nevertheless
could/should be fixed in the future.
 1.41  26-Apr-2010  pooka Add directory support to etfs: host directories and their contents
will be mapped to rumpfs based on the given key. The directory
can be mapped either for a single level or recursively down the
entire subtree.
 1.40  21-Apr-2010  pooka rumpfs is mpsafe (has always been), so mark it as such.
 1.39  14-Apr-2010  pooka Use reserved major for rumpblk instead of picking something which
may conflict.
 1.38  12-Apr-2010  pooka Report f_iosize as 512. Some callers want it, and we can only
guess a safe default here (because of etfs).
 1.37  01-Mar-2010  pooka branches: 1.37.2;
"support" unmount of rumpfs
 1.36  03-Dec-2009  pooka branches: 1.36.2;
Make sure node lengths match in addition to strncmp().
(I thought i fixed this already once?)
 1.35  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.34  30-Nov-2009  pooka test for error in creating root vnode before using it
 1.33  30-Nov-2009  pooka Use genfs_statvfs() for now.
 1.32  30-Nov-2009  pooka support lookup of pathname component "."
 1.31  27-Nov-2009  pooka Move rootfs-related init from init_main() to vfs_mountroot().
Reduces code re-written in rump.
 1.30  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.29  14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.28  14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.27  11-Oct-2009  pooka Include host offset in regular etfs read/write operations (I can't
imagine it being particularly useful, but let's call file this
under POLA).
 1.26  11-Oct-2009  pooka Support creating file system sockets (non-sockets not supported in
VOP_CREATE since I don't want to have to write read/write support
for non-etfs files).
 1.25  07-Oct-2009  pooka Allow to set size and host file offset for etfs files and rumpblk.
 1.24  04-Oct-2009  pooka Implement RUMP_ETFS_REG. Usable e.g. by firmload(9).
(well, it should probably be RUMP_ETFS_PATH, but simple things first)
 1.23  05-Sep-2009  pooka zalloc new rumpfs nodes to make sure rn_vp is initially NULL.
Fixes problem pointed out by Nicolas Joly in private email.
 1.22  04-Aug-2009  pooka Do std vnode locking for specnodes located on rumpfs.
 1.21  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.20  22-Jul-2009  pooka Since rumpfs can now be used from publically exported routines,
convert unsupported checking KASSERTs to return EOPNOTSUPP.
 1.19  10-Jun-2009  pooka Support VOP_MKNOD. This is so that components which need device
nodes (e.g. raidframe) can create them.
 1.18  09-Jun-2009  pooka Put some spunk into deadfs.
 1.17  19-May-2009  pooka Set vnode op vector properly for block devices too. Makes mounting
a real block device work again.
 1.16  03-May-2009  pooka branches: 1.16.2;
set MNT_ROOTFS for the rootfs (the kernel, a logical piece of work)
 1.15  01-May-2009  pooka fix editing artifact
 1.14  29-Apr-2009  pooka Add enough support to be able to create directories and perform
lookups through them. This has two implications:

1) mountpoints can be created directly onto the rump rootfs.
this is benefitial in test programs where we want the same
program to be easily switched between testing against rump and
testing against the host kernel.
2) fakeblk must be used (it used to work implicitly) to register
block devices that should be used from the host fs namespace.
 1.13  18-Apr-2009  pooka null putpages has to unlock interlock instead of just returning success
 1.12  16-Apr-2009  pooka Allocate vnodes properly with getnewvnode() and support reclaim.
 1.11  07-Apr-2009  pooka Make it possible to use VCHR devices again.
 1.10  20-Mar-2009  pooka need atomic.h
 1.9  19-Mar-2009  pooka Make it possible to mount a file system through the mount() system
call in addition to the old rump_mnt_mount(). Some issues remain
(but require more deeprooted changes):
* it is possible to mount only to /
* unmount needs MNT_FORCE due to the new fs being root and having
a bonus reference
* cwdi is not set (since there is no concept of a process)
 1.8  18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.7  26-Feb-2009  pooka Make rumpuser stat and nanosleep independent of the host system
stat and timespec definitions.
 1.6  13-Jan-2009  pooka branches: 1.6.2; 1.6.4; 1.6.6;
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.5  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.4  29-Dec-2008  pooka sprinkle static
 1.3  18-Dec-2008  pooka __KERNEL_RCSID
 1.2  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.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.6.6.2  23-Jul-2009  jym Sync with HEAD.
 1.6.6.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.4.4  28-Apr-2009  skrll Sync with HEAD.
 1.6.4.3  03-Mar-2009  skrll Sync with HEAD.
 1.6.4.2  19-Jan-2009  skrll Sync with HEAD.
 1.6.4.1  13-Jan-2009  skrll file rumpfs.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.6.2.2  17-Jan-2009  mjf Sync with HEAD.
 1.6.2.1  13-Jan-2009  mjf file rumpfs.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.16.2.8  09-Oct-2010  yamt sync with head
 1.16.2.7  11-Aug-2010  yamt sync with head.
 1.16.2.6  11-Mar-2010  yamt sync with head
 1.16.2.5  16-Sep-2009  yamt sync with head
 1.16.2.4  19-Aug-2009  yamt sync with head.
 1.16.2.3  20-Jun-2009  yamt sync with head
 1.16.2.2  04-May-2009  yamt sync with head.
 1.16.2.1  03-May-2009  yamt file rumpfs.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.36.2.3  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.36.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.36.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.37.2.7  12-Jun-2011  rmind Sync RUMP's rump_etfs_remove() and uvm_aio_aiodone() with branch changes.
 1.37.2.6  19-May-2011  rmind Implement sharing of vnode_t::v_interlock amongst vnodes:
- Lock is shared amongst UVM objects using uvm_obj_setlock() or getnewvnode().
- Adjust vnode cache to handle unsharing, add VI_LOCKSHARE flag for that.
- Use sharing in tmpfs and layerfs for underlying object.
- Simplify locking in ubc_fault().
- Sprinkle some asserts.

Discussed with ad@.
 1.37.2.5  21-Apr-2011  rmind sync with head
 1.37.2.4  05-Mar-2011  rmind sync with head
 1.37.2.3  03-Jul-2010  rmind sync with head
 1.37.2.2  30-May-2010  rmind sync with head
 1.37.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.89.4.2  05-Mar-2011  bouyer Sync with HEAD
 1.89.4.1  08-Feb-2011  bouyer Sync with HEAD
 1.89.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.94.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.103.6.2  05-Apr-2012  mrg sync to latest -current.
 1.103.6.1  18-Feb-2012  mrg merge to -current.
 1.103.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.103.2.2  30-Oct-2012  yamt sync with head
 1.103.2.1  17-Apr-2012  yamt sync with head
 1.110.2.4  03-Dec-2017  jdolecek update from HEAD
 1.110.2.3  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.110.2.2  23-Jun-2013  tls resync from head
 1.110.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.117.2.2  18-May-2014  rmind sync with head
 1.117.2.1  28-Aug-2013  rmind sync with head
 1.126.2.1  10-Aug-2014  tls Rebase.
 1.129.2.1  24-Aug-2014  martin Pull up following revision(s) (requested by maxv in ticket #51):
sys/netinet6/ip6_output.c: revision 1.158
sys/rump/librump/rumpvfs/rumpfs.c: revision 1.130
Fix memory leaks in error cases
 1.130.2.6  28-Aug-2017  skrll Sync with HEAD
 1.130.2.5  05-Feb-2017  skrll Sync with HEAD
 1.130.2.4  05-Oct-2016  skrll Sync with HEAD
 1.130.2.3  19-Mar-2016  skrll Sync with HEAD
 1.130.2.2  22-Sep-2015  skrll Sync with HEAD
 1.130.2.1  06-Apr-2015  skrll Sync with HEAD
 1.141.2.2  26-Apr-2017  pgoyette Sync with HEAD
 1.141.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.142.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.150.2.1  26-Feb-2018  snj Pull up following revision(s) (requested by maya in ticket #581):
sys/rump/librump/rumpvfs/rumpfs.c: 1.151-1.152
PR/52738: Martin Husemann: rumpfs does not support mtime
--
When truncating a file make sure to update mtime.
This fixes PR kern/51762 for rumpfs.
 1.152.2.1  25-Jun-2018  pgoyette Sync with HEAD
 1.153.8.1  17-Jan-2020  ad Sync with head.
 1.153.2.2  21-Apr-2020  martin Sync with HEAD
 1.153.2.1  08-Apr-2020  martin Merge changes from current as of 20200406
 1.155.2.2  25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.155.2.1  20-Apr-2020  bouyer Sync with HEAD
 1.162.6.1  01-Aug-2021  thorpej Sync with HEAD.

RSS XML Feed