1. 27 5月, 2011 1 次提交
  2. 31 3月, 2011 1 次提交
  3. 24 3月, 2011 2 次提交
    • D
      [SCSI] target: Minor sparse warning fixes and annotations · 5dd7ed2e
      Dan Carpenter 提交于
      This patch addresses the majority of sparse warnings and adds
      proper locking annotations.  It also fixes the dubious one-bit signed
      bitfield, for which the signed one-bit types can be 0 or -1 which can
      cause a problem if someone ever checks if (foo->lu_gp_assoc == 1).
      The current code is fine because everyone just checks zero vs non-zero.
      But Sparse complains about it so lets change it.  The warnings look like
      this:
      
      include/target/target_core_base.h:228:26: error: dubious one-bit signed bitfield
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NFubo Chen <fubo.chen@gmail.com>
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      5dd7ed2e
    • F
      [SCSI] target: Remove unnecessary hba_dev_list walk and se_clear_dev_ports legacy code · 05aea6e7
      Fubo Chen 提交于
      This patch removes a legacy struct se_hba->hba_dev_list -> se_release_device_for_hba()
      list walk in core_delete_hba(), which is no longer required while using configfs
      VFS level parent/child struct config_group dependency referencing.  The reason
      is because any struct se_hba->hba_dev_list-> struct se_device members are going
      to have to be released via:
      
      	rmdir /sys/kernel/config/target/core/$HBA/*
      
      before rmdir release of struct se_hba via target_core_configfs.c:
      target_core_call_delhbafromtarget() -> core_delete_hba()
      
      	rmdir /sys/kernel/config/target/core/$HBA
      
      to release struct se_hba in core_delete_hba().
      
      This patch also removes the legacy se_clear_dev_ports() function, which is
      left-over pre-configfs shutdown logic for when se_free_virtual_device()
      was responsible for walking struct se_device->dev_sep_list and calling
      core_dev_del_lun() for each individual active struct se_port->se_lun.
      
      The reason this can be removed is because all struct se_device->dev_sep_list
      -> struct se_port communication is done via configfs symlinks, which
      means that an target fabric module's endpoints containg active struct
      se_port(s) will have to be released via target_core_fabric_configfs.c:
      target_fabric_port_unlink() via:
      
      	unlink /sys/kernel/config/target/$FABRIC_MOD/$ENDPOINT/tpgt_$TPGT/lun/lun_$LUN_ID/<symlink>
      
      before rmdir release of struct se_device in target_core_configfs.c:
      target_core_drop_subdev() -> se_free_virtual_device() can happen via:
      
      	rmdir /sys/kernel/config/target/core/$HBA/*
      
      to release struct se_subsystem_dev in target_core_drop_subdev()
      Reported-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      Reported-by: NFubo Chen <fubo.chen@gmail.com>
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      05aea6e7
  4. 02 3月, 2011 1 次提交
  5. 13 2月, 2011 3 次提交
    • N
      [SCSI] target: Remove procfs based target_core_mib.c code · e89d15ee
      Nicholas Bellinger 提交于
      This patch removes the legacy procfs based target_core_mib.c code,
      and moves the necessary scsi_index_tables functions and defines into
      target_core_transport.c and target_core_base.h code to allow existing
      fabric independent statistics to function.
      
      This includes the removal of a handful of 'atomic_t mib_ref_count'
      counters used in struct se_node_acl, se_session and se_hba to prevent
      removal while using seq_list procfs walking logic.
      
      [jejb: fix up compile failures]
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      e89d15ee
    • F
      [SCSI] target: fixed missing lock drop in error path · 85dc98d9
      Fubo Chen 提交于
      The struct se_node_acl->device_list_lock needs to be released if either
      sanity check for struct se_dev_entry->se_lun_acl or deve->se_lun fails.
      Signed-off-by: NFubo Chen <fubo.chen@gmail.com>
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      85dc98d9
    • N
      [SCSI] target: Fix demo-mode MappedLUN shutdown UA/PR breakage · 29fe609d
      Nicholas Bellinger 提交于
      This patch fixes a bug in core_update_device_list_for_node() where
      individual demo-mode generated MappedLUN's UA + Persistent
      Reservations metadata where being leaked, instead of falling through
      and calling existing core_scsi3_ua_release_all() and
      core_scsi3_free_pr_reg_from_nacl() at the end of
      core_update_device_list_for_node().
      
      This bug would manifest itself with the following OOPs w/ TPG
      demo-mode endpoints (tfo->tpg_check_demo_mode()=1), and PROUT
      REGISTER+RESERVE -> explict struct se_session logout -> struct
      se_device shutdown:
      
      [  697.021139] LIO_iblock used greatest stack depth: 2704 bytes left
      [  702.235017] general protection fault: 0000 [#1] SMP
      [  702.235074] last sysfs file: /sys/devices/virtual/net/lo/operstate
      [  704.372695] CPU 0
      [  704.372725] Modules linked in: crc32c target_core_stgt scsi_tgt target_core_pscsi target_core_file target_core_iblock target_core_mod configfs sr_mod cdrom sd_mod ata_piix mptspi mptscsih libata mptbase [last unloaded: iscsi_target_mod]
      [  704.375442]
      [  704.375563] Pid: 4964, comm: tcm_node Not tainted 2.6.37+ #1 440BX Desktop Reference Platform/VMware Virtual Platform
      [  704.375912] RIP: 0010:[<ffffffffa00aaa16>]  [<ffffffffa00aaa16>] __core_scsi3_complete_pro_release+0x31/0x133 [target_core_mod]
      [  704.376017] RSP: 0018:ffff88001e5ffcb8  EFLAGS: 00010296
      [  704.376017] RAX: 6d32335b1b0a0d0a RBX: ffff88001d952cb0 RCX: 0000000000000015
      [  704.376017] RDX: ffff88001b428000 RSI: ffff88001da5a4c0 RDI: ffff88001e5ffcd8
      [  704.376017] RBP: ffff88001e5ffd28 R08: ffff88001e5ffcd8 R09: ffff88001d952080
      [  704.377116] R10: ffff88001dfc5480 R11: ffff88001df8abb0 R12: ffff88001d952cb0
      [  704.377319] R13: 0000000000000000 R14: ffff88001df8abb0 R15: ffff88001b428000
      [  704.377521] FS:  00007f033d15c6e0(0000) GS:ffff88001fa00000(0000) knlGS:0000000000000000
      [  704.377861] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [  704.378043] CR2: 00007fff09281510 CR3: 000000001e5db000 CR4: 00000000000006f0
      [  704.378110] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  704.378110] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [  704.378110] Process tcm_node (pid: 4964, threadinfo ffff88001e5fe000, task ffff88001d99c260)
      [  704.378110] Stack:
      [  704.378110]  ffffea0000678980 ffff88001da5a4c0 ffffea0000678980 ffff88001f402b00
      [  704.378110]  ffff88001e5ffd08 ffffffff810ea236 ffff88001e5ffd18 0000000000000282
      [  704.379772]  ffff88001d952080 ffff88001d952cb0 ffff88001d952cb0 ffff88001dc79010
      [  704.380082] Call Trace:
      [  704.380220]  [<ffffffff810ea236>] ? __slab_free+0x89/0x11c
      [  704.380403]  [<ffffffffa00ab781>] core_scsi3_free_all_registrations+0x3e/0x157 [target_core_mod]
      [  704.380479]  [<ffffffffa00a752b>] se_release_device_for_hba+0xa6/0xd8 [target_core_mod]
      [  704.380479]  [<ffffffffa00a7598>] se_free_virtual_device+0x3b/0x45 [target_core_mod]
      [  704.383750]  [<ffffffffa00a3177>] target_core_drop_subdev+0x13a/0x18d [target_core_mod]
      [  704.384068]  [<ffffffffa00960db>] client_drop_item+0x25/0x31 [configfs]
      [  704.384263]  [<ffffffffa00967b5>] configfs_rmdir+0x1a1/0x223 [configfs]
      [  704.384459]  [<ffffffff810fa8cd>] vfs_rmdir+0x7e/0xd3
      [  704.384631]  [<ffffffff810fc3be>] do_rmdir+0xa3/0xf4
      [  704.384895]  [<ffffffff810eed15>] ? filp_close+0x67/0x72
      [  704.386485]  [<ffffffff810fc446>] sys_rmdir+0x11/0x13
      [  704.387893]  [<ffffffff81002a92>] system_call_fastpath+0x16/0x1b
      [  704.388083] Code: 4c 8d 45 b0 41 56 49 89 d7 41 55 41 89 cd 41 54 b9 15 00 00 00 53 48 89 fb 48 83 ec 48 4c 89 c7 48 89 75 98 48 8b 86 28 01 00 00 <48> 8b 80 90 01 00 00 48 89 45 a0 31 c0 f3 aa c7 45 ac 00 00 00
      [  704.388763] RIP  [<ffffffffa00aaa16>] __core_scsi3_complete_pro_release+0x31/0x133 [target_core_mod]
      [  704.389142]  RSP <ffff88001e5ffcb8>
      [  704.389572] ---[ end trace 2a3614f3cd6261a5 ]---
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      29fe609d
  6. 15 1月, 2011 1 次提交
    • N
      [SCSI] target: Add LIO target core v4.0.0-rc6 · c66ac9db
      Nicholas Bellinger 提交于
      LIO target is a full featured in-kernel target framework with the
      following feature set:
      
      High-performance, non-blocking, multithreaded architecture with SIMD
      support.
      
      Advanced SCSI feature set:
      
          * Persistent Reservations (PRs)
          * Asymmetric Logical Unit Assignment (ALUA)
          * Protocol and intra-nexus multiplexing, load-balancing and failover (MC/S)
          * Full Error Recovery (ERL=0,1,2)
          * Active/active task migration and session continuation (ERL=2)
          * Thin LUN provisioning (UNMAP and WRITE_SAMExx)
      
      Multiprotocol target plugins
      
      Storage media independence:
      
          * Virtualization of all storage media; transparent mapping of IO to LUNs
          * No hard limits on number of LUNs per Target; maximum LUN size ~750 TB
          * Backstores: SATA, SAS, SCSI, BluRay, DVD, FLASH, USB, ramdisk, etc.
      
      Standards compliance:
      
          * Full compliance with IETF (RFC 3720)
          * Full implementation of SPC-4 PRs and ALUA
      
      Significant code cleanups done by Christoph Hellwig.
      
      [jejb: fix up for new block bdev exclusive interface. Minor fixes from
       Randy Dunlap and Dan Carpenter.]
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      c66ac9db