02:28:12 hello, is it possible to use oxide’s crucible storage from a local zone? eg: use crucible from OS based VM in smartos? 04:19:26 tozhu: It would be in principle, but you'd need to write some more software; in particular, you would need an illumos block device driver that was able to speak to Crucible 04:20:08 The way we use it at Oxide, the hypervisor, Propolis, speaks directly to Crucible as the backend storage of the emulated (NVMe, vioblk, etc) disk 04:22:25 fancy 04:23:47 It probably wouldn't even be that complicated, to be honest; you could get started with a usermode daemon that did the Crucible bits, and just a relatively simple "bent pipe" in the kernel. Like FUSE but for block devices. The block device surface area is not that complex, especially with blkdev 04:23:57 jclulow: Thanks for the response, 04:24:02 You are most welcome! 04:26:09 so, all of the crucible is running in user space? 04:34:38 is it possible to implement the connection base on RoCE/RDMA between crucible server and vm/crucible client? 05:36:30 tozhu: Yes, crucible is all user mode software so far. 05:36:42 And, if RoCE/RDMA supports TCP/IP on top, then sure! 05:36:53 We use ethernet though, obviously. 05:56:49 TCP/IP had some issue on the stream control, it only use about 60% of the bandwidt 15:48:02 guys, I still fail to find my nvidia driver issues (NVRM: GPU 0000:01:00.0: Failed to copy vbios to system memory.), the question is would I get wiser if I turn on kmem flags and use kmdb voodoo? or will it be useless because without driver source we can't seen anything useful? 17:08:24 Does illumos have anything like linux futex? 17:16:28 In the sense of the direct system call? 17:48:05 Yes, as system call, but could be in a different way (I don' t even know if futex can be implemented without support of a system call) 17:50:20 My experience is more with BSDs, Darwin and Linux, and most of them have a somewhat recent system call that is futex-like and used to create fast user space synchronization primitives 18:01:31 [illumos-gate] 16615 ena assertion failure in ena_tx_intr_work() -- Andy Fiddaman 18:02:12 I don't think of us as having something quite like that today. libc and the kernel are working together though. 18:02:24 That is, the system call layer isn't where we promise stability. 18:07:40 So, for now, there is no system call that is futex-like and libc also don't have/expose something similar at this point in time, correct? 18:09:19 Sorry to ask for confirmation, English is not my native tongue and also I'm neurodivergent, so I often do that to make sure I understood correctly 18:10:36 That's correct. There is nothing futex-like exposed today. 18:11:22 Is there something in particular that you're working on where it would be useful? 18:16:03 I'm creating my own libc, to learn more about architecting something that is so essential to C, as well to learn more about the internals of OSes that I'm exited about. 18:17:15 Gotcha, okay. Well, if you have other questions about the mutex subsystem, feel free to reach out. 18:18:17 I'm doing that in Rust, because I like the lang and it can expose C ABI function and types, but internally I often create more Rustic abstractions for the implementation details 18:18:55 Thanks rmustacc! If you can point out where I can learn more about illumos mutex subsystem, I would love dive right in 18:19:30 I don't have specific docs for it, unfortunately. 18:27:02 Though with a caveat that I'm likely going to have to change some of the system call ABIs to deal with some upcoming posix work to let locking be based on other clocks and use non-absolute times. 18:28:23 if you want to look at the current implementation (if you haven't found it already), https://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/threads/synch.c?r=7f9dc0ee 18:42:38 Thanks rmustacc and jbk, I was close! LOL I was looking for it! 18:43:04 If any question come up in my head, I'll come back here! 18:44:52 and obviously if you have a clone of the git repo, you can use that to figure out the path to the file from the url 18:50:10 I am working on a CI system thing and I am trying to figure out: how would I ensure, with 100% certainty, that no more processes exist for a particular uid? 18:51:15 I feel like it is actually surprisingly difficult 18:51:43 you can use proc to stop a particular process, and ensure it can't fork anything more, but what if that process had already forked five children who are forking their own children and so on 18:52:43 oh, wait, sigsend(2) maybe 18:53:35 Yeah, sigsendset() holds pidlock. 18:53:42 So it guarantees a consistent view of all procs. 18:53:46 Nice 18:54:11 Well that solves that problem! 18:54:18 And I belive it guarantees that it will hold it across that time. 18:54:53 sigsendset() gives you a little more flexibility if you want it. 18:54:58 Yeah, I see that! 18:55:18 This is a very "us" interface 18:55:21 I like it 18:56:10 It's used by the tty code for doing pid/pgid. 18:58:11 I guess I'll "sigsend(P_UID, $uid, SIGKILL)" my way to ESRCH/success!