[PATCH 0/14] target/iscsi: start and stop NP listeners on demand

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Currently iSCSI network portal listener kthreads are spawned regardless
of whether a TPG is disabled or enabled. LIO also accepts connections
and handles requests (E.g. SendTargets) via disabled TPGs.

This patch-set ensures that network portal listener kthreads are only
spawned when a TPG is enabled.

This behaviour is demonstrated with the following test:
----
#!/bin/bash

echo -e "\nEnable tpgt_1 and add a (3260) portal - should spawn iscsi_np kthread listener"
echo 1 > /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.hex-7.x8664:sn.9350a8ae6bd6/tpgt_1/enable
mkdir /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.hex-7.x8664:sn.9350a8ae6bd6/tpgt_1/np/10.160.64.64:3260
netstat -l
ps -elf|grep iscsi_np|grep -v grep

echo -e "\nDisable tpgt_2 and add a (3261) portal - shouldn't spawn a new listener"
echo 0 > /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.hex-7.x8664:sn.9350a8ae6bd6/tpgt_2/enable
mkdir /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.hex-7.x8664:sn.9350a8ae6bd6/tpgt_2/np/10.160.64.64:3261
netstat -l
ps -elf|grep iscsi_np|grep -v grep

echo -e "\nEnable tpgt_2 - should spawn new listener for existing (3261) portal"
echo 1 > /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.hex-7.x8664:sn.9350a8ae6bd6/tpgt_2/enable
netstat -l
ps -elf|grep iscsi_np|grep -v grep

echo -e "\nDisable tpgt_1 - should shutdown (3260) listener"
echo 0 > /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.hex-7.x8664:sn.9350a8ae6bd6/tpgt_1/enable
netstat -l
ps -elf|grep iscsi_np|grep -v grep

echo -e "\nDelete tpgt_2 np (while enabled) - should shutdown (3261) listener"
rmdir /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.hex-7.x8664:sn.9350a8ae6bd6/tpgt_2/np/10.160.64.64:3261
netstat -l
ps -elf|grep iscsi_np|grep -v grep
----

With this patch-set, the test output is:
====

Enable tpgt_1 and add a (3260) portal - should spawn iscsi_np kthread listener
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 12:42 ?        00:00:00 [iscsi_np]

Disable tpgt_2 and add a (3261) portal - shouldn't spawn a new listener
[   16.589885] iSCSI Target Portal Group: 2 is already inactive, ignoring request.
./lio_tpg_state_test.sh: line 10: echo: write error: Invalid argument
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 12:42 ?        00:00:00 [iscsi_np]

Enable tpgt_2 - should spawn new listener for existing (3261) portal
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN
tcp        0      0 10.160.64.64:3261       *:*                     LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 12:42 ?        00:00:00 [iscsi_np]
1 S root      1061     2  0  80   0 -     0 inet_c 12:42 ?        00:00:00 [iscsi_np]

Disable tpgt_1 - should shutdown (3260) listener
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 10.160.64.64:3261       *:*                     LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1061     2  0  80   0 -     0 inet_c 12:42 ?        00:00:00 [iscsi_np]

Delete tpgt_2 np (while enabled) - should shutdown (3261) listener
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
====

Without this patch-set, the test output is:
====

Enable tpgt_1 and add a (3260) portal - should spawn iscsi_np kthread listener
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN      
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]

Disable tpgt_2 and add a (3261) portal - shouldn't spawn a new listener
[   26.617861] iSCSI Target Portal Group: 2 is already inactive, ignoring request.
./lio_tpg_state_test.sh: line 10: echo: write error: Invalid argument
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN      
tcp        0      0 10.160.64.64:3261       *:*                     LISTEN      
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]
1 S root      1057     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]

Enable tpgt_2 - should spawn new listener for existing (3261) portal
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN      
tcp        0      0 10.160.64.64:3261       *:*                     LISTEN      
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]
1 S root      1057     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]

Disable tpgt_1 - should shutdown (3260) listener
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN      
tcp        0      0 10.160.64.64:3261       *:*                     LISTEN      
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]
1 S root      1057     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]

Delete tpgt_2 np (while enabled) - should shutdown (3261) listener
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 10.160.64.64:3260       *:*                     LISTEN      
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
1 S root      1051     2  0  80   0 -     0 inet_c 13:17 ?        00:00:00 [iscsi_np]
====

Feedback appreciated.

 drivers/target/iscsi/iscsi_target.c       | 114 ++++++++++++++--------
 drivers/target/iscsi/iscsi_target.h       |   5 +-
 drivers/target/iscsi/iscsi_target_login.c |  22 -----
 drivers/target/iscsi/iscsi_target_login.h |   2 -
 drivers/target/iscsi/iscsi_target_tpg.c   |  84 +++++++++++++---
 5 files changed, 144 insertions(+), 83 deletions(-)

Cheers, David
--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux