how it works

36 views
Skip to first unread message

Eddy Quicksall

unread,
May 23, 2005, 4:51:36 PM5/23/05
to open-iscsi
Is there an explanation someplace as to how the iSCSI initiator works? e.g., the meaning of each .c file, an explanation of each function.
 
Eddy

Dmitry Yusupov

unread,
May 23, 2005, 7:11:26 PM5/23/05
to open-...@googlegroups.com
On Mon, 2005-05-23 at 16:51 -0400, Eddy Quicksall wrote:
> Is there an explanation someplace as to how the iSCSI initiator works?
> e.g., the meaning of each .c file, an explanation of each function.

open-iscsi/linux kernel part contains of two C-files:

- scsi_transport_iscsi.c

SCSI transport class implements iSCSI sysfs abstraction, transport API
and user/kernel NETLINK IPC.

- iscsi_tcp.c

implements data-path mover over TCP/IP. Uses zero-copy PDU processing,
sendfile-like receive and sendpages-like transmit. Very optimized.

userspace stuff... who cares how many C-files in there?

there are some diagrams on http://www.open-iscsi.org

Bobby

unread,
Jan 10, 2020, 11:44:05 AM1/10/20
to open-iscsi

Hi,


-  Question 1: The kernel still contains 2 files?
-  Question  2:  Do we still have those diagrams available online?

The Lee-Man

unread,
Jan 10, 2020, 4:55:34 PM1/10/20
to open-iscsi
On Friday, January 10, 2020 at 8:44:05 AM UTC-8, Bobby wrote:

Hi,


-  Question 1: The kernel still contains 2 files?
-  Question  2:  Do we still have those diagrams available online?


The kernel has many files, but those two files are still present for open-iscsi. If you look in drivers/scsi/*iscsi*.[ch], each of those files are either initiator or target files.

I don't know what diagrams were around in the past, but we no longer have any on the web page, which is hosted by github now. A simple google of "open-iscsi architecture diagrams" yields quite a few pictures, though, such as this one: https://www.researchgate.net/figure/General-iSCSI-architecture_fig1_221396996

Bobby

unread,
Jan 11, 2020, 2:26:00 PM1/11/20
to open-iscsi
Hi ,

Thanks for your patience  regarding my questions. Because after I had dug (digged) very older posts, I realized 
many of the older posts already had answers for many of my earlier questions :). After your couple of answers and going 
through old posts, I have a better understanding of user land and kernel land.

Now one more point.

Kernel land: 
While we are at kernel land, I have a confusion on that.
AFAIK in linux kernel, the linux block layer is a glue that, on the one hand, allows applications to access 
diverse storage devices 
in a uniform way, and on the other hand,
provides storage devices and drivers with a single point of entry from all applications.
I mean this Linux OS (host) block layer is the most
critical part of the I/O hierarchy, as it orchestrates the I/O
requests from different applications to the underlying storage.

Question:
So in context of Open-iSCSI, where does the user-land interacts the block layer in the kernel land? I 
mean, when it comes to kernel land, why we are considering only scsi_transport_iscsi.c and iscsi_tcp.c codes? Shouldn't
the block request go through block layer?

As always, thanks in advance :)

Lee Duncan

unread,
Jan 11, 2020, 10:32:55 PM1/11/20
to open-iscsi
On Jan 11, 2020, at 11:26 AM, Bobby <italien...@gmail.com> wrote:

Hi ,

Thanks for your patience  regarding my questions. Because after I had dug (digged) very older posts, I realized 
many of the older posts already had answers for many of my earlier questions :). After your couple of answers and going 
through old posts, I have a better understanding of user land and kernel land.

Excellent.


Now one more point.

Kernel land: 
While we are at kernel land, I have a confusion on that.
AFAIK in linux kernel, the linux block layer is a glue that, on the one hand, allows applications to access 
diverse storage devices 
in a uniform way, and on the other hand,
provides storage devices and drivers with a single point of entry from all applications.
I mean this Linux OS (host) block layer is the most
critical part of the I/O hierarchy, as it orchestrates the I/O
requests from different applications to the underlying storage.

Question:
So in context of Open-iSCSI, where does the user-land interacts the block layer in the kernel land? I 
mean, when it comes to kernel land, why we are considering only scsi_transport_iscsi.c and iscsi_tcp.c codes? Shouldn't
the block request go through block layer?

As always, thanks in advance :)



The iscsi initiator (open-iscsi) acts as an HBA, in effect, in the block system.

The layer above the block layer (conceptually) are the disc or tape drivers.The block layer presents an abstract interface to them, so that they only have to deal with putting bits in blocks, or getting bits from blocks.

The layer below the block layer, on the other hand, gets requests to put bits in blocks or to get bits from blocks, and has to deal with how to actually implement that, given where the bits live. For a local disc, this is an HBA adapter driver. For iSCSI, this is actually a transport rather than an HBA. There are several transports, for example iSER (Infiniband) is another.

I hope that helps. 
— 
Lee


Bobby

unread,
Jan 24, 2020, 4:04:19 PM1/24/20
to open-iscsi
thanks...yes, it helped :-)
Reply all
Reply to author
Forward
0 new messages