Christoph Hellwig | 26 Mar 18:36 2015
Picon

[PATCH] target: simplify the target template registration API

Instead of calling target_fabric_configfs_init() +
target_fabric_configfs_register() / target_fabric_configfs_deregister()
target_fabric_configfs_free() from every target driver, rewrite the API
so that we have simple register/unregister functions that operate on
a const operations vector.

This patch also fixes a memory leak in several target drivers. Several
target drivers namely called target_fabric_configfs_deregister()
without calling target_fabric_configfs_free().

A large part of this patch is based on earlier changes from
Bart Van Assche <bart.vanassche <at> sandisk.com>.

Signed-off-by: Christoph Hellwig <hch <at> lst.de>
---
 Documentation/target/tcm_mod_builder.py      |  79 ++----------
 drivers/infiniband/ulp/srpt/ib_srpt.c        |  49 ++------
 drivers/scsi/qla2xxx/qla_target.c            |   2 +-
 drivers/scsi/qla2xxx/tcm_qla2xxx.c           | 118 ++++--------------
 drivers/target/iscsi/iscsi_target.c          |  23 ++--
 drivers/target/iscsi/iscsi_target.h          |   2 +-
 drivers/target/iscsi/iscsi_target_configfs.c | 177 +++++++++-----------------
 drivers/target/iscsi/iscsi_target_configfs.h |   7 --
 drivers/target/iscsi/iscsi_target_tpg.c      |   6 +-
 drivers/target/loopback/tcm_loop.c           | 174 +++++++-------------------
 drivers/target/sbp/sbp_target.c              |  68 ++--------
 drivers/target/target_core_configfs.c        | 178 ++++++++-------------------
 drivers/target/target_core_fabric_configfs.c |  39 ++++++
 drivers/target/target_core_pr.c              |  16 +--
 drivers/target/target_core_tpg.c             |   2 +-
(Continue reading)

Ilias Tsitsimpis | 26 Mar 16:12 2015

[PATCH v2] target: Better handling of AllRegistrants reservations

Fix AllRegistrants reservations in register_and_move() function where
the code didn't handle all of the registered devices as reservation
holders, resulting in the wrong warning message being displayed.

At the same time, introduce a helper function named
'is_reservation_holder()' that properly checks if a device is a
reservation holder, taking into account the reservation type. This
function cleans up the code and improves readability.

Signed-off-by: Ilias Tsitsimpis <iliastsi <at> arrikto.com>
Signed-off-by: Vangelis Koukis <vkoukis <at> arrikto.com>
---

Hi Nicholas,

This is version 2 of my patch, addressing all of your comments.

Thanks,
Ilias

 drivers/target/target_core_pr.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
