| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
Thus avoiding two RPCs.
|
|
|
|
|
| |
We cannot properly detect when to release the ro_proxy, so let's just not
cache it.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
A pager will now maintain a port to a read-only memory object proxy
for itself, and let the users access it with pager_get_ro_port ().
|
| |
|
|
|
|
|
|
|
|
| |
A node keeps a weak reference on the pager as long as
diskfs_node_disknode (node)->pager points to it. A pager keeps a light
reference on the node as long as the UPI is alive.
This is the same way it's done in ext2fs.
|
|
|
|
|
| |
So users get a "Cannot exec a shared library directly" error message instead
of a segfault.
|
| |
|
|
|
|
|
|
|
|
| |
Making libpager use several workers allows it to queue several requests to
the disk (e.g. for different processes faulting data) rather than waiting
for them sequentially.
* libpager/demuxer.c (WORKER_COUNT): Set to 10.
|
|
|
|
|
|
|
| |
This makes rumpdisk multithreaded as much as the root filesystem pager
will request.
Message-Id: <20220227091013.33112-4-damien@zamaudio.com>
|
|
|
|
|
|
| |
This will allow callers to manage their own server routine.
Message-Id: <20220227091013.33112-3-damien@zamaudio.com>
|
|
|
|
| |
Message-Id: <20220227091013.33112-2-damien@zamaudio.com>
|
|
|
|
|
|
|
|
|
|
|
| |
pci_control_port is not a port info
so calling deref on it is invalid.
There seems no reason to have a device_close
for the pci device currently so remove it.
TESTED via booting a rump disk
Message-Id: <20220227075155.30750-1-damien@zamaudio.com>
|
|
|
|
|
|
| |
TESTED to boot off a rump based disk
Message-Id: <20220227002655.23300-1-damien@zamaudio.com>
|
|
|
|
|
|
|
| |
The RPC stub will not read it on error anyway.
* rumpdisk/block-rump.c (rumpdisk_device_write, rumpdisk_device_read):
Do not set the number of bytes when returning an error.
|
|
|
|
|
|
|
| |
gcc would complain that dummy_read is unused
* rumpdisk/block-rump.c (rumpdisk_device_write): Mark dummy_read with
attribute unused.
|
|
|
|
|
|
|
|
|
|
|
| |
store_read takes a look at the size to determine whether to fill the
provided buffer or not. Even if providing a null buffer we should set
the size to 0.
* defpager/defpager.c (pager_read_page): Initialize nread to 0.
* storeio/dev.c (buffered_rw): Initialize amount to 0.
* fatfs/fat.c (fat_read_sblock): Initialize read to the size of the boot
sector. Reuse it as such.
|
|
|
|
|
| |
This is needed when using a rumpdisk-based root disk. Otherwise fsck
does not properly detect when it is mounted.
|
|
|
|
|
| |
We have always been using the Linux value, coming from the Linux glue
code.
|
|
|
|
|
| |
When starting a libmachdev translator after bootstrap, we still want the
translator to be notified by startup, to properly flush buffers etc.
|
|
|
|
| |
argz_append does not actually support this.
|
|
|
|
|
| |
After deleting an option, we have to let the loop continue from there
instead of skipping another option.
|
|
|
|
|
|
|
| |
Unaligned accesses need a copy into an aligned buffer.
Accesses larger than a page currently have to be split into pages, otherwise
_bus_dmamap_load_buffer assumes coherent physical allocations.
|
|
|
|
|
|
|
| |
Reading the man page for mmap, MAP_FIXED needs to be removed,
because we do not want the mapping to be placed at 0.
Message-Id: <20220212215736.28433-1-damien@zamaudio.com>
|
|
|
|
|
|
| |
* startup/startup.c (S_io_restrict_auth): Cast const uid_t * pointer to
uid_t * when using it in struct idvec which always uses a uid_t* even
when reading it.
|
|
|
|
|
|
|
| |
Since gcc doesn't seem to discover that underlying is not used
uninitialized.
* utils/mount.c (do_mount): Initialize underlying to MACH_PORT_NULL.
|
|
|
|
|
| |
* utils/msgport.c (cmd_umask): Use int instead of mode_t for umask,
since msg_get_init_int takes an int*.
|
|
|
|
|
| |
* pfinet/socket-ops.c (S_socket_setopt): Cast data into char* before
passing it to Linux' setsockopt which erroneously takes a char*.
|
|
|
|
|
|
| |
* pfinet/io-ops.c (S_io_write), pfinet/socket-ops.c (S_socket_send):
Cast const void * pointer to void * when using it in struct iovec which
always uses a void* even when writing.
|
|
|
|
|
| |
* isofs/lookup.c (diskfs_lookup_hard): Make sure we return ENOENT in the
theoretical case that the directory would be completely empty.
|
|
|
|
|
| |
* term/devio.c (ports_do_mach_notify_send_once): Use io_buf_ptr_inband_t
type instead of automatically-sized array.
|
|
|
|
|
|
| |
libmachdev/ds_routines.c (ds_device_write_inband): Replace
const_io_buf_ptr_inband_t with const io_buf_ptr_inband_t, as generated
by mig.
|
| |
|
|
|
|
| |
m4/libgcrypt.m4: Refresh from upstream libgcrypt.
|
|
|
|
|
|
| |
The former is obsolete.
configure.ac: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
|
| |
|
|
|
|
| |
If any device_open succeeds, we should clean its effect.
|
|
|
|
| |
If any device_open succeeds, we should clean its effect.
|
|
|
|
|
|
| |
Return a ENOSPC to notify that not enough space is here after the
xattr entry instead of returning an EIO.
Message-Id: <20220123041715.19402-15-etienne.brateau@gmail.com>
|
|
|
|
|
| |
* xattr: introduce xattr_header_valid method
Message-Id: <20220123041715.19402-14-etienne.brateau@gmail.com>
|
|
|
|
| |
Message-Id: <20220123041715.19402-12-etienne.brateau@gmail.com>
|
|
|
|
| |
Message-Id: <20220123041715.19402-11-etienne.brateau@gmail.com>
|
|
|
|
| |
Message-Id: <20220123041715.19402-10-etienne.brateau@gmail.com>
|
|
|
|
| |
Message-Id: <20220123041715.19402-9-etienne.brateau@gmail.com>
|
|
|
|
|
|
| |
In ext2 data are stored in little endian to ensure portability. So
enforce little endian when manipulating these bytes.
Message-Id: <20220123041715.19402-8-etienne.brateau@gmail.com>
|
|
|
|
|
| |
* hyper.c: use macros to check flags
Message-Id: <20220123041715.19402-7-etienne.brateau@gmail.com>
|
|
|
|
| |
Message-Id: <20220123041715.19402-5-etienne.brateau@gmail.com>
|
|
|
|
|
| |
This makes all #define be grouped at the same place
Message-Id: <20220123041715.19402-4-etienne.brateau@gmail.com>
|