Added some debug statements and removed a call to sg_page() that is unnecessary (and even system-breaking) since there is no scatter-gather IO going on here
Added some more debugging statements, and added a clause that detects zero-length scatter-gather entries and avoids trying to get their page address
Added a debug statement for the target node
Confirmed that the problem is in the driver and not linux using the simple memory model in this configuration