summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-07-25libmachdev: Implement S_i386_io_perm_createDamien Zammit
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>
2020-07-25libmachdev: Add resume for bootstrap serverDamien Zammit
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>
2020-07-24libmachdev: Remove deviceUser, this lib is a deviceServerDamien Zammit
libmachuser provides what we need Message-Id: <20200724132039.110421-1-damien@zamaudio.com>
2020-07-18Add new RPC server stubs for device_intr_*Samuel Thibault
* 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.
2020-07-18rumpdisk: link the bd on success onlyDamien Zammit
Otherwise we would crash after an unsuccessful device_open call.
2020-07-18rumpdisk: Simplify codeDamien Zammit
There is no need to store the error only to return it.
2020-07-18libmachdev: Add new RPC server stubs for ds_device_intr_*Damien Zammit
2020-07-05pflocal: Fix referencing connection queue entries.Samuel Thibault
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.
2020-07-05pflocal: support SO_SNDBUF for unconnected socketsSamuel Thibault
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.
2020-07-05pflocal: return ENOTCONN on get/setpot(SO_SNDBUF) on unconnected socketSamuel Thibault
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.
2020-06-27pflocal: Fix setsockopt(SO_SNDBUF)Samuel Thibault
* pflocal/socket.c (S_socket_setopt): Make SO_SNDBUF use write_pipe instead of read_pipe.
2020-06-27pflocal: Add support for setsockopt(SO_{RECV,SND}BUF)Samuel Thibault
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.
2020-06-27pflocal: Fix crash on passing erroneous portSamuel Thibault
* pflocal/socket.c (S_socket_getopt): Read `user->sock' after checking `user'.
2020-06-27pflocal: Add support for getsockopt(SO_{RECV,SND}BUF)Svante Signell
* S_socket_getopt: Handle SO_RCVBUF and SO_SNDBUF cases.
2020-06-06TODO: drop items that were doneSamuel Thibault
TLS, sigaltstack, gdb core
2020-06-01libfshelp: destroy condition variable before freeing itSamuel Thibault
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.
2020-06-01libdiskfs: Add missing node lock around fshelp_rlock_drop_peropen callSamuel Thibault
fshelp_rlock_drop_peropen actually needs the node to be locked for proper waiting atomicity.
2020-06-01libdiskfs: Drop spurious mutex acquisitionSamuel Thibault
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.
2020-05-28libdiskfs,libnetfs: add missing io_pathconf casesSamuel Thibault
* 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.
2020-05-14ext2fs: Update to upstream Hurd-reserved xattr index for "gnu.*".Jan (janneke) Nieuwenhuizen
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).
2020-05-02pci-arbiter: Remove obsolete TODO itemsJoan Lledó
* pci-arbiter/TODO: Remove --pci and memset+snprintf TODO items which are already done.
2020-05-02Memset directory entries to zero during their creationJoan Lledó
* pci-arbiter/pcifs.c: * create_dir_entry: Add memset() * create_fs_tree: Remove memset() Message-Id: <20200502172713.18654-2-jlledom@mailfence.com>
2020-04-16Really enable building rumpdiskSamuel Thibault
* config.make.in (HAVE_LIBRUMP): Define.
2020-04-12pci-arbiter: Remove done TODO itemDamien Zammit
2020-04-12pci-ops.c: Use compatible pointersDamien Zammit
2020-04-11Rumpdisk: fix buffer sizeSamuel Thibault
* rumpdisk/block-rump.c (device_open): Reduce the dev_name buffer size by one (unused) byte.
2020-04-11rumpdisk: Use more canonical parameter orderSamuel Thibault
To match snprintf parameter order. * rumpdisk/block-rump.c (translate_name): Make `name' parameter last. (device_open): Fix translate_name call accordingly.
2020-04-11rump: do not build if rump/rump.h can't be foundSamuel Thibault
* configure.ac: Combine tests for rump/rump.h and librump.
2020-04-11rumpdisk: Add userspace disk support via librumpDamien Zammit
2020-04-11pci-arbiter: Fix bug on option parsing.Joan Lledó
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>
2020-03-31Fix build with -fno-commonSamuel Thibault
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 #
2020-03-30machdev: Expose machdev_emul_device structureSamuel Thibault
* 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.
2020-03-30Add eth-multiplexer documentationZheng Da
* doc/hurd.texi (eth-multiplexer): Add section.
2020-03-29libmachdev: Add common machdevZheng Da
* libmachdev: New directory.
2020-03-29libstore: Fix memory leakSamuel Thibault
* libstore/device.c (dopen): Do not use strdup() for `rest'. Free `master'.
2020-03-29libstore: Add ability to pass custom master device with format ↵Damien Zammit
@master:/dev/device
2020-03-29pci-arbiter: Fix short reads from libpciaccessDamien Zammit
* pci-arbiter/pci-ops.c (S_pci_conf_read): Record and pass amount actually read from config memory. (S_pci_conf_write): Likewise for write.
2020-03-22build: Fix cross build on Guix.Jan Nieuwenhuizen
As discussed in https://lists.gnu.org/archive/html/bug-hurd/2020-03/msg00018.html. * Makeconf (lpath): Add -Wl,-rpath-link=<dir> next to -L<dir>.
2020-02-23pci-arbiter: Add --device command line optionJoan Lledó
Shortcut for -d, -b, -s and -f Usage: --device [<domain>:]<bus>:<slot>.<func> E.G. --device 00:05.0 is shortcut for -d 0 -b 0 -s 5 -f 0 * pci-arbiter/options.c: Implement --slot option * pci-arbiter/options.h: Add --slot to options list
2020-02-23pci-arbiter: Rename command line optionsJoan Lledó
Rename some CLI options in order to add the new -D --device arg. Replace -s by -c for subclasses. Replace -D by -d for domains. Domains are optional from now on, default to 0. Replace -d by -s for devices. The formerly called "devices" are now called "slots", and "device" will refer to a combination of Domain + Bus + Slot + Function Only -G and -U options create new permission scopes. * pci-arbiter/options.c: parse_opts(): Rename options * pci-arbiter/options.h: struct argp_option options[]: Likewise
2020-01-05pfinet: Fix buildSamuel Thibault
* pfinet/socket.c: Define _HACK_ERRNO_H to get a proper errno definition.
2020-01-05pfinet: Fix buildSamuel Thibault
errno is also used by glue headers, so we can not actually check it * pfinet/io-ops.c (S_io_reauthenticate): Do not check that it's EINTR that make_sock_user failed with.
2020-01-05lwip,pfinet: Make S_io_reauthenticate return errorSamuel Thibault
* lwip/io-ops.c (lwip_S_io_reauthenticate): Return errno on make_sock_user returning an error. * pfinet/io-ops.c (S_io_reauthenticate): Likewise.
2020-01-05lwip,pfinet: Fix crash on make_sock_user getting EINTRSamuel Thibault
_ports_create_port_internal may return EINTR. * lwip/port-objs.c (make_sock_user): Set errno when ports_create_port returns an error. * pfinet/socket.c (make_sock_user): Likewise. * lwip/io-ops.c (lwip_S_io_reauthenticate): Loop while make_sock_user errors with EINTR. * pfinet/io-ops.c (S_io_reauthenticate): Likewise.
2020-01-01libfshelp-tests: Fix cross-linkSamuel Thibault
* libfshelp-tests/Makefile (HURDLIBS): Add ihash and shouldbeinlibc. (race locks): Add ../libihash/libihash.a.
2020-01-01password: Drop unused -lcryptSamuel Thibault
* trans/Makefile (password-LDLIBS): Remove -lcrypt
2019-12-28libfshelp: Fix errno value leakv0.9.git20191228Samuel Thibault
When the last translator box contains a port to a died translator, we do not want to consider this as a whole failure. * libfshelp/translator-list.c (fshelp_get_active_translators): On mach_port_mod_refs failure, reset err to 0.
2019-12-22remap translator: remap prefixes instead of complete file namesJoan Lledó
* trans/remap.c: * trivfs_S_dir_lookup(): * Match and replace prefixes instead of complete file names. This is needed to remap entire file systems, not only trivial ones. Message-Id: <20191220185911.6448-2-jlledom@mailfence.com>
2019-11-24pci-arbiter: Fix memory bugsJoan Lledó
* pci-arbiter/pcifs.c: * init_file_system: Remove unnecessary free() * create_fs_tree: Fix a boundary overrun where no devices are found. Message-Id: <20191124194721.4982-2-jlledom@mailfence.com>
2019-11-24ext2fs: Fix fast symlinks created by linuxDamien Zammit
linux seems to allocate 8 blocks for any fast symlink. * ext2fs/inode.c (write_symlink): Do not assert that st_blocks is 0. (read_symlink): Return EINVAL when node->dn_stat.st_size >= MAX_INODE_SYMLINK, not when node->dn_stat.st_blocks != 0.