Age | Commit message (Collapse) | Author |
|
Introduce a new pager_write_pages() entry point, allowing filesystems
to implement multi-page writes in one call. libpager will attempt to
coalesce contiguous dirty pages and call this bulk interface; if it is
unsupported or only partially completes, the remaining pages are
handled by the existing per-page path.
ext2fs now provides file_pager_write_pages(), implemented using a
small chunked write loop (currently 2 blocks per chunk) under
alloc_lock. This reduces lock/unlock cycles, improves batching of
store_write() calls, and avoids starvation by yielding between chunks.
Other filesystems may continue using pager_write_page() unchanged.
Test write 128 MiB dirty file:
Before this change:
store_write calls: 32,874; avg: 4,096 B
After this change (coalesced runs, cap=128):
store_write calls: 1,300; avg 103 KiB
(~25 times fewer calls, ~25 times larger writes)
|
|
so that IPC messages destined for rumpdisk will use page lists rather than
page map entries, to make them safe against swapping out.
|
|
We do not want to consider this a real error, and not an EOF either.
|
|
|
|
As suggested in:
https://lists.debian.org/aKheR0SX8yI5Aw9Q@begin
|
|
|
|
This avoids issues with differing versions of ld.so being used and libc
actually installed.
|
|
|
|
|
|
|
|
so it's easy to spot them from the real kernel.
|
|
|
|
|
|
This adds a working rump driver for /dev/wmX cards,
which are Intel i8254x Gigabit Ethernet devices.
(See man.netbsd.org for "wm(4)")
This should be easily extended to support other NICs
by contributing some makefile foo to netbsd/rump.
TESTED:
- On UP+apic it works 100% with hurd-i386.
- On SMP it also works 100% with hurd-i386.
Example usage:
settrans -fgap /dev/rumpnet /hurd/rumpnet
settrans -fgap /dev/wm0 /hurd/devnode -M /dev/rumpnet wm0
settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/wm0
ifup /dev/wm0
TODO: check tcpdump support
Requires latest master of librump for nofifofs dynamic lib.
Message-ID: <20250722092324.414844-1-damien@zamaudio.com>
|
|
After DHCPRELEASE, DHCP client sends a SIOCSIFADDR to set the
interface address to 0.0.0.0. This is not accepted by our IP
validator `ipv4config_is_valid()`. I think this use case is legit
so this commit makes the translator accept 0.0.0.0 as a valid address.
This assumes that a client trying to set IP to 0.0.0.0 is in fact trying
to remove the IP from the interface. Then it sets all fields to NONE, in
order to pass the validation.
* lwip/lwip-util.c: `configure_device`: Add the exception for 0.0.0.0
and 255.255.255.255.
Message-ID: <20250729155244.7976-2-jlledom@mailfence.com>
|
|
The Linux NFS server does not accept a setting of file size to 0 for
sockets and FIFOs so there is code to strip that for those cases. I also
spotted that the file modification times were not being applied to a
created file so there is now just one rpc to set all file attributes using
xdr_encode_create_state(). This sets the times to be server time which is
appropriate for a new file (even though it was created in the previous RPC
call). The previous code was supplying the 'gid' based on that returned by
the 'stat' but I don't think that can be relied on since the V3 protocol
states that CREATE3 using EXCLUSIVE cannot guarantee any file attributes
until after the SETATTR3.
|
|
to allow it to be used for MKNOD and SYMLINK rpc calls. These file types
work differently to others in that a temporary file is created earlier and
its 'struct node' is migrated to the new file later. A few adjustments to
the mutex locking to comply with the locking rules. A couple of mutex unlock
errors spotted: not being unlocked on malloc failure and an unnecessary
unlock in netfs_attempt_rename()
|
|
so that it can be used in a slightly different context in a following
patch. I also removed the caching of rpc call results that were failed for
errors other than ENOENT. For example, EPERM doesn't say anything about the
lookup validity for other credentials that might be used.
|
|
|
|
That e.g. happens with qemu -kernel option.
|
|
Note that I have altered the specification of the argument value so that the
version can be specified without the program number rather than the other way
around. I think it is much more likely the version would be specified than the
program number.
|
|
|
|
to retrieve the true identity.
|
|
|
|
as its conclusion was valid and now implemented.
|
|
There was little overlap with the v2 code so it got an entirely separate
implementation. There is the possibility of completing statfs.f_namelen
properly using FSINFO3 and PATHCONF3 rpc calls but I didn't know if
f_namelen should be the maximum length for a file name component or the
entire file name path.
|
|
|
|
|
|
whilst attempting to lock an already held mutex.
|
|
|
|
We want to drop the slice part only in the partstore case.
(but still want to change the device in case of USB disk)
|
|
|
|
The v3 netfs_attempt_create_file() uses the 'exclusive' creation protocol
which cannot specify the file permission bits or uid/gid. These need to be
applied post-creation using SETATTR3. There was a missing call to do the chmod
part which I've added. Previously the call to chown that was present did not
consider the return value. I have done so.
|
|
Use the 64 bit value required for v3 'offset' and process opaque_data part
of the reply properly.
|
|
for unlikely case of RPC init failure and processing of v3 reply
|
|
This adds new code to process the reply from a file creation operation that
applies equally to CREATE3, MKDIR3, SYMLINK3 and MKNOD3. RFC1813 permits
a reply without the created file's handle and it might be necessary to
perform a LOOKUP3 on the created file post-creation. Debian Linux NFSV3
server actually always returns the handle when compiling gnumach however
I have tested the case where it might not by adding code (now removed) to
pretend the handle wasn't present in the reply. I expect therefore that the
'skip_returned_stat' function that is added is rarely called.
Fixed netfs_attempt_mkdir() to process the NFSv3 reply properly.
|
|
|
|
|
|
|
|
Better use the stdint.
Also export them, they will be useful generally.
|
|
|
|
This allows top to show Cpu0 to CpuN idle stats when you press 1.
TESTED: on UP and SMP gnumach with debian hurd-i386.
Message-ID: <20250707092520.62819-1-damien@zamaudio.com>
|
|
|
|
|
|
|
|
rumpusbdisk's driving of USB sticks won't interfere with gnumach
operating SATA.
|
|
This provides a functional rumpdisk and rumpusbdisk
with or without static linkage of librump.
Message-ID: <20250701141609.152652-1-damien@zamaudio.com>
|
|
|
|
The VGA boards may not like AVX-whatnot-optimized 512B accesses. E.g.
qemu does not support it and raises an invalid opcode trap.
|
|
COLOR_PAIR takes a color pair, it does not produce one.
|