index 2de6fb8..7436fda 100644
--- a/drivers/target/target_core_pr.c
+++ b/drivers/target/target_core_pr.c
 <at>  <at>  -78,6 +78,22  <at>  <at>  enum preempt_type {
 static void __core_scsi3_complete_pro_release(struct se_device *, struct se_node_acl *,
 					      struct t10_pr_registration *, int, int);
(Continue reading)

Christoph Hellwig | 26 Mar 12:27 2015
Picon

sparse fixes

These are inspired by what Bart had in his lio tree, but given how
old the base for that one was I just redid them from the sparse
output on the current for-next tree.

Nicholas A. Bellinger | 21 Mar 07:16 2015

[PATCH 0/3] iscsi/iser-target: Convert to kthread.h + fix logout failure

From: Nicholas Bellinger <nab <at> linux-iscsi.org>

Hello Sagi & Slava,

Following the earlier pre-LSF discussion, here is a patch series
to convert iscsi/iser target to using modern kthread.h primitives
when starting / stopping RX + TX kernel threads during iscsi_conn
creation / shutdown.

So far this code has been tested with traditional iscsi-target
login / logout code-paths, and needs to be verified via iser-target
login / logout code-paths as well.

Also, patch #3 is a seperate iser-target bugfix to handle a failed
outgoing ISCSI_OP_LOGOUT_RSP in isert_cq_comp_err() completion
interrupt path code.  This one may or may not have been triggering
earlier, but addresses a possible iser-target specific logout bug.

Please review + test for v4.1-rc1 code.

Thank you,

--nab

Nicholas Bellinger (3):
  iscsi-target: Convert iscsi_thread_set usage to kthread.h
  iscsi-target: Drop legacy iscsi_target_tq.c logic
  iser-target: Handle special case for logout during connection failure

 drivers/infiniband/ulp/isert/ib_isert.c   |  16 +-
(Continue reading)

Ilias Tsitsimpis | 20 Mar 12:39 2015

[PATCH] target: Better handling of AllRegistrants reservations

Fix two issues with AllRegistrants reservations where the code didn't
handle all of the registered devices as reservation holders.

At the same time, introduce a helper function named
'is_reservation_holder()' that properly checks if a device is a
reservation holder, taking into account the reservation type. This
function cleans up the code and improves readability.

Signed-off-by: Ilias Tsitsimpis <iliastsi <at> arrikto.com>
Signed-off-by: Vangelis Koukis <vkoukis <at> arrikto.com>
---

Hi Nicholas,

Continuing our conversation from December 19, at thread "[PATCH 0/2]
target: Fixes for AllRegistrants reservation handling" I identified two
more cases where the code didn't correctly handle ALLREG. Since you said
that you would prefer identify any remaining ALLREG specific issues and
address them individually, I have created this patch to address the
above issues.

At the same time this patch introduces the function
'is_reservation_holder()' which properly checks if a device is a
reservation holder, correctly handling the ALLREG cases. This function
cleans up the code and improves readability.

Thanks,
Ilias

 drivers/target/target_core_pr.c | 38 ++++++++++++++++++++++++--------------
(Continue reading)

Zhu Lingshan | 19 Mar 03:20 2015

LIO performance bottle neck analyze


Hi,

I have been working on LIO performance work for weeks, now I can release 
some results and issues, in this mail, I would like to talk about issues 
on CPU usage and  transaction speed. I really hope can get some hints 
and suggestion from you!

Summary:
(1) In 512Bytes, single process, reading case, I found the transaction 
speed is 2.818MB/s in a 1GB network, the running CPU core in initiator 
side spent over 80% cycles in waiting, while one core of LIO side spent 
43.6% in Sys, even no cycles in user, no cycles in wait. I assume the 
bottle neck of this small package, one thread transaction is the lock 
operations on LIO target side.

(2) In 512Bytes, 32 process, reading case, I found the transaction speed 
is 11.259MB/s in a 1GB network, I found there is only one CPU core in 
the LIO target side running, and the load is 100% in SYS. While other 
cores totally free, no workload. I assume the bottle neck of this small 
package, multi threads transaction is the that, no workload balance on 
target side.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Here are all detailed information:

My environment:
Two blade severs with E5 CPU and 32GB ram, one run LIO and the other is 
the initiator.
ISCSI backstore: RAM disk, I use the command line "modprobe brd 
(Continue reading)

Christophe Vu-Brugier | 17 Mar 14:09 2015

Regression introduced by "fde9f50 target: Add sanity checks for DPO/FUA bit usage"

Hi Nicholas,

I have found a regression in the LIO iSCSI targets that causes I/Os to
fail. I performed a `git bisect` between Linux v3.19 and v4.0-rc4 that
showed that the regression is caused by the following commit:

  fde9f50f80fe89a9115b4bfa773017272597d85d is the first bad commit
  commit fde9f50f80fe89a9115b4bfa773017272597d85d
  Author: Nicholas Bellinger <nab <at> linux-iscsi.org>
  Date:   Fri Feb 13 23:28:27 2015 +0000

      target: Add sanity checks for DPO/FUA bit usage

      This patch adds a sbc_check_dpofua() function that performs sanity
      checks for DPO/FUA command bits.

      It introduces checks to fail when either bit is set, but the backend
      device is not advertising support for them.

      It also moves the existing cmd->se_cmd_flags |= SCF_FUA assignement
      into the new helper function.

      Cc: Christoph Hellwig <hch <at> lst.de>
      Signed-off-by: Nicholas Bellinger <nab <at> linux-iscsi.org>

  :040000 040000 ea7ec2dcaf1f052d260ef595576debd31b50ac72
39116e63d803b5710a385f3f47bad4a74262defc M      drivers

Here are the steps I follow to trigger the bug:

(Continue reading)

Govindarajan | 13 Mar 01:05 2015
Picon

LIO iscsi connections issues with ESXi

Hi,
    I have been using LIO target connected to 4 ESXi hosts for testing
purposes. On the ESXi hosts I have a total of about 30 virtual
machines. Whenever I run heavy IO workload in the VMs for some tests
ESXi seems to flip-flop between marking the iscsi connection online
and offline. This can be seen in the log snippet given at the bottom.

A brief note about the set up.

Ubuntu installed on a supermicro box.
8 x 3TB disks in raid10 /dev/md0
4 x 480GB SSD raid10 /dev/md1
bcache0 created out of /dev/md0 and /dev/md1 (cache)
LVMs created on top of bcache0
10 Gbps Intel 82599ES NIC
10 Gbps on all ESXi hosts for iscsi portgroups
switch(dell powerconnect), esxi, and linux enabled for jumbo frames

Every time I see the connection flap in ESXi I see a lot of task
aborts being sent by lio target. I have looked around in the mailing
list archives but I am not able understand the root cause of the
problem. If I restart target service, things are back in order until I
run heavy IO again. I have taken care of switch related settings as
per Dell's whitepaper meant for ESXi best practices.

Today I increased the MaxConnections param to 2, not sure if it would help.

Any clues are welcome that could help me root cause and solve this
issue. Please do let me know if you need any other log files from
either the linux storage box or the esxi hosts, I'll pull them out for
(Continue reading)

Dr. Greg Wettstein | 6 Mar 01:01 2015

Re: [Lsf-pc] [LSF/MM TOPIC] Unifying the LIO and SCST target drivers

On Mar 1, 10:59pm, "Nicholas A. Bellinger" wrote:
} Subject: Re: [Lsf-pc] [LSF/MM TOPIC] Unifying the LIO and SCST target driv

