HEllo, Michael Kelly, le sam. 16 août 2025 20:29:57 +0100, a ecrit: > The reason that page lists are not used is that the rump disk port is not > configured as an IKOT_DEVICE. The equivalent non-rumpdisk device port is set > using: > > (gnumach/linux/dev/glue/block.c) > > ipc_kobject_set (bd->port, (ipc_kobject_t) &bd->device, IKOT_DEVICE); > > I cannot see a simple method of achieving the same in rumpdisk
We can add one :) I'm however thinking that we should probably not conflate IKOT_DEVICE with a user-level one, because IKOT_DEVICE may be used for more than what we think, see e.g. dev_port_lookup, ipc_kobject_notify. But we can add another IKOT_USER_DEVICE, and add it to ipc_kobject_vm_page_list, and add a mach call (restricted to privileged tasks) to set this type. > but to test a > similar effect I 'hacked' ipc_kmsg_copyin_body() to use page lists for many > of the messages intended for the rumpdisk task to pseudo-test the > alteration: > > if (kmsg->ikm_header.msgh_id >= 2800 && > kmsg->ikm_header.msgh_id < 2900) > use_page_lists = TRUE; > > This results in many successful iterations of my stress test case whereas > normally it locks very swiftly. Great :) > Is there a mechanism that can be used outside of the kernel to configure the > rumpdisk ports as IKOT_DEVICE ports so that it can be tested properly? Not that I know of. Samuel

