On Wed, 26 May 2010 13:06:34 -0300 Erlon Cruz <sombrafam@xxxxxxxxx> wrote: > Im working in a project aimed to port Linux virtio to Power you are talking about drivers/virtio? > Platform, and also documenting vscsi underling operation. While > reading ibmvstgt.c driver, I found something I cant understand: > The SCSI command is extracted from this transport frame (SRP) > and then pushed to the user space daemon 'tgtd' which process it, > right? Right. > In the case of read/write commands incoming from the initiator > (vscsiclient), I guess the command is converted in a new read/write > operation which is performed in the physical disk, is it? Yeah. > I couldn't understand how and who calls the read/write function > ibmvstgt_rdma() (which effectively put the data from/into the disk) ibmvstgt_rdma() is called by tgt_write(). So tgtd daemon calls ibmvstgt_rdma() in kernel mode. > and why this function seems to be called after ibmvstgt_cmd_done() > function. Why there isn't a queuecommand function like in > ibmvscsiclient.c used by SCSI? Let's suppose that the user space daemon (tgtd) exports /tmp/disk file to an initiator. When tgtd gets READ command from the initiator, tgtd calls mmap() against /tmp/disk to map the data (to send) in the virtual address space of tgtd. That is, page frames including data are mapped. After that, tgtd executes ibmvstgt_cmd_done() in kernel mode. Then the data in the mapped page frames are sent to the initiator. -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html