Ticket #8798: tgt.3.patch

File tgt.3.patch, 9.1 KB (added by m.storchak@…, 4 years ago)

Refined patch: added dependency on DIRECT_IO

  • new file net/tgt/Makefile

    Signed-off-by: Maxim Storchak <m.storchak@gmail.com>
    ---
    diff --git a/net/tgt/Makefile b/net/tgt/Makefile
    new file mode 100644
    index 0000000..cdd7e7a
    - +  
     1# 
     2# Copyright (C) 2012 OpenWrt.org 
     3# 
     4# This is free software, licensed under the GNU General Public License v2. 
     5# See /LICENSE for more information. 
     6 
     7include $(TOPDIR)/rules.mk 
     8 
     9PKG_NAME:=tgt 
     10PKG_VERSION:=1.0.45 
     11PKG_REV:=8265a4b6dec6b4d09fcd48dd4e876f8c69766f4e 
     12PKG_RELEASE:=1 
     13 
     14PKG_SOURCE_PROTO:=git 
     15PKG_SOURCE_URL:=https://github.com/fujita/tgt.git 
     16 
     17#PKG_MD5SUM:= 
     18 
     19 
     20PKG_SOURCE_VERSION:=$(PKG_REV) 
     21PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REV).tar.gz 
     22PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) 
     23 
     24PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) 
     25 
     26include $(INCLUDE_DIR)/package.mk 
     27 
     28define Package/tgt 
     29  SECTION:=net 
     30  CATEGORY:=Network 
     31  URL:=http://stgt.sourceforge.net/ 
     32  TITLE:=userspace iSCSI target 
     33  DEPENDS:=+libpthread +libaio +@KERNEL_AIO +@KERNEL_DIRECT_IO 
     34endef 
     35 
     36define Package/tgt/description 
     37Linux SCSI target framework (tgt) aims to simplify various SCSI target driver (iSCSI, Fibre Channel, SRP, etc) creation and maintenance. 
     38Key goals of the project are the clean integration into the scsi-mid layer and implementing a great portion of tgt in user space. 
     39Tgt consists of kernel-space and user-space code. The kernel-space component is included in upstream as of 2.6.20. 
     40Note that if you are interested in only iSCSI (probably you are), you need only the user-space code (any kernel version is fine). 
     41endef 
     42 
     43define Build/Compile 
     44        CC=$(TARGET_CC) $(MAKE) -C $(PKG_BUILD_DIR) \ 
     45                DESTDIR="$(PKG_INSTALL_DIR)" \ 
     46                LD="$(TARGET_CC)" \ 
     47                install-programs 
     48endef 
     49 
     50define Package/tgt/conffiles 
     51        /etc/config/tgt 
     52endef 
     53 
     54define Package/tgt/install 
     55        $(INSTALL_DIR) $(1)/ 
     56        $(INSTALL_DIR) $(1)/usr/sbin 
     57        $(CP) ./files/* $(1)/ 
     58        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/tgtd $(1)/usr/sbin/ 
     59        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/tgtadm $(1)/usr/sbin/ 
     60endef 
     61 
     62$(eval $(call BuildPackage,tgt)) 
  • new file net/tgt/files/etc/config/tgt

    diff --git a/net/tgt/files/etc/config/tgt b/net/tgt/files/etc/config/tgt
    new file mode 100644
    index 0000000..250d12d
    - +  
     1config target 1 
     2        option name 'iqn.2012-06.org.openwrt:target1' 
     3        option allow ALL 
     4 
     5#config target 2 
     6#       option name 'iqn.2012-06.org.openwrt:t2' 
     7#       option allow 192.168.1.0/24 
     8 
     9 
     10# all options are set to default, except for the device 
     11# for all type and bstype values see tgtd(8) 
     12# lun "name" is constructed as TGTID_LUN 
     13#config lun                        1_1 
     14#       option readonly 0 
     15#       option device /dev/sda 
     16#       option type disk 
     17#       option bstype rdwr 
     18#       option sync 0 
     19#       option direct 0 
     20 
     21 
     22#config lun 2_1 
     23#       option readonly 0 
     24#       option device /mnt/iscsi.img 
     25 
     26#config lun 2_2 
     27#       option device /dev/sdc 
     28 
     29#config account 
     30#       option target 1 
     31#       option user "username1" 
     32#       option password "pass1" 
     33 
     34#config account 
     35#       option target 2 
     36#       option user "user2" 
     37#       option password "pwd2" 
     38#       option outgoing 1 
  • new file net/tgt/files/etc/init.d/tgt

    diff --git a/net/tgt/files/etc/init.d/tgt b/net/tgt/files/etc/init.d/tgt
    new file mode 100755
    index 0000000..6d31d64
    - +  
     1#!/bin/sh /etc/rc.common 
     2START=91 
     3STOP=10 
     4 
     5EXTRA_COMMANDS="show" 
     6EXTRA_HELP="    show    Show current configuration of tgtd" 
     7 
     8NAME=tgt 
     9PROG=/usr/sbin/tgtd 
     10USE_PROCD=1 
     11 
     12tgtadm="/usr/sbin/tgtadm --lld iscsi" 
     13 
     14handle_lun() { 
     15        local tgt_lun=$1 
     16        local tgtid=$2 
     17        local ro device type bstype sync direct 
     18        local my_tgtid=${tgt_lun%_*} 
     19        local lun=${tgt_lun#*_} 
     20        [ $my_tgtid -eq $tgtid ] || return 0 
     21 
     22        config_get device $1 device "" 
     23        [ "$device" ] || return 1 
     24 
     25        config_get type $1 type disk 
     26        config_get bstype $1 bstype rdwr 
     27        config_get_bool readonly $1 readonly 0 
     28        config_get_bool sync $1 sync 0 
     29        config_get_bool direct $1 direct 0 
     30        if [ $sync -ne 0 -o $direct -ne 0 ]; then 
     31                local bsoflags 
     32                [ $sync -ne 0 ] && bsoflags="sync" 
     33                [ $direct -ne 0 ] && bsoflags="direct" 
     34                [ $sync -ne 0 -a $direct -ne 0 ] && bsoflags="sync:direct" 
     35                bsoflags="--bsoflags $bsoflags" 
     36        fi 
     37 
     38        local _tgtadm="$tgtadm --mode logicalunit --tid $tgtid --lun $lun" 
     39        $_tgtadm --op new --backing-store $device --device-type $type --bstype $bstype --bstype $bstype $bsoflags || return 1 
     40        $_tgtadm --op update --param readonly=$readonly || return 1 
     41} 
     42 
     43handle_account() { 
     44        local tgtid=$2 
     45        local _tgtadm="$tgtadm --mode account" 
     46        local target user password outgoing 
     47 
     48        config_get target $1 target "" 
     49        [ "$target" ] || return 1 
     50        [ $target -eq $tgtid ] || return 0 
     51 
     52        config_get user $1 user "" 
     53        [ "$user" ] || return 1 
     54 
     55        config_get password $1 password "" 
     56        config_get_bool outgoing $1 outgoing 0 
     57        [ "$outgoing" -ne 0 ] && outgoing=--outgoing || outgoing="" 
     58 
     59        $_tgtadm --op new --user "$user" --password "$password" || return 1 
     60        $_tgtadm --op bind --tid $tgtid --user "$user" $outgoing || return 1 
     61} 
     62 
     63handle_target() { 
     64        local tgtid=$1 
     65        local tgtname allow 
     66        local _tgtadm="$tgtadm --mode target" 
     67 
     68        [ $tgtid -ge 0 ] || return 1 
     69 
     70        config_get tgtname $1 name iqn.2012-06.org.openwrt 
     71        config_get allow $1 allow ALL 
     72 
     73        $_tgtadm --op new --tid $tgtid --targetname $tgtname || return 1 
     74        $_tgtadm --op bind --tid $tgtid -I $allow || return 1 
     75 
     76        config_foreach handle_lun lun $tgtid || return 1 
     77        config_foreach handle_account account $tgtid || return 1 
     78} 
     79 
     80configure() { 
     81        config_load $NAME 
     82        $tgtadm --mode sys --op update --name State -v offline || return 1 
     83        config_foreach handle_target target || return 1 
     84        $tgtadm --mode sys --op update --name State -v ready || return 1 
     85        return 0 
     86} 
     87 
     88start_service() { 
     89        procd_open_instance 
     90        procd_set_param command $PROG -f 
     91        procd_set_param respawn 
     92        procd_close_instance 
     93        logger -t $NAME -s "Configuration will be loaded in seconds" 
     94        ( sleep 5; configure || { stop_service; exit 1; } ) & 
     95} 
     96 
     97stop_service() { 
     98        $tgtadm --mode sys --op update --name State -v offline 
     99        $tgtadm --mode target  --op show \ 
     100                | awk  '$1 == "Target" {sub(/:/,"",$2); print $2}' \ 
     101                | xargs -n1 $tgtadm --mode target --op delete --tid 
     102        $tgtadm --mode sys --op delete 
     103} 
     104 
     105show() { 
     106        $tgtadm --mode target --op show 
     107} 
  • new file net/tgt/patches/010-fallocate.patch

    diff --git a/net/tgt/patches/010-fallocate.patch b/net/tgt/patches/010-fallocate.patch
    new file mode 100644
    index 0000000..cb8ddb4
    - +  
     1--- tgt-1.0.42/usr/util.h.orig  2013-12-26 16:18:54.000000000 +0200 
     2+++ tgt-1.0.42/usr/util.h       2013-12-26 16:19:10.000000000 +0200 
     3@@ -212,11 +212,6 @@ 
     4  */ 
     5 static inline int unmap_file_region(int fd, off_t offset, off_t length) 
     6 { 
     7-#ifdef FALLOC_FL_PUNCH_HOLE 
     8-       if (fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, 
     9-                       offset, length) == 0) 
     10-               return 0; 
     11-#endif 
     12        return -1; 
     13 } 
     14  
  • new file net/tgt/patches/020-usr_Makefile.patch

    diff --git a/net/tgt/patches/020-usr_Makefile.patch b/net/tgt/patches/020-usr_Makefile.patch
    new file mode 100644
    index 0000000..323e523
    - +  
     1--- tgt-1.0.42/usr/Makefile.orig        2013-12-26 16:10:03.000000000 +0200 
     2+++ tgt-1.0.42/usr/Makefile     2013-12-26 18:08:11.103578759 +0200 
     3@@ -1,13 +1,13 @@ 
     4 sbindir ?= $(PREFIX)/sbin 
     5 libdir ?= $(PREFIX)/lib/tgt 
     6  
     7-ifneq ($(shell test -e /usr/include/linux/signalfd.h && echo 1),) 
     8+#ifneq ($(shell test -e /usr/include/linux/signalfd.h && echo 1),) 
     9 CFLAGS += -DUSE_SIGNALFD 
     10-endif 
     11+#endif 
     12  
     13-ifneq ($(shell test -e /usr/include/sys/timerfd.h && echo 1),) 
     14+#ifneq ($(shell test -e /usr/include/sys/timerfd.h && echo 1),) 
     15 CFLAGS += -DUSE_TIMERFD 
     16-endif 
     17+#endif 
     18  
     19 TGTD_OBJS += $(addprefix iscsi/, conn.o param.o session.o \ 
     20                iscsid.o target.o chap.o sha1.o md5.o transport.o iscsi_tcp.o \ 
     21@@ -17,8 +17,9 @@ 
     22 MODULES += bs_rbd.so 
     23 endif 
     24  
     25-ifneq ($(shell test -e /usr/include/sys/eventfd.h && test -e /usr/include/libaio.h && echo 1),) 
     26-CFLAGS += -DUSE_EVENTFD 
     27+#ifneq ($(shell test -e /usr/include/sys/eventfd.h && test -e $(STAGING_DIR)/usr/include/libaio.h && echo 1),) 
     28+ifneq ((test -e $(STAGING_DIR)/usr/include/libaio.h && echo 1),) 
     29+CFLAGS += -DUSE_EVENTFD -I$(STAGING_DIR)/usr/include/ 
     30 TGTD_OBJS += bs_aio.o 
     31 LIBS += -laio 
     32 endif 
     33@@ -43,7 +44,7 @@ 
     34  
     35 LIBS += -lpthread -ldl 
     36  
     37-PROGRAMS += tgtd tgtadm tgtimg 
     38+PROGRAMS += tgtd tgtadm 
     39 TGTD_OBJS += tgtd.o mgmt.o target.o scsi.o log.o driver.o util.o work.o \ 
     40                concat_buf.o parser.o spc.o sbc.o mmc.o osd.o scc.o smc.o \ 
     41                ssc.o libssc.o bs_rdwr.o bs_ssc.o \ 
     42@@ -70,14 +71,8 @@ 
     43  
     44 -include $(TGTADM_DEP) 
     45  
     46-TGTIMG_OBJS = tgtimg.o libssc.o libcrc32c.o 
     47 TGTIMG_DEP = $(TGTIMG_OBJS:.o=.d) 
     48  
     49-tgtimg: $(TGTIMG_OBJS) 
     50-       $(CC) $^ -o $@ 
     51- 
     52--include $(TGTIMG_DEP) 
     53- 
     54 %.o: %.c 
     55        $(CC) -c $(CFLAGS) $*.c -o $*.o 
     56        @$(CC) -MM $(CFLAGS) -MF $*.d -MT $*.o $*.c 
  • new file net/tgt/patches/030-Makefile.patch

    diff --git a/net/tgt/patches/030-Makefile.patch b/net/tgt/patches/030-Makefile.patch
    new file mode 100644
    index 0000000..4ad86d2
    - +  
     1diff --git a/Makefile b/Makefile 
     2index 95af23a..281458f 100644 
     3--- a/Makefile 
     4+++ b/Makefile 
     5@@ -62,7 +62,7 @@ clean-conf: 
     6        $(MAKE) -C conf clean 
     7  
     8 .PHONY: install 
     9-install: install-programs install-doc install-conf install-scripts 
     10+install: install-programs 
     11  
     12 .PHONY: rpm 
     13 rpm: