The attached patch, from Tomo, takes a older version of the open-iscsi initiator code and modifies it so that a software target that hooks into tgt could reuse the data patch and transport class code. After talking with several people at OLS, we realized that many people do not agree as to where to implement a software iscsi target. There is the do it completely in userspace camp. This can be done and with net channels, network kevents or net splice on the horizon this option is appealing. The other option is to do it completely in the kernel. This has already been rejected with the IET submission and scst discussion and the tgt framework already pushes most of that code to userspace so there is no point in pursing this right now. And the last option would be something that hooks into iscsi layer in mainline and tgt. This is what the attached patch implements. It has the benefit that we can use the iscsi layer that is already in the kernel with little modification. That iscsi layer is optimized to run from the network sofirq and to be zero copy for the larger data transfers. The tgt framework provides zero copy on the target side so we get to take advantage of all that code. The disadvantage to this is that, probably in the future tgt should work with the kevent and other async apis that are being proposed so we should be working twords that goal right from the beginning. Also, where we feel we would be using the iscsi kernel code sort of how you would open a TCP socket and read and write to it from userspace today, many people feel that any target code that can be done in userspace should be done there. And for that argument we do not have answer. As we said below we can do this in userspace, but we wanted to reuse the initiator code when possible. The attached path was made against a older iscsi tree so do not bother reviewing it. I only attach it incase someone really wants to see the code. I wanted to get feedback from others before I either port it to the upstream iscsi code or reject it and help out on a completely userspace software iscsi target.
Attachment:
add-iscsi-tgt.patch.bz2
Description: application/bzip