iSCSI in 7.0

Scott Long scottl at samsco.org
Thu Nov 8 00:25:21 PST 2007


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


More information about the freebsd-scsi mailing list