aboutsummaryrefslogtreecommitdiff
path: root/rumpdisk
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2020-08-01 15:05:38 +1000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-08-02 23:33:36 +0200
commit49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0 (patch)
tree7d54b9ff7c9fafa3e70960d12f0a98c957a815dd /rumpdisk
parent304adff10d5bdeeb618a6633e3b80e51aa4585c6 (diff)
downloadhurd-49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0.tar.gz
hurd-49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0.tar.bz2
hurd-49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0.zip
libmachdev: Introduce startup notification for clean rumpdisk shutdown
Message-Id: <20200801050538.273196-1-damien@zamaudio.com>
Diffstat (limited to 'rumpdisk')
-rw-r--r--rumpdisk/block-rump.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/rumpdisk/block-rump.c b/rumpdisk/block-rump.c
index 474852cd..e094a199 100644
--- a/rumpdisk/block-rump.c
+++ b/rumpdisk/block-rump.c
@@ -151,6 +151,19 @@ device_dealloc (void *d)
rump_sys_reboot (0, NULL);
}
+static void
+device_shutdown (void)
+{
+ struct block_data *bd = block_head;
+
+ while (bd)
+ {
+ device_close((void *)bd);
+ bd = bd->next;
+ }
+ rump_sys_reboot (0, NULL);
+}
+
static io_return_t
device_open (mach_port_t reply_port, mach_msg_type_name_t reply_port_type,
dev_mode_t mode, char *name, device_t * devp,
@@ -360,7 +373,8 @@ static struct machdev_device_emulation_ops rump_block_emulation_ops = {
NULL,
NULL,
NULL,
- NULL
+ NULL,
+ device_shutdown
};
void