1. 03 9月, 2006 4 次提交
    • M
      [SCSI] scsi_tcp: rm data rx and tx tfms · dd8c0d95
      Mike Christie 提交于
      We currently allocated seperate tfms for data and header digests. There
      is no reason for this since we can never calculate a rx header and
      digest at the same time. Same for sends. So this patch removes the data
      tfms and has the send and recv sides use the rx_tfm or tx_tfm.
      
      I also made the connection creation code preallocate the tfms because I
      thought I hit a bug where I changed the digests settings during a
      relogin but could not allocate the tfm and then we just failed.
      Signed-off-by: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      dd8c0d95
    • M
      [SCSI] iscsi_tcp: fix padding, data digests, and IO at weird offsets · 62f38300
      Mike Christie 提交于
      iscsi_tcp calculates padding by using the expected transfer length. This
      has the problem where if we have immediate data = no and initial R2T =
      yes, and the transfer length ended up needing padding then we send:
      
      1. header
      2. padding which should have gone after data
      3. data
      
      Besides this bug, we also assume the target will always ask for nice
      transfer lengths and the first burst length will always be a nice value.
      As far as I can tell form the RFC this is not a requirement. It would be
      silly to do this, but if someone did it we will end doing bad things.
      
      Finally the last bug in that bit of code is in our handling of the
      recalculation of data digests when we do not send a whole iscsi_buf in
      one try. The bug here is that we call crypto_digest_final on a
      iscsi_sendpage error, then when we send the rest of the iscsi_buf, we
      doiscsi_data_digest_init and this causes the previous data digest to be
      lost.
      
      And to make matters worse, some of these bugs are replicated over and
      over and over again for immediate data, solicited data and unsolicited
      data. So the attached patch made over the iscsi git tree (see
      kernel.org/git for details) which I updated today to include the patches
      I said I merged, consolidates the sending of data, padding and digests
      and calculation of data digests and fixes the above bugs.
      Signed-off-by: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      62f38300
    • M
      [SCSI] attempt to complete r2t with data len greater than max burst · 98a9416a
      Mike Christie 提交于
      A couple targets like string bean and MDS, send r2ts with
      a data len greater than the max burst we agreed to. We
      were being strict in our enforcing of the iscsi rfc in that
      code path, but there is no driver limitation that prevents
      us from fullfilling the request. To allow those targets
      to work we will ignore the max_burst length and send as
      much data as the target asks for assuming it has consciously
      decided to override its max burst length.
      Signed-off-by: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      98a9416a
    • M
      [SCSI] libiscsi, iscsi_tcp, iscsi_iser: check that burst lengths are valid. · ffd0436e
      Mike Christie 提交于
      iSCSI RFC states that the first burst length must be smaller than the
      max burst length. We currently assume targets will be good, but that may
      not be the case, so this patch adds a check.
      
      This patch also moves the unsol data out offset to the lib so the LLDs
      do not have to track it.
      Signed-off-by: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      ffd0436e
  2. 29 7月, 2006 7 次提交
  3. 29 6月, 2006 1 次提交
  4. 06 6月, 2006 3 次提交
  5. 20 5月, 2006 3 次提交
  6. 10 5月, 2006 4 次提交
  7. 15 4月, 2006 4 次提交
    • M
      [SCSI] iscsi: convert iscsi tcp to libiscsi · 5bb0b55a
      Mike Christie 提交于
      This just converts iscsi_tcp to the lib
      Signed-off-by: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      5bb0b55a
    • M
      [SCSI] iscsi: fix up iscsi eh · 30a6c652
      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: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      30a6c652
    • M
      [SCSI] iscsi: add sysfs attrs for uspace sync up · fd7255f5
      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: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      fd7255f5
    • M
      [SCSI] iscsi: rm kernel iscsi handles usage for session and connection · b5c7a12d
      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: NMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      b5c7a12d
  8. 27 3月, 2006 1 次提交
  9. 22 3月, 2006 1 次提交
    • C
      [PATCH] slab: Remove SLAB_NO_REAP option · ac2b898c
      Christoph Lameter 提交于
      SLAB_NO_REAP is documented as an option that will cause this slab not to be
      reaped under memory pressure.  However, that is not what happens.  The only
      thing that SLAB_NO_REAP controls at the moment is the reclaim of the unused
      slab elements that were allocated in batch in cache_reap().  Cache_reap()
      is run every few seconds independently of memory pressure.
      
      Could we remove the whole thing?  Its only used by three slabs anyways and
      I cannot find a reason for having this option.
      
      There is an additional problem with SLAB_NO_REAP.  If set then the recovery
      of objects from alien caches is switched off.  Objects not freed on the
      same node where they were initially allocated will only be reused if a
      certain amount of objects accumulates from one alien node (not very likely)
      or if the cache is explicitly shrunk.  (Strangely __cache_shrink does not
      check for SLAB_NO_REAP)
      
      Getting rid of SLAB_NO_REAP fixes the problems with alien cache freeing.
      Signed-off-by: NChristoph Lameter <clameter@sgi.com>
      Cc: Pekka Enberg <penberg@cs.helsinki.fi>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Cc: Mark Fasheh <mark.fasheh@oracle.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ac2b898c
  10. 05 2月, 2006 4 次提交
  11. 15 1月, 2006 8 次提交