Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 21 Oct 2014 20:06:38 +0000 (13:06 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 21 Oct 2014 20:06:38 +0000 (13:06 -0700)
Pull SCSI target updates from Nicholas Bellinger:
 "Here are the target updates for v3.18-rc2 code.  These where
  originally destined for -rc1, but due to the combination of travel
  last week for KVM Forum and my mistake of taking the three week merge
  window literally, the pull request slipped..  Apologies for that.

  Things where reasonably quiet this round.  The highlights include:

   - New userspace backend driver (target_core_user.ko) by Shaohua Li
     and Andy Grover
   - A number of cleanups in target, iscsi-taret and qla_target code
     from Joern Engel
   - Fix an OOPs related to queue full handling with CHECK_CONDITION
     status from Quinn Tran
   - Fix to disable TX completion interrupt coalescing in iser-target,
     that was causing problems on some hardware
   - Fix for PR APTPL metadata handling with demo-mode ACLs

  I'm most excited about the new backend driver that uses UIO + shared
  memory ring to dispatch I/O and control commands into user-space.
  This was probably the most requested feature by users over the last
  couple of years, and opens up a new area of development + porting of
  existing user-space storage applications to LIO.  Thanks to Shaohua +
  Andy for making this happen.

  Also another honorable mention, a new Xen PV SCSI driver was merged
  via the xen/tip.git tree recently, which puts us now at 10 target
  drivers in upstream! Thanks to David Vrabel + Juergen Gross for their
  work to get this code merged"

* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (40 commits)
  target/file: fix inclusive vfs_fsync_range() end
  iser-target: Disable TX completion interrupt coalescing
  target: Add force_pr_aptpl device attribute
  target: Fix APTPL metadata handling for dynamic MappedLUNs
  qla_target: don't delete changed nacls
  target/user: Recalculate pad size inside is_ring_space_avail()
  tcm_loop: Fixup tag handling
  iser-target: Fix smatch warning
  target/user: Fix up smatch warnings in tcmu_netlink_event
  target: Add a user-passthrough backstore
  target: Add documentation on the target userspace pass-through driver
  uio: Export definition of struct uio_device
  target: Remove unneeded check in sbc_parse_cdb
  target: Fix queue full status NULL pointer for SCF_TRANSPORT_TASK_SENSE
  qla_target: rearrange struct qla_tgt_prm
  qla_target: improve qlt_unmap_sg()
  qla_target: make some global functions static
  qla_target: remove unused parameter
  target: simplify core_tmr_abort_task
  target: encapsulate smp_mb__after_atomic()
  ...

1  2 
drivers/infiniband/ulp/isert/ib_isert.c
drivers/scsi/qla2xxx/qla_target.c
drivers/scsi/qla2xxx/qla_target.h
drivers/scsi/qla2xxx/tcm_qla2xxx.c
drivers/target/iscsi/iscsi_target.c
drivers/target/iscsi/iscsi_target_util.c
drivers/target/target_core_configfs.c
drivers/target/target_core_pscsi.c
drivers/target/target_core_tpg.c
include/uapi/linux/Kbuild

@@@ -108,10 -101,7 +108,11 @@@ static void qlt_send_term_exchange(stru
        *cmd, struct atio_from_isp *atio, int ha_locked);
  static void qlt_reject_free_srr_imm(struct scsi_qla_host *ha,
        struct qla_tgt_srr_imm *imm, int ha_lock);
 +static void qlt_abort_cmd_on_host_reset(struct scsi_qla_host *vha,
 +      struct qla_tgt_cmd *cmd);
 +static void qlt_alloc_qfull_cmd(struct scsi_qla_host *vha,
 +      struct atio_from_isp *atio, uint16_t status, int qfull);
+ static void qlt_disable_vha(struct scsi_qla_host *vha);
  /*
   * Global Variables
   */
@@@ -189,28 -179,7 +190,28 @@@ struct scsi_qla_host *qlt_find_host_by_
        return NULL;
  }
  
- void qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha,
 +static inline void qlt_incr_num_pend_cmds(struct scsi_qla_host *vha)
 +{
 +      unsigned long flags;
 +
 +      spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags);
 +
 +      vha->hw->tgt.num_pend_cmds++;
 +      if (vha->hw->tgt.num_pend_cmds > vha->hw->qla_stats.stat_max_pend_cmds)
 +              vha->hw->qla_stats.stat_max_pend_cmds =
 +                      vha->hw->tgt.num_pend_cmds;
 +      spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags);
 +}
 +static inline void qlt_decr_num_pend_cmds(struct scsi_qla_host *vha)
 +{
 +      unsigned long flags;
 +
 +      spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags);
 +      vha->hw->tgt.num_pend_cmds--;
 +      spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags);
 +}
 +
+ static void qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha,
        struct atio_from_isp *atio)
  {
        ql_dbg(ql_dbg_tgt, vha, 0xe072,
@@@ -3085,10 -2924,8 +3084,9 @@@ static void qlt_do_ctio_completion(stru
  
        se_cmd = &cmd->se_cmd;
        tfo = se_cmd->se_tfo;
 +      cmd->cmd_sent_to_fw = 0;
  
-       if (cmd->sg_mapped)
-               qlt_unmap_sg(vha, cmd);
+       qlt_unmap_sg(vha, cmd);
  
        if (unlikely(status != CTIO_SUCCESS)) {
                switch (status & 0xFFFF) {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge