Age | Commit message (Collapse) | Author |
|
ssh://git.savannah.gnu.org/srv/git/hurd/hurd into jlledom-pci-memory-map
|
|
We got a new RPC in the kernel to get the pager
|
|
|
|
The pagers has an offset already, always start the proxy at 0
|
|
|
|
|
|
Relies on libpciaccess mapping methods
|
|
To store the pagers libpciaccess used to map the regions, so
proxies can be created from them.
|
|
|
|
The proxy is not valid as future requests can ask for different
protection level.
|
|
This reverts commit dc859c3d4ba4015a2dae7c3333e63769238dcb3e.
No need to store the proxy, as it's not valid for future requests
|
|
Take the right pager to create the proxy from
|
|
* pci-arbiter/netfs_impl.c:
* Implement callback: netfs_get_filemap
* Check whether the file being mapped is a region
file
* Return the proxy if exists
* Create a new proxy and return it
|
|
* pci-arbiter/pcifs.h:
* struct pcifs_dirent: New field: memproxy
* pci-arbiter/pcifs.c:
* create_dir_entry: Initialize memproxy to MACH_PORT_NULL
|
|
* libnetfs/iostubs.c: implement io_map
|
|
Provide the user with a new callback so they can implement file
mapping over file system nodes.
* libnetfs/netfs.h: Add prototype for netfs_get_filemap
|
|
These were writing to an array and then never using it. Maybe they were
useful for debugging.
Message-Id: <87sfvtmn6r.fsf@autistici.org>
|
|
We got a new RPC in the kernel to get the pager
|
|
|
|
Listing /dev/vcs which is translated by /hurd/console gives the following:
$ ls /dev/vcs
ls: reading directory '/dev/vcs': Invalid argument
1 2 3 4 5 6
That error is probably harmless but annoying.
It is caused by netfs_get_dirents the last time it is called during
listing, because it calls mmap with size = 0.
* console/console.c (netfs_get_dirents): Do not call mmap when size is 0.
|
|
* libnetfs/netfs.h: Ditto.
|
|
* libdirmgt: Remove directory.
|
|
* libtreefs: Remove directory.
|
|
The dependency on libtirpc is already optional in the Makefiles, we do
not need to fail configure when it is missing.
* configure.ac: Do not fail when libtirpc is not available.
|
|
This reverts commit 517edb7fe7c614a683e18671afc52de8cabe8fdf.
It seems to be actually breaking access to the disk.
|
|
* rumpdisk/block-rump.c (rumpdisk_device_read): Memset the buffer
after allocating it.
|
|
This disables the rump buffer cache and avoids any magic translation that
rump would do.
* rumpdisk/block-rump.c (translate_name): Use `/dev/r%sd' format instead of
`/dev/%sd'.
|
|
The pagers has an offset already, always start the proxy at 0
|
|
Sun RPC is being phased out from glibc.
* configure.ac: Detect libtirpc.pc, subst libtirpc_CFLAGS and libtirpc_LIBS.
* config.make.in: Subst libtirpc_CFLAGS and libtirpc_LIBS.
* nfs/Makefile, nfsd/Makefile: Include libtirpc_CFLAGS and libtirpc_LIBS
* nfs/mount.c: Include <rpc/xdr.h>
* nfsd/main.c: Likewise.
* nfsd/ops.c: Likewise.
* nfsd/cache.c: Undef TRUE/FALSE after including rpc/ headers.
* nfsd/loop.c: Likewise.
|
|
* rumpdisk/block-rump.c (rumpdisk_device_read): Use
vm_allocate/vm_deallocate instead of mmap/munmap.
|
|
* rumpdisk/block-rump.c (rumpdisk_device_write): Call vm_deallocate
after writing the data.
|
|
* mach-defpager/main.c (main): After mlockall, report error from errno, not the value returned by mlockall.
|
|
recnum_t is 32bit while offsets are 64bit. We need to detect the
otherwise-silent truncation of the address. This happens here at 2TiB
for 512-byte sectors.
* libstore/device.c (dev_read, dev_write): Return EOVERFLOW on addresses
that are larger than what the device interface can handle.
|
|
glibc is removing its malloc hooks, but gnumach now has support for
mlockall, which we can just use instead of kalloc/kfree.
* mach-defpager/main.c (main): Call mlockall.
* mach-defpager/kalloc.c: Remove.
* mach-defpager/kalloc.h: Remove.
* mach-defpager/default_pager.c: Use malloc/free instead of
kalloc/kfree.
* mach-defpager/setup.c: Likewise.
|
|
Gnumach's 0650a4ee30e3 implements support for high bits being set in the
mask parameter of vm_map. This allowed to remove the rmh kludge in the
dynamic linker. Exec now can and should use the mask for excluding parts of
the memory layout.
|
|
disk_cache_block_is_ref calls hurd_ihash_find which is very expensive, so
better disable the checks from record_global_poke and record_indir_poke
unless building a debugging version.
|
|
|
|
libdiskfs' dosync goes through the cache to flush nodes to the disk.
We thus have to flush a node to the disk before removing it from the
cache in diskfs_try_dropping_softrefs.
|
|
When truncating a node with inline data, it's safer to really frob the inline
data, to make sure ext2fs does not wrongly interprete it as block numbers.
|
|
We may end up with an arbitrary series of bootstrap translators, which
can know about each other through devices, and thus do not need any
particular order except dependencies. The actual bootstrap order can
thus be arbitrary (provided it respects dependencies), so better not
hardcode it.
|
|
We do not actually want to shut everything down. For instance, we still have
to be able to start the acpi translator to perform the actual shutdown.
What we however have to do is syncing the disks.
|
|
machdev installs the trivfs translator, not the netfs translator,
and thus pci-arbiter would only show up as the pci device, not the pci
filesystem.
|
|
|
|
libdiskfs was passing its own proc port, thus confusing the fsys_init
call in rumpdisk.
|
|
|
|
In diskfs_set_translator we need to truncate the existing node before
allocating the block for the translator.
|
|
e2fsck does not like seeing both blocks for the symlink and for the
translation entry.
This fixes the disappearance of /dev/urandom.
|
|
Returning an error will deallocate the RPC references.
Reported-by: Sergey Bugaev <bugaevc@gmail.com>
|
|
The delayed copy actually needs write access.
|
|
This makes libmachdev follow the exec case, and make sure to be waiting
for all bootstrap processes by waiting for the FS process.
Message-Id: <20210711012042.77920-1-damien@zamaudio.com>
|