Hi, I hope the week is progressing well for everyone.

> On Sat, 2015-02-28 at 12:59 +0100, Bart Van Assche wrote:
> > On 02/27/15 22:58, Nicholas A. Bellinger wrote:
> > > Looking at how your attempting to drive creation + removal of struct
> > > config_group from within kernel code here:
> > > 
> > > target: Add target port registration API
> > > https://github.com/bvanassche/linux/commit/dbb8bf32db3428ede6ecc688ede1e5e01fc59d88
> > > 
> > > is the exactly the wrong approach to take.
> > > 
> > > The creation and deletion of struct config_group must be driven by
> > > user-space, and by user-space only.  No exceptions will be made.
> > 
> > There exists an approach that preserves the ABI of both SCST and LIO,
> > namely:
> > * Add empty transport_register_wwn() and transport_unregister_wwn()
> >   functions in the LIO core.
> > * Add calls to these functions at the appropriate place in the FC
> >   and SRP target drivers.
> > * In the SCST implementation of the unified target driver API, route
> >   calls to transport_register_wwn() and transport_unregister_wwn() to
> >   scst_register_target() and scst_unregister_target() respectively.
> > 

> NAK.
(Continue reading)

Olaf Hering | 4 Mar 16:46 2015
Picon

noise in target_core_register_fabric

Is there a need to fill dmesg with noise like shown below whenever
targetcli-3.0 runs a command? I think the pr_err calls in those functions
should be converted to pr_debug.

Olaf

.....
[ 1240.045518] target_core_register_fabric() trying autoload for fc
[ 1240.045520] target_core_get_fabric() failed for fc
[ 1240.045926] target_core_register_fabric() trying autoload for usb_gadget
[ 1240.045928] target_core_get_fabric() failed for usb_gadget
[ 1240.046236] target_core_register_fabric() trying autoload for vhost
[ 1240.046238] target_core_get_fabric() failed for vhost
[ 1240.062569] target_core_register_fabric() trying autoload for srpt
[ 1240.062571] target_core_get_fabric() failed for srpt
[ 1240.069610] target_core_register_fabric() trying autoload for qla2xxx
[ 1240.069613] target_core_get_fabric() failed for qla2xxx
[ 1240.076049] target_core_register_fabric() trying autoload for fc
[ 1240.076051] target_core_get_fabric() failed for fc
[ 1240.076465] target_core_register_fabric() trying autoload for usb_gadget
[ 1240.076467] target_core_get_fabric() failed for usb_gadget
[ 1240.076770] target_core_register_fabric() trying autoload for vhost
[ 1240.076772] target_core_get_fabric() failed for vhost
[ 1240.088177] target_core_register_fabric() trying autoload for srpt
[ 1240.088179] target_core_get_fabric() failed for srpt
[ 1240.097338] target_core_register_fabric() trying autoload for qla2xxx
[ 1240.097340] target_core_get_fabric() failed for qla2xxx
[ 1240.104335] target_core_register_fabric() trying autoload for fc
[ 1240.104338] target_core_get_fabric() failed for fc
[ 1240.104801] target_core_register_fabric() trying autoload for usb_gadget
(Continue reading)

Olaf Hering | 4 Mar 15:04 2015
Picon

[PATCH rtslib] Add support for xen-scsiback

With this change the xen-scsiback driver added to Linux 3.18 can be
configured with targetcli.

Signed-off-by: Olaf Hering <olaf <at> aepfle.de>
---
 policy/fabric_xen-pvscsi.lio |  9 +++++++++
 specs/xen-pvscsi.spec        | 11 +++++++++++
 2 files changed, 20 insertions(+)

diff --git a/policy/fabric_xen-pvscsi.lio b/policy/fabric_xen-pvscsi.lio
new file mode 100644
index 0000000..60c1c4f
--- /dev/null
+++ b/policy/fabric_xen-pvscsi.lio
 <at>  <at>  -0,0 +1,9  <at>  <at> 
+fabric xen-pvscsi {
+    target %naa tpgt %int {
+        nexus_wwn %naa
+        lun %int backend %backend
+        parameter {
+            alias %str
+        }
+    }
+}
diff --git a/specs/xen-pvscsi.spec b/specs/xen-pvscsi.spec
new file mode 100644
index 0000000..28b29dd
--- /dev/null
+++ b/specs/xen-pvscsi.spec
 <at>  <at>  -0,0 +1,11  <at>  <at> 
(Continue reading)


Gmane