summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2020-07-28 20:08:34 +1000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-07-31 00:02:05 +0200
commit5ee0291b5d305f6742dc9fffaa1341427eab0056 (patch)
tree70ee5807c882b368d52b791581116e5a6f415e6f
parente8064d830ff61630b8896fe1e1debcc98b5c3998 (diff)
diskfs: Add RPC for fsys_init to bootstrap if present
Message-Id: <20200728100837.224336-1-damien@zamaudio.com>
-rw-r--r--libdiskfs/boot-start.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libdiskfs/boot-start.c b/libdiskfs/boot-start.c
index 29b8acc6..fa59e1b2 100644
--- a/libdiskfs/boot-start.c
+++ b/libdiskfs/boot-start.c
@@ -518,7 +518,9 @@ diskfs_S_fsys_init (struct diskfs_control *pt,
if (diskfs_exec_server_task != MACH_PORT_NULL)
{
+ mach_port_t bootstrap;
process_t execprocess;
+
err = proc_task2proc (procserver, diskfs_exec_server_task, &execprocess);
assert_perror_backtrace (err);
@@ -533,6 +535,17 @@ diskfs_S_fsys_init (struct diskfs_control *pt,
execprocess, MACH_MSG_TYPE_COPY_SEND));
mach_port_deallocate (mach_task_self (), execprocess);
+ /* Give the real bootstrap filesystem an fsys_init RPC of its own */
+ err = task_get_bootstrap_port (mach_task_self (), &bootstrap);
+ assert_perror_backtrace (err);
+ if (bootstrap != MACH_PORT_NULL)
+ {
+ err = fsys_init (bootstrap, procserver, MACH_MSG_TYPE_COPY_SEND,
+ authhandle);
+ mach_port_deallocate (mach_task_self (), bootstrap);
+ assert_perror_backtrace (err);
+ }
+
/* We don't need this anymore. */
mach_port_deallocate (mach_task_self (), diskfs_exec_server_task);
diskfs_exec_server_task = MACH_PORT_NULL;