|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, we used the fs protocol to traverse the translator
hierarchies. This, however, is conceptually flawed, because
translators are bound to nodes, and a node can have zero or more links
in the file system. Therefore, the previous method of returning a
list of paths to the client and expecting them to be able to follow
these to reach the child translators was always unreliable.
Fix this by using the fsys protocol to traverse the hierarchy, and
returning the control ports of all children. This is more robust, and
also conceptually cleaner, because the fsys protocol is about
translator linkage, hence this is the point to implement traversal.
Also move the get source routine over. A per-node source really
does not fit the reality of most translators, while a per-translator
source makes sense in many cases.
* hurd/fs.defs (file_get_children): Drop routine.
(file_get_source): Likewise.
* hurd/fsys.defs (fsys_get_children): New routine.
(fsys_get_source): Likewise.
* libdiskfs/Makefile (FSYSSRCS): Remove files, add files.
* libdiskfs/file-get-children.c: Remove file.
* libdiskfs/fsys-get-children.c: New file.
* libdiskfs/file-get-source.c: Remove file.
* libdiskfs/fsys-get-source.c: New file.
* libfshelp/fshelp.h (fshelp_filter): Remove type.
(fshelp_get_active_translators): Remove filter and prefix argument,
return list of control ports.
* libfshelp/translator-list.c (fshelp_get_active_translators):
Likewise.
* libnetfs/Makefile (FSSRCS): Move 'get-source.c' too OTHERSRCS.
(FSYSSRCS): Remove files, add files.
* libnetfs/file-get-children.c: Remove file.
* libnetfs/fsys-get-children.c: New file.
* libnetfs/file-get-source.c: Remove file.
* libnetfs/fsys-get-source.c: New file.
* libtrivfs/Makefile: Move 'get-source.c' too OTHERSRCS.
(FSYSSRCS): Remove files, add files.
* libtrivfs/file-get-children.c: Remove file.
* libtrivfs/fsys-get-children.c: New file.
* libtrivfs/file-get-source.c: Remove file.
* libtrivfs/fsys-get-source.c: Add file.
* trans/Makefile (mtab): Build client stubs until the libc has caught
on.
* trans/mtab.c (target_control): New variable.
(insecure): Drop variable.
(all_translators): Likewise.
(MAX_DEPTH): New macro.
(max_depth): New variable.
(options): Remove '--insecure' and '--all-translators', add '--depth'.
(parse_opt): Adapt accordingly.
(trivsfs_append_args): Likewise.
(main): Get the control port of the target translator, then drop
privileges.
(is_filesystem_translator): Remove function.
(mtab_mark_as_seen): Simplify. Just check if the control port is
known.
(mtab_populate): Limit depth of recursion, adapt to traversing over
the control ports, simplify.
(open_hook): Remove scary comment, it is not applicable anymore
because we no longer dir_lookup child translators.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This enables the compiler to check that the server function
declarations match MIGs expectations. Fix a few oddities along the
way.
* console-client/trans.c: Include MIG-generated server header file(s).
* console/console.c: Likewise. Also, fix declarations.
* console/mutations.h (TIOCTL_IMPORTS): Just use libnetfs/priv.h.
* console/priv.h: Delete now unused file.
* ext2fs/storeinfo.c: Include MIG-generated server header file(s).
* fatfs/inode.c: Likewise.
* fatfs/main.c: Likewise. Also, fix declaration.
* isofs/inode.c: Likewise.
* libdiskfs/boot-start.c: Likewise.
* libdiskfs/file-chg.c: Include the correct MIG-generated server header file.
* libdiskfs/file-chmod.c: Include MIG-generated server header file(s).
* libdiskfs/file-get-fs-opts.c: Likewise.
* libdiskfs/init-startup.c: Likewise.
* libnetfs/file-get-children.c: Likewise.
* libnetfs/file-getcontrol.c: Include the correct MIG-generated server
header file.
* libnetfs/file-set-translator.c: Include MIG-generated server header file(s).
* libnetfs/fsstubs.c: Likewise.
* libtrivfs/file-access.c: Likewise.
* libtrivfs/file-chauthor.c: Likewise.
* libtrivfs/file-chflags.c: Likewise.
* libtrivfs/file-chg.c: Likewise.
* libtrivfs/file-chmod.c: Likewise.
* libtrivfs/file-chown.c: Likewise.
* libtrivfs/file-exec.c: Likewise.
* libtrivfs/file-get-children.c: Likewise.
* libtrivfs/file-get-fs-options.c: Likewise.
* libtrivfs/file-get-source.c: Likewise.
* libtrivfs/file-get-storage-info.c: Likewise.
* libtrivfs/file-get-trans.c: Likewise.
* libtrivfs/file-get-transcntl.c: Likewise.
* libtrivfs/file-getcontrol.c: Likewise.
* libtrivfs/file-getfh.c: Likewise.
* libtrivfs/file-getlinknode.c: Likewise.
* libtrivfs/file-lock.c: Likewise.
* libtrivfs/file-reparent.c: Likewise.
* libtrivfs/file-set-size.c: Likewise.
* libtrivfs/file-set-trans.c: Likewise.
* libtrivfs/file-statfs.c: Likewise.
* libtrivfs/file-sync.c: Likewise.
* libtrivfs/file-syncfs.c: Likewise.
* libtrivfs/file-utimes.c: Likewise.
* libtrivfs/fsys-forward.c: Likewise.
* libtrivfs/fsys-get-options.c: Likewise.
* libtrivfs/fsys-getroot.c: Likewise.
* libtrivfs/fsys-goaway.c: Likewise.
* libtrivfs/fsys-set-options.c: Likewise.
* libtrivfs/fsys-stubs.c: Likewise.
* libtrivfs/fsys-syncfs.c: Likewise.
* libtrivfs/io-async-icky.c: Likewise.
* libtrivfs/io-async.c: Likewise.
* libtrivfs/io-duplicate.c: Likewise.
* libtrivfs/io-identity.c: Likewise.
* libtrivfs/io-map.c: Likewise.
* libtrivfs/io-modes-get.c: Likewise.
* libtrivfs/io-modes-off.c: Likewise.
* libtrivfs/io-modes-on.c: Likewise.
* libtrivfs/io-modes-set.c: Likewise.
* libtrivfs/io-owner-get.c: Likewise.
* libtrivfs/io-owner-mod.c: Likewise.
* libtrivfs/io-pathconf.c: Likewise.
* libtrivfs/io-read.c: Likewise.
* libtrivfs/io-readable.c: Likewise.
* libtrivfs/io-reauthenticate.c: Likewise.
* libtrivfs/io-restrict-auth.c: Likewise.
* libtrivfs/io-revoke.c: Likewise.
* libtrivfs/io-seek.c: Likewise.
* libtrivfs/io-select.c: Likewise.
* libtrivfs/io-stat.c: Likewise.
* libtrivfs/io-stubs.c: Likewise.
* libtrivfs/io-version.c: Likewise.
* libtrivfs/io-write.c: Likewise.
* pfinet/tunnel.c: Likewise.
* storeio/io.c: Likewise.
* storeio/storeio.c: Likewise.
* term/users.c: Likewise.
* tmpfs/node.c: Likewise.
* trans/fakeroot.c: Likewise. Also, include all server headers that provide
the X_server_routine functions...
(netfs_demuxer): ... that were previously declared here.
* trans/fifo.c: Include MIG-generated server header file(s).
* trans/firmlink.c: Likewise.
* trans/hello-mt.c: Likewise.
* trans/hello.c: Likewise.
* trans/magic.c: Likewise.
* trans/mtab.c: Likewise.
* trans/new-fifo.c: Likewise.
* trans/null.c: Likewise.
* trans/proxy-defpager.c: Likewise.
* trans/streamio.c: Likewise.
* libdiskfs/fsmutations.h: Qualify the import with the libraries path.
Without this change, out-of-tree builds would no longer work.
* libnetfs/mutations.h: Likewise.
* libtrivfs/mig-mutate.h: Likewise.
|