| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* doc/hurd.texi (diskfs_set_node_atime): Document relatime behavior.
* libdiskfs/diskfs.h (diskfs_set_node_atime): Likewise.
* libdiskfs/init-init.c (_diskfs_relatime): Add variable.
* libdiskfs/file-statfs.c (ST_RELATIME): Define if not defined already.
(diskfs_S_file_statfs): Report ST_RELATIME when _diskfs_relatime is set.
* libdiskfs/node-times.c (atime_should_update): New function.
(diskfs_set_node_atime): Document relatime behavior. Call
atime_should_update instead of reading _diskfs_noatime.
* libdiskfs/opts-common.c (diskfs_common_options): Add --strictatime and
-R/--relatime options.
* libdiskfs/opts-std-runtime.c (struct parse_hook): Add relatime field.
(set_opts): Set _diskfs_relatime from relatime field.
(parse_opt): Parse -R option.
* libdiskfs/opts-std-startup.c (parse_startup_opt): Parse -R option.
* libdiskfs/priv.h (_diskfs_relatime): Declare variable.
(atime_should_update): Declare function.
* libdiskfs/opts-append-std.c (diskfs_append_std_options): Add reporting
--relatime option.
* libdiskfs/conch-fetch.c (iohelp_fetch_shared_data): Call
atime_should_update instead of reading _diskfs_noatime.
* libdiskfs/rdwr-internal.c (_diskfs_rdwr_internal): Likewise.
|
|
|
|
|
|
|
|
|
|
|
| |
This adapts the arbiter to a bug fixed in libpciaccess. We were relying on
the library to probe devices and map regions but it's the arbiter who should
do it.
* pci-arbiter/pcifs.c:
* create_fs_tree(): probe the device to find regions and rom
* pci-arbiter/func_files.c:
* io_region_file(): map region on the first access attempt
|
|
|
|
|
|
| |
This one-liner fixes libmachdev build failure.
Message-Id: <20200906020837.329023-1-damien@zamaudio.com>
|
|
|
|
|
|
|
|
| |
We are not supposed to buffer more than the requested buffer size, so
we should make the writer wait.
* libpipe/pipe.c (pipe_send): Limit write calls to the write_limit, and
loop around it to reach the requested amount.
|
|
|
|
| |
Message-Id: <20200801050538.273196-1-damien@zamaudio.com>
|
|
|
|
|
|
|
|
| |
C99 extern inline semantic is different from GNU semantic, so we cannot
blindly write "extern inline".
* usermux/usermux.h (USERMUX_EI): Define to __extern_inline instead of
extern inline.
|
|
|
|
|
|
|
|
|
|
|
|
| |
C99 extern inline semantic is different from GNU semantic, so we cannot
blindly write "extern inline".
* libfshelp/rlock.h (FSHELP_EXTERN_INLINE): Define to __extern_inline if
not already.
(rlock_list_init): Mark FSHELP_EXTERN_INLINE instead of extern inline.
* libfshelp/fshelp.h (FSHELP_EXTERN_INLINE): Define to __extern_inline
instead of extern inline.
* libfshelp/extern-inline.c: Include "rlock.h"
|
|
|
|
|
|
| |
* libfshelp/fshelp.h (fshelp_rlock_init, fshelp_rlock_po_init,
fshelp_rlock_po_fini): Define when FSHELP_DEFINE_EXTERN_INLINE is
defined, not DISKFS_DEFINE_EXTERN_INLINE.
|
|
|
|
| |
Message-Id: <20200728100837.224336-1-damien@zamaudio.com>
|
|
|
|
| |
Message-Id: <20200728100837.224336-2-damien@zamaudio.com>
|
|
|
|
|
|
|
| |
When we will have a rump translator before the root filesystem translator,
we will want to give to the former a control port on the latter.
Message-Id: <20200726073721.202405-1-damien@zamaudio.com>
|
|
|
|
|
| |
* libmachdev/trivfs_server.c (machdev_is_master_device): Simplify source
code.
|
| |
|
|
|
|
| |
Message-Id: <20200725011847.186969-4-damien@zamaudio.com>
|
|
|
|
|
|
|
|
| |
Now that machdev redirects the device master port, it has to implement
the i386 permission RPCs on it.
Message-Id: <20200725011847.186969-2-damien@zamaudio.com>
Message-Id: <20200725011847.186969-3-damien@zamaudio.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
machdev users can now pass along a port to the next translator in the
bootstrap chain (bootstrap_resume_task), that they'll get from their
command line set by the bootloader. machdev will then call task_resume
on it as appropriate. It will also have the opportunity to get
fsys_getpriv calls, and thus redirect the device master port, thus
having the opportunity to expose its devices on the device master port,
as if they were handled by the kernel.
Message-Id: <20200725011847.186969-1-damien@zamaudio.com>
|
|
|
|
|
| |
libmachuser provides what we need
Message-Id: <20200724132039.110421-1-damien@zamaudio.com>
|
|
|
|
|
|
|
| |
* boot/boot.c (ds_device_intr_register, ds_device_intr_ack): New stubs.
* devnode/devnode.c (ds_device_intr_register, ds_device_intr_ack): New stubs.
* eth-multiplexer/device_impl.c (ds_device_intr_register,
ds_device_intr_ack): New stubs.
|
|
|
|
| |
Otherwise we would crash after an unsuccessful device_open call.
|
|
|
|
| |
There is no need to store the error only to return it.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
As asserted in connq_destroy, for each entry in the queue we are supposed to
keep a reference to the socket that contains the queue. So we need to
keep it when connecting and release it when accepting.
* pflocal/socket.c (S_socket_connect): Do not deref the peer socket when
sock_connect succeeded.
(S_socket_accept): Deref the socket when the accept succeeded.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We can store the requested value, to be applied when we connect the
sockets.
* pflocal/sock.h (struct sock): Add req_write_limit field.
* pflocal/sock.c (sock_create): Initialize req_write_limit field to 0.
(sock_connect): Bump the write_limit of the write pipe to the
req_write_limit value.
(sock_shutdown): Update req_write_limit from the write_limit of the
write pipe.
* pflocal/socket.c (S_socket_getopt, S_socket_setopt): When write_pipe
is NULL, use req_write_limit.
|
|
|
|
|
|
|
|
| |
EPIPE would raise SIGPIPE, which applications do not expect to happen on
a mere get/setsockopt.
* pflocal/socket.c (S_socket_getopt, S_socket_setopt): Return ENOTCONN
instead of EPIPE.
|
|
|
|
|
| |
* pflocal/socket.c (S_socket_setopt): Make SO_SNDBUF use write_pipe
instead of read_pipe.
|
|
|
|
|
|
|
|
|
|
| |
Thanks Svante Signell for the initial patch.
* libpipe/pipe.c (pipe_recv): Move writer wake code to...
(_pipe_wake_writers): ... new function.
* libpipe/pipe.h (_pipe_wake_writers): New prototype.
* pflocal/sock.h (PFLOCAL_WRITE_LIMIT_MAX): New macro.
* pflocal/socket.c (S_socket_setopt): Handle SO_RCVBUF and SO_SNDBUF cases.
|
|
|
|
|
| |
* pflocal/socket.c (S_socket_getopt): Read `user->sock' after checking
`user'.
|
|
|
|
| |
* S_socket_getopt: Handle SO_RCVBUF and SO_SNDBUF cases.
|
|
|
|
| |
TLS, sigaltstack, gdb core
|
|
|
|
|
|
|
|
|
|
| |
To make sure that threads have really woken up.
Spotted by Richard Braun.
* libfshelp/rlock-drop-peropen.c (fshelp_rlock_drop_peropen): Call
pthread_cond_destroy before freeing the condition variable.
* libfshelp/rlock-tweak.c (fshelp_rlock_tweak): Likewise.
|
|
|
|
|
| |
fshelp_rlock_drop_peropen actually needs the node to be locked for
proper waiting atomicity.
|
|
|
|
|
|
|
|
| |
diskfs_make_peropen does not need node to be locked. Worse, it could try to
lock it.
* libdiskfs/file-reparent.c (diskfs_S_file_reparent): Do not lock node
around diskfs_make_peropen.
|
|
|
|
|
|
|
|
| |
* libdiskfs/io-pathconf.c (diskfs_S_io_pathconf): For
_PC_REC_MAX_XFER_SIZE, _PC_REC_INCR_XFER_SIZE, _PC_SYMLINK_MAX, return
undefined. For _PC_2_SYMLINKS, return 1. For _PC_REC_MIN_XFER_SIZE,
_PC_REC_XFER_ALIGN, _PC_ALLOC_SIZE_MIN, return page size.
* libnetfs/io-pathconf.c (netfs_S_io_pathconf): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
See
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3980bd3b406addb327d858aebd19e229ea340b9a
This supports setting (and reading) of passive trasnlators from
GNU/Linux, e.g.
dd if=/dev/zero of=file bs=1k count=1000
losetup /dev/loop0 file
mke2fs -t ext2 -o hurd -O ext_attr /dev/loop0
mount -t ext2 -o x-xattr-translator-records /dev/loop0 /mnt
mkdir -p /mnt/servers/socket
touch /mnt/servers/socket/1
setfattr --name=gnu.translator --value='"/hurd/pflocal\0"' /mnt/servers/socket/1
getfattr --name=gnu.translator /mnt/servers/socket/1
# file: 1
gnu.translator="/hurd/pflocal"
* ext2fs/xattr.c (xattr_prefixes): For "gnu.*", use index for
the Hurd (10).
|
|
|
|
|
| |
* pci-arbiter/TODO: Remove --pci and memset+snprintf TODO items which
are already done.
|
|
|
|
|
|
|
| |
* pci-arbiter/pcifs.c:
* create_dir_entry: Add memset()
* create_fs_tree: Remove memset()
Message-Id: <20200502172713.18654-2-jlledom@mailfence.com>
|
|
|
|
| |
* config.make.in (HAVE_LIBRUMP): Define.
|
| |
|
| |
|
|
|
|
|
| |
* rumpdisk/block-rump.c (device_open): Reduce the dev_name buffer size
by one (unused) byte.
|
|
|
|
|
|
|
| |
To match snprintf parameter order.
* rumpdisk/block-rump.c (translate_name): Make `name' parameter last.
(device_open): Fix translate_name call accordingly.
|
|
|
|
| |
* configure.ac: Combine tests for rump/rump.h and librump.
|
| |
|
|
|
|
|
|
|
|
|
| |
A misuse of strtol() caused wrong parameters to be interpreted as '0'
* pci-arbiter/options.c:
* New function parse_number() to handle wrong input
* Call parse_number() from all places where strtol was being called
Message-Id: <20200411113654.6360-2-jlledom@mailfence.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which will be the default in gcc-10.
* acpi/acpifs.h (fs, acpifs_maptime): Add extern qualifier.
* boot/private.h (verbose): Likewise.
* eth-multiplexer/netfs_impl.h (multiplexer_maptime): Likewise.
* eth-multiplexer/vdev.h (port_bucket, vdev_portclass): Likewise.
* exec/priv.h (port_bucket, execboot_portclass): Likewise.
* ext2fs/ext2fs.h (sblock, sblock_dirty, block_size, log2_block_size,
log2_dev_blocks_per_fs_block, log2_stat_blocks_per_fs_block,
zeroblock, frag_size, frags_per_block, inodes_per_block,
itb_per_group, db_per_group, desc_per_block, addr_per_block,
groups_count, node_to_page_lock, generation_lock, next_generation,
group_desc_image, global_pokel, modified_global_blocks,
use_xattr_translator_records): Likewise.
* hostmux/hostmux.h (hostmux_maptime): Likewise.
* isofs/isofs.h (host_name, mounted_on, disk_image, disk_image_len,
logical_block_size, sblock): Likewise.
* libdiskfs/diskfs.h (diskfs_shortcut_symlink, diskfs_shortcut_chrdev,
diskfs_shortcut_blkdev, diskfs_shortcut_fifo, diskfs_shortcut_ifsock,
diskfs_create_symlink_hook, diskfs_read_symlink_hook): Likewise.
* libnetfs/callbacks.h (_netfs_translator_callback1,
_netfs_translator_callback2): Likewise.
* libnetfs/priv.h (netfs_mtime): Likewise.
* libpager/priv.h (_pager_class): Likewise.
* libtrivfs/trivfs.h (trivfs_check_access_hook, trivfs_check_open_hook,
trivfs_open_hook, trivfs_protid_create_hook, trivfs_peropen_create_hook,
trivfs_protid_destroy_hook, trivfs_peropen_destroy_hook,
trivfs_getroot_hook): Likewise.
* lwip/lwip-hurd.h (lwip_bucket, socketport_class, addrport_class,
shutdown_notify_class, lwip_protid_portclasses, lwip_cntl_portclasses,
lwip_bootstrap_portclass, fsys_identity, lwipcntl, lwip_owner,
lwip_group): Likewise.
* lwip/port/include/netif/hurdtunif.h (tunnel_cntlclass, tunnel_class):
Likewise.
* nfs/nfs.h (main_udp_socket, hostname, mapped_time): Likewise.
* nfsd/nfsd.h (mapped_time, authserver): Likewise.
* pci-arbiter/pcifs.h (fs, pcifs_maptime): Likewise.
* pci-arbiter/startup.h (pci_shutdown_notify_class,
arrange_shutdown_notification): Likewise.
* pfinet/pfinet.h (pfinet_bucket, addrport_class, socketport_class,
fsys_identity, pfinetctl, pfinet_owner, pfinet_group): Likewise.
* pflocal/sserver.h (sock_port_bucket): Likewise.
* proc/proc.h (authserver, self_proc, init_proc, startup_proc, proc_bucket,
proc_class, generic_port_class, exc_class, generic_port, kernel_proc,
global_lock): Likewise.
* term/term.h (termstate, termflags, global_lock, carrier_alert,
select_alert, pty_select_alert, term_bucket, tty_cntl_class,
tty_class, cttyid_class, pty_class, pty_cntl_class, termctl, ptyctl,
inputq, rawq, outputq, remote_input_mode, external_processing,
term_owner, term_group, term_mode, bottom): Likewise.
* usermux/usermux.h (usermux_maptime): Likewise.
* utils/msgids.h (msgid_argp): Likewise.
* libdiskfs/priv.h (_diskfs_mtime): Remove definition.
* lwip/options.h (lwip_argp): Add prototype.
* mach-defpager/priv.h (partitions): Name structure.
(all_partitions): Add extern qualifier.
* acpi/main.c (acpifs_maptime, fs): New variables.
* exec/main.c (port_bucket, execboot_portclass): Likewise.
* ext2fs/ext2fs.c (sblock, sblock_dirty, block_size, log2_block_size,
log2_dev_blocks_per_fs_block, log2_stat_blocks_per_fs_block,
frag_size, frags_per_block, inodes_per_block, itb_per_group,
db_per_group, desc_per_block, addr_per_block, groups_count,
next_generation, group_desc_image, global_pokel,
use_xattr_translator_records): Likewise.
* isofs/main.c (host_name, mounted_on, logical_block_size, sblock):
Likewise.
* libpager/pager-create.c (_pager_class): Likewise.
* lwip/port/netif/hurdtunif.c (tunnel_cntlclass, tunnel_class):
Likewise.
* mach-defpager/default_pager.c (all_partitions): Likewise.
* nfs/main.c (main_udp_socket, hostname, mapped_time): Likewise.
* nfsd/main.c (mapped_time, authserver): Likewise.
* pci-arbiter/main.c (fs, pcifs_maptime): Likewise.
* pci-arbiter/startup.c (*pci_shutdown_notify_class): Likewise.
* pfinet/main.c (pfinetctl, pfinet_owner, pfinet_group, pfinet_bucket,
addrport_class, socketport_class, fsys_identity): Likewise.
* proc/main.c (authserver, self_proc, init_proc, startup_proc,
proc_bucket, proc_class, generic_port_class, exc_class, generic_port,
kernel_proc, global_lock): Likewise.
* term/main.c (termstate, termflags, global_lock, carrier_alert,
select_alert, pty_select_alert, term_bucket, tty_cntl_class,
tty_class, cttyid_class, pty_class, pty_cntl_class, termctl, ptyctl,
outputq, remote_input_mode, external_processing, term_owner,
term_group, term_mode, bottom): Likewise.
* usermux/usermux.c (usermux_mapped_time): Rename to usermux_maptime.
* lwip/main.c: Include "options.h".
(lwip_argp, netif_list): Remove declarations.
(lwip_bucket, socketport_class, addrport_class, shutdown_notify_class,
lwip_cntl_portclasses, lwip_bootstrap_portclass, lwip_owner, lwip_group,
fsys_identity, lwipcntl): New variables.
* eth-multiplexer/multiplexer.c (multiplexer_maptime): Add variable.
* hostmux/hostmux.c (hostmux_mapped_time): Rename variable to hostmux_maptime
* libdiskfs/extra-version.c: Rename file to...
* libdiskfs/priv.c: ... new file.
(diskfs_shortcut_symlink, diskfs_shortcut_chrdev,
diskfs_shortcut_blkdev, diskfs_shortcut_fifo, diskfs_shortcut_ifsock,
diskfs_create_symlink_hook, diskfs_read_symlink_hook): Add weak
variables.
* libdiskfs/Makefile (OTHERSRCS): Replace extra-version.c with priv.c.
* libtrivfs/priv.c: New file.
* libtrivfs/Makefile (OTHERSRCS): Add priv.c
* libcons/extra-version.c: Rename file to...
* libcons/priv.c: ... new file.
* libcons/Makefile (SRCS): Replace extra-version.c with priv.c.
Fix build with #
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libmachdev/machdev-dev_hdr.h (DEVICE_NULL): Remove macro.
(emul_device): Rename structure to machdev_emul_device.
(emul_device_t): Rename type to machdev_emul_device_t.
(mach_device, mach_device_t, MACH_DEVICE_NULL): Move to...
* libmachdev/mach_device.h: ... new file.
* libmachdev/ds_routines.c: Include "mach_device.h".
* libmachdev/machdev-device_emul.h: Include <mach/notify.h>,
<device/device_types.h>, <device/net_status.h>, <errno.h>
* libmachdev/machdev.h: Include "machdev_hdr.h".
* libmachdev/mig-decls.h: Include "mach_device.h".
* libmachdev/Makefile (LCLHDRS): Add mach_device.h.
(installhdrs): Add machdev-dev_hdr.h.
|
|
|
|
| |
* doc/hurd.texi (eth-multiplexer): Add section.
|
|
|
|
| |
* libmachdev: New directory.
|
|
|
|
|
| |
* libstore/device.c (dopen): Do not use strdup() for `rest'. Free
`master'.
|
|
|
|
| |
@master:/dev/device
|