On Sat, 14 Jan 2017, Patrick Welche wrote:
On Sat, Jan 14, 2017 at 05:32:36PM +0800, Paul Goyette wrote:
Yeah, it seems that the rump initialization code is calling routine
drvctl_init() in order to determine the c-major for the /dev/drvctl node.
The right thing to do here is to temporarily attach the cdevsw structure,
retrieve the c-major, and then detach the cdevsw. Later, normal module
initialization code will handle the full-blown attach of the drvctl device
module.
Interestingly, it seems that this code is broken in other ways, too! In
particular, even though it retrieves the c-major for /dev/drvctl, it never
actually creates the device node! So I have to wonder if you can even use
drvctl within rump at this time!
Anyway, try the attached patch. It should avoid the duplicate attempts at
calling drvctl_init(), and it should also enable /dev/drvctl within the rump
environment. Let me know if it helps.
Indeed - no more panics! (I also added a #include <rump-sys/vfs.h> )
Great! I will go ahead and fix it. Thanks for confirming.C
+------------------+--------------------------+------------------------+
| Paul Goyette | PGP Key fingerprint: | E-mail addresses: |
| (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com |
| Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd.org |
+------------------+--------------------------+------------------------+