Date: Thu, 08 Nov 2007 01:25:00 -0700 From: Scott Long <scottl@samsco.org> To: Ivan Voras <ivoras@freebsd.org> Cc: freebsd-scsi@freebsd.org Subject: Re: iSCSI in 7.0 Message-ID: <4732C7DC.60902@samsco.org> In-Reply-To: <fgs8gr$2rh$1@ger.gmane.org> References: <47300ADE.5070506@mansionfamily.plus.com> <4730C8EC.7050002@mansionfamily.plus.com> <fgs8gr$2rh$1@ger.gmane.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ivan Voras wrote: > James Mansion wrote: > >> So I guess the question really is - are you saying that in this case >> all kernel memory is non-pageable - or that you know that for the >> IP stack and iSCSI initiator, all the memory is non-pageable? > > If you don't get a definite answer here, you might want to ask that > particular questions on hackers @ freebsd.org or architecture @ > freebsd.org to get a wider audience of people who deal with low-level > systems like the VM. > Kernel text (executable code) and kernel data (malloc, zone, and module data segment memory) are non-pageable. Kernel stacks used to be pageable, but there was discussion some time ago about removing that feature and I don't recall the outcome. The real danger to memory deadlocks is mallocing in the I/O path. Even though kernel memory isn't pageable, the VM may need to page out some userland pages to satisfy a malloc. If that page-out goes through an I/O path that also needs to do a malloc, you get a deadlock. The CAM layer is free of these deadlocks, as are most storage drivers. I don't know if the iscsi-initiator driver is or not, I haven't inspected it closely for this. Unfortunately, the GEOM block layer is not free of this deadlock, so this whole discussion is mostly academic (the GEOM problem is small and very hard to trigger since it uses the zone allocator, but problems have been observed in real-world situations, which is a shame). Scott
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4732C7DC.60902>
