Module Name: src Committed By: pooka Date: Mon Nov 17 14:30:31 UTC 2014
Modified Files: src/sys/rump/librump/rumpvfs: rump_vfs.c rump_vfs_private.h rumpblk.c Log Message: Release all hypervisor-level resources for rump_etfs paths when the rump kernel is halted. Allows a Xen domU to not complain after it was shut down, or something like that. Requested by Martin Lucina. To generate a diff of this commit: cvs rdiff -u -r1.80 -r1.81 src/sys/rump/librump/rumpvfs/rump_vfs.c cvs rdiff -u -r1.17 -r1.18 src/sys/rump/librump/rumpvfs/rump_vfs_private.h cvs rdiff -u -r1.57 -r1.58 src/sys/rump/librump/rumpvfs/rumpblk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/rump/librump/rumpvfs/rump_vfs.c diff -u src/sys/rump/librump/rumpvfs/rump_vfs.c:1.80 src/sys/rump/librump/rumpvfs/rump_vfs.c:1.81 --- src/sys/rump/librump/rumpvfs/rump_vfs.c:1.80 Fri May 23 10:56:36 2014 +++ src/sys/rump/librump/rumpvfs/rump_vfs.c Mon Nov 17 14:30:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_vfs.c,v 1.80 2014/05/23 10:56:36 pooka Exp $ */ +/* $NetBSD: rump_vfs.c,v 1.81 2014/11/17 14:30:31 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rump_vfs.c,v 1.80 2014/05/23 10:56:36 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rump_vfs.c,v 1.81 2014/11/17 14:30:31 pooka Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -79,6 +79,7 @@ fini(void) { vfs_shutdown(); + rumpblk_fini(); } static void Index: src/sys/rump/librump/rumpvfs/rump_vfs_private.h diff -u src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.17 src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.18 --- src/sys/rump/librump/rumpvfs/rump_vfs_private.h:1.17 Thu Mar 7 22:12:34 2013 +++ src/sys/rump/librump/rumpvfs/rump_vfs_private.h Mon Nov 17 14:30:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rump_vfs_private.h,v 1.17 2013/03/07 22:12:34 pooka Exp $ */ +/* $NetBSD: rump_vfs_private.h,v 1.18 2014/11/17 14:30:31 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -40,6 +40,7 @@ int rump_devnull_init(void); int rumpblk_register(const char *, devminor_t *, uint64_t, uint64_t); int rumpblk_deregister(const char *); int rumpblk_init(void); +void rumpblk_fini(void); void rump_biodone(void *, size_t, int); Index: src/sys/rump/librump/rumpvfs/rumpblk.c diff -u src/sys/rump/librump/rumpvfs/rumpblk.c:1.57 src/sys/rump/librump/rumpvfs/rumpblk.c:1.58 --- src/sys/rump/librump/rumpvfs/rumpblk.c:1.57 Fri Jul 25 08:10:40 2014 +++ src/sys/rump/librump/rumpvfs/rumpblk.c Mon Nov 17 14:30:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpblk.c,v 1.57 2014/07/25 08:10:40 dholland Exp $ */ +/* $NetBSD: rumpblk.c,v 1.58 2014/11/17 14:30:31 pooka Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rumpblk.c,v 1.57 2014/07/25 08:10:40 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rumpblk.c,v 1.58 2014/11/17 14:30:31 pooka Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -341,6 +341,25 @@ rumpblk_deregister(const char *path) return 0; } +/* + * Release all backend resources, to be called only when the rump + * kernel is being shut down. + * This routine does not do a full "fini" since we're going down anyway. + */ +void +rumpblk_fini(void) +{ + int i; + + for (i = 0; i < RUMPBLK_SIZE; i++) { + struct rblkdev *rblk; + + rblk = &minors[i]; + if (rblk->rblk_fd != -1) + backend_close(rblk); + } +} + static int backend_open(struct rblkdev *rblk, const char *path) {