* [PATCH 0/10][RFC] linux-iscsi driver
@ 2005-01-10 22:56 Mike Christie
0 siblings, 0 replies; only message in thread
From: Mike Christie @ 2005-01-10 22:56 UTC (permalink / raw)
To: linux-scsi
The patches attached in the next mails are a temporarily forked
(just waiting to merge and test some stuff) version of
the linux-iscsi driver from http://sourceforge.net/projects/linux-iscsi/.
One large patch can be found here
http://www.cs.wisc.edu/~michaelc/iscsi/current/10-1-2005-scsi-misc/
And, the userspace tools for this forked version are here
http://www.cs.wisc.edu/~michaelc/iscsi/current/10-1-2005-scsi-misc/linux-iscsi-4.0.1.10.1.tar.gz
All patches were made against scsi-misc.2.6 becuase we need
__scsi_print_sense.
We have cleaned up most of the old and duplicated code from previous
versions and have worked to better integrate ourselves with scsi-ml.
At this point, we would like to request more review comments and suggestions.
We also have some outstanding issues that we require suggestions on.
1. IOCTL vs sysfs - Currently, we have killed all but one IOCL cmd.
This last IOCTL is for creation of iSCSI sessions. The reason for
the difficulty in converting it, is becuase the iSCSI session is tied
to the SCSI host, so initially we do not have a place (not completely
true, see C below) to attach sysfs attributes needed to pass in the
setup indo.
We basically follow this sequence:
- usersapace discovers targets and uses the ioctl to pass setup info
to driver
- driver then calls scsi_ahost_alloc() <- allocates session struct in hostdata
- establishes a session (transport connection)
- calls scsi_add_host()
Some possible solutions are:
A. We could do scsi_add_host before we establish a session, but
then we would have a host without a transport connection initially
(our queuecommand would have to handle this (it does already more
or less) or we could block the host during this setup). Is this
acceptable?
B. Add our own LLD bus or class. The class would not be related to
the transport class since this is a driver specific problem. For the bus idea,
we could attempt to add a new scsi bus for all virtual LLDs like software
iscsi and scsi_debug, or we could try to make the current scsi bus handle
driver model drivers from the LLD's as well as the upper layer drivers.
C. Add our attributes to the module /sys/module/iscsi-sfnet. This would
require the driver to have some global tmp pointer that is used for the
current session being setup since there is only one place
(unless we do our own kobject stuff and add more dirs under /sys/module/iscsi-sfnet)
to put the setup attrs (host would not be created yet like above).
D. IOCL.
2. remove driver session/host list - we currently have a list
of sessions used for driver rmmod and ioctl update (the latter can
be moved to sysfs). We are not sure what to use as a replacement
for this list. We have the driver model class or bus option
above.
3. block layer tags usage - The driver requires tags (initiator
task tags) for iSCSI operations like login and Nops (iscsi pings) as
well as SCSI-ml initiated operations like reads or writes. The block
layer tags will not work for us, becuase for login we do not have a
queue yet, but James has stated that other drivers like qla2xxx
would be better off with host level tags and if those are available
at scsi_host_alloc time we would like to use them instead of
implementing our own.
Thanks, for any help and comments
Mike Christie
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-01-10 22:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-10 22:56 [PATCH 0/10][RFC] linux-iscsi driver Mike Christie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox