22 Nov, 2006

1 commit


26 Oct, 2006

1 commit

  • The transport class recv mempools are causing slab corruption.
    We could hack around netlink's lack of mempool support like dm,
    but it is just too ulgy (dm's hack is ugly enough :) when you need
    to support broadcast.

    This patch removes the recv pools. We have not used them even when
    we were allocting 20 MB per session and the system only had 64 MBs.
    And we have no pools on the send side and have been ok there. When
    Peter's work gets merged we can use that since the network guys
    are in favor of that approach and are not going to add mempools
    everywhere.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

29 Jul, 2006

1 commit

  • When we enter recovery and flush the running commands
    we cannot freee the connection before flushing the commands.
    Some commands may have a reference to the connection
    that needs to be released before. iscsi_stop was forcing
    the term and suspend too early and was causing a oops
    in iser, so this patch removes those callbacks all together
    and allows the LLD to handle that detail.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

29 Jun, 2006

6 commits

  • This patch adds or modifies the transport class functions
    used to notify userspace of session state events.

    We modify the session addition up event and add a destruction event
    to notify userspace of session creation, relogin and destruction.

    And we modify the conn error event to be sent by broadcast
    since multiple listeners may want to listen for it.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • So the drivers do not use the channel numbers, but some do
    use the target numbers. We were just adding some goofy
    variable that just increases for the target nr. This is useless
    for software iscsi because it is always zero. And for qla4xxx
    the target nr is actually the index of the target/session
    in its FW or FLASH tables. We needed to expose this to userspace
    so apps could access those numbers so this patch just adds the
    target nr to the iscsi session creation functions. This way
    when qla4xxx's Hw thinks a session is at target nr 4
    in its hw, it is exposed as that number in sysfs.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • qla4xxx is initialized in two steps like other HW drivers.
    It allocates the host, sets up the HW, then adds the host.
    For iscsi part of HW setup is setting up persistent iscsi
    sessions. At that time, the interupts are off and the driver
    is not completely set up so we just want to allocate them.
    We do not want to add them to sysfs and expose them to userspace
    because userspace could try to do lots of fun things with them
    like scanning and at that time the driver is not ready.

    So this patch breakes up the session creation like other
    functions that use the driver model in two the alloc
    and add parts. When the driver is ready, it can then add
    the sessions and userspace can begin using them.

    This also fixes a bug in the addition error patch where
    we forgot to do a get on the session.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • I do not remember what I was thinking when we added the channel
    as a argument to the session create function. It was probably
    due to too much cut and paste work from the FC transport class.

    The channel is meaningless for iscsi drivers so this patch drops
    its usage everywhere in the iscsi related code.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • Reduce duplication in the software iscsi_transport modules by
    adding a libiscsi function to handle the common grunt work.

    This also has the drivers return specifc -EXXX values for different
    errors so userspace can finally handle them in a sane way.

    Also just pass the sysfs buffers to the drivers so HW iscsi can
    get/set its string values, like targetname, and initiatorname.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • Patch from david.somayajulu@qlogic.com:

    Add target discovery event. We may have a setup where the iscsi traffic
    is on a different netowrk than the other network traffic. In this case
    we will want to do discovery though the iscsi card. This patch adds
    a event to the transport class that can be used by hw iscsi cards that
    support this.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

06 Jun, 2006

1 commit

  • We can race and misset the suspend bit if iscsi_write_space is
    called then iscsi_send returns with a failure indicating
    there is no space.

    To handle this this patch returns a error upwards allowing xmitworker
    to decide if we need to try and transmit again. For the no
    write space case xmitworker will not retry, and instead
    let iscsi_write_space queue it back up if needed (this relies
    on the work queue code to properly requeue us if needed).

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

20 May, 2006

1 commit

  • Do not flush queues then block session. This will cause commands
    to needlessly swing around on us and remove goofy
    recovery_failed field and replace with state value.

    And do not start recovery from within the host reset function.
    This causeis too many problems becuase open-iscsi was desinged to
    call out to userspace then have userpscae decide if we should
    go into recovery or kill the session.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

10 May, 2006

1 commit


15 Apr, 2006

4 commits

  • There is a lot of code duplcited between iscsi_tcp
    and the upcoming iscsi_iser driver. This patch puts
    the duplicated code in a lib. There is more code
    to move around but this takes care of the
    basics. For iscsi_offload if they use the lib we will
    probably move some things around. For example in the
    queuecommand we will not assume that the LLD wants
    to do queue_work, but it is better to handle that
    later when we know for sure what iscsi_offload looks
    like (we could probably do this for iscsi_iser though to).

    Ideally I would like to get the iscsi_transports modules
    to a place where all they really have to do is put data
    on the wire, but how to do that will hopefully be more clear
    when we see other modules like iscsi_offload. Or maybe
    iscsi_offload will not use the lib and it will just be
    iscsi_iser and iscsi_tcp and maybe the iscsi_tcp_tgt if that
    is allowed in mainline.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • The current iscsi_tcp eh is not nicely setup for dm-multipath
    and performs some extra task management functions when they
    are not needed.

    The attached patch:

    - Fixes the TMF issues. If a session is rebuilt
    then we do not send aborts.

    - Fixes the problem where if the host reset fired, we would
    return SUCCESS even though we had not really done anything
    yet. This ends up causing problem with scsi_error.c's TUR.

    - If someone has turned on the userspace nop daemon code to try
    and detect network problems before the scsi command timeout
    we can now drop and clean up the session before the scsi command
    timesout and fires the eh speeding up the time it takes for a
    command to go from one patch to another. For network problems
    we fail the command with DID_BUS_BUSY so if failfast is set
    scsi_decide_disposition fails the command up to dm for it to
    try on another path.

    - And we had to add some basic iscsi session block code. Previously
    if we were trying to repair a session we would retrun a MLQUEUE code
    in the queuecommand. This worked but it was not the most efficient
    or pretty thing to do since it would take a while to relogin
    to the target. For iscsi_tcp/open-iscsi a lot of the iscsi error handler
    is in userspace the block code is pretty bare. We will be
    adding to that for qla4xxx.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • For iscsi boot when going from initramfs to the real root we
    need to stop the userpsace iscsi daemon. To later restart it
    iscsid needs to be able to rebuild itself and part of that
    process is matching a session running the kernel with the
    iscsid representation. To do this the attached patch
    adds several required iscsi values. If the LLD does not provide
    them becuase, login is done in userspace, then the transport
    class and userspace set ths up for the LLD.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     
  • from hare@suse.de and michaelc@cs.wisc.edu

    hw iscsi like qla4xxx does not allocate a host per session and
    for userspace it is difficult to restart iscsid using the
    "iscsi handles" for the session and connection, so this
    patch just has the class or userspace allocate the id for
    the session and connection.

    Note: this breaks userspace and requires users to upgrade to the newest
    open-iscsi tools. Sorry about his but open-iscsi is still too new to
    say we have a stable user-kernel api and we were not good nough
    designers to know that other hw iscsi drivers and iscsid itself would
    need such changes. Actually we sorta did but at the time we did not
    have the HW available to us so we could only guess.

    Luckily, the only tools hooking into the class are the open-iscsi ones
    or other tools like iscsitart hook into the open-iscsi engine from
    userspace or prgroams like anaconda call our tools so they are not affected.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

05 Feb, 2006

1 commit

  • From:
    michaelc@cs.wisc.edu
    fujita.tomonori@lab.ntt.co.jp
    da-x@monatomic.org

    and err path fixup from:
    ogerlitz@voltaire.com

    This patch cleans up that interface by having the lld and class
    pass a iscsi_cls_session or iscsi_cls_conn between each other when
    the function is used by HW and SW iscsi llds. This way the lld
    does not have to remember if it has to send a handle or pointer
    and a handle or pointer to connection, session or host.

    This also has the class verify the session handle that gets passed from
    userspace instead of using the pointer passed into the kernel directly.

    Signed-off-by: Mike Christie
    Signed-off-by: Alex Aizman
    Signed-off-by: Dmitry Yusupov
    Signed-off-by: James Bottomley

    Mike Christie
     

15 Jan, 2006

1 commit

  • This is the second version of the patch to address Christoph's comments.
    Instead of doing the lib, I just kept everything in scsi_trnapsort_iscsi.c
    like the FC and SPI class. This was becuase the driver model and sysfs
    class is tied to the session and connection setup so separating did not
    buy very much at this time.

    The reason for this patch was becuase HW iscsi LLDs like qla4xxx cannot
    use the iscsi class becuase the scsi_host was tied to the interface and
    class code. This patch just seperates the session from scsi host so
    that LLDs that allocate the host per some resource like pci device
    can still use the class.

    This is also fixes a couple refcount bugs that can be triggered
    when users have a sysfs file open, close the session, then
    read or write to the file.

    Signed-off-by: Alex Aizman
    Signed-off-by: Dmitry Yusupov
    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

06 Aug, 2005

1 commit

  • open-iscsi-headers.patch - common header files:
    - iscsi_if.h (user/kernel #defines and user/kernel events);
    - iscsi_proto.h (RFC3720 #defines and types);
    - scsi_transport_iscsi.h (transport API, transport #defines and types).

    Signed-off-by: Alex Aizman
    Signed-off-by: Dmitry Yusupov
    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Alex Aizman
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds