From 49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Sat, 1 Aug 2020 15:05:38 +1000 Subject: libmachdev: Introduce startup notification for clean rumpdisk shutdown Message-Id: <20200801050538.273196-1-damien@zamaudio.com> --- rumpdisk/block-rump.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'rumpdisk') 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 -- cgit v1.2.3