aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2010-12-23 13:03:14 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2010-12-23 13:03:14 +0000
commit780e50bac1cf1c473af3e1dbb03fdb68c1798893 (patch)
tree7886610c1f4290915d6b6ae72e575f937404a432
parentee2ff0170d3ddf8da0e217c2f0faec223129b853 (diff)
parentbc1ab2d7a874eb891b5152c1fb77af81b7fc5d38 (diff)
downloadalpine_aports-780e50bac1cf1c473af3e1dbb03fdb68c1798893.tar.bz2
alpine_aports-780e50bac1cf1c473af3e1dbb03fdb68c1798893.tar.xz
alpine_aports-780e50bac1cf1c473af3e1dbb03fdb68c1798893.zip
Merge git://git.alpinelinux.org/aports-clandmeter
Conflicts: testing/iscsi-scst/APKBUILD
-rw-r--r--main/lftp/APKBUILD4
-rw-r--r--testing/iscsi-scst/APKBUILD15
-rw-r--r--testing/linux-scst/APKBUILD29
-rw-r--r--testing/linux-scst/kernelconfig.x86_64161
-rw-r--r--testing/linux-scst/r8169-add-gro-support.patch52
-rw-r--r--testing/linux-scst/r8169-fix-rx-checksum-offload.patch62
-rw-r--r--testing/linux-scst/scst-2.6.36-2.0.0.patch (renamed from testing/linux-scst/scst-2.6.35-svn-3161.patch)2465
-rw-r--r--testing/linux-scst/unionfs-2.5.7_for_2.6.36.diff (renamed from testing/linux-scst/unionfs-2.5.7_for_2.6.35.8.patch)92
-rw-r--r--testing/scstadmin/APKBUILD9
9 files changed, 1029 insertions, 1860 deletions
diff --git a/main/lftp/APKBUILD b/main/lftp/APKBUILD
index 5d4bd1ba28..020060e5b9 100644
--- a/main/lftp/APKBUILD
+++ b/main/lftp/APKBUILD
@@ -1,7 +1,7 @@
1# Contributor: Carlo Landmeter <clandmeter@gmail.com> 1# Contributor: Carlo Landmeter <clandmeter@gmail.com>
2# Maintainer: Carlo Landmeter <clandmeter@gmail.com> 2# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
3pkgname=lftp 3pkgname=lftp
4pkgver=4.1.0 4pkgver=4.1.1
5pkgrel=0 5pkgrel=0
6pkgdesc="LFTP is sophisticated ftp/http client" 6pkgdesc="LFTP is sophisticated ftp/http client"
7url="http://lftp.yar.ru/" 7url="http://lftp.yar.ru/"
@@ -32,4 +32,4 @@ package() {
32 make -j1 DESTDIR="$pkgdir" install 32 make -j1 DESTDIR="$pkgdir" install
33} 33}
34 34
35md5sums="0e2370d54b45eb7dc5406c6627d5a177 lftp-4.1.0.tar.bz2" 35md5sums="87717c30869a626cc53817c1c0a585ef lftp-4.1.1.tar.bz2"
diff --git a/testing/iscsi-scst/APKBUILD b/testing/iscsi-scst/APKBUILD
index 91f3387376..8a2fd46647 100644
--- a/testing/iscsi-scst/APKBUILD
+++ b/testing/iscsi-scst/APKBUILD
@@ -3,7 +3,7 @@
3 3
4pkgname=iscsi-scst 4pkgname=iscsi-scst
5pkgver=2.0.0 5pkgver=2.0.0
6pkgrel=1 6pkgrel=2
7pkgdesc="ISCSI target for SCST - userspace tools" 7pkgdesc="ISCSI target for SCST - userspace tools"
8url="http://iscsi-scst.sourceforge.net/" 8url="http://iscsi-scst.sourceforge.net/"
9arch="x86_64" 9arch="x86_64"
@@ -12,15 +12,14 @@ depends=
12install= 12install=
13makedepends="openssl-dev bash" 13makedepends="openssl-dev bash"
14subpackages= 14subpackages=
15_svn="3161" 15source="http://downloads.sourceforge.net/scst/$pkgname-$pkgver.tar.gz
16source="http://alpine.nethq.org/distfiles/$pkgname-$pkgver-svn-$_svn.tar.gz 16 http://downloads.sourceforge.net/scst/scst-$pkgver.tar.gz
17 http://alpine.nethq.org/distfiles/scst-$pkgver-svn-$_svn.tar.gz
18 $pkgname.initd 17 $pkgname.initd
19 $pkgname.confd 18 $pkgname.confd
20 scst.conf 19 scst.conf
21 " 20 "
22 21
23_builddir="$srcdir"/$pkgname 22_builddir="$srcdir/$pkgname-$pkgver"
24prepare() { 23prepare() {
25 cd "$_builddir" 24 cd "$_builddir"
26 cp Makefile_user_space_only Makefile 25 cp Makefile_user_space_only Makefile
@@ -28,7 +27,7 @@ prepare() {
28 27
29build() { 28build() {
30 cd "$_builddir" 29 cd "$_builddir"
31 make all SCST_INC_DIR="$srcdir"/scst/include || return 1 30 make all SCST_INC_DIR="$srcdir/scst-$pkgver/include" || return 1
32} 31}
33 32
34package() { 33package() {
@@ -41,8 +40,8 @@ package() {
41 install -D -m 644 "$srcdir"/scst.conf "$pkgdir"/etc/scst.conf 40 install -D -m 644 "$srcdir"/scst.conf "$pkgdir"/etc/scst.conf
42} 41}
43 42
44md5sums="0980e7f0cc57d3a09cc57ba4b127ef12 iscsi-scst-2.0.0-svn-3161.tar.gz 43md5sums="04e623184f9061bea06b9ba10631a620 iscsi-scst-2.0.0.tar.gz
4573c1ec37231918e5183e78f1ec8f2302 scst-2.0.0-svn-3161.tar.gz 44e7262a26d38d8311d0296b36718d593b scst-2.0.0.tar.gz
466440aac6ffdf18c90ae9824f04f8c638 iscsi-scst.initd 456440aac6ffdf18c90ae9824f04f8c638 iscsi-scst.initd
476d8b6e27d47748f7805fdb318b62bb3b iscsi-scst.confd 466d8b6e27d47748f7805fdb318b62bb3b iscsi-scst.confd
48e8eda9872b3da3a55605c7fa17cb6c68 scst.conf" 47e8eda9872b3da3a55605c7fa17cb6c68 scst.conf"
diff --git a/testing/linux-scst/APKBUILD b/testing/linux-scst/APKBUILD
index 6f494c17e9..ece8b82957 100644
--- a/testing/linux-scst/APKBUILD
+++ b/testing/linux-scst/APKBUILD
@@ -2,8 +2,8 @@
2 2
3_flavor=scst 3_flavor=scst
4pkgname=linux-${_flavor} 4pkgname=linux-${_flavor}
5pkgver=2.6.35.9 5pkgver=2.6.36.2
6_kernver=2.6.35 6_kernver=2.6.36
7pkgrel=0 7pkgrel=0
8pkgdesc="Linux kernel optimised for scst" 8pkgdesc="Linux kernel optimised for scst"
9url="http://scst.sourceforge.net" 9url="http://scst.sourceforge.net"
@@ -12,16 +12,12 @@ makedepends="perl installkernel bash"
12options="!strip" 12options="!strip"
13_config=${config:-kernelconfig.${CARCH}} 13_config=${config:-kernelconfig.${CARCH}}
14install= 14install=
15_scst_svn="3161"
16source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2 15source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2
17 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-$pkgver.bz2 16 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-$pkgver.bz2
18 0004-arp-flush-arp-cache-on-device-change.patch
19 r8169-fix-rx-checksum-offload.patch
20 r8169-add-gro-support.patch
21 setlocalversion.patch
22 kernelconfig.x86_64 17 kernelconfig.x86_64
23 unionfs-2.5.7_for_2.6.35.8.patch 18 scst-$_kernver-2.0.0.patch
24 scst-2.6.35-svn-3161.patch 19 unionfs-2.5.7_for_$_kernver.diff
20 0004-arp-flush-arp-cache-on-device-change.patch
25 " 21 "
26subpackages="$pkgname-dev linux-firmware:firmware" 22subpackages="$pkgname-dev linux-firmware:firmware"
27arch="x86_64" 23arch="x86_64"
@@ -144,12 +140,9 @@ firmware() {
144 mv "$pkgdir"/lib/firmware "$subpkgdir"/lib/ 140 mv "$pkgdir"/lib/firmware "$subpkgdir"/lib/
145} 141}
146 142
147md5sums="091abeb4684ce03d1d936851618687b6 linux-2.6.35.tar.bz2 143md5sums="61f3739a73afb6914cb007f37fb09b62 linux-2.6.36.tar.bz2
148eca407cf4872ad77ae23adc8242389c4 patch-2.6.35.9.bz2 1444b01c5f9657a9587b262df5f8d784116 patch-2.6.36.2.bz2
149776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch 1453d93fd576b38ac5f68ceac44c65df380 kernelconfig.x86_64
1500ccecafd4123dcad0b0cd7787553d734 r8169-fix-rx-checksum-offload.patch 14628c61abeb4932f32c9c5d2f069312148 scst-2.6.36-2.0.0.patch
151139b39da44ecb577275be53d7d365949 r8169-add-gro-support.patch 147fec281a4e03fed560ce309ad8fc5a592 unionfs-2.5.7_for_2.6.36.diff
1528c224ba0cdf0aa572c7eb50379435be4 setlocalversion.patch 148776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch"
1538b50f527b834f693e9cfbcabf29b04f3 kernelconfig.x86_64
154e4185c1bb1d88594c67eb154d0c06692 unionfs-2.5.7_for_2.6.35.8.patch
155f8aa57373ab14ece95ecdaa15840fa25 scst-2.6.35-svn-3161.patch"
diff --git a/testing/linux-scst/kernelconfig.x86_64 b/testing/linux-scst/kernelconfig.x86_64
index 6d9675b93a..9d877d166c 100644
--- a/testing/linux-scst/kernelconfig.x86_64
+++ b/testing/linux-scst/kernelconfig.x86_64
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.35.9 3# Linux kernel version: 2.6.36.2
4# Mon Dec 20 14:49:00 2010 4# Thu Dec 23 12:32:35 2010
5# 5#
6CONFIG_64BIT=y 6CONFIG_64BIT=y
7# CONFIG_X86_32 is not set 7# CONFIG_X86_32 is not set
@@ -10,7 +10,6 @@ CONFIG_X86=y
10CONFIG_INSTRUCTION_DECODER=y 10CONFIG_INSTRUCTION_DECODER=y
11CONFIG_OUTPUT_FORMAT="elf64-x86-64" 11CONFIG_OUTPUT_FORMAT="elf64-x86-64"
12CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" 12CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
13CONFIG_GENERIC_TIME=y
14CONFIG_GENERIC_CMOS_UPDATE=y 13CONFIG_GENERIC_CMOS_UPDATE=y
15CONFIG_CLOCKSOURCE_WATCHDOG=y 14CONFIG_CLOCKSOURCE_WATCHDOG=y
16CONFIG_GENERIC_CLOCKEVENTS=y 15CONFIG_GENERIC_CLOCKEVENTS=y
@@ -93,8 +92,6 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
93# RCU Subsystem 92# RCU Subsystem
94# 93#
95CONFIG_TREE_RCU=y 94CONFIG_TREE_RCU=y
96# CONFIG_TREE_PREEMPT_RCU is not set
97# CONFIG_TINY_RCU is not set
98# CONFIG_RCU_TRACE is not set 95# CONFIG_RCU_TRACE is not set
99CONFIG_RCU_FANOUT=32 96CONFIG_RCU_FANOUT=32
100# CONFIG_RCU_FANOUT_EXACT is not set 97# CONFIG_RCU_FANOUT_EXACT is not set
@@ -151,6 +148,7 @@ CONFIG_PROFILING=y
151CONFIG_OPROFILE=m 148CONFIG_OPROFILE=m
152# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set 149# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
153CONFIG_HAVE_OPROFILE=y 150CONFIG_HAVE_OPROFILE=y
151# CONFIG_KPROBES is not set
154CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
155CONFIG_USER_RETURN_NOTIFIER=y 153CONFIG_USER_RETURN_NOTIFIER=y
156CONFIG_HAVE_IOREMAP_PROT=y 154CONFIG_HAVE_IOREMAP_PROT=y
@@ -164,13 +162,12 @@ CONFIG_HAVE_DMA_API_DEBUG=y
164CONFIG_HAVE_HW_BREAKPOINT=y 162CONFIG_HAVE_HW_BREAKPOINT=y
165CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y 163CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
166CONFIG_HAVE_USER_RETURN_NOTIFIER=y 164CONFIG_HAVE_USER_RETURN_NOTIFIER=y
165CONFIG_HAVE_PERF_EVENTS_NMI=y
167 166
168# 167#
169# GCOV-based kernel profiling 168# GCOV-based kernel profiling
170# 169#
171# CONFIG_GCOV_KERNEL is not set 170# CONFIG_GCOV_KERNEL is not set
172CONFIG_SLOW_WORK=y
173# CONFIG_SLOW_WORK_DEBUG is not set
174# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 171# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
175CONFIG_RT_MUTEXES=y 172CONFIG_RT_MUTEXES=y
176CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -191,7 +188,6 @@ CONFIG_BLK_DEV_BSG=y
191CONFIG_IOSCHED_NOOP=y 188CONFIG_IOSCHED_NOOP=y
192CONFIG_IOSCHED_DEADLINE=m 189CONFIG_IOSCHED_DEADLINE=m
193CONFIG_IOSCHED_CFQ=y 190CONFIG_IOSCHED_CFQ=y
194# CONFIG_DEFAULT_DEADLINE is not set
195CONFIG_DEFAULT_CFQ=y 191CONFIG_DEFAULT_CFQ=y
196# CONFIG_DEFAULT_NOOP is not set 192# CONFIG_DEFAULT_NOOP is not set
197CONFIG_DEFAULT_IOSCHED="cfq" 193CONFIG_DEFAULT_IOSCHED="cfq"
@@ -250,28 +246,7 @@ CONFIG_PARAVIRT=y
250CONFIG_PARAVIRT_CLOCK=y 246CONFIG_PARAVIRT_CLOCK=y
251CONFIG_NO_BOOTMEM=y 247CONFIG_NO_BOOTMEM=y
252# CONFIG_MEMTEST is not set 248# CONFIG_MEMTEST is not set
253# CONFIG_M386 is not set
254# CONFIG_M486 is not set
255# CONFIG_M586 is not set
256# CONFIG_M586TSC is not set
257# CONFIG_M586MMX is not set
258# CONFIG_M686 is not set
259# CONFIG_MPENTIUMII is not set
260# CONFIG_MPENTIUMIII is not set
261# CONFIG_MPENTIUMM is not set
262# CONFIG_MPENTIUM4 is not set
263# CONFIG_MK6 is not set
264# CONFIG_MK7 is not set
265# CONFIG_MK8 is not set 249# CONFIG_MK8 is not set
266# CONFIG_MCRUSOE is not set
267# CONFIG_MEFFICEON is not set
268# CONFIG_MWINCHIPC6 is not set
269# CONFIG_MWINCHIP3D is not set
270# CONFIG_MGEODEGX1 is not set
271# CONFIG_MGEODE_LX is not set
272# CONFIG_MCYRIXIII is not set
273# CONFIG_MVIAC3_2 is not set
274# CONFIG_MVIAC7 is not set
275# CONFIG_MPSC is not set 250# CONFIG_MPSC is not set
276# CONFIG_MCORE2 is not set 251# CONFIG_MCORE2 is not set
277# CONFIG_MATOM is not set 252# CONFIG_MATOM is not set
@@ -327,8 +302,6 @@ CONFIG_ARCH_SPARSEMEM_ENABLE=y
327CONFIG_ARCH_SELECT_MEMORY_MODEL=y 302CONFIG_ARCH_SELECT_MEMORY_MODEL=y
328CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 303CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
329CONFIG_SELECT_MEMORY_MODEL=y 304CONFIG_SELECT_MEMORY_MODEL=y
330# CONFIG_FLATMEM_MANUAL is not set
331# CONFIG_DISCONTIGMEM_MANUAL is not set
332CONFIG_SPARSEMEM_MANUAL=y 305CONFIG_SPARSEMEM_MANUAL=y
333CONFIG_SPARSEMEM=y 306CONFIG_SPARSEMEM=y
334CONFIG_HAVE_MEMORY_PRESENT=y 307CONFIG_HAVE_MEMORY_PRESENT=y
@@ -391,6 +364,7 @@ CONFIG_ACPI_PROCFS=y
391CONFIG_ACPI_PROCFS_POWER=y 364CONFIG_ACPI_PROCFS_POWER=y
392# CONFIG_ACPI_POWER_METER is not set 365# CONFIG_ACPI_POWER_METER is not set
393CONFIG_ACPI_SYSFS_POWER=y 366CONFIG_ACPI_SYSFS_POWER=y
367CONFIG_ACPI_EC_DEBUGFS=m
394CONFIG_ACPI_PROC_EVENT=y 368CONFIG_ACPI_PROC_EVENT=y
395CONFIG_ACPI_AC=m 369CONFIG_ACPI_AC=m
396CONFIG_ACPI_BATTERY=m 370CONFIG_ACPI_BATTERY=m
@@ -413,6 +387,7 @@ CONFIG_ACPI_HED=m
413CONFIG_ACPI_APEI=y 387CONFIG_ACPI_APEI=y
414CONFIG_ACPI_APEI_GHES=m 388CONFIG_ACPI_APEI_GHES=m
415CONFIG_ACPI_APEI_EINJ=m 389CONFIG_ACPI_APEI_EINJ=m
390CONFIG_ACPI_APEI_ERST_DEBUG=m
416# CONFIG_SFI is not set 391# CONFIG_SFI is not set
417 392
418# 393#
@@ -450,7 +425,7 @@ CONFIG_X86_SPEEDSTEP_LIB=m
450CONFIG_CPU_IDLE=y 425CONFIG_CPU_IDLE=y
451CONFIG_CPU_IDLE_GOV_LADDER=y 426CONFIG_CPU_IDLE_GOV_LADDER=y
452CONFIG_CPU_IDLE_GOV_MENU=y 427CONFIG_CPU_IDLE_GOV_MENU=y
453CONFIG_INTEL_IDLE=m 428# CONFIG_INTEL_IDLE is not set
454 429
455# 430#
456# Memory power savings 431# Memory power savings
@@ -578,13 +553,7 @@ CONFIG_TCP_CONG_LP=m
578CONFIG_TCP_CONG_VENO=m 553CONFIG_TCP_CONG_VENO=m
579CONFIG_TCP_CONG_YEAH=m 554CONFIG_TCP_CONG_YEAH=m
580CONFIG_TCP_CONG_ILLINOIS=m 555CONFIG_TCP_CONG_ILLINOIS=m
581# CONFIG_DEFAULT_BIC is not set
582CONFIG_DEFAULT_CUBIC=y 556CONFIG_DEFAULT_CUBIC=y
583# CONFIG_DEFAULT_HTCP is not set
584# CONFIG_DEFAULT_HYBLA is not set
585# CONFIG_DEFAULT_VEGAS is not set
586# CONFIG_DEFAULT_VENO is not set
587# CONFIG_DEFAULT_WESTWOOD is not set
588# CONFIG_DEFAULT_RENO is not set 557# CONFIG_DEFAULT_RENO is not set
589CONFIG_DEFAULT_TCP_CONG="cubic" 558CONFIG_DEFAULT_TCP_CONG="cubic"
590CONFIG_TCP_MD5SIG=y 559CONFIG_TCP_MD5SIG=y
@@ -614,6 +583,7 @@ CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
614CONFIG_IPV6_PIMSM_V2=y 583CONFIG_IPV6_PIMSM_V2=y
615CONFIG_NETLABEL=y 584CONFIG_NETLABEL=y
616CONFIG_NETWORK_SECMARK=y 585CONFIG_NETWORK_SECMARK=y
586# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
617CONFIG_NETFILTER=y 587CONFIG_NETFILTER=y
618# CONFIG_NETFILTER_DEBUG is not set 588# CONFIG_NETFILTER_DEBUG is not set
619CONFIG_NETFILTER_ADVANCED=y 589CONFIG_NETFILTER_ADVANCED=y
@@ -626,7 +596,6 @@ CONFIG_NETFILTER_NETLINK=m
626CONFIG_NETFILTER_NETLINK_QUEUE=m 596CONFIG_NETFILTER_NETLINK_QUEUE=m
627CONFIG_NETFILTER_NETLINK_LOG=m 597CONFIG_NETFILTER_NETLINK_LOG=m
628CONFIG_NF_CONNTRACK=m 598CONFIG_NF_CONNTRACK=m
629CONFIG_NF_CT_ACCT=y
630CONFIG_NF_CONNTRACK_MARK=y 599CONFIG_NF_CONNTRACK_MARK=y
631CONFIG_NF_CONNTRACK_SECMARK=y 600CONFIG_NF_CONNTRACK_SECMARK=y
632CONFIG_NF_CONNTRACK_ZONES=y 601CONFIG_NF_CONNTRACK_ZONES=y
@@ -657,12 +626,14 @@ CONFIG_NETFILTER_XT_CONNMARK=m
657# 626#
658# Xtables targets 627# Xtables targets
659# 628#
629CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
660CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 630CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
661CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 631CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
662CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m 632CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
663CONFIG_NETFILTER_XT_TARGET_CT=m 633CONFIG_NETFILTER_XT_TARGET_CT=m
664CONFIG_NETFILTER_XT_TARGET_DSCP=m 634CONFIG_NETFILTER_XT_TARGET_DSCP=m
665CONFIG_NETFILTER_XT_TARGET_HL=m 635CONFIG_NETFILTER_XT_TARGET_HL=m
636CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
666CONFIG_NETFILTER_XT_TARGET_LED=m 637CONFIG_NETFILTER_XT_TARGET_LED=m
667CONFIG_NETFILTER_XT_TARGET_MARK=m 638CONFIG_NETFILTER_XT_TARGET_MARK=m
668CONFIG_NETFILTER_XT_TARGET_NFLOG=m 639CONFIG_NETFILTER_XT_TARGET_NFLOG=m
@@ -685,6 +656,7 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
685CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m 656CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
686CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 657CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
687CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 658CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
659CONFIG_NETFILTER_XT_MATCH_CPU=m
688CONFIG_NETFILTER_XT_MATCH_DCCP=m 660CONFIG_NETFILTER_XT_MATCH_DCCP=m
689CONFIG_NETFILTER_XT_MATCH_DSCP=m 661CONFIG_NETFILTER_XT_MATCH_DSCP=m
690CONFIG_NETFILTER_XT_MATCH_ESP=m 662CONFIG_NETFILTER_XT_MATCH_ESP=m
@@ -692,6 +664,7 @@ CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
692CONFIG_NETFILTER_XT_MATCH_HELPER=m 664CONFIG_NETFILTER_XT_MATCH_HELPER=m
693CONFIG_NETFILTER_XT_MATCH_HL=m 665CONFIG_NETFILTER_XT_MATCH_HL=m
694CONFIG_NETFILTER_XT_MATCH_IPRANGE=m 666CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
667CONFIG_NETFILTER_XT_MATCH_IPVS=m
695CONFIG_NETFILTER_XT_MATCH_LENGTH=m 668CONFIG_NETFILTER_XT_MATCH_LENGTH=m
696CONFIG_NETFILTER_XT_MATCH_LIMIT=m 669CONFIG_NETFILTER_XT_MATCH_LIMIT=m
697CONFIG_NETFILTER_XT_MATCH_MAC=m 670CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -956,6 +929,7 @@ CONFIG_NET_ACT_SKBEDIT=m
956# CONFIG_NET_CLS_IND is not set 929# CONFIG_NET_CLS_IND is not set
957CONFIG_NET_SCH_FIFO=y 930CONFIG_NET_SCH_FIFO=y
958# CONFIG_DCB is not set 931# CONFIG_DCB is not set
932CONFIG_DNS_RESOLVER=y
959CONFIG_RPS=y 933CONFIG_RPS=y
960 934
961# 935#
@@ -985,6 +959,7 @@ CONFIG_CAN_PLX_PCI=m
985# CAN USB interfaces 959# CAN USB interfaces
986# 960#
987# CONFIG_CAN_EMS_USB is not set 961# CONFIG_CAN_EMS_USB is not set
962CONFIG_CAN_ESD_USB2=m
988# CONFIG_CAN_DEBUG_DEVICES is not set 963# CONFIG_CAN_DEBUG_DEVICES is not set
989CONFIG_IRDA=m 964CONFIG_IRDA=m
990 965
@@ -1044,7 +1019,6 @@ CONFIG_VIA_FIR=m
1044CONFIG_MCS_FIR=m 1019CONFIG_MCS_FIR=m
1045CONFIG_BT=m 1020CONFIG_BT=m
1046CONFIG_BT_L2CAP=m 1021CONFIG_BT_L2CAP=m
1047# CONFIG_BT_L2CAP_EXT_FEATURES is not set
1048CONFIG_BT_SCO=m 1022CONFIG_BT_SCO=m
1049CONFIG_BT_RFCOMM=m 1023CONFIG_BT_RFCOMM=m
1050CONFIG_BT_RFCOMM_TTY=y 1024CONFIG_BT_RFCOMM_TTY=y
@@ -1062,6 +1036,7 @@ CONFIG_BT_HCIBTSDIO=m
1062CONFIG_BT_HCIUART=m 1036CONFIG_BT_HCIUART=m
1063CONFIG_BT_HCIUART_H4=y 1037CONFIG_BT_HCIUART_H4=y
1064CONFIG_BT_HCIUART_BCSP=y 1038CONFIG_BT_HCIUART_BCSP=y
1039# CONFIG_BT_HCIUART_ATH3K is not set
1065CONFIG_BT_HCIUART_LL=y 1040CONFIG_BT_HCIUART_LL=y
1066CONFIG_BT_HCIBCM203X=m 1041CONFIG_BT_HCIBCM203X=m
1067CONFIG_BT_HCIBPA10X=m 1042CONFIG_BT_HCIBPA10X=m
@@ -1101,6 +1076,7 @@ CONFIG_MAC80211=m
1101CONFIG_MAC80211_HAS_RC=y 1076CONFIG_MAC80211_HAS_RC=y
1102CONFIG_MAC80211_RC_PID=y 1077CONFIG_MAC80211_RC_PID=y
1103CONFIG_MAC80211_RC_MINSTREL=y 1078CONFIG_MAC80211_RC_MINSTREL=y
1079CONFIG_MAC80211_RC_MINSTREL_HT=y
1104CONFIG_MAC80211_RC_DEFAULT_PID=y 1080CONFIG_MAC80211_RC_DEFAULT_PID=y
1105# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set 1081# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
1106CONFIG_MAC80211_RC_DEFAULT="pid" 1082CONFIG_MAC80211_RC_DEFAULT="pid"
@@ -1348,9 +1324,12 @@ CONFIG_CS5535_CLOCK_EVENT_SRC=m
1348CONFIG_HP_ILO=m 1324CONFIG_HP_ILO=m
1349CONFIG_ISL29003=m 1325CONFIG_ISL29003=m
1350CONFIG_SENSORS_TSL2550=m 1326CONFIG_SENSORS_TSL2550=m
1327CONFIG_SENSORS_BH1780=m
1328CONFIG_HMC6352=m
1351CONFIG_DS1682=m 1329CONFIG_DS1682=m
1352CONFIG_TI_DAC7512=m 1330CONFIG_TI_DAC7512=m
1353CONFIG_VMWARE_BALLOON=m 1331CONFIG_VMWARE_BALLOON=m
1332CONFIG_BMP085=m
1354CONFIG_C2PORT=m 1333CONFIG_C2PORT=m
1355CONFIG_C2PORT_DURAMAR_2150=m 1334CONFIG_C2PORT_DURAMAR_2150=m
1356 1335
@@ -1415,6 +1394,7 @@ CONFIG_SCSI_SRP_ATTRS=m
1415CONFIG_SCSI_SRP_TGT_ATTRS=y 1394CONFIG_SCSI_SRP_TGT_ATTRS=y
1416CONFIG_SCSI_LOWLEVEL=y 1395CONFIG_SCSI_LOWLEVEL=y
1417CONFIG_ISCSI_TCP=m 1396CONFIG_ISCSI_TCP=m
1397CONFIG_ISCSI_BOOT_SYSFS=m
1418CONFIG_SCSI_CXGB3_ISCSI=m 1398CONFIG_SCSI_CXGB3_ISCSI=m
1419CONFIG_SCSI_BNX2_ISCSI=m 1399CONFIG_SCSI_BNX2_ISCSI=m
1420# CONFIG_BE2ISCSI is not set 1400# CONFIG_BE2ISCSI is not set
@@ -1535,7 +1515,6 @@ CONFIG_SCST_TRACING=y
1535# CONFIG_SCST_DEBUG_RETRY is not set 1515# CONFIG_SCST_DEBUG_RETRY is not set
1536# CONFIG_SCST_DEBUG_SN is not set 1516# CONFIG_SCST_DEBUG_SN is not set
1537# CONFIG_SCST_MEASURE_LATENCY is not set 1517# CONFIG_SCST_MEASURE_LATENCY is not set
1538CONFIG_FCST=m
1539CONFIG_SCST_ISCSI=m 1518CONFIG_SCST_ISCSI=m
1540# CONFIG_SCST_ISCSI_DEBUG_DIGEST_FAILURES is not set 1519# CONFIG_SCST_ISCSI_DEBUG_DIGEST_FAILURES is not set
1541CONFIG_SCST_SRPT=m 1520CONFIG_SCST_SRPT=m
@@ -1643,8 +1622,6 @@ CONFIG_MD_RAID1=m
1643CONFIG_MD_RAID10=m 1622CONFIG_MD_RAID10=m
1644CONFIG_MD_RAID456=m 1623CONFIG_MD_RAID456=m
1645# CONFIG_MULTICORE_RAID456 is not set 1624# CONFIG_MULTICORE_RAID456 is not set
1646CONFIG_MD_RAID6_PQ=m
1647# CONFIG_ASYNC_RAID6_TEST is not set
1648CONFIG_MD_MULTIPATH=m 1625CONFIG_MD_MULTIPATH=m
1649CONFIG_MD_FAULTY=m 1626CONFIG_MD_FAULTY=m
1650CONFIG_BLK_DEV_DM=m 1627CONFIG_BLK_DEV_DM=m
@@ -1694,6 +1671,7 @@ CONFIG_IEEE1394_RAWIO=m
1694CONFIG_IEEE1394_VIDEO1394=m 1671CONFIG_IEEE1394_VIDEO1394=m
1695CONFIG_IEEE1394_DV1394=m 1672CONFIG_IEEE1394_DV1394=m
1696# CONFIG_IEEE1394_VERBOSEDEBUG is not set 1673# CONFIG_IEEE1394_VERBOSEDEBUG is not set
1674CONFIG_FIREWIRE_NOSY=m
1697CONFIG_I2O=m 1675CONFIG_I2O=m
1698CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y 1676CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
1699CONFIG_I2O_EXT_ADAPTEC=y 1677CONFIG_I2O_EXT_ADAPTEC=y
@@ -1853,6 +1831,8 @@ CONFIG_CHELSIO_T3_DEPENDS=y
1853CONFIG_CHELSIO_T3=m 1831CONFIG_CHELSIO_T3=m
1854CONFIG_CHELSIO_T4_DEPENDS=y 1832CONFIG_CHELSIO_T4_DEPENDS=y
1855CONFIG_CHELSIO_T4=m 1833CONFIG_CHELSIO_T4=m
1834CONFIG_CHELSIO_T4VF_DEPENDS=y
1835CONFIG_CHELSIO_T4VF=m
1856CONFIG_ENIC=m 1836CONFIG_ENIC=m
1857CONFIG_IXGBE=m 1837CONFIG_IXGBE=m
1858CONFIG_IXGBE_DCA=y 1838CONFIG_IXGBE_DCA=y
@@ -2005,6 +1985,7 @@ CONFIG_WL1251_SPI=m
2005CONFIG_WL1251_SDIO=m 1985CONFIG_WL1251_SDIO=m
2006CONFIG_WL1271=m 1986CONFIG_WL1271=m
2007CONFIG_WL1271_SPI=m 1987CONFIG_WL1271_SPI=m
1988CONFIG_WL1271_SDIO=m
2008CONFIG_ZD1211RW=m 1989CONFIG_ZD1211RW=m
2009# CONFIG_ZD1211RW_DEBUG is not set 1990# CONFIG_ZD1211RW_DEBUG is not set
2010 1991
@@ -2095,6 +2076,9 @@ CONFIG_ATM_ENI=m
2095CONFIG_ATM_FIRESTREAM=m 2076CONFIG_ATM_FIRESTREAM=m
2096CONFIG_ATM_ZATM=m 2077CONFIG_ATM_ZATM=m
2097# CONFIG_ATM_ZATM_DEBUG is not set 2078# CONFIG_ATM_ZATM_DEBUG is not set
2079CONFIG_ATM_NICSTAR=m
2080# CONFIG_ATM_NICSTAR_USE_SUNI is not set
2081# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
2098CONFIG_ATM_IDT77252=m 2082CONFIG_ATM_IDT77252=m
2099# CONFIG_ATM_IDT77252_DEBUG is not set 2083# CONFIG_ATM_IDT77252_DEBUG is not set
2100# CONFIG_ATM_IDT77252_RCV_ALL is not set 2084# CONFIG_ATM_IDT77252_RCV_ALL is not set
@@ -2119,6 +2103,8 @@ CONFIG_IEEE802154_FAKEHARD=m
2119# CAIF transport drivers 2103# CAIF transport drivers
2120# 2104#
2121CONFIG_CAIF_TTY=m 2105CONFIG_CAIF_TTY=m
2106CONFIG_CAIF_SPI_SLAVE=m
2107# CONFIG_CAIF_SPI_SYNC is not set
2122CONFIG_FDDI=y 2108CONFIG_FDDI=y
2123CONFIG_DEFXX=m 2109CONFIG_DEFXX=m
2124# CONFIG_DEFXX_MMIO is not set 2110# CONFIG_DEFXX_MMIO is not set
@@ -2237,6 +2223,7 @@ CONFIG_KEYBOARD_TCA6416=m
2237CONFIG_KEYBOARD_MATRIX=m 2223CONFIG_KEYBOARD_MATRIX=m
2238CONFIG_KEYBOARD_LM8323=m 2224CONFIG_KEYBOARD_LM8323=m
2239# CONFIG_KEYBOARD_MAX7359 is not set 2225# CONFIG_KEYBOARD_MAX7359 is not set
2226CONFIG_KEYBOARD_MCS=m
2240CONFIG_KEYBOARD_NEWTON=m 2227CONFIG_KEYBOARD_NEWTON=m
2241# CONFIG_KEYBOARD_OPENCORES is not set 2228# CONFIG_KEYBOARD_OPENCORES is not set
2242CONFIG_KEYBOARD_STOWAWAY=m 2229CONFIG_KEYBOARD_STOWAWAY=m
@@ -2263,8 +2250,10 @@ CONFIG_MOUSE_SYNAPTICS_I2C=m
2263CONFIG_INPUT_TOUCHSCREEN=y 2250CONFIG_INPUT_TOUCHSCREEN=y
2264CONFIG_TOUCHSCREEN_ADS7846=m 2251CONFIG_TOUCHSCREEN_ADS7846=m
2265CONFIG_TOUCHSCREEN_AD7877=m 2252CONFIG_TOUCHSCREEN_AD7877=m
2266CONFIG_TOUCHSCREEN_AD7879_I2C=m
2267CONFIG_TOUCHSCREEN_AD7879=m 2253CONFIG_TOUCHSCREEN_AD7879=m
2254CONFIG_TOUCHSCREEN_AD7879_I2C=m
2255CONFIG_TOUCHSCREEN_AD7879_SPI=m
2256CONFIG_TOUCHSCREEN_CY8CTMG110=m
2268CONFIG_TOUCHSCREEN_DYNAPRO=m 2257CONFIG_TOUCHSCREEN_DYNAPRO=m
2269CONFIG_TOUCHSCREEN_HAMPSHIRE=m 2258CONFIG_TOUCHSCREEN_HAMPSHIRE=m
2270CONFIG_TOUCHSCREEN_EETI=m 2259CONFIG_TOUCHSCREEN_EETI=m
@@ -2277,6 +2266,7 @@ CONFIG_TOUCHSCREEN_MTOUCH=m
2277CONFIG_TOUCHSCREEN_INEXIO=m 2266CONFIG_TOUCHSCREEN_INEXIO=m
2278CONFIG_TOUCHSCREEN_MK712=m 2267CONFIG_TOUCHSCREEN_MK712=m
2279CONFIG_TOUCHSCREEN_PENMOUNT=m 2268CONFIG_TOUCHSCREEN_PENMOUNT=m
2269CONFIG_TOUCHSCREEN_QT602240=m
2280CONFIG_TOUCHSCREEN_TOUCHRIGHT=m 2270CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
2281CONFIG_TOUCHSCREEN_TOUCHWIN=m 2271CONFIG_TOUCHSCREEN_TOUCHWIN=m
2282CONFIG_TOUCHSCREEN_UCB1400=m 2272CONFIG_TOUCHSCREEN_UCB1400=m
@@ -2299,7 +2289,7 @@ CONFIG_TOUCHSCREEN_USB_GOTOP=y
2299CONFIG_TOUCHSCREEN_USB_JASTEC=y 2289CONFIG_TOUCHSCREEN_USB_JASTEC=y
2300CONFIG_TOUCHSCREEN_USB_E2I=y 2290CONFIG_TOUCHSCREEN_USB_E2I=y
2301CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y 2291CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
2302CONFIG_TOUCHSCREEN_USB_ETT_TC5UH=y 2292CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
2303CONFIG_TOUCHSCREEN_USB_NEXIO=y 2293CONFIG_TOUCHSCREEN_USB_NEXIO=y
2304CONFIG_TOUCHSCREEN_TOUCHIT213=m 2294CONFIG_TOUCHSCREEN_TOUCHIT213=m
2305CONFIG_TOUCHSCREEN_TSC2007=m 2295CONFIG_TOUCHSCREEN_TSC2007=m
@@ -2322,6 +2312,9 @@ CONFIG_INPUT_WINBOND_CIR=m
2322CONFIG_INPUT_PCF50633_PMU=m 2312CONFIG_INPUT_PCF50633_PMU=m
2323CONFIG_INPUT_PCF8574=m 2313CONFIG_INPUT_PCF8574=m
2324CONFIG_INPUT_GPIO_ROTARY_ENCODER=m 2314CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
2315CONFIG_INPUT_ADXL34X=m
2316CONFIG_INPUT_ADXL34X_I2C=m
2317CONFIG_INPUT_ADXL34X_SPI=m
2325 2318
2326# 2319#
2327# Hardware I/O ports 2320# Hardware I/O ports
@@ -2388,6 +2381,9 @@ CONFIG_SERIAL_8250_RSA=y
2388# Non-8250 serial port support 2381# Non-8250 serial port support
2389# 2382#
2390CONFIG_SERIAL_MAX3100=m 2383CONFIG_SERIAL_MAX3100=m
2384CONFIG_SERIAL_MAX3107=m
2385CONFIG_SERIAL_MRST_MAX3110=m
2386CONFIG_SERIAL_MFD_HSU=m
2391CONFIG_SERIAL_UARTLITE=m 2387CONFIG_SERIAL_UARTLITE=m
2392CONFIG_SERIAL_CORE=y 2388CONFIG_SERIAL_CORE=y
2393CONFIG_SERIAL_CORE_CONSOLE=y 2389CONFIG_SERIAL_CORE_CONSOLE=y
@@ -2429,8 +2425,6 @@ CONFIG_CARDMAN_4000=m
2429CONFIG_CARDMAN_4040=m 2425CONFIG_CARDMAN_4040=m
2430CONFIG_IPWIRELESS=m 2426CONFIG_IPWIRELESS=m
2431CONFIG_MWAVE=m 2427CONFIG_MWAVE=m
2432CONFIG_PC8736x_GPIO=m
2433CONFIG_NSC_GPIO=m
2434CONFIG_RAW_DRIVER=m 2428CONFIG_RAW_DRIVER=m
2435CONFIG_MAX_RAW_DEVS=256 2429CONFIG_MAX_RAW_DEVS=256
2436CONFIG_HPET=y 2430CONFIG_HPET=y
@@ -2448,6 +2442,12 @@ CONFIG_I2C=m
2448CONFIG_I2C_BOARDINFO=y 2442CONFIG_I2C_BOARDINFO=y
2449CONFIG_I2C_COMPAT=y 2443CONFIG_I2C_COMPAT=y
2450CONFIG_I2C_CHARDEV=m 2444CONFIG_I2C_CHARDEV=m
2445CONFIG_I2C_MUX=m
2446
2447#
2448# Multiplexer I2C Chip support
2449#
2450CONFIG_I2C_MUX_PCA954x=m
2451CONFIG_I2C_HELPER_AUTO=y 2451CONFIG_I2C_HELPER_AUTO=y
2452CONFIG_I2C_SMBUS=m 2452CONFIG_I2C_SMBUS=m
2453CONFIG_I2C_ALGOBIT=m 2453CONFIG_I2C_ALGOBIT=m
@@ -2641,9 +2641,11 @@ CONFIG_SENSORS_G760A=m
2641CONFIG_SENSORS_GL518SM=m 2641CONFIG_SENSORS_GL518SM=m
2642CONFIG_SENSORS_GL520SM=m 2642CONFIG_SENSORS_GL520SM=m
2643CONFIG_SENSORS_CORETEMP=m 2643CONFIG_SENSORS_CORETEMP=m
2644CONFIG_SENSORS_PKGTEMP=m
2644CONFIG_SENSORS_IBMAEM=m 2645CONFIG_SENSORS_IBMAEM=m
2645CONFIG_SENSORS_IBMPEX=m 2646CONFIG_SENSORS_IBMPEX=m
2646CONFIG_SENSORS_IT87=m 2647CONFIG_SENSORS_IT87=m
2648CONFIG_SENSORS_JC42=m
2647CONFIG_SENSORS_LM63=m 2649CONFIG_SENSORS_LM63=m
2648CONFIG_SENSORS_LM70=m 2650CONFIG_SENSORS_LM70=m
2649CONFIG_SENSORS_LM73=m 2651CONFIG_SENSORS_LM73=m
@@ -2668,8 +2670,10 @@ CONFIG_SENSORS_PC87427=m
2668CONFIG_SENSORS_PCF8591=m 2670CONFIG_SENSORS_PCF8591=m
2669CONFIG_SENSORS_SHT15=m 2671CONFIG_SENSORS_SHT15=m
2670CONFIG_SENSORS_SIS5595=m 2672CONFIG_SENSORS_SIS5595=m
2673CONFIG_SENSORS_SMM665=m
2671CONFIG_SENSORS_DME1737=m 2674CONFIG_SENSORS_DME1737=m
2672CONFIG_SENSORS_EMC1403=m 2675CONFIG_SENSORS_EMC1403=m
2676CONFIG_SENSORS_EMC2103=m
2673CONFIG_SENSORS_SMSC47M1=m 2677CONFIG_SENSORS_SMSC47M1=m
2674CONFIG_SENSORS_SMSC47M192=m 2678CONFIG_SENSORS_SMSC47M192=m
2675CONFIG_SENSORS_SMSC47B397=m 2679CONFIG_SENSORS_SMSC47B397=m
@@ -2713,6 +2717,7 @@ CONFIG_ACQUIRE_WDT=m
2713CONFIG_ADVANTECH_WDT=m 2717CONFIG_ADVANTECH_WDT=m
2714CONFIG_ALIM1535_WDT=m 2718CONFIG_ALIM1535_WDT=m
2715CONFIG_ALIM7101_WDT=m 2719CONFIG_ALIM7101_WDT=m
2720CONFIG_F71808E_WDT=m
2716CONFIG_GEODE_WDT=m 2721CONFIG_GEODE_WDT=m
2717CONFIG_SC520_WDT=m 2722CONFIG_SC520_WDT=m
2718# CONFIG_SBC_FITPC2_WATCHDOG is not set 2723# CONFIG_SBC_FITPC2_WATCHDOG is not set
@@ -2791,6 +2796,7 @@ CONFIG_MFD_TIMBERDALE=m
2791CONFIG_LPC_SCH=m 2796CONFIG_LPC_SCH=m
2792CONFIG_MFD_RDC321X=m 2797CONFIG_MFD_RDC321X=m
2793CONFIG_MFD_JANZ_CMODIO=m 2798CONFIG_MFD_JANZ_CMODIO=m
2799CONFIG_MFD_TPS6586X=m
2794CONFIG_REGULATOR=y 2800CONFIG_REGULATOR=y
2795# CONFIG_REGULATOR_DEBUG is not set 2801# CONFIG_REGULATOR_DEBUG is not set
2796# CONFIG_REGULATOR_DUMMY is not set 2802# CONFIG_REGULATOR_DUMMY is not set
@@ -2806,6 +2812,10 @@ CONFIG_REGULATOR_PCF50633=m
2806CONFIG_REGULATOR_LP3971=m 2812CONFIG_REGULATOR_LP3971=m
2807# CONFIG_REGULATOR_TPS65023 is not set 2813# CONFIG_REGULATOR_TPS65023 is not set
2808# CONFIG_REGULATOR_TPS6507X is not set 2814# CONFIG_REGULATOR_TPS6507X is not set
2815CONFIG_REGULATOR_ISL6271A=m
2816CONFIG_REGULATOR_AD5398=m
2817# CONFIG_REGULATOR_AB8500 is not set
2818CONFIG_REGULATOR_TPS6586X=m
2809CONFIG_MEDIA_SUPPORT=m 2819CONFIG_MEDIA_SUPPORT=m
2810 2820
2811# 2821#
@@ -2825,13 +2835,18 @@ CONFIG_VIDEO_SAA7146=m
2825CONFIG_VIDEO_SAA7146_VV=m 2835CONFIG_VIDEO_SAA7146_VV=m
2826CONFIG_IR_CORE=m 2836CONFIG_IR_CORE=m
2827CONFIG_VIDEO_IR=m 2837CONFIG_VIDEO_IR=m
2838CONFIG_LIRC=m
2828CONFIG_RC_MAP=m 2839CONFIG_RC_MAP=m
2829CONFIG_IR_NEC_DECODER=m 2840CONFIG_IR_NEC_DECODER=m
2830CONFIG_IR_RC5_DECODER=m 2841CONFIG_IR_RC5_DECODER=m
2831CONFIG_IR_RC6_DECODER=m 2842CONFIG_IR_RC6_DECODER=m
2832CONFIG_IR_JVC_DECODER=m 2843CONFIG_IR_JVC_DECODER=m
2833CONFIG_IR_SONY_DECODER=m 2844CONFIG_IR_SONY_DECODER=m
2845CONFIG_IR_LIRC_CODEC=m
2834CONFIG_IR_IMON=m 2846CONFIG_IR_IMON=m
2847CONFIG_IR_MCEUSB=m
2848CONFIG_IR_ENE=m
2849CONFIG_IR_STREAMZAP=m
2835# CONFIG_MEDIA_ATTACH is not set 2850# CONFIG_MEDIA_ATTACH is not set
2836CONFIG_MEDIA_TUNER=m 2851CONFIG_MEDIA_TUNER=m
2837# CONFIG_MEDIA_TUNER_CUSTOMISE is not set 2852# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
@@ -2857,6 +2872,7 @@ CONFIG_VIDEO_V4L2=m
2857CONFIG_VIDEOBUF_GEN=m 2872CONFIG_VIDEOBUF_GEN=m
2858CONFIG_VIDEOBUF_DMA_SG=m 2873CONFIG_VIDEOBUF_DMA_SG=m
2859CONFIG_VIDEOBUF_VMALLOC=m 2874CONFIG_VIDEOBUF_VMALLOC=m
2875CONFIG_VIDEOBUF_DMA_CONTIG=m
2860CONFIG_VIDEOBUF_DVB=m 2876CONFIG_VIDEOBUF_DVB=m
2861CONFIG_VIDEO_BTCX=m 2877CONFIG_VIDEO_BTCX=m
2862CONFIG_VIDEO_TVEEPROM=m 2878CONFIG_VIDEO_TVEEPROM=m
@@ -3018,8 +3034,10 @@ CONFIG_USB_GSPCA_SPCA505=m
3018CONFIG_USB_GSPCA_SPCA506=m 3034CONFIG_USB_GSPCA_SPCA506=m
3019CONFIG_USB_GSPCA_SPCA508=m 3035CONFIG_USB_GSPCA_SPCA508=m
3020CONFIG_USB_GSPCA_SPCA561=m 3036CONFIG_USB_GSPCA_SPCA561=m
3037CONFIG_USB_GSPCA_SPCA1528=m
3021CONFIG_USB_GSPCA_SQ905=m 3038CONFIG_USB_GSPCA_SQ905=m
3022CONFIG_USB_GSPCA_SQ905C=m 3039CONFIG_USB_GSPCA_SQ905C=m
3040CONFIG_USB_GSPCA_SQ930X=m
3023CONFIG_USB_GSPCA_STK014=m 3041CONFIG_USB_GSPCA_STK014=m
3024CONFIG_USB_GSPCA_STV0680=m 3042CONFIG_USB_GSPCA_STV0680=m
3025CONFIG_USB_GSPCA_SUNPLUS=m 3043CONFIG_USB_GSPCA_SUNPLUS=m
@@ -3042,7 +3060,6 @@ CONFIG_VIDEO_CX231XX_DVB=m
3042CONFIG_VIDEO_USBVISION=m 3060CONFIG_VIDEO_USBVISION=m
3043CONFIG_USB_ET61X251=m 3061CONFIG_USB_ET61X251=m
3044CONFIG_USB_SN9C102=m 3062CONFIG_USB_SN9C102=m
3045CONFIG_USB_ZC0301=m
3046CONFIG_USB_ZR364XX=m 3063CONFIG_USB_ZR364XX=m
3047CONFIG_USB_STKWEBCAM=m 3064CONFIG_USB_STKWEBCAM=m
3048CONFIG_USB_S2255=m 3065CONFIG_USB_S2255=m
@@ -3239,6 +3256,7 @@ CONFIG_DVB_ISL6421=m
3239CONFIG_DVB_ISL6423=m 3256CONFIG_DVB_ISL6423=m
3240CONFIG_DVB_LGS8GXX=m 3257CONFIG_DVB_LGS8GXX=m
3241CONFIG_DVB_ATBM8830=m 3258CONFIG_DVB_ATBM8830=m
3259CONFIG_DVB_TDA665x=m
3242CONFIG_DAB=y 3260CONFIG_DAB=y
3243CONFIG_USB_DABUSB=m 3261CONFIG_USB_DABUSB=m
3244 3262
@@ -3574,9 +3592,10 @@ CONFIG_SND_SOC_AK4104=m
3574CONFIG_SND_SOC_AK4535=m 3592CONFIG_SND_SOC_AK4535=m
3575CONFIG_SND_SOC_AK4642=m 3593CONFIG_SND_SOC_AK4642=m
3576CONFIG_SND_SOC_AK4671=m 3594CONFIG_SND_SOC_AK4671=m
3595CONFIG_SND_SOC_CS42L51=m
3577CONFIG_SND_SOC_CS4270=m 3596CONFIG_SND_SOC_CS4270=m
3578CONFIG_SND_SOC_DA7210=m
3579CONFIG_SND_SOC_L3=m 3597CONFIG_SND_SOC_L3=m
3598CONFIG_SND_SOC_DA7210=m
3580CONFIG_SND_SOC_PCM3008=m 3599CONFIG_SND_SOC_PCM3008=m
3581CONFIG_SND_SOC_SPDIF=m 3600CONFIG_SND_SOC_SPDIF=m
3582CONFIG_SND_SOC_SSM2602=m 3601CONFIG_SND_SOC_SSM2602=m
@@ -3594,6 +3613,7 @@ CONFIG_SND_SOC_WM8711=m
3594CONFIG_SND_SOC_WM8727=m 3613CONFIG_SND_SOC_WM8727=m
3595CONFIG_SND_SOC_WM8728=m 3614CONFIG_SND_SOC_WM8728=m
3596CONFIG_SND_SOC_WM8731=m 3615CONFIG_SND_SOC_WM8731=m
3616CONFIG_SND_SOC_WM8741=m
3597CONFIG_SND_SOC_WM8750=m 3617CONFIG_SND_SOC_WM8750=m
3598CONFIG_SND_SOC_WM8753=m 3618CONFIG_SND_SOC_WM8753=m
3599CONFIG_SND_SOC_WM8776=m 3619CONFIG_SND_SOC_WM8776=m
@@ -3639,6 +3659,7 @@ CONFIG_USB_MOUSE=m
3639# 3659#
3640CONFIG_HID_3M_PCT=m 3660CONFIG_HID_3M_PCT=m
3641# CONFIG_HID_A4TECH is not set 3661# CONFIG_HID_A4TECH is not set
3662CONFIG_HID_ACRUX_FF=m
3642# CONFIG_HID_APPLE is not set 3663# CONFIG_HID_APPLE is not set
3643# CONFIG_HID_BELKIN is not set 3664# CONFIG_HID_BELKIN is not set
3644CONFIG_HID_CANDO=m 3665CONFIG_HID_CANDO=m
@@ -3648,6 +3669,7 @@ CONFIG_HID_PRODIKEYS=m
3648# CONFIG_HID_CYPRESS is not set 3669# CONFIG_HID_CYPRESS is not set
3649# CONFIG_HID_DRAGONRISE is not set 3670# CONFIG_HID_DRAGONRISE is not set
3650CONFIG_HID_EGALAX=m 3671CONFIG_HID_EGALAX=m
3672CONFIG_HID_ELECOM=m
3651# CONFIG_HID_EZKEY is not set 3673# CONFIG_HID_EZKEY is not set
3652# CONFIG_HID_KYE is not set 3674# CONFIG_HID_KYE is not set
3653# CONFIG_HID_GYRATION is not set 3675# CONFIG_HID_GYRATION is not set
@@ -3824,6 +3846,7 @@ CONFIG_USB_SERIAL_OMNINET=m
3824CONFIG_USB_SERIAL_OPTICON=m 3846CONFIG_USB_SERIAL_OPTICON=m
3825CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m 3847CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
3826CONFIG_USB_SERIAL_ZIO=m 3848CONFIG_USB_SERIAL_ZIO=m
3849CONFIG_USB_SERIAL_SSU100=m
3827CONFIG_USB_SERIAL_DEBUG=m 3850CONFIG_USB_SERIAL_DEBUG=m
3828 3851
3829# 3852#
@@ -3984,9 +4007,11 @@ CONFIG_RTC_DRV_TEST=m
3984CONFIG_RTC_DRV_DS1307=m 4007CONFIG_RTC_DRV_DS1307=m
3985CONFIG_RTC_DRV_DS1374=m 4008CONFIG_RTC_DRV_DS1374=m
3986CONFIG_RTC_DRV_DS1672=m 4009CONFIG_RTC_DRV_DS1672=m
4010CONFIG_RTC_DRV_DS3232=m
3987CONFIG_RTC_DRV_MAX6900=m 4011CONFIG_RTC_DRV_MAX6900=m
3988CONFIG_RTC_DRV_RS5C372=m 4012CONFIG_RTC_DRV_RS5C372=m
3989CONFIG_RTC_DRV_ISL1208=m 4013CONFIG_RTC_DRV_ISL1208=m
4014CONFIG_RTC_DRV_ISL12022=m
3990CONFIG_RTC_DRV_X1205=m 4015CONFIG_RTC_DRV_X1205=m
3991CONFIG_RTC_DRV_PCF8563=m 4016CONFIG_RTC_DRV_PCF8563=m
3992CONFIG_RTC_DRV_PCF8583=m 4017CONFIG_RTC_DRV_PCF8583=m
@@ -4038,9 +4063,11 @@ CONFIG_DMADEVICES=y
4038# 4063#
4039# DMA Devices 4064# DMA Devices
4040# 4065#
4066CONFIG_INTEL_MID_DMAC=m
4041CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y 4067CONFIG_ASYNC_TX_DISABLE_CHANNEL_SWITCH=y
4042CONFIG_INTEL_IOATDMA=m 4068CONFIG_INTEL_IOATDMA=m
4043CONFIG_TIMB_DMA=m 4069CONFIG_TIMB_DMA=m
4070CONFIG_PCH_DMA=m
4044CONFIG_DMA_ENGINE=y 4071CONFIG_DMA_ENGINE=y
4045 4072
4046# 4073#
@@ -4096,6 +4123,7 @@ CONFIG_STAGING=y
4096# I2C encoder or helper chips 4123# I2C encoder or helper chips
4097# 4124#
4098# CONFIG_DRM_I2C_CH7006 is not set 4125# CONFIG_DRM_I2C_CH7006 is not set
4126CONFIG_DRM_I2C_SIL164=m
4099# CONFIG_USB_SERIAL_QUATECH2 is not set 4127# CONFIG_USB_SERIAL_QUATECH2 is not set
4100# CONFIG_USB_SERIAL_QUATECH_USB2 is not set 4128# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
4101# CONFIG_VT6655 is not set 4129# CONFIG_VT6655 is not set
@@ -4107,19 +4135,14 @@ CONFIG_HYPERV_BLOCK=m
4107CONFIG_HYPERV_NET=m 4135CONFIG_HYPERV_NET=m
4108CONFIG_HYPERV_UTILS=m 4136CONFIG_HYPERV_UTILS=m
4109# CONFIG_VME_BUS is not set 4137# CONFIG_VME_BUS is not set
4110
4111#
4112# RAR Register Driver
4113#
4114# CONFIG_RAR_REGISTER is not set
4115# CONFIG_IIO is not set 4138# CONFIG_IIO is not set
4116# CONFIG_RAMZSWAP is not set 4139CONFIG_ZRAM=m
4140CONFIG_ZRAM_STATS=y
4117# CONFIG_WLAGS49_H2 is not set 4141# CONFIG_WLAGS49_H2 is not set
4118# CONFIG_WLAGS49_H25 is not set 4142# CONFIG_WLAGS49_H25 is not set
4119# CONFIG_BATMAN_ADV is not set 4143# CONFIG_BATMAN_ADV is not set
4120# CONFIG_SAMSUNG_LAPTOP is not set 4144# CONFIG_SAMSUNG_LAPTOP is not set
4121# CONFIG_FB_SM7XX is not set 4145# CONFIG_FB_SM7XX is not set
4122# CONFIG_DT3155 is not set
4123# CONFIG_VIDEO_DT3155 is not set 4146# CONFIG_VIDEO_DT3155 is not set
4124# CONFIG_CRYSTALHD is not set 4147# CONFIG_CRYSTALHD is not set
4125# CONFIG_CXT1E1 is not set 4148# CONFIG_CXT1E1 is not set
@@ -4131,6 +4154,10 @@ CONFIG_HYPERV_UTILS=m
4131# CONFIG_ST_BT is not set 4154# CONFIG_ST_BT is not set
4132# CONFIG_ADIS16255 is not set 4155# CONFIG_ADIS16255 is not set
4133# CONFIG_FB_XGI is not set 4156# CONFIG_FB_XGI is not set
4157# CONFIG_LIRC_STAGING is not set
4158CONFIG_EASYCAP=m
4159CONFIG_SOLO6X10=m
4160CONFIG_ACPI_QUICKSTART=m
4134CONFIG_X86_PLATFORM_DEVICES=y 4161CONFIG_X86_PLATFORM_DEVICES=y
4135CONFIG_ACER_WMI=m 4162CONFIG_ACER_WMI=m
4136CONFIG_ASUS_LAPTOP=m 4163CONFIG_ASUS_LAPTOP=m
@@ -4144,6 +4171,7 @@ CONFIG_PANASONIC_LAPTOP=m
4144CONFIG_COMPAL_LAPTOP=m 4171CONFIG_COMPAL_LAPTOP=m
4145CONFIG_SONY_LAPTOP=m 4172CONFIG_SONY_LAPTOP=m
4146# CONFIG_SONYPI_COMPAT is not set 4173# CONFIG_SONYPI_COMPAT is not set
4174CONFIG_IDEAPAD_ACPI=m
4147CONFIG_THINKPAD_ACPI=m 4175CONFIG_THINKPAD_ACPI=m
4148CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y 4176CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
4149# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set 4177# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
@@ -4161,6 +4189,7 @@ CONFIG_ACPI_ASUS=m
4161CONFIG_ACPI_TOSHIBA=m 4189CONFIG_ACPI_TOSHIBA=m
4162CONFIG_TOSHIBA_BT_RFKILL=m 4190CONFIG_TOSHIBA_BT_RFKILL=m
4163CONFIG_ACPI_CMPC=m 4191CONFIG_ACPI_CMPC=m
4192CONFIG_INTEL_IPS=m
4164 4193
4165# 4194#
4166# Firmware Drivers 4195# Firmware Drivers
@@ -4228,7 +4257,6 @@ CONFIG_NILFS2_FS=m
4228CONFIG_FILE_LOCKING=y 4257CONFIG_FILE_LOCKING=y
4229CONFIG_FSNOTIFY=y 4258CONFIG_FSNOTIFY=y
4230# CONFIG_DNOTIFY is not set 4259# CONFIG_DNOTIFY is not set
4231CONFIG_INOTIFY=y
4232CONFIG_INOTIFY_USER=y 4260CONFIG_INOTIFY_USER=y
4233CONFIG_QUOTA=y 4261CONFIG_QUOTA=y
4234CONFIG_QUOTA_NETLINK_INTERFACE=y 4262CONFIG_QUOTA_NETLINK_INTERFACE=y
@@ -4327,7 +4355,8 @@ CONFIG_UBIFS_FS_ZLIB=y
4327CONFIG_LOGFS=m 4355CONFIG_LOGFS=m
4328CONFIG_CRAMFS=m 4356CONFIG_CRAMFS=m
4329CONFIG_SQUASHFS=m 4357CONFIG_SQUASHFS=m
4330# CONFIG_SQUASHFS_XATTRS is not set 4358# CONFIG_SQUASHFS_XATTR is not set
4359# CONFIG_SQUASHFS_LZO is not set
4331# CONFIG_SQUASHFS_EMBEDDED is not set 4360# CONFIG_SQUASHFS_EMBEDDED is not set
4332CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 4361CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
4333# CONFIG_VXFS_FS is not set 4362# CONFIG_VXFS_FS is not set
@@ -4353,6 +4382,8 @@ CONFIG_NFS_V3=y
4353CONFIG_NFS_V4=y 4382CONFIG_NFS_V4=y
4354# CONFIG_NFS_V4_1 is not set 4383# CONFIG_NFS_V4_1 is not set
4355# CONFIG_NFS_FSCACHE is not set 4384# CONFIG_NFS_FSCACHE is not set
4385# CONFIG_NFS_USE_LEGACY_DNS is not set
4386CONFIG_NFS_USE_KERNEL_DNS=y
4356CONFIG_NFSD=m 4387CONFIG_NFSD=m
4357CONFIG_NFSD_V3=y 4388CONFIG_NFSD_V3=y
4358# CONFIG_NFSD_V3_ACL is not set 4389# CONFIG_NFSD_V3_ACL is not set
@@ -4377,6 +4408,7 @@ CONFIG_CIFS_XATTR=y
4377CONFIG_CIFS_POSIX=y 4408CONFIG_CIFS_POSIX=y
4378# CONFIG_CIFS_DEBUG2 is not set 4409# CONFIG_CIFS_DEBUG2 is not set
4379CONFIG_CIFS_DFS_UPCALL=y 4410CONFIG_CIFS_DFS_UPCALL=y
4411# CONFIG_CIFS_FSCACHE is not set
4380CONFIG_CIFS_EXPERIMENTAL=y 4412CONFIG_CIFS_EXPERIMENTAL=y
4381# CONFIG_NCP_FS is not set 4413# CONFIG_NCP_FS is not set
4382# CONFIG_CODA_FS is not set 4414# CONFIG_CODA_FS is not set
@@ -4461,13 +4493,13 @@ CONFIG_FRAME_WARN=1024
4461CONFIG_DEBUG_FS=y 4493CONFIG_DEBUG_FS=y
4462# CONFIG_HEADERS_CHECK is not set 4494# CONFIG_HEADERS_CHECK is not set
4463# CONFIG_DEBUG_KERNEL is not set 4495# CONFIG_DEBUG_KERNEL is not set
4496# CONFIG_HARDLOCKUP_DETECTOR is not set
4464CONFIG_DEBUG_BUGVERBOSE=y 4497CONFIG_DEBUG_BUGVERBOSE=y
4465# CONFIG_DEBUG_MEMORY_INIT is not set 4498# CONFIG_DEBUG_MEMORY_INIT is not set
4466CONFIG_ARCH_WANT_FRAME_POINTERS=y 4499CONFIG_ARCH_WANT_FRAME_POINTERS=y
4467CONFIG_FRAME_POINTER=y 4500CONFIG_FRAME_POINTER=y
4468# CONFIG_RCU_CPU_STALL_DETECTOR is not set 4501# CONFIG_RCU_CPU_STALL_DETECTOR is not set
4469# CONFIG_LKDTM is not set 4502# CONFIG_LKDTM is not set
4470# CONFIG_LATENCYTOP is not set
4471CONFIG_SYSCTL_SYSCALL_CHECK=y 4503CONFIG_SYSCTL_SYSCALL_CHECK=y
4472CONFIG_USER_STACKTRACE_SUPPORT=y 4504CONFIG_USER_STACKTRACE_SUPPORT=y
4473CONFIG_HAVE_FUNCTION_TRACER=y 4505CONFIG_HAVE_FUNCTION_TRACER=y
@@ -4515,10 +4547,8 @@ CONFIG_SECURITYFS=y
4515# CONFIG_SECURITY_NETWORK is not set 4547# CONFIG_SECURITY_NETWORK is not set
4516# CONFIG_SECURITY_PATH is not set 4548# CONFIG_SECURITY_PATH is not set
4517# CONFIG_SECURITY_TOMOYO is not set 4549# CONFIG_SECURITY_TOMOYO is not set
4550# CONFIG_SECURITY_APPARMOR is not set
4518# CONFIG_IMA is not set 4551# CONFIG_IMA is not set
4519# CONFIG_DEFAULT_SECURITY_SELINUX is not set
4520# CONFIG_DEFAULT_SECURITY_SMACK is not set
4521# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
4522CONFIG_DEFAULT_SECURITY_DAC=y 4552CONFIG_DEFAULT_SECURITY_DAC=y
4523CONFIG_DEFAULT_SECURITY="" 4553CONFIG_DEFAULT_SECURITY=""
4524CONFIG_XOR_BLOCKS=m 4554CONFIG_XOR_BLOCKS=m
@@ -4527,6 +4557,7 @@ CONFIG_ASYNC_MEMCPY=m
4527CONFIG_ASYNC_XOR=m 4557CONFIG_ASYNC_XOR=m
4528CONFIG_ASYNC_PQ=m 4558CONFIG_ASYNC_PQ=m
4529CONFIG_ASYNC_RAID6_RECOV=m 4559CONFIG_ASYNC_RAID6_RECOV=m
4560# CONFIG_ASYNC_RAID6_TEST is not set
4530CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y 4561CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
4531CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y 4562CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
4532CONFIG_CRYPTO=y 4563CONFIG_CRYPTO=y
@@ -4545,10 +4576,11 @@ CONFIG_CRYPTO_HASH=y
4545CONFIG_CRYPTO_HASH2=y 4576CONFIG_CRYPTO_HASH2=y
4546CONFIG_CRYPTO_RNG=m 4577CONFIG_CRYPTO_RNG=m
4547CONFIG_CRYPTO_RNG2=y 4578CONFIG_CRYPTO_RNG2=y
4548CONFIG_CRYPTO_PCOMP=y 4579CONFIG_CRYPTO_PCOMP=m
4580CONFIG_CRYPTO_PCOMP2=y
4549CONFIG_CRYPTO_MANAGER=m 4581CONFIG_CRYPTO_MANAGER=m
4550CONFIG_CRYPTO_MANAGER2=y 4582CONFIG_CRYPTO_MANAGER2=y
4551CONFIG_CRYPTO_MANAGER_TESTS=y 4583CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
4552CONFIG_CRYPTO_GF128MUL=m 4584CONFIG_CRYPTO_GF128MUL=m
4553CONFIG_CRYPTO_NULL=m 4585CONFIG_CRYPTO_NULL=m
4554CONFIG_CRYPTO_PCRYPT=m 4586CONFIG_CRYPTO_PCRYPT=m
@@ -4662,6 +4694,7 @@ CONFIG_VIRTIO_BALLOON=m
4662# 4694#
4663# Library routines 4695# Library routines
4664# 4696#
4697CONFIG_RAID6_PQ=m
4665CONFIG_BITREVERSE=y 4698CONFIG_BITREVERSE=y
4666CONFIG_GENERIC_FIND_FIRST_BIT=y 4699CONFIG_GENERIC_FIND_FIRST_BIT=y
4667CONFIG_GENERIC_FIND_NEXT_BIT=y 4700CONFIG_GENERIC_FIND_NEXT_BIT=y
diff --git a/testing/linux-scst/r8169-add-gro-support.patch b/testing/linux-scst/r8169-add-gro-support.patch
deleted file mode 100644
index d8ca8d3ad6..0000000000
--- a/testing/linux-scst/r8169-add-gro-support.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1- Use napi_gro_receive() and vlan_gro_receive()
2- Enable GRO by default
3
4Tested on a RTL8111/8168 adapter
5
6Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
7CC: Francois Romieu <romieu@fr.zoreil.com>
8---
9 drivers/net/r8169.c | 10 ++++++++--
10 1 file changed, 8 insertions(+), 2 deletions(-)
11
12diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
13index 56a11e2..ddff42b 100644
14--- a/drivers/net/r8169.c
15+++ b/drivers/net/r8169.c
16@@ -1076,7 +1076,12 @@ static int rtl8169_rx_vlan_skb(struct rtl8169_private *tp, struct RxDesc *desc,
17 int ret;
18
19 if (vlgrp && (opts2 & RxVlanTag)) {
20- __vlan_hwaccel_rx(skb, vlgrp, swab16(opts2 & 0xffff), polling);
21+ u16 vtag = swab16(opts2 & 0xffff);
22+
23+ if (polling)
24+ vlan_gro_receive(&tp->napi, vlgrp, vtag, skb);
25+ else
26+ __vlan_hwaccel_rx(skb, vlgrp, vtag, polling);
27 ret = 0;
28 } else
29 ret = -1;
30@@ -3186,6 +3191,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
31 #ifdef CONFIG_R8169_VLAN
32 dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
33 #endif
34+ dev->features |= NETIF_F_GRO;
35
36 tp->intr_mask = 0xffff;
37 tp->align = cfg->align;
38@@ -4561,7 +4567,7 @@ static int rtl8169_rx_interrupt(struct net_device *dev,
39
40 if (rtl8169_rx_vlan_skb(tp, desc, skb, polling) < 0) {
41 if (likely(polling))
42- netif_receive_skb(skb);
43+ napi_gro_receive(&tp->napi, skb);
44 else
45 netif_rx(skb);
46 }
47
48
49--
50To unsubscribe from this list: send the line "unsubscribe netdev" in
51the body of a message to majordomo@vger.kernel.org
52More majordomo info at http://vger.kernel.org/majordomo-info.html \ No newline at end of file
diff --git a/testing/linux-scst/r8169-fix-rx-checksum-offload.patch b/testing/linux-scst/r8169-fix-rx-checksum-offload.patch
deleted file mode 100644
index d979caac63..0000000000
--- a/testing/linux-scst/r8169-fix-rx-checksum-offload.patch
+++ /dev/null
@@ -1,62 +0,0 @@
1From adea1ac7effbddbe60a9de6d63462bfe79289e59 Mon Sep 17 00:00:00 2001
2From: Eric Dumazet <eric.dumazet@gmail.com>
3Date: Sun, 5 Sep 2010 20:04:05 -0700
4Subject: [PATCH] r8169: fix rx checksum offload
5
6While porting GRO to r8169, I found this driver has a bug in its rx
7path.
8
9All skbs given to network stack had their ip_summed set to
10CHECKSUM_NONE, while hardware said they had correct TCP/UDP checksums.
11
12The reason is driver sets skb->ip_summed on the original skb before the
13copy eventually done by copybreak. The fresh skb gets the ip_summed =
14CHECKSUM_NONE value, forcing network stack to recompute checksum, and
15preventing my GRO patch to work.
16
17Fix is to make the ip_summed setting after skb copy.
18
19Note : rx_copybreak current value is 16383, so all frames are copied...
20
21Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
22Acked-by: Francois Romieu <romieu@fr.zoreil.com>
23Signed-off-by: David S. Miller <davem@davemloft.net>
24---
25 drivers/net/r8169.c | 6 ++----
26 1 files changed, 2 insertions(+), 4 deletions(-)
27
28diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
29index 07b3fb5..56a11e2 100644
30--- a/drivers/net/r8169.c
31+++ b/drivers/net/r8169.c
32@@ -4450,9 +4450,8 @@ static inline int rtl8169_fragmented_frame(u32 status)
33 return (status & (FirstFrag | LastFrag)) != (FirstFrag | LastFrag);
34 }
35
36-static inline void rtl8169_rx_csum(struct sk_buff *skb, struct RxDesc *desc)
37+static inline void rtl8169_rx_csum(struct sk_buff *skb, u32 opts1)
38 {
39- u32 opts1 = le32_to_cpu(desc->opts1);
40 u32 status = opts1 & RxProtoMask;
41
42 if (((status == RxProtoTCP) && !(opts1 & TCPFail)) ||
43@@ -4546,8 +4545,6 @@ static int rtl8169_rx_interrupt(struct net_device *dev,
44 continue;
45 }
46
47- rtl8169_rx_csum(skb, desc);
48-
49 if (rtl8169_try_rx_copy(&skb, tp, pkt_size, addr)) {
50 pci_dma_sync_single_for_device(pdev, addr,
51 pkt_size, PCI_DMA_FROMDEVICE);
52@@ -4558,6 +4555,7 @@ static int rtl8169_rx_interrupt(struct net_device *dev,
53 tp->Rx_skbuff[entry] = NULL;
54 }
55
56+ rtl8169_rx_csum(skb, status);
57 skb_put(skb, pkt_size);
58 skb->protocol = eth_type_trans(skb, dev);
59
60--
611.7.2.3
62
diff --git a/testing/linux-scst/scst-2.6.35-svn-3161.patch b/testing/linux-scst/scst-2.6.36-2.0.0.patch
index 6b1904a45d..f482ae59e4 100644
--- a/testing/linux-scst/scst-2.6.35-svn-3161.patch
+++ b/testing/linux-scst/scst-2.6.36-2.0.0.patch
@@ -1,8 +1,8 @@
1Signed-off-by: 1Signed-off-by:
2 2
3diff -upkr linux-2.6.35/block/blk-map.c linux-2.6.35/block/blk-map.c 3diff -upkr linux-2.6.36/block/blk-map.c linux-2.6.36/block/blk-map.c
4--- linux-2.6.35/block/blk-map.c 2010-08-02 02:11:14.000000000 +0400 4--- linux-2.6.36/block/blk-map.c 2010-10-21 00:30:22.000000000 +0400
5+++ linux-2.6.35/block/blk-map.c 2010-11-26 18:03:58.107693773 +0300 5+++ linux-2.6.36/block/blk-map.c 2010-11-26 17:52:19.467689539 +0300
6@@ -5,6 +5,8 @@ 6@@ -5,6 +5,8 @@
7 #include <linux/module.h> 7 #include <linux/module.h>
8 #include <linux/bio.h> 8 #include <linux/bio.h>
@@ -12,7 +12,7 @@ diff -upkr linux-2.6.35/block/blk-map.c linux-2.6.35/block/blk-map.c
12 #include <scsi/sg.h> /* for struct sg_iovec */ 12 #include <scsi/sg.h> /* for struct sg_iovec */
13 13
14 #include "blk.h" 14 #include "blk.h"
15@@ -271,6 +273,335 @@ int blk_rq_unmap_user(struct bio *bio) 15@@ -271,6 +273,337 @@ int blk_rq_unmap_user(struct bio *bio)
16 } 16 }
17 EXPORT_SYMBOL(blk_rq_unmap_user); 17 EXPORT_SYMBOL(blk_rq_unmap_user);
18 18
@@ -197,7 +197,7 @@ diff -upkr linux-2.6.35/block/blk-map.c linux-2.6.35/block/blk-map.c
197+ } 197+ }
198+ 198+
199+ if (rw == WRITE) 199+ if (rw == WRITE)
200+ bio->bi_rw |= 1 << BIO_RW; 200+ bio->bi_rw |= REQ_WRITE;
201+ 201+
202+ bios++; 202+ bios++;
203+ bio->bi_private = bw; 203+ bio->bi_private = bw;
@@ -265,6 +265,8 @@ diff -upkr linux-2.6.35/block/blk-map.c linux-2.6.35/block/blk-map.c
265+ } 265+ }
266+ } 266+ }
267+ 267+
268+ res = 0;
269+
268+ rq->buffer = NULL; 270+ rq->buffer = NULL;
269+out: 271+out:
270+ return res; 272+ return res;
@@ -348,10 +350,10 @@ diff -upkr linux-2.6.35/block/blk-map.c linux-2.6.35/block/blk-map.c
348 /** 350 /**
349 * blk_rq_map_kern - map kernel data to a request, for REQ_TYPE_BLOCK_PC usage 351 * blk_rq_map_kern - map kernel data to a request, for REQ_TYPE_BLOCK_PC usage
350 * @q: request queue where request should be inserted 352 * @q: request queue where request should be inserted
351diff -upkr linux-2.6.35/include/linux/blkdev.h linux-2.6.35/include/linux/blkdev.h 353diff -upkr linux-2.6.36/include/linux/blkdev.h linux-2.6.36/include/linux/blkdev.h
352--- linux-2.6.35/include/linux/blkdev.h 2010-08-02 02:11:14.000000000 +0400 354--- linux-2.6.36/include/linux/blkdev.h 2010-10-21 00:30:22.000000000 +0400
353+++ linux-2.6.35/include/linux/blkdev.h 2010-08-04 12:21:59.737128732 +0400 355+++ linux-2.6.36/include/linux/blkdev.h 2010-10-26 12:00:15.899759399 +0400
354@@ -832,6 +834,9 @@ extern int blk_rq_map_kern(struct reques 356@@ -746,6 +748,9 @@ extern int blk_rq_map_kern(struct reques
355 extern int blk_rq_map_user_iov(struct request_queue *, struct request *, 357 extern int blk_rq_map_user_iov(struct request_queue *, struct request *,
356 struct rq_map_data *, struct sg_iovec *, int, 358 struct rq_map_data *, struct sg_iovec *, int,
357 unsigned int, gfp_t); 359 unsigned int, gfp_t);
@@ -361,9 +363,9 @@ diff -upkr linux-2.6.35/include/linux/blkdev.h linux-2.6.35/include/linux/blkdev
361 extern int blk_execute_rq(struct request_queue *, struct gendisk *, 363 extern int blk_execute_rq(struct request_queue *, struct gendisk *,
362 struct request *, int); 364 struct request *, int);
363 extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *, 365 extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *,
364diff -upkr linux-2.6.35/include/linux/scatterlist.h linux-2.6.35/include/linux/scatterlist.h 366diff -upkr linux-2.6.36/include/linux/scatterlist.h linux-2.6.36/include/linux/scatterlist.h
365--- linux-2.6.35/include/linux/scatterlist.h 2010-08-02 02:11:14.000000000 +0400 367--- linux-2.6.36/include/linux/scatterlist.h 2010-10-21 00:30:22.000000000 +0400
366+++ linux-2.6.35/include/linux/scatterlist.h 2010-08-04 12:21:59.741129485 +0400 368+++ linux-2.6.36/include/linux/scatterlist.h 2010-10-26 12:00:15.899759399 +0400
367@@ -3,6 +3,7 @@ 369@@ -3,6 +3,7 @@
368 370
369 #include <asm/types.h> 371 #include <asm/types.h>
@@ -383,10 +385,10 @@ diff -upkr linux-2.6.35/include/linux/scatterlist.h linux-2.6.35/include/linux/s
383 /* 385 /*
384 * Maximum number of entries that will be allocated in one piece, if 386 * Maximum number of entries that will be allocated in one piece, if
385 * a list larger than this is required then chaining will be utilized. 387 * a list larger than this is required then chaining will be utilized.
386diff -upkr linux-2.6.35/lib/scatterlist.c linux-2.6.35/lib/scatterlist.c 388diff -upkr linux-2.6.36/lib/scatterlist.c linux-2.6.36/lib/scatterlist.c
387--- linux-2.6.35/lib/scatterlist.c 2010-08-02 02:11:14.000000000 +0400 389--- linux-2.6.36/lib/scatterlist.c 2010-10-21 00:30:22.000000000 +0400
388+++ linux-2.6.35/lib/scatterlist.c 2010-08-04 12:21:59.741129485 +0400 390+++ linux-2.6.36/lib/scatterlist.c 2010-10-26 12:00:15.899759399 +0400
389@@ -494,3 +494,132 @@ size_t sg_copy_to_buffer(struct scatterl 391@@ -517,3 +517,132 @@ size_t sg_copy_to_buffer(struct scatterl
390 return sg_copy_buffer(sgl, nents, buf, buflen, 1); 392 return sg_copy_buffer(sgl, nents, buf, buflen, 1);
391 } 393 }
392 EXPORT_SYMBOL(sg_copy_to_buffer); 394 EXPORT_SYMBOL(sg_copy_to_buffer);
@@ -520,9 +522,9 @@ diff -upkr linux-2.6.35/lib/scatterlist.c linux-2.6.35/lib/scatterlist.c
520+} 522+}
521+EXPORT_SYMBOL(sg_copy); 523+EXPORT_SYMBOL(sg_copy);
522 524
523diff -upkr linux-2.6.35/include/linux/mm_types.h linux-2.6.35/include/linux/mm_types.h 525diff -upkr linux-2.6.36/include/linux/mm_types.h linux-2.6.36/include/linux/mm_types.h
524--- linux-2.6.35/include/linux/mm_types.h 2010-05-17 01:17:36.000000000 +0400 526--- linux-2.6.36/include/linux/mm_types.h 2010-10-21 00:30:22.000000000 +0400
525+++ linux-2.6.35/include/linux/mm_types.h 2010-05-24 14:51:40.000000000 +0400 527+++ linux-2.6.36/include/linux/mm_types.h 2010-10-26 12:01:40.651752329 +0400
526@@ -100,6 +100,18 @@ struct page { 528@@ -100,6 +100,18 @@ struct page {
527 */ 529 */
528 void *shadow; 530 void *shadow;
@@ -542,9 +544,9 @@ diff -upkr linux-2.6.35/include/linux/mm_types.h linux-2.6.35/include/linux/mm_t
542 }; 544 };
543 545
544 /* 546 /*
545diff -upkr linux-2.6.35/include/linux/net.h linux-2.6.35/include/linux/net.h 547diff -upkr linux-2.6.36/include/linux/net.h linux-2.6.36/include/linux/net.h
546--- linux-2.6.35/include/linux/net.h 2010-05-17 01:17:36.000000000 +0400 548--- linux-2.6.36/include/linux/net.h 2010-10-21 00:30:22.000000000 +0400
547+++ linux-2.6.35/include/linux/net.h 2010-05-24 14:51:40.000000000 +0400 549+++ linux-2.6.36/include/linux/net.h 2010-10-26 12:01:40.651752329 +0400
548@@ -20,6 +20,7 @@ 550@@ -20,6 +20,7 @@
549 551
550 #include <linux/socket.h> 552 #include <linux/socket.h>
@@ -598,10 +600,10 @@ diff -upkr linux-2.6.35/include/linux/net.h linux-2.6.35/include/linux/net.h
598+ 600+
599 #endif /* __KERNEL__ */ 601 #endif /* __KERNEL__ */
600 #endif /* _LINUX_NET_H */ 602 #endif /* _LINUX_NET_H */
601diff -upkr linux-2.6.35/net/core/dev.c linux-2.6.35/net/core/dev.c 603diff -upkr linux-2.6.36/net/core/dev.c linux-2.6.36/net/core/dev.c
602--- linux-2.6.35/net/core/dev.c 2010-05-17 01:17:36.000000000 +0400 604--- linux-2.6.36/net/core/dev.c 2010-10-21 00:30:22.000000000 +0400
603+++ linux-2.6.35/net/core/dev.c 2010-05-24 14:51:40.000000000 +0400 605+++ linux-2.6.36/net/core/dev.c 2010-10-26 12:01:40.651752329 +0400
604@@ -3130,7 +3130,7 @@ pull: 606@@ -3140,7 +3140,7 @@ pull:
605 skb_shinfo(skb)->frags[0].size -= grow; 607 skb_shinfo(skb)->frags[0].size -= grow;
606 608
607 if (unlikely(!skb_shinfo(skb)->frags[0].size)) { 609 if (unlikely(!skb_shinfo(skb)->frags[0].size)) {
@@ -609,10 +611,10 @@ diff -upkr linux-2.6.35/net/core/dev.c linux-2.6.35/net/core/dev.c
609+ net_put_page(skb_shinfo(skb)->frags[0].page); 611+ net_put_page(skb_shinfo(skb)->frags[0].page);
610 memmove(skb_shinfo(skb)->frags, 612 memmove(skb_shinfo(skb)->frags,
611 skb_shinfo(skb)->frags + 1, 613 skb_shinfo(skb)->frags + 1,
612 --skb_shinfo(skb)->nr_frags); 614 --skb_shinfo(skb)->nr_frags * sizeof(skb_frag_t));
613diff -upkr linux-2.6.35/net/core/skbuff.c linux-2.6.35/net/core/skbuff.c 615diff -upkr linux-2.6.36/net/core/skbuff.c linux-2.6.36/net/core/skbuff.c
614--- linux-2.6.35/net/core/skbuff.c 2010-05-17 01:17:36.000000000 +0400 616--- linux-2.6.36/net/core/skbuff.c 2010-10-21 00:30:22.000000000 +0400
615+++ linux-2.6.35/net/core/skbuff.c 2010-05-24 14:51:40.000000000 +0400 617+++ linux-2.6.36/net/core/skbuff.c 2010-10-26 12:01:40.655752708 +0400
616@@ -76,13 +76,13 @@ static struct kmem_cache *skbuff_fclone_ 618@@ -76,13 +76,13 @@ static struct kmem_cache *skbuff_fclone_
617 static void sock_pipe_buf_release(struct pipe_inode_info *pipe, 619 static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
618 struct pipe_buffer *buf) 620 struct pipe_buffer *buf)
@@ -648,7 +650,7 @@ diff -upkr linux-2.6.35/net/core/skbuff.c linux-2.6.35/net/core/skbuff.c
648 skb_shinfo(n)->nr_frags = i; 650 skb_shinfo(n)->nr_frags = i;
649 } 651 }
650@@ -820,7 +820,7 @@ int pskb_expand_head(struct sk_buff *skb 652@@ -820,7 +820,7 @@ int pskb_expand_head(struct sk_buff *skb
651 sizeof(struct skb_shared_info)); 653 offsetof(struct skb_shared_info, frags[skb_shinfo(skb)->nr_frags]));
652 654
653 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) 655 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
654- get_page(skb_shinfo(skb)->frags[i].page); 656- get_page(skb_shinfo(skb)->frags[i].page);
@@ -737,7 +739,7 @@ diff -upkr linux-2.6.35/net/core/skbuff.c linux-2.6.35/net/core/skbuff.c
737 } 739 }
738 740
739 /* Reposition in the original skb */ 741 /* Reposition in the original skb */
740@@ -2598,7 +2598,7 @@ struct sk_buff *skb_segment(struct sk_bu 742@@ -2601,7 +2601,7 @@ struct sk_buff *skb_segment(struct sk_bu
741 743
742 while (pos < offset + len && i < nfrags) { 744 while (pos < offset + len && i < nfrags) {
743 *frag = skb_shinfo(skb)->frags[i]; 745 *frag = skb_shinfo(skb)->frags[i];
@@ -746,10 +748,10 @@ diff -upkr linux-2.6.35/net/core/skbuff.c linux-2.6.35/net/core/skbuff.c
746 size = frag->size; 748 size = frag->size;
747 749
748 if (pos < offset) { 750 if (pos < offset) {
749diff -upkr linux-2.6.35/net/ipv4/ip_output.c linux-2.6.35/net/ipv4/ip_output.c 751diff -upkr linux-2.6.36/net/ipv4/ip_output.c linux-2.6.36/net/ipv4/ip_output.c
750--- linux-2.6.35/net/ipv4/ip_output.c 2010-05-17 01:17:36.000000000 +0400 752--- linux-2.6.36/net/ipv4/ip_output.c 2010-10-21 00:30:22.000000000 +0400
751+++ linux-2.6.35/net/ipv4/ip_output.c 2010-05-24 14:51:40.000000000 +0400 753+++ linux-2.6.36/net/ipv4/ip_output.c 2010-10-26 12:01:40.655752708 +0400
752@@ -1035,7 +1035,7 @@ alloc_new_skb: 754@@ -1040,7 +1040,7 @@ alloc_new_skb:
753 err = -EMSGSIZE; 755 err = -EMSGSIZE;
754 goto error; 756 goto error;
755 } 757 }
@@ -758,7 +760,7 @@ diff -upkr linux-2.6.35/net/ipv4/ip_output.c linux-2.6.35/net/ipv4/ip_output.c
758 skb_fill_page_desc(skb, i, page, sk->sk_sndmsg_off, 0); 760 skb_fill_page_desc(skb, i, page, sk->sk_sndmsg_off, 0);
759 frag = &skb_shinfo(skb)->frags[i]; 761 frag = &skb_shinfo(skb)->frags[i];
760 } 762 }
761@@ -1194,7 +1194,7 @@ ssize_t ip_append_page(struct sock *sk, 763@@ -1199,7 +1199,7 @@ ssize_t ip_append_page(struct sock *sk,
762 if (skb_can_coalesce(skb, i, page, offset)) { 764 if (skb_can_coalesce(skb, i, page, offset)) {
763 skb_shinfo(skb)->frags[i-1].size += len; 765 skb_shinfo(skb)->frags[i-1].size += len;
764 } else if (i < MAX_SKB_FRAGS) { 766 } else if (i < MAX_SKB_FRAGS) {
@@ -767,9 +769,9 @@ diff -upkr linux-2.6.35/net/ipv4/ip_output.c linux-2.6.35/net/ipv4/ip_output.c
767 skb_fill_page_desc(skb, i, page, offset, len); 769 skb_fill_page_desc(skb, i, page, offset, len);
768 } else { 770 } else {
769 err = -EMSGSIZE; 771 err = -EMSGSIZE;
770diff -upkr linux-2.6.35/net/ipv4/Makefile linux-2.6.35/net/ipv4/Makefile 772diff -upkr linux-2.6.36/net/ipv4/Makefile linux-2.6.36/net/ipv4/Makefile
771--- linux-2.6.35/net/ipv4/Makefile 2010-05-17 01:17:36.000000000 +0400 773--- linux-2.6.36/net/ipv4/Makefile 2010-10-21 00:30:22.000000000 +0400
772+++ linux-2.6.35/net/ipv4/Makefile 2010-05-24 14:51:40.000000000 +0400 774+++ linux-2.6.36/net/ipv4/Makefile 2010-10-26 12:01:40.655752708 +0400
773@@ -49,6 +49,7 @@ obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o 775@@ -49,6 +49,7 @@ obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o
774 obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o 776 obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o
775 obj-$(CONFIG_TCP_CONG_ILLINOIS) += tcp_illinois.o 777 obj-$(CONFIG_TCP_CONG_ILLINOIS) += tcp_illinois.o
@@ -778,10 +780,10 @@ diff -upkr linux-2.6.35/net/ipv4/Makefile linux-2.6.35/net/ipv4/Makefile
778 780
779 obj-$(CONFIG_XFRM) += xfrm4_policy.o xfrm4_state.o xfrm4_input.o \ 781 obj-$(CONFIG_XFRM) += xfrm4_policy.o xfrm4_state.o xfrm4_input.o \
780 xfrm4_output.o 782 xfrm4_output.o
781diff -upkr linux-2.6.35/net/ipv4/tcp.c linux-2.6.35/net/ipv4/tcp.c 783diff -upkr linux-2.6.36/net/ipv4/tcp.c linux-2.6.36/net/ipv4/tcp.c
782--- linux-2.6.35/net/ipv4/tcp.c 2010-05-17 01:17:36.000000000 +0400 784--- linux-2.6.36/net/ipv4/tcp.c 2010-10-21 00:30:22.000000000 +0400
783+++ linux-2.6.35/net/ipv4/tcp.c 2010-05-24 14:51:40.000000000 +0400 785+++ linux-2.6.36/net/ipv4/tcp.c 2010-10-26 12:01:40.659752056 +0400
784@@ -801,7 +801,7 @@ new_segment: 786@@ -806,7 +806,7 @@ new_segment:
785 if (can_coalesce) { 787 if (can_coalesce) {
786 skb_shinfo(skb)->frags[i - 1].size += copy; 788 skb_shinfo(skb)->frags[i - 1].size += copy;
787 } else { 789 } else {
@@ -790,7 +792,7 @@ diff -upkr linux-2.6.35/net/ipv4/tcp.c linux-2.6.35/net/ipv4/tcp.c
790 skb_fill_page_desc(skb, i, page, offset, copy); 792 skb_fill_page_desc(skb, i, page, offset, copy);
791 } 793 }
792 794
793@@ -1010,7 +1010,7 @@ new_segment: 795@@ -1015,7 +1015,7 @@ new_segment:
794 goto new_segment; 796 goto new_segment;
795 } else if (page) { 797 } else if (page) {
796 if (off == PAGE_SIZE) { 798 if (off == PAGE_SIZE) {
@@ -799,7 +801,7 @@ diff -upkr linux-2.6.35/net/ipv4/tcp.c linux-2.6.35/net/ipv4/tcp.c
799 TCP_PAGE(sk) = page = NULL; 801 TCP_PAGE(sk) = page = NULL;
800 off = 0; 802 off = 0;
801 } 803 }
802@@ -1051,9 +1051,9 @@ new_segment: 804@@ -1056,9 +1056,9 @@ new_segment:
803 } else { 805 } else {
804 skb_fill_page_desc(skb, i, page, off, copy); 806 skb_fill_page_desc(skb, i, page, off, copy);
805 if (TCP_PAGE(sk)) { 807 if (TCP_PAGE(sk)) {
@@ -811,10 +813,10 @@ diff -upkr linux-2.6.35/net/ipv4/tcp.c linux-2.6.35/net/ipv4/tcp.c
811 TCP_PAGE(sk) = page; 813 TCP_PAGE(sk) = page;
812 } 814 }
813 } 815 }
814diff -upkr linux-2.6.35/net/ipv4/tcp_output.c linux-2.6.35/net/ipv4/tcp_output.c 816diff -upkr linux-2.6.36/net/ipv4/tcp_output.c linux-2.6.36/net/ipv4/tcp_output.c
815--- linux-2.6.35/net/ipv4/tcp_output.c 2010-05-17 01:17:36.000000000 +0400 817--- linux-2.6.36/net/ipv4/tcp_output.c 2010-10-21 00:30:22.000000000 +0400
816+++ linux-2.6.35/net/ipv4/tcp_output.c 2010-05-24 14:51:40.000000000 +0400 818+++ linux-2.6.36/net/ipv4/tcp_output.c 2010-10-26 12:01:40.659752056 +0400
817@@ -1085,7 +1085,7 @@ static void __pskb_trim_head(struct sk_b 819@@ -1086,7 +1086,7 @@ static void __pskb_trim_head(struct sk_b
818 k = 0; 820 k = 0;
819 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 821 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
820 if (skb_shinfo(skb)->frags[i].size <= eat) { 822 if (skb_shinfo(skb)->frags[i].size <= eat) {
@@ -823,9 +825,9 @@ diff -upkr linux-2.6.35/net/ipv4/tcp_output.c linux-2.6.35/net/ipv4/tcp_output.c
823 eat -= skb_shinfo(skb)->frags[i].size; 825 eat -= skb_shinfo(skb)->frags[i].size;
824 } else { 826 } else {
825 skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i]; 827 skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i];
826diff -upkr linux-2.6.35/net/ipv4/tcp_zero_copy.c linux-2.6.35/net/ipv4/tcp_zero_copy.c 828diff -upkr linux-2.6.36/net/ipv4/tcp_zero_copy.c linux-2.6.36/net/ipv4/tcp_zero_copy.c
827--- linux-2.6.35/net/ipv4/tcp_zero_copy.c 2010-03-01 17:30:31.000000000 +0300 829--- linux-2.6.36/net/ipv4/tcp_zero_copy.c 2010-10-26 12:02:24.519252006 +0400
828+++ linux-2.6.35/net/ipv4/tcp_zero_copy.c 2010-05-24 14:51:40.000000000 +0400 830+++ linux-2.6.36/net/ipv4/tcp_zero_copy.c 2010-10-26 12:01:40.659752056 +0400
829@@ -0,0 +1,49 @@ 831@@ -0,0 +1,49 @@
830+/* 832+/*
831+ * Support routines for TCP zero copy transmit 833+ * Support routines for TCP zero copy transmit
@@ -836,7 +838,7 @@ diff -upkr linux-2.6.35/net/ipv4/tcp_zero_copy.c linux-2.6.35/net/ipv4/tcp_zero_
836+ * modify it under the terms of the GNU General Public License 838+ * modify it under the terms of the GNU General Public License
837+ * version 2 as published by the Free Software Foundation. 839+ * version 2 as published by the Free Software Foundation.
838+ */ 840+ */
839+ 841+
840+#include <linux/skbuff.h> 842+#include <linux/skbuff.h>
841+ 843+
842+net_get_page_callback_t net_get_page_callback __read_mostly; 844+net_get_page_callback_t net_get_page_callback __read_mostly;
@@ -876,10 +878,10 @@ diff -upkr linux-2.6.35/net/ipv4/tcp_zero_copy.c linux-2.6.35/net/ipv4/tcp_zero_
876+ return res; 878+ return res;
877+} 879+}
878+EXPORT_SYMBOL(net_set_get_put_page_callbacks); 880+EXPORT_SYMBOL(net_set_get_put_page_callbacks);
879diff -upkr linux-2.6.35/net/ipv6/ip6_output.c linux-2.6.35/net/ipv6/ip6_output.c 881diff -upkr linux-2.6.36/net/ipv6/ip6_output.c linux-2.6.36/net/ipv6/ip6_output.c
880--- linux-2.6.35/net/ipv6/ip6_output.c 2010-05-17 01:17:36.000000000 +0400 882--- linux-2.6.36/net/ipv6/ip6_output.c 2010-10-21 00:30:22.000000000 +0400
881+++ linux-2.6.35/net/ipv6/ip6_output.c 2010-05-24 14:51:40.000000000 +0400 883+++ linux-2.6.36/net/ipv6/ip6_output.c 2010-10-26 12:01:40.659752056 +0400
882@@ -1383,7 +1383,7 @@ alloc_new_skb: 884@@ -1391,7 +1391,7 @@ alloc_new_skb:
883 err = -EMSGSIZE; 885 err = -EMSGSIZE;
884 goto error; 886 goto error;
885 } 887 }
@@ -888,9 +890,9 @@ diff -upkr linux-2.6.35/net/ipv6/ip6_output.c linux-2.6.35/net/ipv6/ip6_output.c
888 skb_fill_page_desc(skb, i, page, sk->sk_sndmsg_off, 0); 890 skb_fill_page_desc(skb, i, page, sk->sk_sndmsg_off, 0);
889 frag = &skb_shinfo(skb)->frags[i]; 891 frag = &skb_shinfo(skb)->frags[i];
890 } 892 }
891diff -upkr linux-2.6.35/net/Kconfig linux-2.6.35/net/Kconfig 893diff -upkr linux-2.6.36/net/Kconfig linux-2.6.36/net/Kconfig
892--- linux-2.6.35/net/Kconfig 2010-05-17 01:17:36.000000000 +0400 894--- linux-2.6.36/net/Kconfig 2010-10-21 00:30:22.000000000 +0400
893+++ linux-2.6.35/net/Kconfig 2010-05-24 14:51:40.000000000 +0400 895+++ linux-2.6.36/net/Kconfig 2010-10-26 12:01:40.659752056 +0400
894@@ -72,6 +72,18 @@ config INET 896@@ -72,6 +72,18 @@ config INET
895 897
896 Short answer: say Y. 898 Short answer: say Y.
@@ -910,9 +912,425 @@ diff -upkr linux-2.6.35/net/Kconfig linux-2.6.35/net/Kconfig
910 if INET 912 if INET
911 source "net/ipv4/Kconfig" 913 source "net/ipv4/Kconfig"
912 source "net/ipv6/Kconfig" 914 source "net/ipv6/Kconfig"
913diff -uprN orig/linux-2.6.35/include/scst/scst.h linux-2.6.35/include/scst/scst.h 915diff -uprN orig/linux-2.6.36/include/scst/scst_const.h linux-2.6.36/include/scst/scst_const.h
914--- orig/linux-2.6.35/include/scst/scst.h 916--- orig/linux-2.6.36/include/scst/scst_const.h
915+++ linux-2.6.35/include/scst/scst.h 917+++ linux-2.6.36/include/scst/scst_const.h
918@@ -0,0 +1,412 @@
919+/*
920+ * include/scst_const.h
921+ *
922+ * Copyright (C) 2004 - 2010 Vladislav Bolkhovitin <vst@vlnb.net>
923+ * Copyright (C) 2007 - 2010 ID7 Ltd.
924+ *
925+ * Contains common SCST constants.
926+ *
927+ * This program is free software; you can redistribute it and/or
928+ * modify it under the terms of the GNU General Public License
929+ * as published by the Free Software Foundation, version 2
930+ * of the License.
931+ *
932+ * This program is distributed in the hope that it will be useful,
933+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
934+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
935+ * GNU General Public License for more details.
936+ */
937+
938+#ifndef __SCST_CONST_H
939+#define __SCST_CONST_H
940+
941+#ifndef GENERATING_UPSTREAM_PATCH
942+/*
943+ * Include <linux/version.h> only when not converting this header file into
944+ * a patch for upstream review because only then the symbol LINUX_VERSION_CODE
945+ * is needed.
946+ */
947+#include <linux/version.h>
948+#endif
949+#include <scsi/scsi.h>
950+
951+#define SCST_CONST_VERSION "$Revision: 2605 $"
952+
953+/*** Shared constants between user and kernel spaces ***/
954+
955+/* Max size of CDB */
956+#define SCST_MAX_CDB_SIZE 16
957+
958+/* Max size of various names */
959+#define SCST_MAX_NAME 50
960+
961+/* Max size of external names, like initiator name */
962+#define SCST_MAX_EXTERNAL_NAME 256
963+
964+/*
965+ * Size of sense sufficient to carry standard sense data.
966+ * Warning! It's allocated on stack!
967+ */
968+#define SCST_STANDARD_SENSE_LEN 18
969+
970+/* Max size of sense */
971+#define SCST_SENSE_BUFFERSIZE 96
972+
973+/*************************************************************
974+ ** Allowed delivery statuses for cmd's delivery_status
975+ *************************************************************/
976+
977+#define SCST_CMD_DELIVERY_SUCCESS 0
978+#define SCST_CMD_DELIVERY_FAILED -1
979+#define SCST_CMD_DELIVERY_ABORTED -2
980+
981+/*************************************************************
982+ ** Values for task management functions
983+ *************************************************************/
984+#define SCST_ABORT_TASK 0
985+#define SCST_ABORT_TASK_SET 1
986+#define SCST_CLEAR_ACA 2
987+#define SCST_CLEAR_TASK_SET 3
988+#define SCST_LUN_RESET 4
989+#define SCST_TARGET_RESET 5
990+
991+/** SCST extensions **/
992+
993+/*
994+ * Notifies about I_T nexus loss event in the corresponding session.
995+ * Aborts all tasks there, resets the reservation, if any, and sets
996+ * up the I_T Nexus loss UA.
997+ */
998+#define SCST_NEXUS_LOSS_SESS 6
999+
1000+/* Aborts all tasks in the corresponding session */
1001+#define SCST_ABORT_ALL_TASKS_SESS 7
1002+
1003+/*
1004+ * Notifies about I_T nexus loss event. Aborts all tasks in all sessions
1005+ * of the tgt, resets the reservations, if any, and sets up the I_T Nexus
1006+ * loss UA.
1007+ */
1008+#define SCST_NEXUS_LOSS 8
1009+
1010+/* Aborts all tasks in all sessions of the tgt */
1011+#define SCST_ABORT_ALL_TASKS 9
1012+
1013+/*
1014+ * Internal TM command issued by SCST in scst_unregister_session(). It is the
1015+ * same as SCST_NEXUS_LOSS_SESS, except:
1016+ * - it doesn't call task_mgmt_affected_cmds_done()
1017+ * - it doesn't call task_mgmt_fn_done()
1018+ * - it doesn't queue NEXUS LOSS UA.
1019+ *
1020+ * Target drivers must NEVER use it!!
1021+ */
1022+#define SCST_UNREG_SESS_TM 10
1023+
1024+/*
1025+ * Internal TM command issued by SCST in scst_pr_abort_reg(). It aborts all
1026+ * tasks from mcmd->origin_pr_cmd->tgt_dev, except mcmd->origin_pr_cmd.
1027+ * Additionally:
1028+ * - it signals pr_aborting_cmpl completion when all affected
1029+ * commands marked as aborted.
1030+ * - it doesn't call task_mgmt_affected_cmds_done()
1031+ * - it doesn't call task_mgmt_fn_done()
1032+ * - it calls mcmd->origin_pr_cmd->scst_cmd_done() when all affected
1033+ * commands aborted.
1034+ *
1035+ * Target drivers must NEVER use it!!
1036+ */
1037+#define SCST_PR_ABORT_ALL 11
1038+
1039+/*************************************************************
1040+ ** Values for mgmt cmd's status field. Codes taken from iSCSI
1041+ *************************************************************/
1042+#define SCST_MGMT_STATUS_SUCCESS 0
1043+#define SCST_MGMT_STATUS_TASK_NOT_EXIST -1
1044+#define SCST_MGMT_STATUS_LUN_NOT_EXIST -2
1045+#define SCST_MGMT_STATUS_FN_NOT_SUPPORTED -5
1046+#define SCST_MGMT_STATUS_REJECTED -255
1047+#define SCST_MGMT_STATUS_FAILED -129
1048+
1049+/*************************************************************
1050+ ** SCSI task attribute queue types
1051+ *************************************************************/
1052+enum scst_cmd_queue_type {
1053+ SCST_CMD_QUEUE_UNTAGGED = 0,
1054+ SCST_CMD_QUEUE_SIMPLE,
1055+ SCST_CMD_QUEUE_ORDERED,
1056+ SCST_CMD_QUEUE_HEAD_OF_QUEUE,
1057+ SCST_CMD_QUEUE_ACA
1058+};
1059+
1060+/*************************************************************
1061+ ** CDB flags
1062+ **
1063+ ** Implicit ordered used for commands which need calm environment
1064+ ** without any simultaneous activities. For instance, for MODE
1065+ ** SELECT it is needed to correctly generate its UA.
1066+ *************************************************************/
1067+enum scst_cdb_flags {
1068+ SCST_TRANSFER_LEN_TYPE_FIXED = 0x0001,
1069+ SCST_SMALL_TIMEOUT = 0x0002,
1070+ SCST_LONG_TIMEOUT = 0x0004,
1071+ SCST_UNKNOWN_LENGTH = 0x0008,
1072+ SCST_INFO_VALID = 0x0010, /* must be single bit */
1073+ SCST_VERIFY_BYTCHK_MISMATCH_ALLOWED = 0x0020,
1074+ SCST_IMPLICIT_HQ = 0x0040,
1075+ SCST_IMPLICIT_ORDERED = 0x0080, /* ToDo: remove it's nonsense */
1076+ SCST_SKIP_UA = 0x0100,
1077+ SCST_WRITE_MEDIUM = 0x0200,
1078+ SCST_LOCAL_CMD = 0x0400,
1079+ SCST_FULLY_LOCAL_CMD = 0x0800,
1080+ SCST_REG_RESERVE_ALLOWED = 0x1000,
1081+ SCST_WRITE_EXCL_ALLOWED = 0x2000,
1082+ SCST_EXCL_ACCESS_ALLOWED = 0x4000,
1083+#ifdef CONFIG_SCST_TEST_IO_IN_SIRQ
1084+ SCST_TEST_IO_IN_SIRQ_ALLOWED = 0x8000,
1085+#endif
1086+};
1087+
1088+/*************************************************************
1089+ ** Data direction aliases. Changing it don't forget to change
1090+ ** scst_to_tgt_dma_dir as well!!
1091+ *************************************************************/
1092+#define SCST_DATA_UNKNOWN 0
1093+#define SCST_DATA_WRITE 1
1094+#define SCST_DATA_READ 2
1095+#define SCST_DATA_BIDI (SCST_DATA_WRITE | SCST_DATA_READ)
1096+#define SCST_DATA_NONE 4
1097+
1098+/*************************************************************
1099+ ** Default suffix for targets with NULL names
1100+ *************************************************************/
1101+#define SCST_DEFAULT_TGT_NAME_SUFFIX "_target_"
1102+
1103+/*************************************************************
1104+ ** Sense manipulation and examination
1105+ *************************************************************/
1106+#define SCST_LOAD_SENSE(key_asc_ascq) key_asc_ascq
1107+
1108+#define SCST_SENSE_VALID(sense) ((sense != NULL) && \
1109+ ((((const uint8_t *)(sense))[0] & 0x70) == 0x70))
1110+
1111+#define SCST_NO_SENSE(sense) ((sense != NULL) && \
1112+ (((const uint8_t *)(sense))[2] == 0))
1113+
1114+/*************************************************************
1115+ ** Sense data for the appropriate errors. Can be used with
1116+ ** scst_set_cmd_error()
1117+ *************************************************************/
1118+#define scst_sense_no_sense NO_SENSE, 0x00, 0
1119+#define scst_sense_hardw_error HARDWARE_ERROR, 0x44, 0
1120+#define scst_sense_aborted_command ABORTED_COMMAND, 0x00, 0
1121+#define scst_sense_invalid_opcode ILLEGAL_REQUEST, 0x20, 0
1122+#define scst_sense_invalid_field_in_cdb ILLEGAL_REQUEST, 0x24, 0
1123+#define scst_sense_invalid_field_in_parm_list ILLEGAL_REQUEST, 0x26, 0
1124+#define scst_sense_parameter_value_invalid ILLEGAL_REQUEST, 0x26, 2
1125+#define scst_sense_invalid_release ILLEGAL_REQUEST, 0x26, 4
1126+#define scst_sense_parameter_list_length_invalid \
1127+ ILLEGAL_REQUEST, 0x1A, 0
1128+#define scst_sense_reset_UA UNIT_ATTENTION, 0x29, 0
1129+#define scst_sense_nexus_loss_UA UNIT_ATTENTION, 0x29, 0x7
1130+#define scst_sense_saving_params_unsup ILLEGAL_REQUEST, 0x39, 0
1131+#define scst_sense_lun_not_supported ILLEGAL_REQUEST, 0x25, 0
1132+#define scst_sense_data_protect DATA_PROTECT, 0x00, 0
1133+#define scst_sense_miscompare_error MISCOMPARE, 0x1D, 0
1134+#define scst_sense_block_out_range_error ILLEGAL_REQUEST, 0x21, 0
1135+#define scst_sense_medium_changed_UA UNIT_ATTENTION, 0x28, 0
1136+#define scst_sense_read_error MEDIUM_ERROR, 0x11, 0
1137+#define scst_sense_write_error MEDIUM_ERROR, 0x03, 0
1138+#define scst_sense_not_ready NOT_READY, 0x04, 0x10
1139+#define scst_sense_invalid_message ILLEGAL_REQUEST, 0x49, 0
1140+#define scst_sense_cleared_by_another_ini_UA UNIT_ATTENTION, 0x2F, 0
1141+#define scst_sense_capacity_data_changed UNIT_ATTENTION, 0x2A, 0x9
1142+#define scst_sense_reservation_preempted UNIT_ATTENTION, 0x2A, 0x03
1143+#define scst_sense_reservation_released UNIT_ATTENTION, 0x2A, 0x04
1144+#define scst_sense_registrations_preempted UNIT_ATTENTION, 0x2A, 0x05
1145+#define scst_sense_reported_luns_data_changed UNIT_ATTENTION, 0x3F, 0xE
1146+#define scst_sense_inquery_data_changed UNIT_ATTENTION, 0x3F, 0x3
1147+
1148+/*************************************************************
1149+ * SCSI opcodes not listed anywhere else
1150+ *************************************************************/
1151+#define REPORT_DEVICE_IDENTIFIER 0xA3
1152+#define INIT_ELEMENT_STATUS 0x07
1153+#define INIT_ELEMENT_STATUS_RANGE 0x37
1154+#define PREVENT_ALLOW_MEDIUM 0x1E
1155+#define READ_ATTRIBUTE 0x8C
1156+#define REQUEST_VOLUME_ADDRESS 0xB5
1157+#define WRITE_ATTRIBUTE 0x8D
1158+#define WRITE_VERIFY_16 0x8E
1159+#define VERIFY_6 0x13
1160+#ifndef VERIFY_12
1161+#define VERIFY_12 0xAF
1162+#endif
1163+#ifndef GENERATING_UPSTREAM_PATCH
1164+/*
1165+ * The constants below have been defined in the kernel header <scsi/scsi.h>
1166+ * and hence are not needed when this header file is included in kernel code.
1167+ * The definitions below are only used when this header file is included during
1168+ * compilation of SCST's user space components.
1169+ */
1170+#ifndef READ_16
1171+#define READ_16 0x88
1172+#endif
1173+#ifndef WRITE_16
1174+#define WRITE_16 0x8a
1175+#endif
1176+#ifndef VERIFY_16
1177+#define VERIFY_16 0x8f
1178+#endif
1179+#ifndef SERVICE_ACTION_IN
1180+#define SERVICE_ACTION_IN 0x9e
1181+#endif
1182+#ifndef SAI_READ_CAPACITY_16
1183+/* values for service action in */
1184+#define SAI_READ_CAPACITY_16 0x10
1185+#endif
1186+#endif
1187+#ifndef GENERATING_UPSTREAM_PATCH
1188+#ifndef REPORT_LUNS
1189+#define REPORT_LUNS 0xa0
1190+#endif
1191+#endif
1192+
1193+/*************************************************************
1194+ ** SCSI Architecture Model (SAM) Status codes. Taken from SAM-3 draft
1195+ ** T10/1561-D Revision 4 Draft dated 7th November 2002.
1196+ *************************************************************/
1197+#define SAM_STAT_GOOD 0x00
1198+#define SAM_STAT_CHECK_CONDITION 0x02
1199+#define SAM_STAT_CONDITION_MET 0x04
1200+#define SAM_STAT_BUSY 0x08
1201+#define SAM_STAT_INTERMEDIATE 0x10
1202+#define SAM_STAT_INTERMEDIATE_CONDITION_MET 0x14
1203+#define SAM_STAT_RESERVATION_CONFLICT 0x18
1204+#define SAM_STAT_COMMAND_TERMINATED 0x22 /* obsolete in SAM-3 */
1205+#define SAM_STAT_TASK_SET_FULL 0x28
1206+#define SAM_STAT_ACA_ACTIVE 0x30
1207+#define SAM_STAT_TASK_ABORTED 0x40
1208+
1209+/*************************************************************
1210+ ** Control byte field in CDB
1211+ *************************************************************/
1212+#define CONTROL_BYTE_LINK_BIT 0x01
1213+#define CONTROL_BYTE_NACA_BIT 0x04
1214+
1215+/*************************************************************
1216+ ** Byte 1 in INQUIRY CDB
1217+ *************************************************************/
1218+#define SCST_INQ_EVPD 0x01
1219+
1220+/*************************************************************
1221+ ** Byte 3 in Standard INQUIRY data
1222+ *************************************************************/
1223+#define SCST_INQ_BYTE3 3
1224+
1225+#define SCST_INQ_NORMACA_BIT 0x20
1226+
1227+/*************************************************************
1228+ ** Byte 2 in RESERVE_10 CDB
1229+ *************************************************************/
1230+#define SCST_RES_3RDPTY 0x10
1231+#define SCST_RES_LONGID 0x02
1232+
1233+/*************************************************************
1234+ ** Values for the control mode page TST field
1235+ *************************************************************/
1236+#define SCST_CONTR_MODE_ONE_TASK_SET 0
1237+#define SCST_CONTR_MODE_SEP_TASK_SETS 1
1238+
1239+/*******************************************************************
1240+ ** Values for the control mode page QUEUE ALGORITHM MODIFIER field
1241+ *******************************************************************/
1242+#define SCST_CONTR_MODE_QUEUE_ALG_RESTRICTED_REORDER 0
1243+#define SCST_CONTR_MODE_QUEUE_ALG_UNRESTRICTED_REORDER 1
1244+
1245+/*************************************************************
1246+ ** Values for the control mode page D_SENSE field
1247+ *************************************************************/
1248+#define SCST_CONTR_MODE_FIXED_SENSE 0
1249+#define SCST_CONTR_MODE_DESCR_SENSE 1
1250+
1251+/*************************************************************
1252+ ** TransportID protocol identifiers
1253+ *************************************************************/
1254+
1255+#define SCSI_TRANSPORTID_PROTOCOLID_FCP2 0
1256+#define SCSI_TRANSPORTID_PROTOCOLID_SPI5 1
1257+#define SCSI_TRANSPORTID_PROTOCOLID_SRP 4
1258+#define SCSI_TRANSPORTID_PROTOCOLID_ISCSI 5
1259+#define SCSI_TRANSPORTID_PROTOCOLID_SAS 6
1260+
1261+/*************************************************************
1262+ ** Misc SCSI constants
1263+ *************************************************************/
1264+#define SCST_SENSE_ASC_UA_RESET 0x29
1265+#define BYTCHK 0x02
1266+#define POSITION_LEN_SHORT 20
1267+#define POSITION_LEN_LONG 32
1268+
1269+/*************************************************************
1270+ ** Various timeouts
1271+ *************************************************************/
1272+#define SCST_DEFAULT_TIMEOUT (60 * HZ)
1273+
1274+#define SCST_GENERIC_CHANGER_TIMEOUT (3 * HZ)
1275+#define SCST_GENERIC_CHANGER_LONG_TIMEOUT (14000 * HZ)
1276+
1277+#define SCST_GENERIC_PROCESSOR_TIMEOUT (3 * HZ)
1278+#define SCST_GENERIC_PROCESSOR_LONG_TIMEOUT (14000 * HZ)
1279+
1280+#define SCST_GENERIC_TAPE_SMALL_TIMEOUT (3 * HZ)
1281+#define SCST_GENERIC_TAPE_REG_TIMEOUT (900 * HZ)
1282+#define SCST_GENERIC_TAPE_LONG_TIMEOUT (14000 * HZ)
1283+
1284+#define SCST_GENERIC_MODISK_SMALL_TIMEOUT (3 * HZ)
1285+#define SCST_GENERIC_MODISK_REG_TIMEOUT (900 * HZ)
1286+#define SCST_GENERIC_MODISK_LONG_TIMEOUT (14000 * HZ)
1287+
1288+#define SCST_GENERIC_DISK_SMALL_TIMEOUT (3 * HZ)
1289+#define SCST_GENERIC_DISK_REG_TIMEOUT (60 * HZ)
1290+#define SCST_GENERIC_DISK_LONG_TIMEOUT (3600 * HZ)
1291+
1292+#define SCST_GENERIC_RAID_TIMEOUT (3 * HZ)
1293+#define SCST_GENERIC_RAID_LONG_TIMEOUT (14000 * HZ)
1294+
1295+#define SCST_GENERIC_CDROM_SMALL_TIMEOUT (3 * HZ)
1296+#define SCST_GENERIC_CDROM_REG_TIMEOUT (900 * HZ)
1297+#define SCST_GENERIC_CDROM_LONG_TIMEOUT (14000 * HZ)
1298+
1299+#define SCST_MAX_OTHER_TIMEOUT (14000 * HZ)
1300+
1301+/*************************************************************
1302+ ** I/O grouping attribute string values. Must match constants
1303+ ** w/o '_STR' suffix!
1304+ *************************************************************/
1305+#define SCST_IO_GROUPING_AUTO_STR "auto"
1306+#define SCST_IO_GROUPING_THIS_GROUP_ONLY_STR "this_group_only"
1307+#define SCST_IO_GROUPING_NEVER_STR "never"
1308+
1309+/*************************************************************
1310+ ** Threads pool type attribute string values.
1311+ ** Must match scst_dev_type_threads_pool_type!
1312+ *************************************************************/
1313+#define SCST_THREADS_POOL_PER_INITIATOR_STR "per_initiator"
1314+#define SCST_THREADS_POOL_SHARED_STR "shared"
1315+
1316+/*************************************************************
1317+ ** Misc constants
1318+ *************************************************************/
1319+#define SCST_SYSFS_BLOCK_SIZE PAGE_SIZE
1320+
1321+#define SCST_PR_DIR "/var/lib/scst/pr"
1322+
1323+#define TID_COMMON_SIZE 24
1324+
1325+#define SCST_SYSFS_KEY_MARK "[key]"
1326+
1327+#define SCST_MIN_REL_TGT_ID 1
1328+#define SCST_MAX_REL_TGT_ID 65535
1329+
1330+#endif /* __SCST_CONST_H */
1331diff -uprN orig/linux-2.6.36/include/scst/scst.h linux-2.6.36/include/scst/scst.h
1332--- orig/linux-2.6.36/include/scst/scst.h
1333+++ linux-2.6.36/include/scst/scst.h
916@@ -0,0 +1,3511 @@ 1334@@ -0,0 +1,3511 @@
917+/* 1335+/*
918+ * include/scst.h 1336+ * include/scst.h
@@ -963,9 +1381,9 @@ diff -uprN orig/linux-2.6.35/include/scst/scst.h linux-2.6.35/include/scst/scst.
963+#define SCST_VERSION(a, b, c, d) (((a) << 24) + ((b) << 16) + ((c) << 8) + d) 1381+#define SCST_VERSION(a, b, c, d) (((a) << 24) + ((b) << 16) + ((c) << 8) + d)
964+#define SCST_VERSION_CODE SCST_VERSION(2, 0, 0, 0) 1382+#define SCST_VERSION_CODE SCST_VERSION(2, 0, 0, 0)
965+#define SCST_VERSION_STRING_SUFFIX 1383+#define SCST_VERSION_STRING_SUFFIX
966+#define SCST_VERSION_STRING "2.0.0-rc3" SCST_VERSION_STRING_SUFFIX 1384+#define SCST_VERSION_STRING "2.0.0" SCST_VERSION_STRING_SUFFIX
967+#define SCST_INTERFACE_VERSION \ 1385+#define SCST_INTERFACE_VERSION \
968+ SCST_VERSION_STRING "$Revision: 3153 $" SCST_CONST_VERSION 1386+ SCST_VERSION_STRING "$Revision: 3165 $" SCST_CONST_VERSION
969+ 1387+
970+#define SCST_LOCAL_NAME "scst_local" 1388+#define SCST_LOCAL_NAME "scst_local"
971+ 1389+
@@ -4425,425 +4843,9 @@ diff -uprN orig/linux-2.6.35/include/scst/scst.h linux-2.6.35/include/scst/scst.
4425+void scst_deinit_threads(struct scst_cmd_threads *cmd_threads); 4843+void scst_deinit_threads(struct scst_cmd_threads *cmd_threads);
4426+ 4844+
4427+#endif /* __SCST_H */ 4845+#endif /* __SCST_H */
4428diff -uprN orig/linux-2.6.35/include/scst/scst_const.h linux-2.6.35/include/scst/scst_const.h 4846diff -upkr -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/Kconfig linux-2.6.36/drivers/Kconfig
4429--- orig/linux-2.6.35/include/scst/scst_const.h 4847--- orig/linux-2.6.36/drivers/Kconfig 01:51:29.000000000 +0400
4430+++ linux-2.6.35/include/scst/scst_const.h 4848+++ linux-2.6.36/drivers/Kconfig 14:14:46.000000000 +0400
4431@@ -0,0 +1,412 @@
4432+/*
4433+ * include/scst_const.h
4434+ *
4435+ * Copyright (C) 2004 - 2010 Vladislav Bolkhovitin <vst@vlnb.net>
4436+ * Copyright (C) 2007 - 2010 ID7 Ltd.
4437+ *
4438+ * Contains common SCST constants.
4439+ *
4440+ * This program is free software; you can redistribute it and/or
4441+ * modify it under the terms of the GNU General Public License
4442+ * as published by the Free Software Foundation, version 2
4443+ * of the License.
4444+ *
4445+ * This program is distributed in the hope that it will be useful,
4446+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4447+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4448+ * GNU General Public License for more details.
4449+ */
4450+
4451+#ifndef __SCST_CONST_H
4452+#define __SCST_CONST_H
4453+
4454+#ifndef GENERATING_UPSTREAM_PATCH
4455+/*
4456+ * Include <linux/version.h> only when not converting this header file into
4457+ * a patch for upstream review because only then the symbol LINUX_VERSION_CODE
4458+ * is needed.
4459+ */
4460+#include <linux/version.h>
4461+#endif
4462+#include <scsi/scsi.h>
4463+
4464+#define SCST_CONST_VERSION "$Revision: 2605 $"
4465+
4466+/*** Shared constants between user and kernel spaces ***/
4467+
4468+/* Max size of CDB */
4469+#define SCST_MAX_CDB_SIZE 16
4470+
4471+/* Max size of various names */
4472+#define SCST_MAX_NAME 50
4473+
4474+/* Max size of external names, like initiator name */
4475+#define SCST_MAX_EXTERNAL_NAME 256
4476+
4477+/*
4478+ * Size of sense sufficient to carry standard sense data.
4479+ * Warning! It's allocated on stack!
4480+ */
4481+#define SCST_STANDARD_SENSE_LEN 18
4482+
4483+/* Max size of sense */
4484+#define SCST_SENSE_BUFFERSIZE 96
4485+
4486+/*************************************************************
4487+ ** Allowed delivery statuses for cmd's delivery_status
4488+ *************************************************************/
4489+
4490+#define SCST_CMD_DELIVERY_SUCCESS 0
4491+#define SCST_CMD_DELIVERY_FAILED -1
4492+#define SCST_CMD_DELIVERY_ABORTED -2
4493+
4494+/*************************************************************
4495+ ** Values for task management functions
4496+ *************************************************************/
4497+#define SCST_ABORT_TASK 0
4498+#define SCST_ABORT_TASK_SET 1
4499+#define SCST_CLEAR_ACA 2
4500+#define SCST_CLEAR_TASK_SET 3
4501+#define SCST_LUN_RESET 4
4502+#define SCST_TARGET_RESET 5
4503+
4504+/** SCST extensions **/
4505+
4506+/*
4507+ * Notifies about I_T nexus loss event in the corresponding session.
4508+ * Aborts all tasks there, resets the reservation, if any, and sets
4509+ * up the I_T Nexus loss UA.
4510+ */
4511+#define SCST_NEXUS_LOSS_SESS 6
4512+
4513+/* Aborts all tasks in the corresponding session */
4514+#define SCST_ABORT_ALL_TASKS_SESS 7
4515+
4516+/*
4517+ * Notifies about I_T nexus loss event. Aborts all tasks in all sessions
4518+ * of the tgt, resets the reservations, if any, and sets up the I_T Nexus
4519+ * loss UA.
4520+ */
4521+#define SCST_NEXUS_LOSS 8
4522+
4523+/* Aborts all tasks in all sessions of the tgt */
4524+#define SCST_ABORT_ALL_TASKS 9
4525+
4526+/*
4527+ * Internal TM command issued by SCST in scst_unregister_session(). It is the
4528+ * same as SCST_NEXUS_LOSS_SESS, except:
4529+ * - it doesn't call task_mgmt_affected_cmds_done()
4530+ * - it doesn't call task_mgmt_fn_done()
4531+ * - it doesn't queue NEXUS LOSS UA.
4532+ *
4533+ * Target drivers must NEVER use it!!
4534+ */
4535+#define SCST_UNREG_SESS_TM 10
4536+
4537+/*
4538+ * Internal TM command issued by SCST in scst_pr_abort_reg(). It aborts all
4539+ * tasks from mcmd->origin_pr_cmd->tgt_dev, except mcmd->origin_pr_cmd.
4540+ * Additionally:
4541+ * - it signals pr_aborting_cmpl completion when all affected
4542+ * commands marked as aborted.
4543+ * - it doesn't call task_mgmt_affected_cmds_done()
4544+ * - it doesn't call task_mgmt_fn_done()
4545+ * - it calls mcmd->origin_pr_cmd->scst_cmd_done() when all affected
4546+ * commands aborted.
4547+ *
4548+ * Target drivers must NEVER use it!!
4549+ */
4550+#define SCST_PR_ABORT_ALL 11
4551+
4552+/*************************************************************
4553+ ** Values for mgmt cmd's status field. Codes taken from iSCSI
4554+ *************************************************************/
4555+#define SCST_MGMT_STATUS_SUCCESS 0
4556+#define SCST_MGMT_STATUS_TASK_NOT_EXIST -1
4557+#define SCST_MGMT_STATUS_LUN_NOT_EXIST -2
4558+#define SCST_MGMT_STATUS_FN_NOT_SUPPORTED -5
4559+#define SCST_MGMT_STATUS_REJECTED -255
4560+#define SCST_MGMT_STATUS_FAILED -129
4561+
4562+/*************************************************************
4563+ ** SCSI task attribute queue types
4564+ *************************************************************/
4565+enum scst_cmd_queue_type {
4566+ SCST_CMD_QUEUE_UNTAGGED = 0,
4567+ SCST_CMD_QUEUE_SIMPLE,
4568+ SCST_CMD_QUEUE_ORDERED,
4569+ SCST_CMD_QUEUE_HEAD_OF_QUEUE,
4570+ SCST_CMD_QUEUE_ACA
4571+};
4572+
4573+/*************************************************************
4574+ ** CDB flags
4575+ **
4576+ ** Implicit ordered used for commands which need calm environment
4577+ ** without any simultaneous activities. For instance, for MODE
4578+ ** SELECT it is needed to correctly generate its UA.
4579+ *************************************************************/
4580+enum scst_cdb_flags {
4581+ SCST_TRANSFER_LEN_TYPE_FIXED = 0x0001,
4582+ SCST_SMALL_TIMEOUT = 0x0002,
4583+ SCST_LONG_TIMEOUT = 0x0004,
4584+ SCST_UNKNOWN_LENGTH = 0x0008,
4585+ SCST_INFO_VALID = 0x0010, /* must be single bit */
4586+ SCST_VERIFY_BYTCHK_MISMATCH_ALLOWED = 0x0020,
4587+ SCST_IMPLICIT_HQ = 0x0040,
4588+ SCST_IMPLICIT_ORDERED = 0x0080, /* ToDo: remove it's nonsense */
4589+ SCST_SKIP_UA = 0x0100,
4590+ SCST_WRITE_MEDIUM = 0x0200,
4591+ SCST_LOCAL_CMD = 0x0400,
4592+ SCST_FULLY_LOCAL_CMD = 0x0800,
4593+ SCST_REG_RESERVE_ALLOWED = 0x1000,
4594+ SCST_WRITE_EXCL_ALLOWED = 0x2000,
4595+ SCST_EXCL_ACCESS_ALLOWED = 0x4000,
4596+#ifdef CONFIG_SCST_TEST_IO_IN_SIRQ
4597+ SCST_TEST_IO_IN_SIRQ_ALLOWED = 0x8000,
4598+#endif
4599+};
4600+
4601+/*************************************************************
4602+ ** Data direction aliases. Changing it don't forget to change
4603+ ** scst_to_tgt_dma_dir as well!!
4604+ *************************************************************/
4605+#define SCST_DATA_UNKNOWN 0
4606+#define SCST_DATA_WRITE 1
4607+#define SCST_DATA_READ 2
4608+#define SCST_DATA_BIDI (SCST_DATA_WRITE | SCST_DATA_READ)
4609+#define SCST_DATA_NONE 4
4610+
4611+/*************************************************************
4612+ ** Default suffix for targets with NULL names
4613+ *************************************************************/
4614+#define SCST_DEFAULT_TGT_NAME_SUFFIX "_target_"
4615+
4616+/*************************************************************
4617+ ** Sense manipulation and examination
4618+ *************************************************************/
4619+#define SCST_LOAD_SENSE(key_asc_ascq) key_asc_ascq
4620+
4621+#define SCST_SENSE_VALID(sense) ((sense != NULL) && \
4622+ ((((const uint8_t *)(sense))[0] & 0x70) == 0x70))
4623+
4624+#define SCST_NO_SENSE(sense) ((sense != NULL) && \
4625+ (((const uint8_t *)(sense))[2] == 0))
4626+
4627+/*************************************************************
4628+ ** Sense data for the appropriate errors. Can be used with
4629+ ** scst_set_cmd_error()
4630+ *************************************************************/
4631+#define scst_sense_no_sense NO_SENSE, 0x00, 0
4632+#define scst_sense_hardw_error HARDWARE_ERROR, 0x44, 0
4633+#define scst_sense_aborted_command ABORTED_COMMAND, 0x00, 0
4634+#define scst_sense_invalid_opcode ILLEGAL_REQUEST, 0x20, 0
4635+#define scst_sense_invalid_field_in_cdb ILLEGAL_REQUEST, 0x24, 0
4636+#define scst_sense_invalid_field_in_parm_list ILLEGAL_REQUEST, 0x26, 0
4637+#define scst_sense_parameter_value_invalid ILLEGAL_REQUEST, 0x26, 2
4638+#define scst_sense_invalid_release ILLEGAL_REQUEST, 0x26, 4
4639+#define scst_sense_parameter_list_length_invalid \
4640+ ILLEGAL_REQUEST, 0x1A, 0
4641+#define scst_sense_reset_UA UNIT_ATTENTION, 0x29, 0
4642+#define scst_sense_nexus_loss_UA UNIT_ATTENTION, 0x29, 0x7
4643+#define scst_sense_saving_params_unsup ILLEGAL_REQUEST, 0x39, 0
4644+#define scst_sense_lun_not_supported ILLEGAL_REQUEST, 0x25, 0
4645+#define scst_sense_data_protect DATA_PROTECT, 0x00, 0
4646+#define scst_sense_miscompare_error MISCOMPARE, 0x1D, 0
4647+#define scst_sense_block_out_range_error ILLEGAL_REQUEST, 0x21, 0
4648+#define scst_sense_medium_changed_UA UNIT_ATTENTION, 0x28, 0
4649+#define scst_sense_read_error MEDIUM_ERROR, 0x11, 0
4650+#define scst_sense_write_error MEDIUM_ERROR, 0x03, 0
4651+#define scst_sense_not_ready NOT_READY, 0x04, 0x10
4652+#define scst_sense_invalid_message ILLEGAL_REQUEST, 0x49, 0
4653+#define scst_sense_cleared_by_another_ini_UA UNIT_ATTENTION, 0x2F, 0
4654+#define scst_sense_capacity_data_changed UNIT_ATTENTION, 0x2A, 0x9
4655+#define scst_sense_reservation_preempted UNIT_ATTENTION, 0x2A, 0x03
4656+#define scst_sense_reservation_released UNIT_ATTENTION, 0x2A, 0x04
4657+#define scst_sense_registrations_preempted UNIT_ATTENTION, 0x2A, 0x05
4658+#define scst_sense_reported_luns_data_changed UNIT_ATTENTION, 0x3F, 0xE
4659+#define scst_sense_inquery_data_changed UNIT_ATTENTION, 0x3F, 0x3
4660+
4661+/*************************************************************
4662+ * SCSI opcodes not listed anywhere else
4663+ *************************************************************/
4664+#define REPORT_DEVICE_IDENTIFIER 0xA3
4665+#define INIT_ELEMENT_STATUS 0x07
4666+#define INIT_ELEMENT_STATUS_RANGE 0x37
4667+#define PREVENT_ALLOW_MEDIUM 0x1E
4668+#define READ_ATTRIBUTE 0x8C
4669+#define REQUEST_VOLUME_ADDRESS 0xB5
4670+#define WRITE_ATTRIBUTE 0x8D
4671+#define WRITE_VERIFY_16 0x8E
4672+#define VERIFY_6 0x13
4673+#ifndef VERIFY_12
4674+#define VERIFY_12 0xAF
4675+#endif
4676+#ifndef GENERATING_UPSTREAM_PATCH
4677+/*
4678+ * The constants below have been defined in the kernel header <scsi/scsi.h>
4679+ * and hence are not needed when this header file is included in kernel code.
4680+ * The definitions below are only used when this header file is included during
4681+ * compilation of SCST's user space components.
4682+ */
4683+#ifndef READ_16
4684+#define READ_16 0x88
4685+#endif
4686+#ifndef WRITE_16
4687+#define WRITE_16 0x8a
4688+#endif
4689+#ifndef VERIFY_16
4690+#define VERIFY_16 0x8f
4691+#endif
4692+#ifndef SERVICE_ACTION_IN
4693+#define SERVICE_ACTION_IN 0x9e
4694+#endif
4695+#ifndef SAI_READ_CAPACITY_16
4696+/* values for service action in */
4697+#define SAI_READ_CAPACITY_16 0x10
4698+#endif
4699+#endif
4700+#ifndef GENERATING_UPSTREAM_PATCH
4701+#ifndef REPORT_LUNS
4702+#define REPORT_LUNS 0xa0
4703+#endif
4704+#endif
4705+
4706+/*************************************************************
4707+ ** SCSI Architecture Model (SAM) Status codes. Taken from SAM-3 draft
4708+ ** T10/1561-D Revision 4 Draft dated 7th November 2002.
4709+ *************************************************************/
4710+#define SAM_STAT_GOOD 0x00
4711+#define SAM_STAT_CHECK_CONDITION 0x02
4712+#define SAM_STAT_CONDITION_MET 0x04
4713+#define SAM_STAT_BUSY 0x08
4714+#define SAM_STAT_INTERMEDIATE 0x10
4715+#define SAM_STAT_INTERMEDIATE_CONDITION_MET 0x14
4716+#define SAM_STAT_RESERVATION_CONFLICT 0x18
4717+#define SAM_STAT_COMMAND_TERMINATED 0x22 /* obsolete in SAM-3 */
4718+#define SAM_STAT_TASK_SET_FULL 0x28
4719+#define SAM_STAT_ACA_ACTIVE 0x30
4720+#define SAM_STAT_TASK_ABORTED 0x40
4721+
4722+/*************************************************************
4723+ ** Control byte field in CDB
4724+ *************************************************************/
4725+#define CONTROL_BYTE_LINK_BIT 0x01
4726+#define CONTROL_BYTE_NACA_BIT 0x04
4727+
4728+/*************************************************************
4729+ ** Byte 1 in INQUIRY CDB
4730+ *************************************************************/
4731+#define SCST_INQ_EVPD 0x01
4732+
4733+/*************************************************************
4734+ ** Byte 3 in Standard INQUIRY data
4735+ *************************************************************/
4736+#define SCST_INQ_BYTE3 3
4737+
4738+#define SCST_INQ_NORMACA_BIT 0x20
4739+
4740+/*************************************************************
4741+ ** Byte 2 in RESERVE_10 CDB
4742+ *************************************************************/
4743+#define SCST_RES_3RDPTY 0x10
4744+#define SCST_RES_LONGID 0x02
4745+
4746+/*************************************************************
4747+ ** Values for the control mode page TST field
4748+ *************************************************************/
4749+#define SCST_CONTR_MODE_ONE_TASK_SET 0
4750+#define SCST_CONTR_MODE_SEP_TASK_SETS 1
4751+
4752+/*******************************************************************
4753+ ** Values for the control mode page QUEUE ALGORITHM MODIFIER field
4754+ *******************************************************************/
4755+#define SCST_CONTR_MODE_QUEUE_ALG_RESTRICTED_REORDER 0
4756+#define SCST_CONTR_MODE_QUEUE_ALG_UNRESTRICTED_REORDER 1
4757+
4758+/*************************************************************
4759+ ** Values for the control mode page D_SENSE field
4760+ *************************************************************/
4761+#define SCST_CONTR_MODE_FIXED_SENSE 0
4762+#define SCST_CONTR_MODE_DESCR_SENSE 1
4763+
4764+/*************************************************************
4765+ ** TransportID protocol identifiers
4766+ *************************************************************/
4767+
4768+#define SCSI_TRANSPORTID_PROTOCOLID_FCP2 0
4769+#define SCSI_TRANSPORTID_PROTOCOLID_SPI5 1
4770+#define SCSI_TRANSPORTID_PROTOCOLID_SRP 4
4771+#define SCSI_TRANSPORTID_PROTOCOLID_ISCSI 5
4772+#define SCSI_TRANSPORTID_PROTOCOLID_SAS 6
4773+
4774+/*************************************************************
4775+ ** Misc SCSI constants
4776+ *************************************************************/
4777+#define SCST_SENSE_ASC_UA_RESET 0x29
4778+#define BYTCHK 0x02
4779+#define POSITION_LEN_SHORT 20
4780+#define POSITION_LEN_LONG 32
4781+
4782+/*************************************************************
4783+ ** Various timeouts
4784+ *************************************************************/
4785+#define SCST_DEFAULT_TIMEOUT (60 * HZ)
4786+
4787+#define SCST_GENERIC_CHANGER_TIMEOUT (3 * HZ)
4788+#define SCST_GENERIC_CHANGER_LONG_TIMEOUT (14000 * HZ)
4789+
4790+#define SCST_GENERIC_PROCESSOR_TIMEOUT (3 * HZ)
4791+#define SCST_GENERIC_PROCESSOR_LONG_TIMEOUT (14000 * HZ)
4792+
4793+#define SCST_GENERIC_TAPE_SMALL_TIMEOUT (3 * HZ)
4794+#define SCST_GENERIC_TAPE_REG_TIMEOUT (900 * HZ)
4795+#define SCST_GENERIC_TAPE_LONG_TIMEOUT (14000 * HZ)
4796+
4797+#define SCST_GENERIC_MODISK_SMALL_TIMEOUT (3 * HZ)
4798+#define SCST_GENERIC_MODISK_REG_TIMEOUT (900 * HZ)
4799+#define SCST_GENERIC_MODISK_LONG_TIMEOUT (14000 * HZ)
4800+
4801+#define SCST_GENERIC_DISK_SMALL_TIMEOUT (3 * HZ)
4802+#define SCST_GENERIC_DISK_REG_TIMEOUT (60 * HZ)
4803+#define SCST_GENERIC_DISK_LONG_TIMEOUT (3600 * HZ)
4804+
4805+#define SCST_GENERIC_RAID_TIMEOUT (3 * HZ)
4806+#define SCST_GENERIC_RAID_LONG_TIMEOUT (14000 * HZ)
4807+
4808+#define SCST_GENERIC_CDROM_SMALL_TIMEOUT (3 * HZ)
4809+#define SCST_GENERIC_CDROM_REG_TIMEOUT (900 * HZ)
4810+#define SCST_GENERIC_CDROM_LONG_TIMEOUT (14000 * HZ)
4811+
4812+#define SCST_MAX_OTHER_TIMEOUT (14000 * HZ)
4813+
4814+/*************************************************************
4815+ ** I/O grouping attribute string values. Must match constants
4816+ ** w/o '_STR' suffix!
4817+ *************************************************************/
4818+#define SCST_IO_GROUPING_AUTO_STR "auto"
4819+#define SCST_IO_GROUPING_THIS_GROUP_ONLY_STR "this_group_only"
4820+#define SCST_IO_GROUPING_NEVER_STR "never"
4821+
4822+/*************************************************************
4823+ ** Threads pool type attribute string values.
4824+ ** Must match scst_dev_type_threads_pool_type!
4825+ *************************************************************/
4826+#define SCST_THREADS_POOL_PER_INITIATOR_STR "per_initiator"
4827+#define SCST_THREADS_POOL_SHARED_STR "shared"
4828+
4829+/*************************************************************
4830+ ** Misc constants
4831+ *************************************************************/
4832+#define SCST_SYSFS_BLOCK_SIZE PAGE_SIZE
4833+
4834+#define SCST_PR_DIR "/var/lib/scst/pr"
4835+
4836+#define TID_COMMON_SIZE 24
4837+
4838+#define SCST_SYSFS_KEY_MARK "[key]"
4839+
4840+#define SCST_MIN_REL_TGT_ID 1
4841+#define SCST_MAX_REL_TGT_ID 65535
4842+
4843+#endif /* __SCST_CONST_H */
4844diff -upkr -X linux-2.6.35/Documentation/dontdiff linux-2.6.35/drivers/Kconfig linux-2.6.35/drivers/Kconfig
4845--- orig/linux-2.6.35/drivers/Kconfig 01:51:29.000000000 +0400
4846+++ linux-2.6.35/drivers/Kconfig 14:14:46.000000000 +0400
4847@@ -22,6 +22,8 @@ source "drivers/ide/Kconfig" 4849@@ -22,6 +22,8 @@ source "drivers/ide/Kconfig"
4848 4850
4849 source "drivers/scsi/Kconfig" 4851 source "drivers/scsi/Kconfig"
@@ -4853,21 +4855,18 @@ diff -upkr -X linux-2.6.35/Documentation/dontdiff linux-2.6.35/drivers/Kconfig l
4853 source "drivers/ata/Kconfig" 4855 source "drivers/ata/Kconfig"
4854 4856
4855 source "drivers/md/Kconfig" 4857 source "drivers/md/Kconfig"
4856diff -upkr -X linux-2.6.35/Documentation/dontdiff linux-2.6.35/drivers/Makefile linux-2.6.35/drivers/Makefile 4858diff -upkr -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/Makefile linux-2.6.36/drivers/Makefile
4857--- orig/linux-2.6.35/drivers/Makefile 01:51:29.000000000 +0400 4859--- orig/linux-2.6.36/drivers/Makefile 15:40:04.000000000 +0200
4858+++ linux-2.6.35/drivers/Makefile 14:15:29.000000000 +0400 4860+++ linux-2.6.36/drivers/Makefile 15:40:20.000000000 +0200
4859@@ -43,6 +43,7 @@ obj-$(CONFIG_ATM) += atm/ 4861@@ -113,3 +113,4 @@ obj-$(CONFIG_VLYNQ) += vlynq/
4860 obj-y += macintosh/ 4862 obj-$(CONFIG_STAGING) += staging/
4861 obj-$(CONFIG_IDE) += ide/ 4863 obj-y += platform/
4862 obj-$(CONFIG_SCSI) += scsi/ 4864 obj-y += ieee802154/
4863+obj-$(CONFIG_SCST) += scst/ 4865+obj-$(CONFIG_SCST) += scst/
4864 obj-$(CONFIG_ATA) += ata/ 4866diff -uprN orig/linux-2.6.36/drivers/scst/Kconfig linux-2.6.36/drivers/scst/Kconfig
4865 obj-y += net/ 4867--- orig/linux-2.6.36/drivers/scst/Kconfig
4866 obj-$(CONFIG_ATM) += atm/ 4868+++ linux-2.6.36/drivers/scst/Kconfig
4867diff -uprN orig/linux-2.6.35/drivers/scst/Kconfig linux-2.6.35/drivers/scst/Kconfig 4869@@ -0,0 +1,254 @@
4868--- orig/linux-2.6.35/drivers/scst/Kconfig
4869+++ linux-2.6.35/drivers/scst/Kconfig
4870@@ -0,0 +1,255 @@
4871+menu "SCSI target (SCST) support" 4870+menu "SCSI target (SCST) support"
4872+ 4871+
4873+config SCST 4872+config SCST
@@ -5118,14 +5117,13 @@ diff -uprN orig/linux-2.6.35/drivers/scst/Kconfig linux-2.6.35/drivers/scst/Kcon
5118+ 5117+
5119+ If unsure, say "N". 5118+ If unsure, say "N".
5120+ 5119+
5121+source "drivers/scst/fcst/Kconfig"
5122+source "drivers/scst/iscsi-scst/Kconfig" 5120+source "drivers/scst/iscsi-scst/Kconfig"
5123+source "drivers/scst/srpt/Kconfig" 5121+source "drivers/scst/srpt/Kconfig"
5124+ 5122+
5125+endmenu 5123+endmenu
5126diff -uprN orig/linux-2.6.35/drivers/scst/Makefile linux-2.6.35/drivers/scst/Makefile 5124diff -uprN orig/linux-2.6.36/drivers/scst/Makefile linux-2.6.36/drivers/scst/Makefile
5127--- orig/linux-2.6.35/drivers/scst/Makefile 5125--- orig/linux-2.6.36/drivers/scst/Makefile
5128+++ linux-2.6.35/drivers/scst/Makefile 5126+++ linux-2.6.36/drivers/scst/Makefile
5129@@ -0,0 +1,12 @@ 5127@@ -0,0 +1,12 @@
5130+ccflags-y += -Wno-unused-parameter 5128+ccflags-y += -Wno-unused-parameter
5131+ 5129+
@@ -5137,11 +5135,11 @@ diff -uprN orig/linux-2.6.35/drivers/scst/Makefile linux-2.6.35/drivers/scst/Mak
5137+scst-y += scst_mem.o 5135+scst-y += scst_mem.o
5138+scst-y += scst_debug.o 5136+scst-y += scst_debug.o
5139+ 5137+
5140+obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \ 5138+obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ \
5141+ srpt/ scst_local/ 5139+ srpt/ scst_local/
5142diff -uprN orig/linux-2.6.35/drivers/scst/scst_lib.c linux-2.6.35/drivers/scst/scst_lib.c 5140diff -uprN orig/linux-2.6.36/drivers/scst/scst_lib.c linux-2.6.36/drivers/scst/scst_lib.c
5143--- orig/linux-2.6.35/drivers/scst/scst_lib.c 5141--- orig/linux-2.6.36/drivers/scst/scst_lib.c
5144+++ linux-2.6.35/drivers/scst/scst_lib.c 5142+++ linux-2.6.36/drivers/scst/scst_lib.c
5145@@ -0,0 +1,7361 @@ 5143@@ -0,0 +1,7361 @@
5146+/* 5144+/*
5147+ * scst_lib.c 5145+ * scst_lib.c
@@ -12504,9 +12502,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_lib.c linux-2.6.35/drivers/scst/s
12504+} 12502+}
12505+ 12503+
12506+#endif /* CONFIG_SCST_MEASURE_LATENCY */ 12504+#endif /* CONFIG_SCST_MEASURE_LATENCY */
12507diff -uprN orig/linux-2.6.35/drivers/scst/scst_main.c linux-2.6.35/drivers/scst/scst_main.c 12505diff -uprN orig/linux-2.6.36/drivers/scst/scst_main.c linux-2.6.36/drivers/scst/scst_main.c
12508--- orig/linux-2.6.35/drivers/scst/scst_main.c 12506--- orig/linux-2.6.36/drivers/scst/scst_main.c
12509+++ linux-2.6.35/drivers/scst/scst_main.c 12507+++ linux-2.6.36/drivers/scst/scst_main.c
12510@@ -0,0 +1,2195 @@ 12508@@ -0,0 +1,2195 @@
12511+/* 12509+/*
12512+ * scst_main.c 12510+ * scst_main.c
@@ -14703,9 +14701,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_main.c linux-2.6.35/drivers/scst/
14703+MODULE_LICENSE("GPL"); 14701+MODULE_LICENSE("GPL");
14704+MODULE_DESCRIPTION("SCSI target core"); 14702+MODULE_DESCRIPTION("SCSI target core");
14705+MODULE_VERSION(SCST_VERSION_STRING); 14703+MODULE_VERSION(SCST_VERSION_STRING);
14706diff -uprN orig/linux-2.6.35/drivers/scst/scst_module.c linux-2.6.35/drivers/scst/scst_module.c 14704diff -uprN orig/linux-2.6.36/drivers/scst/scst_module.c linux-2.6.36/drivers/scst/scst_module.c
14707--- orig/linux-2.6.35/drivers/scst/scst_module.c 14705--- orig/linux-2.6.36/drivers/scst/scst_module.c
14708+++ linux-2.6.35/drivers/scst/scst_module.c 14706+++ linux-2.6.36/drivers/scst/scst_module.c
14709@@ -0,0 +1,69 @@ 14707@@ -0,0 +1,69 @@
14710+/* 14708+/*
14711+ * scst_module.c 14709+ * scst_module.c
@@ -14776,9 +14774,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_module.c linux-2.6.35/drivers/scs
14776+ 14774+
14777+module_init(init_this_scst_driver); 14775+module_init(init_this_scst_driver);
14778+module_exit(exit_this_scst_driver); 14776+module_exit(exit_this_scst_driver);
14779diff -uprN orig/linux-2.6.35/drivers/scst/scst_pres.c linux-2.6.35/drivers/scst/scst_pres.c 14777diff -uprN orig/linux-2.6.36/drivers/scst/scst_pres.c linux-2.6.36/drivers/scst/scst_pres.c
14780--- orig/linux-2.6.35/drivers/scst/scst_pres.c 14778--- orig/linux-2.6.36/drivers/scst/scst_pres.c
14781+++ linux-2.6.35/drivers/scst/scst_pres.c 14779+++ linux-2.6.36/drivers/scst/scst_pres.c
14782@@ -0,0 +1,2648 @@ 14780@@ -0,0 +1,2648 @@
14783+/* 14781+/*
14784+ * scst_pres.c 14782+ * scst_pres.c
@@ -17428,9 +17426,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_pres.c linux-2.6.35/drivers/scst/
17428+ TRACE_EXIT(); 17426+ TRACE_EXIT();
17429+ return; 17427+ return;
17430+} 17428+}
17431diff -uprN orig/linux-2.6.35/drivers/scst/scst_pres.h linux-2.6.35/drivers/scst/scst_pres.h 17429diff -uprN orig/linux-2.6.36/drivers/scst/scst_pres.h linux-2.6.36/drivers/scst/scst_pres.h
17432--- orig/linux-2.6.35/drivers/scst/scst_pres.h 17430--- orig/linux-2.6.36/drivers/scst/scst_pres.h
17433+++ linux-2.6.35/drivers/scst/scst_pres.h 17431+++ linux-2.6.36/drivers/scst/scst_pres.h
17434@@ -0,0 +1,170 @@ 17432@@ -0,0 +1,170 @@
17435+/* 17433+/*
17436+ * scst_pres.c 17434+ * scst_pres.c
@@ -17602,9 +17600,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_pres.h linux-2.6.35/drivers/scst/
17602+#endif 17600+#endif
17603+ 17601+
17604+#endif /* SCST_PRES_H_ */ 17602+#endif /* SCST_PRES_H_ */
17605diff -uprN orig/linux-2.6.35/drivers/scst/scst_priv.h linux-2.6.35/drivers/scst/scst_priv.h 17603diff -uprN orig/linux-2.6.36/drivers/scst/scst_priv.h linux-2.6.36/drivers/scst/scst_priv.h
17606--- orig/linux-2.6.35/drivers/scst/scst_priv.h 17604--- orig/linux-2.6.36/drivers/scst/scst_priv.h
17607+++ linux-2.6.35/drivers/scst/scst_priv.h 17605+++ linux-2.6.36/drivers/scst/scst_priv.h
17608@@ -0,0 +1,599 @@ 17606@@ -0,0 +1,599 @@
17609+/* 17607+/*
17610+ * scst_priv.h 17608+ * scst_priv.h
@@ -18205,10 +18203,10 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_priv.h linux-2.6.35/drivers/scst/
18205+#endif /* CONFIG_SCST_MEASURE_LATENCY */ 18203+#endif /* CONFIG_SCST_MEASURE_LATENCY */
18206+ 18204+
18207+#endif /* __SCST_PRIV_H */ 18205+#endif /* __SCST_PRIV_H */
18208diff -uprN orig/linux-2.6.35/drivers/scst/scst_sysfs.c linux-2.6.35/drivers/scst/scst_sysfs.c 18206diff -uprN orig/linux-2.6.36/drivers/scst/scst_sysfs.c linux-2.6.36/drivers/scst/scst_sysfs.c
18209--- orig/linux-2.6.35/drivers/scst/scst_sysfs.c 18207--- orig/linux-2.6.36/drivers/scst/scst_sysfs.c
18210+++ linux-2.6.35/drivers/scst/scst_sysfs.c 18208+++ linux-2.6.36/drivers/scst/scst_sysfs.c
18211@@ -0,0 +1,5292 @@ 18209@@ -0,0 +1,5291 @@
18212+/* 18210+/*
18213+ * scst_sysfs.c 18211+ * scst_sysfs.c
18214+ * 18212+ *
@@ -21813,7 +21811,6 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_sysfs.c linux-2.6.35/drivers/scst
21813+ } 21811+ }
21814+ strlcpy((char *)attr->attr.name, acn->name, len); 21812+ strlcpy((char *)attr->attr.name, acn->name, len);
21815+ 21813+
21816+ attr->attr.owner = THIS_MODULE;
21817+#ifdef CONFIG_DEBUG_LOCK_ALLOC 21814+#ifdef CONFIG_DEBUG_LOCK_ALLOC
21818+ attr->attr.key = &__key; 21815+ attr->attr.key = &__key;
21819+#endif 21816+#endif
@@ -23501,9 +23498,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_sysfs.c linux-2.6.35/drivers/scst
23501+ TRACE_EXIT(); 23498+ TRACE_EXIT();
23502+ return; 23499+ return;
23503+} 23500+}
23504diff -uprN orig/linux-2.6.35/drivers/scst/scst_targ.c linux-2.6.35/drivers/scst/scst_targ.c 23501diff -uprN orig/linux-2.6.36/drivers/scst/scst_targ.c linux-2.6.36/drivers/scst/scst_targ.c
23505--- orig/linux-2.6.35/drivers/scst/scst_targ.c 23502--- orig/linux-2.6.36/drivers/scst/scst_targ.c
23506+++ linux-2.6.35/drivers/scst/scst_targ.c 23503+++ linux-2.6.36/drivers/scst/scst_targ.c
23507@@ -0,0 +1,6582 @@ 23504@@ -0,0 +1,6582 @@
23508+/* 23505+/*
23509+ * scst_targ.c 23506+ * scst_targ.c
@@ -30087,9 +30084,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_targ.c linux-2.6.35/drivers/scst/
30087+ return cmd; 30084+ return cmd;
30088+} 30085+}
30089+EXPORT_SYMBOL(scst_find_cmd_by_tag); 30086+EXPORT_SYMBOL(scst_find_cmd_by_tag);
30090diff -uprN orig/linux-2.6.35/include/scst/scst_debug.h linux-2.6.35/include/scst/scst_debug.h 30087diff -uprN orig/linux-2.6.36/include/scst/scst_debug.h linux-2.6.36/include/scst/scst_debug.h
30091--- orig/linux-2.6.35/include/scst/scst_debug.h 30088--- orig/linux-2.6.36/include/scst/scst_debug.h
30092+++ linux-2.6.35/include/scst/scst_debug.h 30089+++ linux-2.6.36/include/scst/scst_debug.h
30093@@ -0,0 +1,350 @@ 30090@@ -0,0 +1,350 @@
30094+/* 30091+/*
30095+ * include/scst_debug.h 30092+ * include/scst_debug.h
@@ -30441,9 +30438,9 @@ diff -uprN orig/linux-2.6.35/include/scst/scst_debug.h linux-2.6.35/include/scst
30441+#endif 30438+#endif
30442+ 30439+
30443+#endif /* __SCST_DEBUG_H */ 30440+#endif /* __SCST_DEBUG_H */
30444diff -uprN orig/linux-2.6.35/drivers/scst/scst_debug.c linux-2.6.35/drivers/scst/scst_debug.c 30441diff -uprN orig/linux-2.6.36/drivers/scst/scst_debug.c linux-2.6.36/drivers/scst/scst_debug.c
30445--- orig/linux-2.6.35/drivers/scst/scst_debug.c 30442--- orig/linux-2.6.36/drivers/scst/scst_debug.c
30446+++ linux-2.6.35/drivers/scst/scst_debug.c 30443+++ linux-2.6.36/drivers/scst/scst_debug.c
30447@@ -0,0 +1,223 @@ 30444@@ -0,0 +1,223 @@
30448+/* 30445+/*
30449+ * scst_debug.c 30446+ * scst_debug.c
@@ -30668,9 +30665,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_debug.c linux-2.6.35/drivers/scst
30668+} 30665+}
30669+ 30666+
30670+#endif /* CONFIG_SCST_DEBUG || CONFIG_SCST_TRACING */ 30667+#endif /* CONFIG_SCST_DEBUG || CONFIG_SCST_TRACING */
30671diff -uprN orig/linux-2.6.35/drivers/scst/scst_proc.c linux-2.6.35/drivers/scst/scst_proc.c 30668diff -uprN orig/linux-2.6.36/drivers/scst/scst_proc.c linux-2.6.36/drivers/scst/scst_proc.c
30672--- orig/linux-2.6.35/drivers/scst/scst_proc.c 30669--- orig/linux-2.6.36/drivers/scst/scst_proc.c
30673+++ linux-2.6.35/drivers/scst/scst_proc.c 30670+++ linux-2.6.36/drivers/scst/scst_proc.c
30674@@ -0,0 +1,2703 @@ 30671@@ -0,0 +1,2703 @@
30675+/* 30672+/*
30676+ * scst_proc.c 30673+ * scst_proc.c
@@ -33375,9 +33372,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_proc.c linux-2.6.35/drivers/scst/
33375+ return dtt->proc_dev_type_root; 33372+ return dtt->proc_dev_type_root;
33376+} 33373+}
33377+EXPORT_SYMBOL_GPL(scst_proc_get_dev_type_root); 33374+EXPORT_SYMBOL_GPL(scst_proc_get_dev_type_root);
33378diff -uprN orig/linux-2.6.35/include/scst/scst_sgv.h linux-2.6.35/include/scst/scst_sgv.h 33375diff -uprN orig/linux-2.6.36/include/scst/scst_sgv.h linux-2.6.36/include/scst/scst_sgv.h
33379--- orig/linux-2.6.35/include/scst/scst_sgv.h 33376--- orig/linux-2.6.36/include/scst/scst_sgv.h
33380+++ linux-2.6.35/include/scst/scst_sgv.h 33377+++ linux-2.6.36/include/scst/scst_sgv.h
33381@@ -0,0 +1,97 @@ 33378@@ -0,0 +1,97 @@
33382+/* 33379+/*
33383+ * include/scst_sgv.h 33380+ * include/scst_sgv.h
@@ -33476,9 +33473,9 @@ diff -uprN orig/linux-2.6.35/include/scst/scst_sgv.h linux-2.6.35/include/scst/s
33476+void scst_init_mem_lim(struct scst_mem_lim *mem_lim); 33473+void scst_init_mem_lim(struct scst_mem_lim *mem_lim);
33477+ 33474+
33478+#endif /* __SCST_SGV_H */ 33475+#endif /* __SCST_SGV_H */
33479diff -uprN orig/linux-2.6.35/drivers/scst/scst_mem.h linux-2.6.35/drivers/scst/scst_mem.h 33476diff -uprN orig/linux-2.6.36/drivers/scst/scst_mem.h linux-2.6.36/drivers/scst/scst_mem.h
33480--- orig/linux-2.6.35/drivers/scst/scst_mem.h 33477--- orig/linux-2.6.36/drivers/scst/scst_mem.h
33481+++ linux-2.6.35/drivers/scst/scst_mem.h 33478+++ linux-2.6.36/drivers/scst/scst_mem.h
33482@@ -0,0 +1,150 @@ 33479@@ -0,0 +1,150 @@
33483+/* 33480+/*
33484+ * scst_mem.h 33481+ * scst_mem.h
@@ -33630,9 +33627,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_mem.h linux-2.6.35/drivers/scst/s
33630+void scst_sgv_pool_use_norm(struct scst_tgt_dev *tgt_dev); 33627+void scst_sgv_pool_use_norm(struct scst_tgt_dev *tgt_dev);
33631+void scst_sgv_pool_use_norm_clust(struct scst_tgt_dev *tgt_dev); 33628+void scst_sgv_pool_use_norm_clust(struct scst_tgt_dev *tgt_dev);
33632+void scst_sgv_pool_use_dma(struct scst_tgt_dev *tgt_dev); 33629+void scst_sgv_pool_use_dma(struct scst_tgt_dev *tgt_dev);
33633diff -uprN orig/linux-2.6.35/drivers/scst/scst_mem.c linux-2.6.35/drivers/scst/scst_mem.c 33630diff -uprN orig/linux-2.6.36/drivers/scst/scst_mem.c linux-2.6.36/drivers/scst/scst_mem.c
33634--- orig/linux-2.6.35/drivers/scst/scst_mem.c 33631--- orig/linux-2.6.36/drivers/scst/scst_mem.c
33635+++ linux-2.6.35/drivers/scst/scst_mem.c 33632+++ linux-2.6.36/drivers/scst/scst_mem.c
33636@@ -0,0 +1,1879 @@ 33633@@ -0,0 +1,1879 @@
33637+/* 33634+/*
33638+ * scst_mem.c 33635+ * scst_mem.c
@@ -35513,9 +35510,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_mem.c linux-2.6.35/drivers/scst/s
35513+ return count; 35510+ return count;
35514+} 35511+}
35515+ 35512+
35516diff -uprN orig/linux-2.6.35/Documentation/scst/sgv_cache.txt linux-2.6.35/Documentation/scst/sgv_cache.txt 35513diff -uprN orig/linux-2.6.36/Documentation/scst/sgv_cache.txt linux-2.6.36/Documentation/scst/sgv_cache.txt
35517--- orig/linux-2.6.35/Documentation/scst/sgv_cache.txt 35514--- orig/linux-2.6.36/Documentation/scst/sgv_cache.txt
35518+++ linux-2.6.35/Documentation/scst/sgv_cache.txt 35515+++ linux-2.6.36/Documentation/scst/sgv_cache.txt
35519@@ -0,0 +1,224 @@ 35516@@ -0,0 +1,224 @@
35520+ SCST SGV CACHE. 35517+ SCST SGV CACHE.
35521+ 35518+
@@ -35741,9 +35738,9 @@ diff -uprN orig/linux-2.6.35/Documentation/scst/sgv_cache.txt linux-2.6.35/Docum
35741+ 35738+
35742+Runtime information and statistics is available in /sys/kernel/scst_tgt/sgv. 35739+Runtime information and statistics is available in /sys/kernel/scst_tgt/sgv.
35743+ 35740+
35744diff -uprN orig/linux-2.6.35/include/scst/scst_user.h linux-2.6.35/include/scst/scst_user.h 35741diff -uprN orig/linux-2.6.36/include/scst/scst_user.h linux-2.6.36/include/scst/scst_user.h
35745--- orig/linux-2.6.35/include/scst/scst_user.h 35742--- orig/linux-2.6.36/include/scst/scst_user.h
35746+++ linux-2.6.35/include/scst/scst_user.h 35743+++ linux-2.6.36/include/scst/scst_user.h
35747@@ -0,0 +1,321 @@ 35744@@ -0,0 +1,321 @@
35748+/* 35745+/*
35749+ * include/scst_user.h 35746+ * include/scst_user.h
@@ -35773,9 +35770,9 @@ diff -uprN orig/linux-2.6.35/include/scst/scst_user.h linux-2.6.35/include/scst/
35773+ 35770+
35774+#define DEV_USER_NAME "scst_user" 35771+#define DEV_USER_NAME "scst_user"
35775+#define DEV_USER_PATH "/dev/" 35772+#define DEV_USER_PATH "/dev/"
35776+#define DEV_USER_VERSION_NAME "2.0.0-rc3" 35773+#define DEV_USER_VERSION_NAME "2.0.0"
35777+#define DEV_USER_VERSION \ 35774+#define DEV_USER_VERSION \
35778+ DEV_USER_VERSION_NAME "$Revision: 2091 $" SCST_CONST_VERSION 35775+ DEV_USER_VERSION_NAME "$Revision: 3165 $" SCST_CONST_VERSION
35779+ 35776+
35780+#define SCST_USER_PARSE_STANDARD 0 35777+#define SCST_USER_PARSE_STANDARD 0
35781+#define SCST_USER_PARSE_CALL 1 35778+#define SCST_USER_PARSE_CALL 1
@@ -36066,9 +36063,9 @@ diff -uprN orig/linux-2.6.35/include/scst/scst_user.h linux-2.6.35/include/scst/
36066+ _IOWR('s', UCMD_STATE_TM_EXECING, struct scst_user_tm) 36063+ _IOWR('s', UCMD_STATE_TM_EXECING, struct scst_user_tm)
36067+ 36064+
36068+#endif /* __SCST_USER_H */ 36065+#endif /* __SCST_USER_H */
36069diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_user.c linux-2.6.35/drivers/scst/dev_handlers/scst_user.c 36066diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_user.c linux-2.6.36/drivers/scst/dev_handlers/scst_user.c
36070--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_user.c 36067--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_user.c
36071+++ linux-2.6.35/drivers/scst/dev_handlers/scst_user.c 36068+++ linux-2.6.36/drivers/scst/dev_handlers/scst_user.c
36072@@ -0,0 +1,3738 @@ 36069@@ -0,0 +1,3738 @@
36073+/* 36070+/*
36074+ * scst_user.c 36071+ * scst_user.c
@@ -39808,10 +39805,10 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_user.c linux-2.6.35/
39808+MODULE_LICENSE("GPL"); 39805+MODULE_LICENSE("GPL");
39809+MODULE_DESCRIPTION("User space device handler for SCST"); 39806+MODULE_DESCRIPTION("User space device handler for SCST");
39810+MODULE_VERSION(SCST_VERSION_STRING); 39807+MODULE_VERSION(SCST_VERSION_STRING);
39811diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c 39808diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.36/drivers/scst/dev_handlers/scst_vdisk.c
39812--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c 39809--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_vdisk.c
39813+++ linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c 39810+++ linux-2.6.36/drivers/scst/dev_handlers/scst_vdisk.c
39814@@ -0,0 +1,4160 @@ 39811@@ -0,0 +1,4226 @@
39815+/* 39812+/*
39816+ * scst_vdisk.c 39813+ * scst_vdisk.c
39817+ * 39814+ *
@@ -40028,9 +40025,13 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
40028+ char *filename; /* File name, protected by 40025+ char *filename; /* File name, protected by
40029+ scst_mutex and suspended activities */ 40026+ scst_mutex and suspended activities */
40030+ uint16_t command_set_version; 40027+ uint16_t command_set_version;
40028+
40029+ /* All 4 protected by vdisk_serial_rwlock */
40031+ unsigned int t10_dev_id_set:1; /* true if t10_dev_id manually set */ 40030+ unsigned int t10_dev_id_set:1; /* true if t10_dev_id manually set */
40031+ unsigned int usn_set:1; /* true if usn manually set */
40032+ char t10_dev_id[16+8+2]; /* T10 device ID */ 40032+ char t10_dev_id[16+8+2]; /* T10 device ID */
40033+ char usn[MAX_USN_LEN]; 40033+ char usn[MAX_USN_LEN];
40034+
40034+ struct scst_device *dev; 40035+ struct scst_device *dev;
40035+ struct list_head vdev_list_entry; 40036+ struct list_head vdev_list_entry;
40036+ 40037+
@@ -40114,6 +40115,8 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
40114+ struct kobj_attribute *attr, const char *buf, size_t count); 40115+ struct kobj_attribute *attr, const char *buf, size_t count);
40115+static ssize_t vdev_sysfs_t10_dev_id_show(struct kobject *kobj, 40116+static ssize_t vdev_sysfs_t10_dev_id_show(struct kobject *kobj,
40116+ struct kobj_attribute *attr, char *buf); 40117+ struct kobj_attribute *attr, char *buf);
40118+static ssize_t vdev_sysfs_usn_store(struct kobject *kobj,
40119+ struct kobj_attribute *attr, const char *buf, size_t count);
40117+static ssize_t vdev_sysfs_usn_show(struct kobject *kobj, 40120+static ssize_t vdev_sysfs_usn_show(struct kobject *kobj,
40118+ struct kobj_attribute *attr, char *buf); 40121+ struct kobj_attribute *attr, char *buf);
40119+ 40122+
@@ -40142,7 +40145,7 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
40142+ __ATTR(t10_dev_id, S_IWUSR|S_IRUGO, vdev_sysfs_t10_dev_id_show, 40145+ __ATTR(t10_dev_id, S_IWUSR|S_IRUGO, vdev_sysfs_t10_dev_id_show,
40143+ vdev_sysfs_t10_dev_id_store); 40146+ vdev_sysfs_t10_dev_id_store);
40144+static struct kobj_attribute vdev_usn_attr = 40147+static struct kobj_attribute vdev_usn_attr =
40145+ __ATTR(usn, S_IRUGO, vdev_sysfs_usn_show, NULL); 40148+ __ATTR(usn, S_IWUSR|S_IRUGO, vdev_sysfs_usn_show, vdev_sysfs_usn_store);
40146+ 40149+
40147+static struct kobj_attribute vcdrom_filename_attr = 40150+static struct kobj_attribute vcdrom_filename_attr =
40148+ __ATTR(filename, S_IRUGO|S_IWUSR, vdev_sysfs_filename_show, 40151+ __ATTR(filename, S_IRUGO|S_IWUSR, vdev_sysfs_filename_show,
@@ -40196,7 +40199,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
40196+ 40199+
40197+/* Protects vdisks addition/deletion and related activities, like search */ 40200+/* Protects vdisks addition/deletion and related activities, like search */
40198+static DEFINE_MUTEX(scst_vdisk_mutex); 40201+static DEFINE_MUTEX(scst_vdisk_mutex);
40199+static DEFINE_RWLOCK(vdisk_t10_dev_id_rwlock); 40202+
40203+/* Protects devices t10_dev_id and usn */
40204+static DEFINE_RWLOCK(vdisk_serial_rwlock);
40200+ 40205+
40201+/* Protected by scst_vdisk_mutex */ 40206+/* Protected by scst_vdisk_mutex */
40202+static LIST_HEAD(vdev_list); 40207+static LIST_HEAD(vdev_list);
@@ -41024,10 +41029,12 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
41024+ resp_len = buf[3] + 4; 41029+ resp_len = buf[3] + 4;
41025+ } else if (0x80 == cmd->cdb[2]) { 41030+ } else if (0x80 == cmd->cdb[2]) {
41026+ /* unit serial number */ 41031+ /* unit serial number */
41027+ int usn_len = strlen(virt_dev->usn); 41032+ int usn_len;
41028+ buf[1] = 0x80; 41033+ read_lock(&vdisk_serial_rwlock);
41034+ usn_len = strlen(virt_dev->usn);
41029+ buf[3] = usn_len; 41035+ buf[3] = usn_len;
41030+ strncpy(&buf[4], virt_dev->usn, usn_len); 41036+ strncpy(&buf[4], virt_dev->usn, usn_len);
41037+ read_unlock(&vdisk_serial_rwlock);
41031+ resp_len = buf[3] + 4; 41038+ resp_len = buf[3] + 4;
41032+ } else if (0x83 == cmd->cdb[2]) { 41039+ } else if (0x83 == cmd->cdb[2]) {
41033+ /* device identification */ 41040+ /* device identification */
@@ -41042,10 +41049,10 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
41042+ else 41049+ else
41043+ memcpy(&buf[num + 4], SCST_FIO_VENDOR, 8); 41050+ memcpy(&buf[num + 4], SCST_FIO_VENDOR, 8);
41044+ 41051+
41045+ read_lock_bh(&vdisk_t10_dev_id_rwlock); 41052+ read_lock(&vdisk_serial_rwlock);
41046+ i = strlen(virt_dev->t10_dev_id); 41053+ i = strlen(virt_dev->t10_dev_id);
41047+ memcpy(&buf[num + 12], virt_dev->t10_dev_id, i); 41054+ memcpy(&buf[num + 12], virt_dev->t10_dev_id, i);
41048+ read_unlock_bh(&vdisk_t10_dev_id_rwlock); 41055+ read_unlock(&vdisk_serial_rwlock);
41049+ 41056+
41050+ buf[num + 3] = 8 + i; 41057+ buf[num + 3] = 8 + i;
41051+ num += buf[num + 3]; 41058+ num += buf[num + 3];
@@ -42330,7 +42337,7 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
42330+ /* To protect from several bios finishing simultaneously */ 42337+ /* To protect from several bios finishing simultaneously */
42331+ spin_lock_irqsave(&blockio_endio_lock, flags); 42338+ spin_lock_irqsave(&blockio_endio_lock, flags);
42332+ 42339+
42333+ if (bio->bi_rw & (1 << BIO_RW)) 42340+ if (bio->bi_rw & REQ_WRITE)
42334+ scst_set_cmd_error(blockio_work->cmd, 42341+ scst_set_cmd_error(blockio_work->cmd,
42335+ SCST_LOAD_SENSE(scst_sense_write_error)); 42342+ SCST_LOAD_SENSE(scst_sense_write_error));
42336+ else 42343+ else
@@ -42415,9 +42422,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
42415+ * Better to fail fast w/o any local recovery 42422+ * Better to fail fast w/o any local recovery
42416+ * and retries. 42423+ * and retries.
42417+ */ 42424+ */
42418+ bio->bi_rw |= (1 << BIO_RW_FAILFAST_DEV) | 42425+ bio->bi_rw |= REQ_FAILFAST_DEV |
42419+ (1 << BIO_RW_FAILFAST_TRANSPORT) | 42426+ REQ_FAILFAST_TRANSPORT |
42420+ (1 << BIO_RW_FAILFAST_DRIVER); 42427+ REQ_FAILFAST_DRIVER;
42421+#if 0 /* It could be win, but could be not, so a performance study is needed */ 42428+#if 0 /* It could be win, but could be not, so a performance study is needed */
42422+ bio->bi_rw |= REQ_SYNC; 42429+ bio->bi_rw |= REQ_SYNC;
42423+#endif 42430+#endif
@@ -42781,9 +42788,13 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
42781+ memcpy(virt_dev->t10_dev_id + i, dev_id_str, dev_id_len); 42788+ memcpy(virt_dev->t10_dev_id + i, dev_id_str, dev_id_len);
42782+ TRACE_DBG("t10_dev_id %s", virt_dev->t10_dev_id); 42789+ TRACE_DBG("t10_dev_id %s", virt_dev->t10_dev_id);
42783+ 42790+
42791+ virt_dev->t10_dev_id_set = 1; /* temporary */
42792+
42784+ scnprintf(virt_dev->usn, sizeof(virt_dev->usn), "%llx", dev_id_num); 42793+ scnprintf(virt_dev->usn, sizeof(virt_dev->usn), "%llx", dev_id_num);
42785+ TRACE_DBG("usn %s", virt_dev->usn); 42794+ TRACE_DBG("usn %s", virt_dev->usn);
42786+ 42795+
42796+ virt_dev->usn_set = 1; /* temporary */
42797+
42787+ *res_virt_dev = virt_dev; 42798+ *res_virt_dev = virt_dev;
42788+ 42799+
42789+out: 42800+out:
@@ -43772,7 +43783,7 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
43772+ dev = container_of(kobj, struct scst_device, dev_kobj); 43783+ dev = container_of(kobj, struct scst_device, dev_kobj);
43773+ virt_dev = (struct scst_vdisk_dev *)dev->dh_priv; 43784+ virt_dev = (struct scst_vdisk_dev *)dev->dh_priv;
43774+ 43785+
43775+ write_lock_bh(&vdisk_t10_dev_id_rwlock); 43786+ write_lock(&vdisk_serial_rwlock);
43776+ 43787+
43777+ if ((count > sizeof(virt_dev->t10_dev_id)) || 43788+ if ((count > sizeof(virt_dev->t10_dev_id)) ||
43778+ ((count == sizeof(virt_dev->t10_dev_id)) && 43789+ ((count == sizeof(virt_dev->t10_dev_id)) &&
@@ -43803,7 +43814,7 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
43803+ virt_dev->t10_dev_id); 43814+ virt_dev->t10_dev_id);
43804+ 43815+
43805+out_unlock: 43816+out_unlock:
43806+ write_unlock_bh(&vdisk_t10_dev_id_rwlock); 43817+ write_unlock(&vdisk_serial_rwlock);
43807+ 43818+
43808+ TRACE_EXIT_RES(res); 43819+ TRACE_EXIT_RES(res);
43809+ return res; 43820+ return res;
@@ -43821,15 +43832,64 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
43821+ dev = container_of(kobj, struct scst_device, dev_kobj); 43832+ dev = container_of(kobj, struct scst_device, dev_kobj);
43822+ virt_dev = (struct scst_vdisk_dev *)dev->dh_priv; 43833+ virt_dev = (struct scst_vdisk_dev *)dev->dh_priv;
43823+ 43834+
43824+ read_lock_bh(&vdisk_t10_dev_id_rwlock); 43835+ read_lock(&vdisk_serial_rwlock);
43825+ pos = sprintf(buf, "%s\n%s", virt_dev->t10_dev_id, 43836+ pos = sprintf(buf, "%s\n%s", virt_dev->t10_dev_id,
43826+ virt_dev->t10_dev_id_set ? SCST_SYSFS_KEY_MARK "\n" : ""); 43837+ virt_dev->t10_dev_id_set ? SCST_SYSFS_KEY_MARK "\n" : "");
43827+ read_unlock_bh(&vdisk_t10_dev_id_rwlock); 43838+ read_unlock(&vdisk_serial_rwlock);
43828+ 43839+
43829+ TRACE_EXIT_RES(pos); 43840+ TRACE_EXIT_RES(pos);
43830+ return pos; 43841+ return pos;
43831+} 43842+}
43832+ 43843+
43844+static ssize_t vdev_sysfs_usn_store(struct kobject *kobj,
43845+ struct kobj_attribute *attr, const char *buf, size_t count)
43846+{
43847+ int res, i;
43848+ struct scst_device *dev;
43849+ struct scst_vdisk_dev *virt_dev;
43850+
43851+ TRACE_ENTRY();
43852+
43853+ dev = container_of(kobj, struct scst_device, dev_kobj);
43854+ virt_dev = dev->dh_priv;
43855+
43856+ write_lock(&vdisk_serial_rwlock);
43857+
43858+ if ((count > sizeof(virt_dev->usn)) ||
43859+ ((count == sizeof(virt_dev->usn)) &&
43860+ (buf[count-1] != '\n'))) {
43861+ PRINT_ERROR("USN is too long (max %zd "
43862+ "characters)", sizeof(virt_dev->usn)-1);
43863+ res = -EINVAL;
43864+ goto out_unlock;
43865+ }
43866+
43867+ memset(virt_dev->usn, 0, sizeof(virt_dev->usn));
43868+ memcpy(virt_dev->usn, buf, count);
43869+
43870+ i = 0;
43871+ while (i < sizeof(virt_dev->usn)) {
43872+ if (virt_dev->usn[i] == '\n') {
43873+ virt_dev->usn[i] = '\0';
43874+ break;
43875+ }
43876+ i++;
43877+ }
43878+
43879+ virt_dev->usn_set = 1;
43880+
43881+ res = count;
43882+
43883+ PRINT_INFO("USN for device %s changed to %s", virt_dev->name,
43884+ virt_dev->usn);
43885+
43886+out_unlock:
43887+ write_unlock(&vdisk_serial_rwlock);
43888+
43889+ TRACE_EXIT_RES(res);
43890+ return res;
43891+}
43892+
43833+static ssize_t vdev_sysfs_usn_show(struct kobject *kobj, 43893+static ssize_t vdev_sysfs_usn_show(struct kobject *kobj,
43834+ struct kobj_attribute *attr, char *buf) 43894+ struct kobj_attribute *attr, char *buf)
43835+{ 43895+{
@@ -43842,7 +43902,10 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
43842+ dev = container_of(kobj, struct scst_device, dev_kobj); 43902+ dev = container_of(kobj, struct scst_device, dev_kobj);
43843+ virt_dev = (struct scst_vdisk_dev *)dev->dh_priv; 43903+ virt_dev = (struct scst_vdisk_dev *)dev->dh_priv;
43844+ 43904+
43845+ pos = sprintf(buf, "%s\n", virt_dev->usn); 43905+ read_lock(&vdisk_serial_rwlock);
43906+ pos = sprintf(buf, "%s\n%s", virt_dev->usn,
43907+ virt_dev->usn_set ? SCST_SYSFS_KEY_MARK "\n" : "");
43908+ read_unlock(&vdisk_serial_rwlock);
43846+ 43909+
43847+ TRACE_EXIT_RES(pos); 43910+ TRACE_EXIT_RES(pos);
43848+ return pos; 43911+ return pos;
@@ -43972,9 +44035,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_vdisk.c linux-2.6.35
43972+MODULE_DESCRIPTION("SCSI disk (type 0) and CDROM (type 5) dev handler for " 44035+MODULE_DESCRIPTION("SCSI disk (type 0) and CDROM (type 5) dev handler for "
43973+ "SCST using files on file systems or block devices"); 44036+ "SCST using files on file systems or block devices");
43974+MODULE_VERSION(SCST_VERSION_STRING); 44037+MODULE_VERSION(SCST_VERSION_STRING);
43975diff -uprN orig/linux-2.6.35/Documentation/scst/README.scst linux-2.6.35/Documentation/scst/README.scst 44038diff -uprN orig/linux-2.6.36/Documentation/scst/README.scst linux-2.6.36/Documentation/scst/README.scst
43976--- orig/linux-2.6.35/Documentation/scst/README.scst 44039--- orig/linux-2.6.36/Documentation/scst/README.scst
43977+++ linux-2.6.35/Documentation/scst/README.scst 44040+++ linux-2.6.36/Documentation/scst/README.scst
43978@@ -0,0 +1,1445 @@ 44041@@ -0,0 +1,1445 @@
43979+Generic SCSI target mid-level for Linux (SCST) 44042+Generic SCSI target mid-level for Linux (SCST)
43980+============================================== 44043+==============================================
@@ -45421,9 +45484,9 @@ diff -uprN orig/linux-2.6.35/Documentation/scst/README.scst linux-2.6.35/Documen
45421+ initial SCST sysfs tree implementation 45484+ initial SCST sysfs tree implementation
45422+ 45485+
45423+Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net 45486+Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net
45424diff -uprN orig/linux-2.6.35/Documentation/scst/SysfsRules linux-2.6.35/Documentation/scst/SysfsRules 45487diff -uprN orig/linux-2.6.36/Documentation/scst/SysfsRules linux-2.6.36/Documentation/scst/SysfsRules
45425--- orig/linux-2.6.35/Documentation/scst/SysfsRules 45488--- orig/linux-2.6.36/Documentation/scst/SysfsRules
45426+++ linux-2.6.35/Documentation/scst/SysfsRules 45489+++ linux-2.6.36/Documentation/scst/SysfsRules
45427@@ -0,0 +1,933 @@ 45490@@ -0,0 +1,933 @@
45428+ SCST SYSFS interface rules 45491+ SCST SYSFS interface rules
45429+ ========================== 45492+ ==========================
@@ -46358,9 +46421,9 @@ diff -uprN orig/linux-2.6.35/Documentation/scst/SysfsRules linux-2.6.35/Document
46358+ 46421+
46359+3.5. If this target driver should be enabled, enable it. 46422+3.5. If this target driver should be enabled, enable it.
46360+ 46423+
46361diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/Makefile linux-2.6.35/drivers/scst/dev_handlers/Makefile 46424diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/Makefile linux-2.6.36/drivers/scst/dev_handlers/Makefile
46362--- orig/linux-2.6.35/drivers/scst/dev_handlers/Makefile 46425--- orig/linux-2.6.36/drivers/scst/dev_handlers/Makefile
46363+++ linux-2.6.35/drivers/scst/dev_handlers/Makefile 46426+++ linux-2.6.36/drivers/scst/dev_handlers/Makefile
46364@@ -0,0 +1,14 @@ 46427@@ -0,0 +1,14 @@
46365+ccflags-y += -Wno-unused-parameter 46428+ccflags-y += -Wno-unused-parameter
46366+ 46429+
@@ -46376,9 +46439,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/Makefile linux-2.6.35/dri
46376+obj-$(CONFIG_SCST_PROCESSOR) += scst_processor.o 46439+obj-$(CONFIG_SCST_PROCESSOR) += scst_processor.o
46377+obj-$(CONFIG_SCST_VDISK) += scst_vdisk.o 46440+obj-$(CONFIG_SCST_VDISK) += scst_vdisk.o
46378+obj-$(CONFIG_SCST_USER) += scst_user.o 46441+obj-$(CONFIG_SCST_USER) += scst_user.o
46379diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_cdrom.c linux-2.6.35/drivers/scst/dev_handlers/scst_cdrom.c 46442diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_cdrom.c linux-2.6.36/drivers/scst/dev_handlers/scst_cdrom.c
46380--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_cdrom.c 46443--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_cdrom.c
46381+++ linux-2.6.35/drivers/scst/dev_handlers/scst_cdrom.c 46444+++ linux-2.6.36/drivers/scst/dev_handlers/scst_cdrom.c
46382@@ -0,0 +1,301 @@ 46445@@ -0,0 +1,301 @@
46383+/* 46446+/*
46384+ * scst_cdrom.c 46447+ * scst_cdrom.c
@@ -46681,9 +46744,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_cdrom.c linux-2.6.35
46681+MODULE_AUTHOR("Vladislav Bolkhovitin & Leonid Stoljar"); 46744+MODULE_AUTHOR("Vladislav Bolkhovitin & Leonid Stoljar");
46682+MODULE_DESCRIPTION("SCSI CDROM (type 5) dev handler for SCST"); 46745+MODULE_DESCRIPTION("SCSI CDROM (type 5) dev handler for SCST");
46683+MODULE_VERSION(SCST_VERSION_STRING); 46746+MODULE_VERSION(SCST_VERSION_STRING);
46684diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_changer.c linux-2.6.35/drivers/scst/dev_handlers/scst_changer.c 46747diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_changer.c linux-2.6.36/drivers/scst/dev_handlers/scst_changer.c
46685--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_changer.c 46748--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_changer.c
46686+++ linux-2.6.35/drivers/scst/dev_handlers/scst_changer.c 46749+++ linux-2.6.36/drivers/scst/dev_handlers/scst_changer.c
46687@@ -0,0 +1,222 @@ 46750@@ -0,0 +1,222 @@
46688+/* 46751+/*
46689+ * scst_changer.c 46752+ * scst_changer.c
@@ -46907,9 +46970,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_changer.c linux-2.6.
46907+MODULE_LICENSE("GPL"); 46970+MODULE_LICENSE("GPL");
46908+MODULE_DESCRIPTION("SCSI medium changer (type 8) dev handler for SCST"); 46971+MODULE_DESCRIPTION("SCSI medium changer (type 8) dev handler for SCST");
46909+MODULE_VERSION(SCST_VERSION_STRING); 46972+MODULE_VERSION(SCST_VERSION_STRING);
46910diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_dev_handler.h linux-2.6.35/drivers/scst/dev_handlers/scst_dev_handler.h 46973diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_dev_handler.h linux-2.6.36/drivers/scst/dev_handlers/scst_dev_handler.h
46911--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_dev_handler.h 46974--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_dev_handler.h
46912+++ linux-2.6.35/drivers/scst/dev_handlers/scst_dev_handler.h 46975+++ linux-2.6.36/drivers/scst/dev_handlers/scst_dev_handler.h
46913@@ -0,0 +1,27 @@ 46976@@ -0,0 +1,27 @@
46914+#ifndef __SCST_DEV_HANDLER_H 46977+#ifndef __SCST_DEV_HANDLER_H
46915+#define __SCST_DEV_HANDLER_H 46978+#define __SCST_DEV_HANDLER_H
@@ -46938,9 +47001,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_dev_handler.h linux-
46938+#endif /* defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_TRACING) */ 47001+#endif /* defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_TRACING) */
46939+ 47002+
46940+#endif /* __SCST_DEV_HANDLER_H */ 47003+#endif /* __SCST_DEV_HANDLER_H */
46941diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_disk.c linux-2.6.35/drivers/scst/dev_handlers/scst_disk.c 47004diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_disk.c linux-2.6.36/drivers/scst/dev_handlers/scst_disk.c
46942--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_disk.c 47005--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_disk.c
46943+++ linux-2.6.35/drivers/scst/dev_handlers/scst_disk.c 47006+++ linux-2.6.36/drivers/scst/dev_handlers/scst_disk.c
46944@@ -0,0 +1,379 @@ 47007@@ -0,0 +1,379 @@
46945+/* 47008+/*
46946+ * scst_disk.c 47009+ * scst_disk.c
@@ -47321,9 +47384,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_disk.c linux-2.6.35/
47321+MODULE_LICENSE("GPL"); 47384+MODULE_LICENSE("GPL");
47322+MODULE_DESCRIPTION("SCSI disk (type 0) dev handler for SCST"); 47385+MODULE_DESCRIPTION("SCSI disk (type 0) dev handler for SCST");
47323+MODULE_VERSION(SCST_VERSION_STRING); 47386+MODULE_VERSION(SCST_VERSION_STRING);
47324diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_modisk.c linux-2.6.35/drivers/scst/dev_handlers/scst_modisk.c 47387diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_modisk.c linux-2.6.36/drivers/scst/dev_handlers/scst_modisk.c
47325--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_modisk.c 47388--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_modisk.c
47326+++ linux-2.6.35/drivers/scst/dev_handlers/scst_modisk.c 47389+++ linux-2.6.36/drivers/scst/dev_handlers/scst_modisk.c
47327@@ -0,0 +1,398 @@ 47390@@ -0,0 +1,398 @@
47328+/* 47391+/*
47329+ * scst_modisk.c 47392+ * scst_modisk.c
@@ -47723,9 +47786,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_modisk.c linux-2.6.3
47723+MODULE_LICENSE("GPL"); 47786+MODULE_LICENSE("GPL");
47724+MODULE_DESCRIPTION("SCSI MO disk (type 7) dev handler for SCST"); 47787+MODULE_DESCRIPTION("SCSI MO disk (type 7) dev handler for SCST");
47725+MODULE_VERSION(SCST_VERSION_STRING); 47788+MODULE_VERSION(SCST_VERSION_STRING);
47726diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_processor.c linux-2.6.35/drivers/scst/dev_handlers/scst_processor.c 47789diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_processor.c linux-2.6.36/drivers/scst/dev_handlers/scst_processor.c
47727--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_processor.c 47790--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_processor.c
47728+++ linux-2.6.35/drivers/scst/dev_handlers/scst_processor.c 47791+++ linux-2.6.36/drivers/scst/dev_handlers/scst_processor.c
47729@@ -0,0 +1,222 @@ 47792@@ -0,0 +1,222 @@
47730+/* 47793+/*
47731+ * scst_processor.c 47794+ * scst_processor.c
@@ -47949,9 +48012,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_processor.c linux-2.
47949+MODULE_LICENSE("GPL"); 48012+MODULE_LICENSE("GPL");
47950+MODULE_DESCRIPTION("SCSI medium processor (type 3) dev handler for SCST"); 48013+MODULE_DESCRIPTION("SCSI medium processor (type 3) dev handler for SCST");
47951+MODULE_VERSION(SCST_VERSION_STRING); 48014+MODULE_VERSION(SCST_VERSION_STRING);
47952diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_raid.c linux-2.6.35/drivers/scst/dev_handlers/scst_raid.c 48015diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_raid.c linux-2.6.36/drivers/scst/dev_handlers/scst_raid.c
47953--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_raid.c 48016--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_raid.c
47954+++ linux-2.6.35/drivers/scst/dev_handlers/scst_raid.c 48017+++ linux-2.6.36/drivers/scst/dev_handlers/scst_raid.c
47955@@ -0,0 +1,223 @@ 48018@@ -0,0 +1,223 @@
47956+/* 48019+/*
47957+ * scst_raid.c 48020+ * scst_raid.c
@@ -48176,9 +48239,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_raid.c linux-2.6.35/
48176+MODULE_LICENSE("GPL"); 48239+MODULE_LICENSE("GPL");
48177+MODULE_DESCRIPTION("SCSI raid(controller) (type 0xC) dev handler for SCST"); 48240+MODULE_DESCRIPTION("SCSI raid(controller) (type 0xC) dev handler for SCST");
48178+MODULE_VERSION(SCST_VERSION_STRING); 48241+MODULE_VERSION(SCST_VERSION_STRING);
48179diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_tape.c linux-2.6.35/drivers/scst/dev_handlers/scst_tape.c 48242diff -uprN orig/linux-2.6.36/drivers/scst/dev_handlers/scst_tape.c linux-2.6.36/drivers/scst/dev_handlers/scst_tape.c
48180--- orig/linux-2.6.35/drivers/scst/dev_handlers/scst_tape.c 48243--- orig/linux-2.6.36/drivers/scst/dev_handlers/scst_tape.c
48181+++ linux-2.6.35/drivers/scst/dev_handlers/scst_tape.c 48244+++ linux-2.6.36/drivers/scst/dev_handlers/scst_tape.c
48182@@ -0,0 +1,431 @@ 48245@@ -0,0 +1,431 @@
48183+/* 48246+/*
48184+ * scst_tape.c 48247+ * scst_tape.c
@@ -48611,796 +48674,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/dev_handlers/scst_tape.c linux-2.6.35/
48611+MODULE_LICENSE("GPL"); 48674+MODULE_LICENSE("GPL");
48612+MODULE_DESCRIPTION("SCSI tape (type 1) dev handler for SCST"); 48675+MODULE_DESCRIPTION("SCSI tape (type 1) dev handler for SCST");
48613+MODULE_VERSION(SCST_VERSION_STRING); 48676+MODULE_VERSION(SCST_VERSION_STRING);
48614libfc: add hook for FC-4 provider registration 48677diff -uprN orig/linux-2.6.36/drivers/scst/fcst/Makefile linux-2.6.36/drivers/scst/fcst/Makefile
48615 48678--- orig/linux-2.6.36/drivers/scst/fcst/Makefile
48616Allow FC-4 provider modules to hook into libfc, mostly for targets. 48679+++ linux-2.6.36/drivers/scst/fcst/Makefile
48617This should allow any FC-4 module to handle PRLI requests and maintain
48618process-association states.
48619
48620Each provider registers its ops with libfc and then will be called for
48621any incoming PRLI for that FC-4 type on any instance. The provider
48622can decide whether to handle that particular instance using any method
48623it likes, such as ACLs or other configuration information.
48624
48625A count is kept of the number of successful PRLIs from the remote port.
48626Providers are called back with an implicit PRLO when the remote port
48627is about to be deleted or has been reset.
48628
48629fc_lport_recv_req() now sends incoming FC-4 requests to FC-4 providers,
48630and there is a built-in provider always registered for handling
48631incoming ELS requests.
48632
48633The call to provider recv() routines uses rcu_read_lock()
48634so that providers aren't removed during the call. That lock is very
48635cheap and shouldn't affect any performance on ELS requests.
48636Providers can rely on the RCU lock to protect a session lookup as well.
48637
48638Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
48639
48640---
48641 drivers/scsi/libfc/fc_libfc.c | 60 ++++++++++++++++++
48642 drivers/scsi/libfc/fc_libfc.h | 11 +++
48643 drivers/scsi/libfc/fc_lport.c | 63 ++++++++++++++++---
48644 drivers/scsi/libfc/fc_rport.c | 133 +++++++++++++++++++++++++++++++++--------
48645 include/scsi/libfc.h | 26 ++++++++
48646 5 files changed, 255 insertions(+), 38 deletions(-)
48647
48648
48649---
48650diff --git a/drivers/scsi/libfc/fc_libfc.c b/drivers/scsi/libfc/fc_libfc.c
48651index 39f4b6a..ce0de44 100644
48652--- a/drivers/scsi/libfc/fc_libfc.c
48653+++ b/drivers/scsi/libfc/fc_libfc.c
48654@@ -34,6 +34,23 @@ unsigned int fc_debug_logging;
48655 module_param_named(debug_logging, fc_debug_logging, int, S_IRUGO|S_IWUSR);
48656 MODULE_PARM_DESC(debug_logging, "a bit mask of logging levels");
48657
48658+DEFINE_MUTEX(fc_prov_mutex);
48659+
48660+/*
48661+ * Providers which primarily send requests and PRLIs.
48662+ */
48663+struct fc4_prov *fc_active_prov[FC_FC4_PROV_SIZE] = {
48664+ [0] = &fc_rport_t0_prov,
48665+ [FC_TYPE_FCP] = &fc_rport_fcp_init,
48666+};
48667+
48668+/*
48669+ * Providers which receive requests.
48670+ */
48671+struct fc4_prov *fc_passive_prov[FC_FC4_PROV_SIZE] = {
48672+ [FC_TYPE_ELS] = &fc_lport_els_prov,
48673+};
48674+
48675 /**
48676 * libfc_init() - Initialize libfc.ko
48677 */
48678@@ -132,3 +149,46 @@ u32 fc_copy_buffer_to_sglist(void *buf, size_t len,
48679 }
48680 return copy_len;
48681 }
48682+
48683+/**
48684+ * fc_fc4_register_provider() - register FC-4 upper-level provider.
48685+ * @type: FC-4 type, such as FC_TYPE_FCP
48686+ * @prov: structure describing provider including ops vector.
48687+ *
48688+ * Returns 0 on success, negative error otherwise.
48689+ */
48690+int fc_fc4_register_provider(enum fc_fh_type type, struct fc4_prov *prov)
48691+{
48692+ struct fc4_prov **prov_entry;
48693+ int ret = 0;
48694+
48695+ if (type >= FC_FC4_PROV_SIZE)
48696+ return -EINVAL;
48697+ mutex_lock(&fc_prov_mutex);
48698+ prov_entry = (prov->recv ? fc_passive_prov : fc_active_prov) + type;
48699+ if (*prov_entry)
48700+ ret = -EBUSY;
48701+ else
48702+ *prov_entry = prov;
48703+ mutex_unlock(&fc_prov_mutex);
48704+ return ret;
48705+}
48706+EXPORT_SYMBOL(fc_fc4_register_provider);
48707+
48708+/**
48709+ * fc_fc4_deregister_provider() - deregister FC-4 upper-level provider.
48710+ * @type: FC-4 type, such as FC_TYPE_FCP
48711+ * @prov: structure describing provider including ops vector.
48712+ */
48713+void fc_fc4_deregister_provider(enum fc_fh_type type, struct fc4_prov *prov)
48714+{
48715+ BUG_ON(type >= FC_FC4_PROV_SIZE);
48716+ mutex_lock(&fc_prov_mutex);
48717+ if (prov->recv)
48718+ rcu_assign_pointer(fc_passive_prov[type], NULL);
48719+ else
48720+ rcu_assign_pointer(fc_active_prov[type], NULL);
48721+ mutex_unlock(&fc_prov_mutex);
48722+ synchronize_rcu();
48723+}
48724+EXPORT_SYMBOL(fc_fc4_deregister_provider);
48725diff --git a/drivers/scsi/libfc/fc_libfc.h b/drivers/scsi/libfc/fc_libfc.h
48726index f5c0ca4..2323c80 100644
48727--- a/drivers/scsi/libfc/fc_libfc.h
48728+++ b/drivers/scsi/libfc/fc_libfc.h
48729@@ -82,6 +82,17 @@ extern unsigned int fc_debug_logging;
48730 (lport)->host->host_no, ##args))
48731
48732 /*
48733+ * FC-4 Providers.
48734+ */
48735+extern struct fc4_prov *fc_active_prov[]; /* providers without recv */
48736+extern struct fc4_prov *fc_passive_prov[]; /* providers with recv */
48737+extern struct mutex fc_prov_mutex; /* lock over table changes */
48738+
48739+extern struct fc4_prov fc_rport_t0_prov; /* type 0 provider */
48740+extern struct fc4_prov fc_lport_els_prov; /* ELS provider */
48741+extern struct fc4_prov fc_rport_fcp_init; /* FCP initiator provider */
48742+
48743+/*
48744 * Set up direct-data placement for this I/O request
48745 */
48746 void fc_fcp_ddp_setup(struct fc_fcp_pkt *fsp, u16 xid);
48747diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
48748index 79c9e3c..b05329c 100644
48749--- a/drivers/scsi/libfc/fc_lport.c
48750+++ b/drivers/scsi/libfc/fc_lport.c
48751@@ -844,7 +844,7 @@ out:
48752 }
48753
48754 /**
48755- * fc_lport_recv_req() - The generic lport request handler
48756+ * fc_lport_recv_els_req() - The generic lport ELS request handler
48757 * @lport: The local port that received the request
48758 * @sp: The sequence the request is on
48759 * @fp: The request frame
48760@@ -855,8 +855,8 @@ out:
48761 * Locking Note: This function should not be called with the lport
48762 * lock held becuase it will grab the lock.
48763 */
48764-static void fc_lport_recv_req(struct fc_lport *lport, struct fc_seq *sp,
48765- struct fc_frame *fp)
48766+static void fc_lport_recv_els_req(struct fc_lport *lport, struct fc_seq *sp,
48767+ struct fc_frame *fp)
48768 {
48769 struct fc_frame_header *fh = fc_frame_header_get(fp);
48770 void (*recv) (struct fc_seq *, struct fc_frame *, struct fc_lport *);
48771@@ -870,8 +870,7 @@ static void fc_lport_recv_req(struct fc_lport *lport, struct fc_seq *sp,
48772 */
48773 if (!lport->link_up)
48774 fc_frame_free(fp);
48775- else if (fh->fh_type == FC_TYPE_ELS &&
48776- fh->fh_r_ctl == FC_RCTL_ELS_REQ) {
48777+ else {
48778 /*
48779 * Check opcode.
48780 */
48781@@ -900,17 +899,59 @@ static void fc_lport_recv_req(struct fc_lport *lport, struct fc_seq *sp,
48782 }
48783
48784 recv(sp, fp, lport);
48785- } else {
48786- FC_LPORT_DBG(lport, "dropping invalid frame (eof %x)\n",
48787- fr_eof(fp));
48788- fc_frame_free(fp);
48789 }
48790 mutex_unlock(&lport->lp_mutex);
48791+ lport->tt.exch_done(sp);
48792+}
48793+
48794+static int fc_lport_els_prli(struct fc_rport_priv *rdata, u32 spp_len,
48795+ const struct fc_els_spp *spp_in,
48796+ struct fc_els_spp *spp_out)
48797+{
48798+ return FC_SPP_RESP_INVL;
48799+}
48800+
48801+struct fc4_prov fc_lport_els_prov = {
48802+ .prli = fc_lport_els_prli,
48803+ .recv = fc_lport_recv_els_req,
48804+};
48805+
48806+/**
48807+ * fc_lport_recv_req() - The generic lport request handler
48808+ * @lport: The lport that received the request
48809+ * @sp: The sequence the request is on
48810+ * @fp: The frame the request is in
48811+ *
48812+ * Locking Note: This function should not be called with the lport
48813+ * lock held becuase it may grab the lock.
48814+ */
48815+static void fc_lport_recv_req(struct fc_lport *lport, struct fc_seq *sp,
48816+ struct fc_frame *fp)
48817+{
48818+ struct fc_frame_header *fh = fc_frame_header_get(fp);
48819+ struct fc4_prov *prov;
48820
48821 /*
48822- * The common exch_done for all request may not be good
48823- * if any request requires longer hold on exhange. XXX
48824+ * Use RCU read lock and module_lock to be sure module doesn't
48825+ * deregister and get unloaded while we're calling it.
48826+ * try_module_get() is inlined and accepts a NULL parameter.
48827+ * Only ELSes and FCP target ops should come through here.
48828+ * The locking is unfortunate, and a better scheme is being sought.
48829 */
48830+ rcu_read_lock();
48831+ if (fh->fh_type >= FC_FC4_PROV_SIZE)
48832+ goto drop;
48833+ prov = rcu_dereference(fc_passive_prov[fh->fh_type]);
48834+ if (!prov || !try_module_get(prov->module))
48835+ goto drop;
48836+ rcu_read_unlock();
48837+ prov->recv(lport, sp, fp);
48838+ module_put(prov->module);
48839+ return;
48840+drop:
48841+ rcu_read_unlock();
48842+ FC_LPORT_DBG(lport, "dropping unexpected frame type %x\n", fh->fh_type);
48843+ fc_frame_free(fp);
48844 lport->tt.exch_done(sp);
48845 }
48846
48847diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
48848index 39e440f..3ec4aa5 100644
48849--- a/drivers/scsi/libfc/fc_rport.c
48850+++ b/drivers/scsi/libfc/fc_rport.c
48851@@ -246,6 +246,8 @@ static void fc_rport_work(struct work_struct *work)
48852 struct fc_rport_operations *rport_ops;
48853 struct fc_rport_identifiers ids;
48854 struct fc_rport *rport;
48855+ struct fc4_prov *prov;
48856+ u8 type;
48857 int restart = 0;
48858
48859 mutex_lock(&rdata->rp_mutex);
48860@@ -295,6 +297,15 @@ static void fc_rport_work(struct work_struct *work)
48861 case RPORT_EV_FAILED:
48862 case RPORT_EV_LOGO:
48863 case RPORT_EV_STOP:
48864+ if (rdata->prli_count) {
48865+ mutex_lock(&fc_prov_mutex);
48866+ for (type = 1; type < FC_FC4_PROV_SIZE; type++) {
48867+ prov = fc_passive_prov[type];
48868+ if (prov && prov->prlo)
48869+ prov->prlo(rdata);
48870+ }
48871+ mutex_unlock(&fc_prov_mutex);
48872+ }
48873 port_id = rdata->ids.port_id;
48874 mutex_unlock(&rdata->rp_mutex);
48875
48876@@ -1434,6 +1445,7 @@ static void fc_rport_recv_prli_req(struct fc_rport_priv *rdata,
48877 struct fc_exch *ep;
48878 struct fc_frame *fp;
48879 struct fc_frame_header *fh;
48880+ struct fc4_prov *prov;
48881 struct {
48882 struct fc_els_prli prli;
48883 struct fc_els_spp spp;
48884@@ -1443,10 +1455,9 @@ static void fc_rport_recv_prli_req(struct fc_rport_priv *rdata,
48885 unsigned int len;
48886 unsigned int plen;
48887 enum fc_els_spp_resp resp;
48888+ enum fc_els_spp_resp passive;
48889 struct fc_seq_els_data rjt_data;
48890 u32 f_ctl;
48891- u32 fcp_parm;
48892- u32 roles = FC_RPORT_ROLE_UNKNOWN;
48893
48894 rjt_data.fp = NULL;
48895 fh = fc_frame_header_get(rx_fp);
48896@@ -1485,46 +1496,41 @@ static void fc_rport_recv_prli_req(struct fc_rport_priv *rdata,
48897 pp->prli.prli_len = htons(len);
48898 len -= sizeof(struct fc_els_prli);
48899
48900- /* reinitialize remote port roles */
48901- rdata->ids.roles = FC_RPORT_ROLE_UNKNOWN;
48902-
48903 /*
48904 * Go through all the service parameter pages and build
48905 * response. If plen indicates longer SPP than standard,
48906 * use that. The entire response has been pre-cleared above.
48907 */
48908 spp = &pp->spp;
48909+ mutex_lock(&fc_prov_mutex);
48910 while (len >= plen) {
48911 spp->spp_type = rspp->spp_type;
48912 spp->spp_type_ext = rspp->spp_type_ext;
48913- spp->spp_flags = rspp->spp_flags & FC_SPP_EST_IMG_PAIR;
48914- resp = FC_SPP_RESP_ACK;
48915-
48916- switch (rspp->spp_type) {
48917- case 0: /* common to all FC-4 types */
48918- break;
48919- case FC_TYPE_FCP:
48920- fcp_parm = ntohl(rspp->spp_params);
48921- if (fcp_parm & FCP_SPPF_RETRY)
48922- rdata->flags |= FC_RP_FLAGS_RETRY;
48923- rdata->supported_classes = FC_COS_CLASS3;
48924- if (fcp_parm & FCP_SPPF_INIT_FCN)
48925- roles |= FC_RPORT_ROLE_FCP_INITIATOR;
48926- if (fcp_parm & FCP_SPPF_TARG_FCN)
48927- roles |= FC_RPORT_ROLE_FCP_TARGET;
48928- rdata->ids.roles = roles;
48929-
48930- spp->spp_params = htonl(lport->service_params);
48931- break;
48932- default:
48933- resp = FC_SPP_RESP_INVL;
48934- break;
48935+ resp = 0;
48936+
48937+ if (rspp->spp_type < FC_FC4_PROV_SIZE) {
48938+ prov = fc_active_prov[rspp->spp_type];
48939+ if (prov)
48940+ resp = prov->prli(rdata, plen, rspp, spp);
48941+ prov = fc_passive_prov[rspp->spp_type];
48942+ if (prov) {
48943+ passive = prov->prli(rdata, plen, rspp, spp);
48944+ if (!resp || passive == FC_SPP_RESP_ACK)
48945+ resp = passive;
48946+ }
48947+ }
48948+ if (!resp) {
48949+ if (spp->spp_flags & FC_SPP_EST_IMG_PAIR)
48950+ resp |= FC_SPP_RESP_CONF;
48951+ else
48952+ resp |= FC_SPP_RESP_INVL;
48953 }
48954 spp->spp_flags |= resp;
48955 len -= plen;
48956 rspp = (struct fc_els_spp *)((char *)rspp + plen);
48957 spp = (struct fc_els_spp *)((char *)spp + plen);
48958 }
48959+ mutex_unlock(&fc_prov_mutex);
48960
48961 /*
48962 * Send LS_ACC. If this fails, the originator should retry.
48963@@ -1669,6 +1675,79 @@ int fc_rport_init(struct fc_lport *lport)
48964 EXPORT_SYMBOL(fc_rport_init);
48965
48966 /**
48967+ * fc_rport_fcp_prli() - Handle incoming PRLI for the FCP initiator.
48968+ * @rdata: remote port private
48969+ * @spp_len: service parameter page length
48970+ * @rspp: received service parameter page
48971+ * @spp: response service parameter page
48972+ *
48973+ * Returns the value for the response code to be placed in spp_flags;
48974+ * Returns 0 if not an initiator.
48975+ */
48976+static int fc_rport_fcp_prli(struct fc_rport_priv *rdata, u32 spp_len,
48977+ const struct fc_els_spp *rspp,
48978+ struct fc_els_spp *spp)
48979+{
48980+ struct fc_lport *lport = rdata->local_port;
48981+ u32 fcp_parm;
48982+
48983+ fcp_parm = ntohl(rspp->spp_params);
48984+ rdata->ids.roles = FC_RPORT_ROLE_UNKNOWN;
48985+ if (fcp_parm & FCP_SPPF_INIT_FCN)
48986+ rdata->ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
48987+ if (fcp_parm & FCP_SPPF_TARG_FCN)
48988+ rdata->ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
48989+ if (fcp_parm & FCP_SPPF_RETRY)
48990+ rdata->flags |= FC_RP_FLAGS_RETRY;
48991+ rdata->supported_classes = FC_COS_CLASS3;
48992+
48993+ if (!(lport->service_params & FC_RPORT_ROLE_FCP_INITIATOR))
48994+ return 0;
48995+
48996+ spp->spp_flags |= rspp->spp_flags & FC_SPP_EST_IMG_PAIR;
48997+
48998+ /*
48999+ * OR in our service parameters with other providers (target), if any.
49000+ */
49001+ fcp_parm = ntohl(spp->spp_params);
49002+ spp->spp_params = htonl(fcp_parm | lport->service_params);
49003+ return FC_SPP_RESP_ACK;
49004+}
49005+
49006+/*
49007+ * FC-4 provider ops for FCP initiator.
49008+ */
49009+struct fc4_prov fc_rport_fcp_init = {
49010+ .prli = fc_rport_fcp_prli,
49011+};
49012+
49013+/**
49014+ * fc_rport_t0_prli() - Handle incoming PRLI parameters for type 0
49015+ * @rdata: remote port private
49016+ * @spp_len: service parameter page length
49017+ * @rspp: received service parameter page
49018+ * @spp: response service parameter page
49019+ */
49020+static int fc_rport_t0_prli(struct fc_rport_priv *rdata, u32 spp_len,
49021+ const struct fc_els_spp *rspp,
49022+ struct fc_els_spp *spp)
49023+{
49024+ if (rspp->spp_flags & FC_SPP_EST_IMG_PAIR)
49025+ return FC_SPP_RESP_INVL;
49026+ return FC_SPP_RESP_ACK;
49027+}
49028+
49029+/*
49030+ * FC-4 provider ops for type 0 service parameters.
49031+ *
49032+ * This handles the special case of type 0 which is always successful
49033+ * but doesn't do anything otherwise.
49034+ */
49035+struct fc4_prov fc_rport_t0_prov = {
49036+ .prli = fc_rport_t0_prli,
49037+};
49038+
49039+/**
49040 * fc_setup_rport() - Initialize the rport_event_queue
49041 */
49042 int fc_setup_rport()
49043diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
49044index 7495c0b..4ac290f 100644
49045--- a/include/scsi/libfc.h
49046+++ b/include/scsi/libfc.h
49047@@ -35,6 +35,8 @@
49048
49049 #include <scsi/fc_frame.h>
49050
49051+#define FC_FC4_PROV_SIZE (FC_TYPE_FCP + 1) /* size of tables */
49052+
49053 /*
49054 * libfc error codes
49055 */
49056@@ -195,6 +197,7 @@ struct fc_rport_libfc_priv {
49057 * @rp_mutex: The mutex that protects the remote port
49058 * @retry_work: Handle for retries
49059 * @event_callback: Callback when READY, FAILED or LOGO states complete
49060+ * @prli_count: Count of open PRLI sessions in providers
49061 */
49062 struct fc_rport_priv {
49063 struct fc_lport *local_port;
49064@@ -216,6 +219,7 @@ struct fc_rport_priv {
49065 struct list_head peers;
49066 struct work_struct event_work;
49067 u32 supported_classes;
49068+ u16 prli_count;
49069 };
49070
49071 /**
49072@@ -857,6 +861,28 @@ struct fc_lport {
49073 struct delayed_work retry_work;
49074 };
49075
49076+/**
49077+ * struct fc4_prov - FC-4 provider registration
49078+ * @prli: Handler for incoming PRLI
49079+ * @prlo: Handler for session reset
49080+ * @recv: Handler for incoming request
49081+ * @module: Pointer to module. May be NULL.
49082+ */
49083+struct fc4_prov {
49084+ int (*prli)(struct fc_rport_priv *, u32 spp_len,
49085+ const struct fc_els_spp *spp_in,
49086+ struct fc_els_spp *spp_out);
49087+ void (*prlo)(struct fc_rport_priv *);
49088+ void (*recv)(struct fc_lport *, struct fc_seq *, struct fc_frame *);
49089+ struct module *module;
49090+};
49091+
49092+/*
49093+ * Register FC-4 provider with libfc.
49094+ */
49095+int fc_fc4_register_provider(enum fc_fh_type type, struct fc4_prov *);
49096+void fc_fc4_deregister_provider(enum fc_fh_type type, struct fc4_prov *);
49097+
49098 /*
49099 * FC_LPORT HELPER FUNCTIONS
49100 *****************************/
49101libfc: add method for setting handler for incoming exchange
49102
49103Add a method for setting handler for incoming exchange.
49104For multi-sequence exchanges, this allows the target driver
49105to add a response handler for handling subsequent sequences,
49106and exchange manager resets.
49107
49108The new function is called fc_seq_set_resp().
49109
49110Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
49111
49112---
49113 drivers/scsi/libfc/fc_exch.c | 19 +++++++++++++++++++
49114 include/scsi/libfc.h | 11 ++++++++++-
49115 2 files changed, 29 insertions(+), 1 deletions(-)
49116
49117
49118---
49119diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
49120index 104e0fb..1828d1d 100644
49121--- a/drivers/scsi/libfc/fc_exch.c
49122+++ b/drivers/scsi/libfc/fc_exch.c
49123@@ -545,6 +545,22 @@ static struct fc_seq *fc_seq_start_next(struct fc_seq *sp)
49124 return sp;
49125 }
49126
49127+/*
49128+ * Set the response handler for the exchange associated with a sequence.
49129+ */
49130+static void fc_seq_set_resp(struct fc_seq *sp,
49131+ void (*resp)(struct fc_seq *, struct fc_frame *,
49132+ void *),
49133+ void *arg)
49134+{
49135+ struct fc_exch *ep = fc_seq_exch(sp);
49136+
49137+ spin_lock_bh(&ep->ex_lock);
49138+ ep->resp = resp;
49139+ ep->arg = arg;
49140+ spin_unlock_bh(&ep->ex_lock);
49141+}
49142+
49143 /**
49144 * fc_seq_exch_abort() - Abort an exchange and sequence
49145 * @req_sp: The sequence to be aborted
49146@@ -2263,6 +2279,9 @@ int fc_exch_init(struct fc_lport *lport)
49147 if (!lport->tt.seq_start_next)
49148 lport->tt.seq_start_next = fc_seq_start_next;
49149
49150+ if (!lport->tt.seq_set_resp)
49151+ lport->tt.seq_set_resp = fc_seq_set_resp;
49152+
49153 if (!lport->tt.exch_seq_send)
49154 lport->tt.exch_seq_send = fc_exch_seq_send;
49155
49156diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
49157index 4ac290f..64a4756 100644
49158--- a/include/scsi/libfc.h
49159+++ b/include/scsi/libfc.h
49160@@ -571,6 +571,16 @@ struct libfc_function_template {
49161 struct fc_seq *(*seq_start_next)(struct fc_seq *);
49162
49163 /*
49164+ * Set a response handler for the exchange of the sequence.
49165+ *
49166+ * STATUS: OPTIONAL
49167+ */
49168+ void (*seq_set_resp)(struct fc_seq *sp,
49169+ void (*resp)(struct fc_seq *, struct fc_frame *,
49170+ void *),
49171+ void *arg);
49172+
49173+ /*
49174 * Reset an exchange manager, completing all sequences and exchanges.
49175 * If s_id is non-zero, reset only exchanges originating from that FID.
49176 * If d_id is non-zero, reset only exchanges sending to that FID.
49177@@ -1056,7 +1066,6 @@ struct fc_seq *fc_elsct_send(struct fc_lport *, u32 did,
49178 void fc_lport_flogi_resp(struct fc_seq *, struct fc_frame *, void *);
49179 void fc_lport_logo_resp(struct fc_seq *, struct fc_frame *, void *);
49180
49181-
49182 /*
49183 * EXCHANGE MANAGER LAYER
49184 *****************************/
49185libfc: add local port hook for provider session lookup
49186
49187The target provider needs a per-instance lookup table
49188or other way to lookup sessions quickly without going through
49189a linear list or serializing too much.
49190
49191Add a simple void * array indexed by FC-4 type to the fc_lport.
49192
49193Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
49194
49195---
49196 include/scsi/libfc.h | 2 ++
49197 1 files changed, 2 insertions(+), 0 deletions(-)
49198
49199
49200---
49201diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
49202index 64a4756..9d7c8e3 100644
49203--- a/include/scsi/libfc.h
49204+++ b/include/scsi/libfc.h
49205@@ -816,6 +816,7 @@ struct fc_disc {
49206 * @lp_mutex: Mutex to protect the local port
49207 * @list: Handle for list of local ports
49208 * @retry_work: Handle to local port for delayed retry context
49209+ * @prov: Pointers available for use by passive FC-4 providers
49210 */
49211 struct fc_lport {
49212 /* Associations */
49213@@ -869,6 +870,7 @@ struct fc_lport {
49214 struct mutex lp_mutex;
49215 struct list_head list;
49216 struct delayed_work retry_work;
49217+ void *prov[FC_FC4_PROV_SIZE];
49218 };
49219
49220 /**
49221libfc: add hook to notify providers of local port changes
49222
49223When an SCST provider is registered, it needs to know what
49224local ports are available for configuration as targets.
49225
49226Add a notifier chain that is invoked when any local port
49227that is added or deleted.
49228
49229Maintain a global list of local ports and add an
49230interator function that calls a given function for
49231every existing local port. This is used when first
49232loading a provider.
49233
49234Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
49235
49236---
49237 drivers/scsi/libfc/fc_libfc.c | 41 +++++++++++++++++++++++++++++++++++++++++
49238 drivers/scsi/libfc/fc_libfc.h | 2 ++
49239 drivers/scsi/libfc/fc_lport.c | 2 ++
49240 include/scsi/libfc.h | 14 +++++++++++++-
49241 4 files changed, 58 insertions(+), 1 deletions(-)
49242
49243
49244---
49245diff --git a/drivers/scsi/libfc/fc_libfc.c b/drivers/scsi/libfc/fc_libfc.c
49246index ce0de44..abd108a 100644
49247--- a/drivers/scsi/libfc/fc_libfc.c
49248+++ b/drivers/scsi/libfc/fc_libfc.c
49249@@ -35,6 +35,10 @@ module_param_named(debug_logging, fc_debug_logging, int, S_IRUGO|S_IWUSR);
49250 MODULE_PARM_DESC(debug_logging, "a bit mask of logging levels");
49251
49252 DEFINE_MUTEX(fc_prov_mutex);
49253+static LIST_HEAD(fc_local_ports);
49254+struct blocking_notifier_head fc_lport_notifier_head =
49255+ BLOCKING_NOTIFIER_INIT(fc_lport_notifier_head);
49256+EXPORT_SYMBOL(fc_lport_notifier_head);
49257
49258 /*
49259 * Providers which primarily send requests and PRLIs.
49260@@ -150,6 +154,17 @@ u32 fc_copy_buffer_to_sglist(void *buf, size_t len,
49261 return copy_len;
49262 }
49263
49264+void fc_lport_iterate(void (*notify)(struct fc_lport *, void *), void *arg)
49265+{
49266+ struct fc_lport *lport;
49267+
49268+ mutex_lock(&fc_prov_mutex);
49269+ list_for_each_entry(lport, &fc_local_ports, lport_list)
49270+ notify(lport, arg);
49271+ mutex_unlock(&fc_prov_mutex);
49272+}
49273+EXPORT_SYMBOL(fc_lport_iterate);
49274+
49275 /**
49276 * fc_fc4_register_provider() - register FC-4 upper-level provider.
49277 * @type: FC-4 type, such as FC_TYPE_FCP
49278@@ -192,3 +207,29 @@ void fc_fc4_deregister_provider(enum fc_fh_type type, struct fc4_prov *prov)
49279 synchronize_rcu();
49280 }
49281 EXPORT_SYMBOL(fc_fc4_deregister_provider);
49282+
49283+/**
49284+ * fc_fc4_add_lport() - add new local port to list and run notifiers.
49285+ * @lport: The new local port.
49286+ */
49287+void fc_fc4_add_lport(struct fc_lport *lport)
49288+{
49289+ mutex_lock(&fc_prov_mutex);
49290+ list_add_tail(&lport->lport_list, &fc_local_ports);
49291+ blocking_notifier_call_chain(&fc_lport_notifier_head,
49292+ FC_LPORT_EV_ADD, lport);
49293+ mutex_unlock(&fc_prov_mutex);
49294+}
49295+
49296+/**
49297+ * fc_fc4_del_lport() - remove local port from list and run notifiers.
49298+ * @lport: The new local port.
49299+ */
49300+void fc_fc4_del_lport(struct fc_lport *lport)
49301+{
49302+ mutex_lock(&fc_prov_mutex);
49303+ list_del(&lport->lport_list);
49304+ blocking_notifier_call_chain(&fc_lport_notifier_head,
49305+ FC_LPORT_EV_DEL, lport);
49306+ mutex_unlock(&fc_prov_mutex);
49307+}
49308diff --git a/drivers/scsi/libfc/fc_libfc.h b/drivers/scsi/libfc/fc_libfc.h
49309index 2323c80..85ce01e 100644
49310--- a/drivers/scsi/libfc/fc_libfc.h
49311+++ b/drivers/scsi/libfc/fc_libfc.h
49312@@ -111,6 +111,8 @@ void fc_destroy_fcp(void);
49313 * Internal libfc functions
49314 */
49315 const char *fc_els_resp_type(struct fc_frame *);
49316+extern void fc_fc4_add_lport(struct fc_lport *);
49317+extern void fc_fc4_del_lport(struct fc_lport *);
49318
49319 /*
49320 * Copies a buffer into an sg list
49321diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
49322index b05329c..375a2a7 100644
49323--- a/drivers/scsi/libfc/fc_lport.c
49324+++ b/drivers/scsi/libfc/fc_lport.c
49325@@ -647,6 +647,7 @@ int fc_lport_destroy(struct fc_lport *lport)
49326 lport->tt.fcp_abort_io(lport);
49327 lport->tt.disc_stop_final(lport);
49328 lport->tt.exch_mgr_reset(lport, 0, 0);
49329+ fc_fc4_del_lport(lport);
49330 return 0;
49331 }
49332 EXPORT_SYMBOL(fc_lport_destroy);
49333@@ -1639,6 +1640,7 @@ int fc_lport_init(struct fc_lport *lport)
49334 fc_host_supported_speeds(lport->host) |= FC_PORTSPEED_1GBIT;
49335 if (lport->link_supported_speeds & FC_PORTSPEED_10GBIT)
49336 fc_host_supported_speeds(lport->host) |= FC_PORTSPEED_10GBIT;
49337+ fc_fc4_add_lport(lport);
49338
49339 return 0;
49340 }
49341diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
49342index 9d7c8e3..2fa3538 100644
49343--- a/include/scsi/libfc.h
49344+++ b/include/scsi/libfc.h
49345@@ -775,6 +775,15 @@ struct fc_disc {
49346 enum fc_disc_event);
49347 };
49348
49349+/*
49350+ * Local port notifier and events.
49351+ */
49352+extern struct blocking_notifier_head fc_lport_notifier_head;
49353+enum fc_lport_event {
49354+ FC_LPORT_EV_ADD,
49355+ FC_LPORT_EV_DEL,
49356+};
49357+
49358 /**
49359 * struct fc_lport - Local port
49360 * @host: The SCSI host associated with a local port
49361@@ -814,8 +823,9 @@ struct fc_disc {
49362 * @lso_max: The maximum large offload send size
49363 * @fcts: FC-4 type mask
49364 * @lp_mutex: Mutex to protect the local port
49365- * @list: Handle for list of local ports
49366+ * @list: Linkage on list of vport peers
49367 * @retry_work: Handle to local port for delayed retry context
49368+ * @lport_list: Linkage on module-wide list of local ports
49369 * @prov: Pointers available for use by passive FC-4 providers
49370 */
49371 struct fc_lport {
49372@@ -870,6 +880,7 @@ struct fc_lport {
49373 struct mutex lp_mutex;
49374 struct list_head list;
49375 struct delayed_work retry_work;
49376+ struct list_head lport_list;
49377 void *prov[FC_FC4_PROV_SIZE];
49378 };
49379
49380@@ -1024,6 +1035,7 @@ int fc_set_mfs(struct fc_lport *, u32 mfs);
49381 struct fc_lport *libfc_vport_create(struct fc_vport *, int privsize);
49382 struct fc_lport *fc_vport_id_lookup(struct fc_lport *, u32 port_id);
49383 int fc_lport_bsg_request(struct fc_bsg_job *);
49384+void fc_lport_iterate(void (*func)(struct fc_lport *, void *), void *);
49385
49386 /*
49387 * REMOTE PORT LAYER
49388--- a/include/scsi/fc_frame.h 2010-06-13 11:08:26.000000000 +0200
49389+++ b/include/scsi/fc_frame.h 2010-06-13 11:08:53.000000000 +0200
49390@@ -66,8 +66,8 @@ struct fcoe_rcv_info {
49391 struct fc_fcp_pkt *fr_fsp; /* for the corresponding fcp I/O */
49392 u32 fr_crc;
49393 u16 fr_max_payload; /* max FC payload */
49394- enum fc_sof fr_sof; /* start of frame delimiter */
49395- enum fc_eof fr_eof; /* end of frame delimiter */
49396+ u8 fr_sof; /* start of frame delimiter */
49397+ u8 fr_eof; /* end of frame delimiter */
49398 u8 fr_flags; /* flags - see below */
49399 u8 granted_mac[ETH_ALEN]; /* FCoE MAC address */
49400 };
49401diff -uprN orig/linux-2.6.35/drivers/scst/fcst/Makefile linux-2.6.35/drivers/scst/fcst/Makefile
49402--- orig/linux-2.6.35/drivers/scst/fcst/Makefile
49403+++ linux-2.6.35/drivers/scst/fcst/Makefile
49404@@ -0,0 +1,7 @@ 48680@@ -0,0 +1,7 @@
49405+obj-$(CONFIG_FCST) += fcst.o 48681+obj-$(CONFIG_FCST) += fcst.o
49406+ 48682+
@@ -49409,18 +48685,18 @@ diff -uprN orig/linux-2.6.35/drivers/scst/fcst/Makefile linux-2.6.35/drivers/scs
49409+ ft_io.o \ 48685+ ft_io.o \
49410+ ft_scst.o \ 48686+ ft_scst.o \
49411+ ft_sess.o 48687+ ft_sess.o
49412diff -uprN orig/linux-2.6.35/drivers/scst/fcst/Kconfig linux-2.6.35/drivers/scst/fcst/Kconfig 48688diff -uprN orig/linux-2.6.36/drivers/scst/fcst/Kconfig linux-2.6.36/drivers/scst/fcst/Kconfig
49413--- orig/linux-2.6.35/drivers/scst/fcst/Kconfig 48689--- orig/linux-2.6.36/drivers/scst/fcst/Kconfig
49414+++ linux-2.6.35/drivers/scst/fcst/Kconfig 48690+++ linux-2.6.36/drivers/scst/fcst/Kconfig
49415@@ -0,0 +1,5 @@ 48691@@ -0,0 +1,5 @@
49416+config FCST 48692+config FCST
49417+ tristate "SCST target module for Fibre Channel using libfc" 48693+ tristate "SCST target module for Fibre Channel using libfc"
49418+ depends on LIBFC && SCST 48694+ depends on LIBFC && SCST
49419+ ---help--- 48695+ ---help---
49420+ Supports using libfc HBAs as target adapters with SCST 48696+ Supports using libfc HBAs as target adapters with SCST
49421diff -uprN orig/linux-2.6.35/drivers/scst/fcst/fcst.h linux-2.6.35/drivers/scst/fcst/fcst.h 48697diff -uprN orig/linux-2.6.36/drivers/scst/fcst/fcst.h linux-2.6.36/drivers/scst/fcst/fcst.h
49422--- orig/linux-2.6.35/drivers/scst/fcst/fcst.h 48698--- orig/linux-2.6.36/drivers/scst/fcst/fcst.h
49423+++ linux-2.6.35/drivers/scst/fcst/fcst.h 48699+++ linux-2.6.36/drivers/scst/fcst/fcst.h
49424@@ -0,0 +1,151 @@ 48700@@ -0,0 +1,151 @@
49425+/* 48701+/*
49426+ * Copyright (c) 2010 Cisco Systems, Inc. 48702+ * Copyright (c) 2010 Cisco Systems, Inc.
@@ -49573,9 +48849,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/fcst/fcst.h linux-2.6.35/drivers/scst/
49573+void ft_cmd_dump(struct scst_cmd *, const char *); 48849+void ft_cmd_dump(struct scst_cmd *, const char *);
49574+ 48850+
49575+#endif /* __SCSI_FCST_H__ */ 48851+#endif /* __SCSI_FCST_H__ */
49576diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_cmd.c linux-2.6.35/drivers/scst/fcst/ft_cmd.c 48852diff -uprN orig/linux-2.6.36/drivers/scst/fcst/ft_cmd.c linux-2.6.36/drivers/scst/fcst/ft_cmd.c
49577--- orig/linux-2.6.35/drivers/scst/fcst/ft_cmd.c 48853--- orig/linux-2.6.36/drivers/scst/fcst/ft_cmd.c
49578+++ linux-2.6.35/drivers/scst/fcst/ft_cmd.c 48854+++ linux-2.6.36/drivers/scst/fcst/ft_cmd.c
49579@@ -0,0 +1,686 @@ 48855@@ -0,0 +1,686 @@
49580+/* 48856+/*
49581+ * Copyright (c) 2010 Cisco Systems, Inc. 48857+ * Copyright (c) 2010 Cisco Systems, Inc.
@@ -50263,9 +49539,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_cmd.c linux-2.6.35/drivers/scs
50263+ break; 49539+ break;
50264+ } 49540+ }
50265+} 49541+}
50266diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_io.c linux-2.6.35/drivers/scst/fcst/ft_io.c 49542diff -uprN orig/linux-2.6.36/drivers/scst/fcst/ft_io.c linux-2.6.36/drivers/scst/fcst/ft_io.c
50267--- orig/linux-2.6.35/drivers/scst/fcst/ft_io.c 49543--- orig/linux-2.6.36/drivers/scst/fcst/ft_io.c
50268+++ linux-2.6.35/drivers/scst/fcst/ft_io.c 49544+++ linux-2.6.36/drivers/scst/fcst/ft_io.c
50269@@ -0,0 +1,272 @@ 49545@@ -0,0 +1,272 @@
50270+/* 49546+/*
50271+ * Copyright (c) 2010 Cisco Systems, Inc. 49547+ * Copyright (c) 2010 Cisco Systems, Inc.
@@ -50539,9 +49815,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_io.c linux-2.6.35/drivers/scst
50539+ } 49815+ }
50540+ return SCST_TGT_RES_SUCCESS; 49816+ return SCST_TGT_RES_SUCCESS;
50541+} 49817+}
50542diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_scst.c linux-2.6.35/drivers/scst/fcst/ft_scst.c 49818diff -uprN orig/linux-2.6.36/drivers/scst/fcst/ft_scst.c linux-2.6.36/drivers/scst/fcst/ft_scst.c
50543--- orig/linux-2.6.35/drivers/scst/fcst/ft_scst.c 49819--- orig/linux-2.6.36/drivers/scst/fcst/ft_scst.c
50544+++ linux-2.6.35/drivers/scst/fcst/ft_scst.c 49820+++ linux-2.6.36/drivers/scst/fcst/ft_scst.c
50545@@ -0,0 +1,96 @@ 49821@@ -0,0 +1,96 @@
50546+/* 49822+/*
50547+ * Copyright (c) 2010 Cisco Systems, Inc. 49823+ * Copyright (c) 2010 Cisco Systems, Inc.
@@ -50639,9 +49915,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_scst.c linux-2.6.35/drivers/sc
50639+ synchronize_rcu(); 49915+ synchronize_rcu();
50640+} 49916+}
50641+module_exit(ft_module_exit); 49917+module_exit(ft_module_exit);
50642diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_sess.c linux-2.6.35/drivers/scst/fcst/ft_sess.c 49918diff -uprN orig/linux-2.6.36/drivers/scst/fcst/ft_sess.c linux-2.6.36/drivers/scst/fcst/ft_sess.c
50643--- orig/linux-2.6.35/drivers/scst/fcst/ft_sess.c 49919--- orig/linux-2.6.36/drivers/scst/fcst/ft_sess.c
50644+++ linux-2.6.35/drivers/scst/fcst/ft_sess.c 49920+++ linux-2.6.36/drivers/scst/fcst/ft_sess.c
50645@@ -0,0 +1,570 @@ 49921@@ -0,0 +1,570 @@
50646+/* 49922+/*
50647+ * Copyright (c) 2010 Cisco Systems, Inc. 49923+ * Copyright (c) 2010 Cisco Systems, Inc.
@@ -51213,9 +50489,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/fcst/ft_sess.c linux-2.6.35/drivers/sc
51213+ aen->event_fn, sess->port_id, scst_aen_get_lun(aen)); 50489+ aen->event_fn, sess->port_id, scst_aen_get_lun(aen));
51214+ return SCST_AEN_RES_FAILED; /* XXX TBD */ 50490+ return SCST_AEN_RES_FAILED; /* XXX TBD */
51215+} 50491+}
51216diff -uprN orig/linux-2.6.35/Documentation/scst/README.fcst linux-2.6.35/Documentation/scst/README.fcst 50492diff -uprN orig/linux-2.6.36/Documentation/scst/README.fcst linux-2.6.36/Documentation/scst/README.fcst
51217--- orig/linux-2.6.35/Documentation/scst/README.fcst 50493--- orig/linux-2.6.36/Documentation/scst/README.fcst
51218+++ linux-2.6.35/Documentation/scst/README.fcst 50494+++ linux-2.6.36/Documentation/scst/README.fcst
51219@@ -0,0 +1,99 @@ 50495@@ -0,0 +1,99 @@
51220+fcst README v1.0 06/10/2010 50496+fcst README v1.0 06/10/2010
51221+ 50497+
@@ -51316,9 +50592,9 @@ diff -uprN orig/linux-2.6.35/Documentation/scst/README.fcst linux-2.6.35/Documen
51316+14. As a temporary workaround, you may need to reset the interface 50592+14. As a temporary workaround, you may need to reset the interface
51317+ on the initiator side so it sees the SCST device as a target and 50593+ on the initiator side so it sees the SCST device as a target and
51318+ discovers LUNs. You can avoid this by bringing up the initiator last. 50594+ discovers LUNs. You can avoid this by bringing up the initiator last.
51319diff -uprN orig/linux-2.6.35/include/scst/iscsi_scst.h linux-2.6.35/include/scst/iscsi_scst.h 50595diff -uprN orig/linux-2.6.36/include/scst/iscsi_scst.h linux-2.6.36/include/scst/iscsi_scst.h
51320--- orig/linux-2.6.35/include/scst/iscsi_scst.h 50596--- orig/linux-2.6.36/include/scst/iscsi_scst.h
51321+++ linux-2.6.35/include/scst/iscsi_scst.h 50597+++ linux-2.6.36/include/scst/iscsi_scst.h
51322@@ -0,0 +1,220 @@ 50598@@ -0,0 +1,220 @@
51323+/* 50599+/*
51324+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin 50600+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin
@@ -51540,9 +50816,9 @@ diff -uprN orig/linux-2.6.35/include/scst/iscsi_scst.h linux-2.6.35/include/scst
51540+} 50816+}
51541+ 50817+
51542+#endif 50818+#endif
51543diff -uprN orig/linux-2.6.35/include/scst/iscsi_scst_ver.h linux-2.6.35/include/scst/iscsi_scst_ver.h 50819diff -uprN orig/linux-2.6.36/include/scst/iscsi_scst_ver.h linux-2.6.36/include/scst/iscsi_scst_ver.h
51544--- orig/linux-2.6.35/include/scst/iscsi_scst_ver.h 50820--- orig/linux-2.6.36/include/scst/iscsi_scst_ver.h
51545+++ linux-2.6.35/include/scst/iscsi_scst_ver.h 50821+++ linux-2.6.36/include/scst/iscsi_scst_ver.h
51546@@ -0,0 +1,20 @@ 50822@@ -0,0 +1,20 @@
51547+/* 50823+/*
51548+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin 50824+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin
@@ -51563,25 +50839,25 @@ diff -uprN orig/linux-2.6.35/include/scst/iscsi_scst_ver.h linux-2.6.35/include/
51563+ 50839+
51564+#define ISCSI_VERSION_STRING_SUFFIX 50840+#define ISCSI_VERSION_STRING_SUFFIX
51565+ 50841+
51566+#define ISCSI_VERSION_STRING "2.0.0-rc3" ISCSI_VERSION_STRING_SUFFIX 50842+#define ISCSI_VERSION_STRING "2.0.0" ISCSI_VERSION_STRING_SUFFIX
51567diff -uprN orig/linux-2.6.35/include/scst/iscsi_scst_itf_ver.h linux-2.6.35/include/scst/iscsi_scst_itf_ver.h 50843diff -uprN orig/linux-2.6.36/include/scst/iscsi_scst_itf_ver.h linux-2.6.36/include/scst/iscsi_scst_itf_ver.h
51568--- orig/linux-2.6.35/include/scst/iscsi_scst_itf_ver.h 50844--- orig/linux-2.6.36/include/scst/iscsi_scst_itf_ver.h
51569+++ linux-2.6.35/include/scst/iscsi_scst_itf_ver.h 50845+++ linux-2.6.36/include/scst/iscsi_scst_itf_ver.h
51570@@ -0,0 +1,3 @@ 50846@@ -0,0 +1,3 @@
51571+/* Autogenerated, don't edit */ 50847+/* Autogenerated, don't edit */
51572+ 50848+
51573+#define ISCSI_SCST_INTERFACE_VERSION ISCSI_VERSION_STRING "_" "31815603fdea2196eb9774eac0e41bf15c9a9130" 50849+#define ISCSI_SCST_INTERFACE_VERSION ISCSI_VERSION_STRING "_" "31815603fdea2196eb9774eac0e41bf15c9a9130"
51574diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/Makefile linux-2.6.35/drivers/scst/iscsi-scst/Makefile 50850diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/Makefile linux-2.6.36/drivers/scst/iscsi-scst/Makefile
51575--- orig/linux-2.6.35/drivers/scst/iscsi-scst/Makefile 50851--- orig/linux-2.6.36/drivers/scst/iscsi-scst/Makefile
51576+++ linux-2.6.35/drivers/scst/iscsi-scst/Makefile 50852+++ linux-2.6.36/drivers/scst/iscsi-scst/Makefile
51577@@ -0,0 +1,4 @@ 50853@@ -0,0 +1,4 @@
51578+iscsi-scst-y := iscsi.o nthread.o config.o digest.o \ 50854+iscsi-scst-y := iscsi.o nthread.o config.o digest.o \
51579+ conn.o session.o target.o event.o param.o 50855+ conn.o session.o target.o event.o param.o
51580+ 50856+
51581+obj-$(CONFIG_SCST_ISCSI) += iscsi-scst.o 50857+obj-$(CONFIG_SCST_ISCSI) += iscsi-scst.o
51582diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/Kconfig linux-2.6.35/drivers/scst/iscsi-scst/Kconfig 50858diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/Kconfig linux-2.6.36/drivers/scst/iscsi-scst/Kconfig
51583--- orig/linux-2.6.35/drivers/scst/iscsi-scst/Kconfig 50859--- orig/linux-2.6.36/drivers/scst/iscsi-scst/Kconfig
51584+++ linux-2.6.35/drivers/scst/iscsi-scst/Kconfig 50860+++ linux-2.6.36/drivers/scst/iscsi-scst/Kconfig
51585@@ -0,0 +1,25 @@ 50861@@ -0,0 +1,25 @@
51586+config SCST_ISCSI 50862+config SCST_ISCSI
51587+ tristate "ISCSI Target" 50863+ tristate "ISCSI Target"
@@ -51608,10 +50884,10 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/Kconfig linux-2.6.35/driver
51608+ iSCSI initiator that is talking to SCST. 50884+ iSCSI initiator that is talking to SCST.
51609+ 50885+
51610+ If unsure, say "N". 50886+ If unsure, say "N".
51611diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/config.c linux-2.6.35/drivers/scst/iscsi-scst/config.c 50887diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/config.c linux-2.6.36/drivers/scst/iscsi-scst/config.c
51612--- orig/linux-2.6.35/drivers/scst/iscsi-scst/config.c 50888--- orig/linux-2.6.36/drivers/scst/iscsi-scst/config.c
51613+++ linux-2.6.35/drivers/scst/iscsi-scst/config.c 50889+++ linux-2.6.36/drivers/scst/iscsi-scst/config.c
51614@@ -0,0 +1,1033 @@ 50890@@ -0,0 +1,1032 @@
51615+/* 50891+/*
51616+ * Copyright (C) 2004 - 2005 FUJITA Tomonori <tomof@acm.org> 50892+ * Copyright (C) 2004 - 2005 FUJITA Tomonori <tomof@acm.org>
51617+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin 50893+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin
@@ -52140,7 +51416,6 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/config.c linux-2.6.35/drive
52140+ list_add(&tgt_attr->attrs_list_entry, attrs_list); 51416+ list_add(&tgt_attr->attrs_list_entry, attrs_list);
52141+ 51417+
52142+ tgt_attr->attr.attr.name = tgt_attr->name; 51418+ tgt_attr->attr.attr.name = tgt_attr->name;
52143+ tgt_attr->attr.attr.owner = THIS_MODULE;
52144+#ifdef CONFIG_DEBUG_LOCK_ALLOC 51419+#ifdef CONFIG_DEBUG_LOCK_ALLOC
52145+ tgt_attr->attr.attr.key = &__key; 51420+ tgt_attr->attr.attr.key = &__key;
52146+#endif 51421+#endif
@@ -52645,9 +51920,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/config.c linux-2.6.35/drive
52645+} 51920+}
52646+ 51921+
52647+#endif /* CONFIG_SCST_DEBUG */ 51922+#endif /* CONFIG_SCST_DEBUG */
52648diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/conn.c linux-2.6.35/drivers/scst/iscsi-scst/conn.c 51923diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/conn.c linux-2.6.36/drivers/scst/iscsi-scst/conn.c
52649--- orig/linux-2.6.35/drivers/scst/iscsi-scst/conn.c 51924--- orig/linux-2.6.36/drivers/scst/iscsi-scst/conn.c
52650+++ linux-2.6.35/drivers/scst/iscsi-scst/conn.c 51925+++ linux-2.6.36/drivers/scst/iscsi-scst/conn.c
52651@@ -0,0 +1,910 @@ 51926@@ -0,0 +1,910 @@
52652+/* 51927+/*
52653+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com> 51928+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com>
@@ -53559,9 +52834,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/conn.c linux-2.6.35/drivers
53559+} 52834+}
53560+ 52835+
53561+#endif /* CONFIG_SCST_EXTRACHECKS */ 52836+#endif /* CONFIG_SCST_EXTRACHECKS */
53562diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/digest.c linux-2.6.35/drivers/scst/iscsi-scst/digest.c 52837diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/digest.c linux-2.6.36/drivers/scst/iscsi-scst/digest.c
53563--- orig/linux-2.6.35/drivers/scst/iscsi-scst/digest.c 52838--- orig/linux-2.6.36/drivers/scst/iscsi-scst/digest.c
53564+++ linux-2.6.35/drivers/scst/iscsi-scst/digest.c 52839+++ linux-2.6.36/drivers/scst/iscsi-scst/digest.c
53565@@ -0,0 +1,244 @@ 52840@@ -0,0 +1,244 @@
53566+/* 52841+/*
53567+ * iSCSI digest handling. 52842+ * iSCSI digest handling.
@@ -53807,9 +53082,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/digest.c linux-2.6.35/drive
53807+ TRACE_DBG("TX data digest for cmd %p: %x (offset %d, opcode %x)", cmnd, 53082+ TRACE_DBG("TX data digest for cmd %p: %x (offset %d, opcode %x)", cmnd,
53808+ cmnd->ddigest, offset, cmnd_opcode(cmnd)); 53083+ cmnd->ddigest, offset, cmnd_opcode(cmnd));
53809+} 53084+}
53810diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/digest.h linux-2.6.35/drivers/scst/iscsi-scst/digest.h 53085diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/digest.h linux-2.6.36/drivers/scst/iscsi-scst/digest.h
53811--- orig/linux-2.6.35/drivers/scst/iscsi-scst/digest.h 53086--- orig/linux-2.6.36/drivers/scst/iscsi-scst/digest.h
53812+++ linux-2.6.35/drivers/scst/iscsi-scst/digest.h 53087+++ linux-2.6.36/drivers/scst/iscsi-scst/digest.h
53813@@ -0,0 +1,31 @@ 53088@@ -0,0 +1,31 @@
53814+/* 53089+/*
53815+ * iSCSI digest handling. 53090+ * iSCSI digest handling.
@@ -53842,9 +53117,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/digest.h linux-2.6.35/drive
53842+extern void digest_tx_data(struct iscsi_cmnd *cmnd); 53117+extern void digest_tx_data(struct iscsi_cmnd *cmnd);
53843+ 53118+
53844+#endif /* __ISCSI_DIGEST_H__ */ 53119+#endif /* __ISCSI_DIGEST_H__ */
53845diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/event.c linux-2.6.35/drivers/scst/iscsi-scst/event.c 53120diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/event.c linux-2.6.36/drivers/scst/iscsi-scst/event.c
53846--- orig/linux-2.6.35/drivers/scst/iscsi-scst/event.c 53121--- orig/linux-2.6.36/drivers/scst/iscsi-scst/event.c
53847+++ linux-2.6.35/drivers/scst/iscsi-scst/event.c 53122+++ linux-2.6.36/drivers/scst/iscsi-scst/event.c
53848@@ -0,0 +1,165 @@ 53123@@ -0,0 +1,165 @@
53849+/* 53124+/*
53850+ * Event notification code. 53125+ * Event notification code.
@@ -54011,9 +53286,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/event.c linux-2.6.35/driver
54011+{ 53286+{
54012+ netlink_kernel_release(nl); 53287+ netlink_kernel_release(nl);
54013+} 53288+}
54014diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi.c linux-2.6.35/drivers/scst/iscsi-scst/iscsi.c 53289diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi.c linux-2.6.36/drivers/scst/iscsi-scst/iscsi.c
54015--- orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi.c 53290--- orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi.c
54016+++ linux-2.6.35/drivers/scst/iscsi-scst/iscsi.c 53291+++ linux-2.6.36/drivers/scst/iscsi-scst/iscsi.c
54017@@ -0,0 +1,3956 @@ 53292@@ -0,0 +1,3956 @@
54018+/* 53293+/*
54019+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com> 53294+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com>
@@ -57971,9 +57246,73 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi.c linux-2.6.35/driver
57971+MODULE_VERSION(ISCSI_VERSION_STRING); 57246+MODULE_VERSION(ISCSI_VERSION_STRING);
57972+MODULE_LICENSE("GPL"); 57247+MODULE_LICENSE("GPL");
57973+MODULE_DESCRIPTION("SCST iSCSI Target"); 57248+MODULE_DESCRIPTION("SCST iSCSI Target");
57974diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi.h linux-2.6.35/drivers/scst/iscsi-scst/iscsi.h 57249diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi_dbg.h linux-2.6.36/drivers/scst/iscsi-scst/iscsi_dbg.h
57975--- orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi.h 57250--- orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi_dbg.h
57976+++ linux-2.6.35/drivers/scst/iscsi-scst/iscsi.h 57251+++ linux-2.6.36/drivers/scst/iscsi-scst/iscsi_dbg.h
57252@@ -0,0 +1,60 @@
57253+/*
57254+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin
57255+ * Copyright (C) 2007 - 2010 ID7 Ltd.
57256+ *
57257+ * This program is free software; you can redistribute it and/or
57258+ * modify it under the terms of the GNU General Public License
57259+ * as published by the Free Software Foundation, version 2
57260+ * of the License.
57261+ *
57262+ * This program is distributed in the hope that it will be useful,
57263+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
57264+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
57265+ * GNU General Public License for more details.
57266+ */
57267+
57268+#ifndef ISCSI_DBG_H
57269+#define ISCSI_DBG_H
57270+
57271+#define LOG_PREFIX "iscsi-scst"
57272+
57273+#include <scst/scst_debug.h>
57274+
57275+#define TRACE_D_WRITE 0x80000000
57276+#define TRACE_CONN_OC 0x40000000
57277+#define TRACE_D_IOV 0x20000000
57278+#define TRACE_D_DUMP_PDU 0x10000000
57279+#define TRACE_NET_PG 0x08000000
57280+#define TRACE_CONN_OC_DBG 0x04000000
57281+
57282+#ifdef CONFIG_SCST_DEBUG
57283+#define ISCSI_DEFAULT_LOG_FLAGS (TRACE_FUNCTION | TRACE_LINE | TRACE_PID | \
57284+ TRACE_OUT_OF_MEM | TRACE_MGMT | TRACE_MGMT_DEBUG | \
57285+ TRACE_MINOR | TRACE_SPECIAL | TRACE_CONN_OC)
57286+#else
57287+#define ISCSI_DEFAULT_LOG_FLAGS (TRACE_OUT_OF_MEM | TRACE_MGMT | \
57288+ TRACE_SPECIAL)
57289+#endif
57290+
57291+#ifdef CONFIG_SCST_DEBUG
57292+struct iscsi_pdu;
57293+struct iscsi_cmnd;
57294+extern void iscsi_dump_pdu(struct iscsi_pdu *pdu);
57295+extern unsigned long iscsi_get_flow_ctrl_or_mgmt_dbg_log_flag(
57296+ struct iscsi_cmnd *cmnd);
57297+#else
57298+#define iscsi_dump_pdu(x) do {} while (0)
57299+#define iscsi_get_flow_ctrl_or_mgmt_dbg_log_flag(x) do {} while (0)
57300+#endif
57301+
57302+#if defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_TRACING)
57303+extern unsigned long iscsi_trace_flag;
57304+#define trace_flag iscsi_trace_flag
57305+#endif
57306+
57307+#define TRACE_CONN_CLOSE(args...) TRACE_DBG_FLAG(TRACE_DEBUG|TRACE_CONN_OC, args)
57308+#define TRACE_CONN_CLOSE_DBG(args...) TRACE(TRACE_CONN_OC_DBG, args)
57309+#define TRACE_NET_PAGE(args...) TRACE_DBG_FLAG(TRACE_NET_PG, args)
57310+#define TRACE_WRITE(args...) TRACE_DBG_FLAG(TRACE_DEBUG|TRACE_D_WRITE, args)
57311+
57312+#endif
57313diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi.h linux-2.6.36/drivers/scst/iscsi-scst/iscsi.h
57314--- orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi.h
57315+++ linux-2.6.36/drivers/scst/iscsi-scst/iscsi.h
57977@@ -0,0 +1,743 @@ 57316@@ -0,0 +1,743 @@
57978+/* 57317+/*
57979+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com> 57318+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com>
@@ -58718,73 +58057,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi.h linux-2.6.35/driver
58718+#endif 58057+#endif
58719+ 58058+
58720+#endif /* __ISCSI_H__ */ 58059+#endif /* __ISCSI_H__ */
58721diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi_dbg.h linux-2.6.35/drivers/scst/iscsi-scst/iscsi_dbg.h 58060diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi_hdr.h linux-2.6.36/drivers/scst/iscsi-scst/iscsi_hdr.h
58722--- orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi_dbg.h 58061--- orig/linux-2.6.36/drivers/scst/iscsi-scst/iscsi_hdr.h
58723+++ linux-2.6.35/drivers/scst/iscsi-scst/iscsi_dbg.h 58062+++ linux-2.6.36/drivers/scst/iscsi-scst/iscsi_hdr.h
58724@@ -0,0 +1,60 @@
58725+/*
58726+ * Copyright (C) 2007 - 2010 Vladislav Bolkhovitin
58727+ * Copyright (C) 2007 - 2010 ID7 Ltd.
58728+ *
58729+ * This program is free software; you can redistribute it and/or
58730+ * modify it under the terms of the GNU General Public License
58731+ * as published by the Free Software Foundation, version 2
58732+ * of the License.
58733+ *
58734+ * This program is distributed in the hope that it will be useful,
58735+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
58736+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
58737+ * GNU General Public License for more details.
58738+ */
58739+
58740+#ifndef ISCSI_DBG_H
58741+#define ISCSI_DBG_H
58742+
58743+#define LOG_PREFIX "iscsi-scst"
58744+
58745+#include <scst/scst_debug.h>
58746+
58747+#define TRACE_D_WRITE 0x80000000
58748+#define TRACE_CONN_OC 0x40000000
58749+#define TRACE_D_IOV 0x20000000
58750+#define TRACE_D_DUMP_PDU 0x10000000
58751+#define TRACE_NET_PG 0x08000000
58752+#define TRACE_CONN_OC_DBG 0x04000000
58753+
58754+#ifdef CONFIG_SCST_DEBUG
58755+#define ISCSI_DEFAULT_LOG_FLAGS (TRACE_FUNCTION | TRACE_LINE | TRACE_PID | \
58756+ TRACE_OUT_OF_MEM | TRACE_MGMT | TRACE_MGMT_DEBUG | \
58757+ TRACE_MINOR | TRACE_SPECIAL | TRACE_CONN_OC)
58758+#else
58759+#define ISCSI_DEFAULT_LOG_FLAGS (TRACE_OUT_OF_MEM | TRACE_MGMT | \
58760+ TRACE_SPECIAL)
58761+#endif
58762+
58763+#ifdef CONFIG_SCST_DEBUG
58764+struct iscsi_pdu;
58765+struct iscsi_cmnd;
58766+extern void iscsi_dump_pdu(struct iscsi_pdu *pdu);
58767+extern unsigned long iscsi_get_flow_ctrl_or_mgmt_dbg_log_flag(
58768+ struct iscsi_cmnd *cmnd);
58769+#else
58770+#define iscsi_dump_pdu(x) do {} while (0)
58771+#define iscsi_get_flow_ctrl_or_mgmt_dbg_log_flag(x) do {} while (0)
58772+#endif
58773+
58774+#if defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_TRACING)
58775+extern unsigned long iscsi_trace_flag;
58776+#define trace_flag iscsi_trace_flag
58777+#endif
58778+
58779+#define TRACE_CONN_CLOSE(args...) TRACE_DBG_FLAG(TRACE_DEBUG|TRACE_CONN_OC, args)
58780+#define TRACE_CONN_CLOSE_DBG(args...) TRACE(TRACE_CONN_OC_DBG, args)
58781+#define TRACE_NET_PAGE(args...) TRACE_DBG_FLAG(TRACE_NET_PG, args)
58782+#define TRACE_WRITE(args...) TRACE_DBG_FLAG(TRACE_DEBUG|TRACE_D_WRITE, args)
58783+
58784+#endif
58785diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi_hdr.h linux-2.6.35/drivers/scst/iscsi-scst/iscsi_hdr.h
58786--- orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi_hdr.h
58787+++ linux-2.6.35/drivers/scst/iscsi-scst/iscsi_hdr.h
58788@@ -0,0 +1,525 @@ 58063@@ -0,0 +1,525 @@
58789+/* 58064+/*
58790+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com> 58065+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com>
@@ -59311,9 +58586,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/iscsi_hdr.h linux-2.6.35/dr
59311+#define cmnd_scsicode(cmnd) (cmnd_hdr((cmnd))->scb[0]) 58586+#define cmnd_scsicode(cmnd) (cmnd_hdr((cmnd))->scb[0])
59312+ 58587+
59313+#endif /* __ISCSI_HDR_H__ */ 58588+#endif /* __ISCSI_HDR_H__ */
59314diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/nthread.c linux-2.6.35/drivers/scst/iscsi-scst/nthread.c 58589diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/nthread.c linux-2.6.36/drivers/scst/iscsi-scst/nthread.c
59315--- orig/linux-2.6.35/drivers/scst/iscsi-scst/nthread.c 58590--- orig/linux-2.6.36/drivers/scst/iscsi-scst/nthread.c
59316+++ linux-2.6.35/drivers/scst/iscsi-scst/nthread.c 58591+++ linux-2.6.36/drivers/scst/iscsi-scst/nthread.c
59317@@ -0,0 +1,1838 @@ 58592@@ -0,0 +1,1838 @@
59318+/* 58593+/*
59319+ * Network threads. 58594+ * Network threads.
@@ -61153,9 +60428,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/nthread.c linux-2.6.35/driv
61153+ TRACE_EXIT(); 60428+ TRACE_EXIT();
61154+ return 0; 60429+ return 0;
61155+} 60430+}
61156diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/param.c linux-2.6.35/drivers/scst/iscsi-scst/param.c 60431diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/param.c linux-2.6.36/drivers/scst/iscsi-scst/param.c
61157--- orig/linux-2.6.35/drivers/scst/iscsi-scst/param.c 60432--- orig/linux-2.6.36/drivers/scst/iscsi-scst/param.c
61158+++ linux-2.6.35/drivers/scst/iscsi-scst/param.c 60433+++ linux-2.6.36/drivers/scst/iscsi-scst/param.c
61159@@ -0,0 +1,306 @@ 60434@@ -0,0 +1,306 @@
61160+/* 60435+/*
61161+ * Copyright (C) 2005 FUJITA Tomonori <tomof@acm.org> 60436+ * Copyright (C) 2005 FUJITA Tomonori <tomof@acm.org>
@@ -61463,9 +60738,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/param.c linux-2.6.35/driver
61463+out: 60738+out:
61464+ return err; 60739+ return err;
61465+} 60740+}
61466diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/session.c linux-2.6.35/drivers/scst/iscsi-scst/session.c 60741diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/session.c linux-2.6.36/drivers/scst/iscsi-scst/session.c
61467--- orig/linux-2.6.35/drivers/scst/iscsi-scst/session.c 60742--- orig/linux-2.6.36/drivers/scst/iscsi-scst/session.c
61468+++ linux-2.6.35/drivers/scst/iscsi-scst/session.c 60743+++ linux-2.6.36/drivers/scst/iscsi-scst/session.c
61469@@ -0,0 +1,499 @@ 60744@@ -0,0 +1,499 @@
61470+/* 60745+/*
61471+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com> 60746+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com>
@@ -61966,9 +61241,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/session.c linux-2.6.35/driv
61966+ NULL, 61241+ NULL,
61967+}; 61242+};
61968+ 61243+
61969diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/target.c linux-2.6.35/drivers/scst/iscsi-scst/target.c 61244diff -uprN orig/linux-2.6.36/drivers/scst/iscsi-scst/target.c linux-2.6.36/drivers/scst/iscsi-scst/target.c
61970--- orig/linux-2.6.35/drivers/scst/iscsi-scst/target.c 61245--- orig/linux-2.6.36/drivers/scst/iscsi-scst/target.c
61971+++ linux-2.6.35/drivers/scst/iscsi-scst/target.c 61246+++ linux-2.6.36/drivers/scst/iscsi-scst/target.c
61972@@ -0,0 +1,533 @@ 61247@@ -0,0 +1,533 @@
61973+/* 61248+/*
61974+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com> 61249+ * Copyright (C) 2002 - 2003 Ardis Technolgies <roman@ardistech.com>
@@ -62503,9 +61778,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/iscsi-scst/target.c linux-2.6.35/drive
62503+ return res; 61778+ return res;
62504+} 61779+}
62505+ 61780+
62506diff -uprN orig/linux-2.6.35/Documentation/scst/README.iscsi linux-2.6.35/Documentation/scst/README.iscsi 61781diff -uprN orig/linux-2.6.36/Documentation/scst/README.iscsi linux-2.6.36/Documentation/scst/README.iscsi
62507--- orig/linux-2.6.35/Documentation/scst/README.iscsi 61782--- orig/linux-2.6.36/Documentation/scst/README.iscsi
62508+++ linux-2.6.35/Documentation/scst/README.iscsi 61783+++ linux-2.6.36/Documentation/scst/README.iscsi
62509@@ -0,0 +1,741 @@ 61784@@ -0,0 +1,741 @@
62510+iSCSI SCST target driver 61785+iSCSI SCST target driver
62511+======================== 61786+========================
@@ -63248,9 +62523,9 @@ diff -uprN orig/linux-2.6.35/Documentation/scst/README.iscsi linux-2.6.35/Docume
63248+ 62523+
63249+Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net 62524+Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net
63250+ 62525+
63251diff -uprN orig/linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt.h linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt.h 62526diff -uprN orig/linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt.h linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt.h
63252--- orig/linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt.h 62527--- orig/linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt.h
63253+++ linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt.h 62528+++ linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt.h
63254@@ -0,0 +1,131 @@ 62529@@ -0,0 +1,131 @@
63255+/* 62530+/*
63256+ * qla2x_tgt.h 62531+ * qla2x_tgt.h
@@ -63383,9 +62658,9 @@ diff -uprN orig/linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt.h linux-2.6.35/drive
63383+#endif /* CONFIG_SCSI_QLA2XXX_TARGET */ 62658+#endif /* CONFIG_SCSI_QLA2XXX_TARGET */
63384+ 62659+
63385+#endif /* __QLA2X_TGT_H */ 62660+#endif /* __QLA2X_TGT_H */
63386diff -uprN orig/linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt_def.h linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt_def.h 62661diff -uprN orig/linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt_def.h linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt_def.h
63387--- orig/linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt_def.h 62662--- orig/linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt_def.h
63388+++ linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt_def.h 62663+++ linux-2.6.36/drivers/scsi/qla2xxx/qla2x_tgt_def.h
63389@@ -0,0 +1,729 @@ 62664@@ -0,0 +1,729 @@
63390+/* 62665+/*
63391+ * qla2x_tgt_def.h 62666+ * qla2x_tgt_def.h
@@ -64116,18 +63391,18 @@ diff -uprN orig/linux-2.6.35/drivers/scsi/qla2xxx/qla2x_tgt_def.h linux-2.6.35/d
64116+int qla2x00_wait_for_hba_online(scsi_qla_host_t *ha); 63391+int qla2x00_wait_for_hba_online(scsi_qla_host_t *ha);
64117+ 63392+
64118+#endif /* __QLA2X_TGT_DEF_H */ 63393+#endif /* __QLA2X_TGT_DEF_H */
64119diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/Makefile linux-2.6.35/drivers/scst/qla2xxx-target/Makefile 63394diff -uprN orig/linux-2.6.36/drivers/scst/qla2xxx-target/Makefile linux-2.6.36/drivers/scst/qla2xxx-target/Makefile
64120--- orig/linux-2.6.35/drivers/scst/qla2xxx-target/Makefile 63395--- orig/linux-2.6.36/drivers/scst/qla2xxx-target/Makefile
64121+++ linux-2.6.35/drivers/scst/qla2xxx-target/Makefile 63396+++ linux-2.6.36/drivers/scst/qla2xxx-target/Makefile
64122@@ -0,0 +1,5 @@ 63397@@ -0,0 +1,5 @@
64123+ccflags-y += -Idrivers/scsi/qla2xxx 63398+ccflags-y += -Idrivers/scsi/qla2xxx
64124+ 63399+
64125+qla2x00tgt-y := qla2x00t.o 63400+qla2x00tgt-y := qla2x00t.o
64126+ 63401+
64127+obj-$(CONFIG_SCST_QLA_TGT_ADDON) += qla2x00tgt.o 63402+obj-$(CONFIG_SCST_QLA_TGT_ADDON) += qla2x00tgt.o
64128diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/Kconfig linux-2.6.35/drivers/scst/qla2xxx-target/Kconfig 63403diff -uprN orig/linux-2.6.36/drivers/scst/qla2xxx-target/Kconfig linux-2.6.36/drivers/scst/qla2xxx-target/Kconfig
64129--- orig/linux-2.6.35/drivers/scst/qla2xxx-target/Kconfig 63404--- orig/linux-2.6.36/drivers/scst/qla2xxx-target/Kconfig
64130+++ linux-2.6.35/drivers/scst/qla2xxx-target/Kconfig 63405+++ linux-2.6.36/drivers/scst/qla2xxx-target/Kconfig
64131@@ -0,0 +1,30 @@ 63406@@ -0,0 +1,30 @@
64132+config SCST_QLA_TGT_ADDON 63407+config SCST_QLA_TGT_ADDON
64133+ tristate "QLogic 2XXX Target Mode Add-On" 63408+ tristate "QLogic 2XXX Target Mode Add-On"
@@ -64159,9 +63434,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/Kconfig linux-2.6.35/dr
64159+ performance loss. 63434+ performance loss.
64160+ 63435+
64161+ If unsure, say "N". 63436+ If unsure, say "N".
64162diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.c linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.c 63437diff -uprN orig/linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.c linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.c
64163--- orig/linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.c 63438--- orig/linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.c
64164+++ linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.c 63439+++ linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.c
64165@@ -0,0 +1,5486 @@ 63440@@ -0,0 +1,5486 @@
64166+/* 63441+/*
64167+ * qla2x00t.c 63442+ * qla2x00t.c
@@ -69649,9 +68924,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.c linux-2.6.35
69649+MODULE_DESCRIPTION("Target mode addon for qla2[2,3,4,5+]xx"); 68924+MODULE_DESCRIPTION("Target mode addon for qla2[2,3,4,5+]xx");
69650+MODULE_LICENSE("GPL"); 68925+MODULE_LICENSE("GPL");
69651+MODULE_VERSION(Q2T_VERSION_STRING); 68926+MODULE_VERSION(Q2T_VERSION_STRING);
69652diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.h linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.h 68927diff -uprN orig/linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.h linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.h
69653--- orig/linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.h 68928--- orig/linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.h
69654+++ linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.h 68929+++ linux-2.6.36/drivers/scst/qla2xxx-target/qla2x00t.h
69655@@ -0,0 +1,273 @@ 68930@@ -0,0 +1,273 @@
69656+/* 68931+/*
69657+ * qla2x00t.h 68932+ * qla2x00t.h
@@ -69686,7 +68961,7 @@ diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.h linux-2.6.35
69686+/* Version numbers, the same as for the kernel */ 68961+/* Version numbers, the same as for the kernel */
69687+#define Q2T_VERSION(a, b, c, d) (((a) << 030) + ((b) << 020) + (c) << 010 + (d)) 68962+#define Q2T_VERSION(a, b, c, d) (((a) << 030) + ((b) << 020) + (c) << 010 + (d))
69688+#define Q2T_VERSION_CODE Q2T_VERSION(1, 0, 2, 0) 68963+#define Q2T_VERSION_CODE Q2T_VERSION(1, 0, 2, 0)
69689+#define Q2T_VERSION_STRING "2.0.0-rc3" 68964+#define Q2T_VERSION_STRING "2.0.0"
69690+#define Q2T_PROC_VERSION_NAME "version" 68965+#define Q2T_PROC_VERSION_NAME "version"
69691+ 68966+
69692+#define Q2T_MAX_CDB_LEN 16 68967+#define Q2T_MAX_CDB_LEN 16
@@ -69926,9 +69201,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/qla2xxx-target/qla2x00t.h linux-2.6.35
69926+#define Q2T_XMIT_ALL (Q2T_XMIT_STATUS|Q2T_XMIT_DATA) 69201+#define Q2T_XMIT_ALL (Q2T_XMIT_STATUS|Q2T_XMIT_DATA)
69927+ 69202+
69928+#endif /* __QLA2X00T_H */ 69203+#endif /* __QLA2X00T_H */
69929diff -uprN orig/linux-2.6.35/Documentation/scst/README.qla2x00t linux-2.6.35/Documentation/scst/README.qla2x00t 69204diff -uprN orig/linux-2.6.36/Documentation/scst/README.qla2x00t linux-2.6.36/Documentation/scst/README.qla2x00t
69930--- orig/linux-2.6.35/Documentation/scst/README.qla2x00t 69205--- orig/linux-2.6.36/Documentation/scst/README.qla2x00t
69931+++ linux-2.6.35/Documentation/scst/README.qla2x00t 69206+++ linux-2.6.36/Documentation/scst/README.qla2x00t
69932@@ -0,0 +1,526 @@ 69207@@ -0,0 +1,526 @@
69933+Target driver for Qlogic 22xx/23xx/24xx/25xx Fibre Channel cards 69208+Target driver for Qlogic 22xx/23xx/24xx/25xx Fibre Channel cards
69934+================================================================ 69209+================================================================
@@ -70456,9 +69731,9 @@ diff -uprN orig/linux-2.6.35/Documentation/scst/README.qla2x00t linux-2.6.35/Doc
70456+ * Ming Zhang <mingz@ele.uri.edu> for fixes. 69731+ * Ming Zhang <mingz@ele.uri.edu> for fixes.
70457+ 69732+
70458+Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net 69733+Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net
70459diff -uprN orig/linux-2.6.35/drivers/scst/srpt/Kconfig linux-2.6.35/drivers/scst/srpt/Kconfig 69734diff -uprN orig/linux-2.6.36/drivers/scst/srpt/Kconfig linux-2.6.36/drivers/scst/srpt/Kconfig
70460--- orig/linux-2.6.35/drivers/scst/srpt/Kconfig 69735--- orig/linux-2.6.36/drivers/scst/srpt/Kconfig
70461+++ linux-2.6.35/drivers/scst/srpt/Kconfig 69736+++ linux-2.6.36/drivers/scst/srpt/Kconfig
70462@@ -0,0 +1,12 @@ 69737@@ -0,0 +1,12 @@
70463+config SCST_SRPT 69738+config SCST_SRPT
70464+ tristate "InfiniBand SCSI RDMA Protocol target support" 69739+ tristate "InfiniBand SCSI RDMA Protocol target support"
@@ -70472,14 +69747,14 @@ diff -uprN orig/linux-2.6.35/drivers/scst/srpt/Kconfig linux-2.6.35/drivers/scst
70472+ supported by InfiniBand and by iWarp network hardware. More 69747+ supported by InfiniBand and by iWarp network hardware. More
70473+ information about the SRP protocol can be found on the website 69748+ information about the SRP protocol can be found on the website
70474+ of the INCITS T10 technical committee (http://www.t10.org/). 69749+ of the INCITS T10 technical committee (http://www.t10.org/).
70475diff -uprN orig/linux-2.6.35/drivers/scst/srpt/Makefile linux-2.6.35/drivers/scst/srpt/Makefile 69750diff -uprN orig/linux-2.6.36/drivers/scst/srpt/Makefile linux-2.6.36/drivers/scst/srpt/Makefile
70476--- orig/linux-2.6.35/drivers/scst/srpt/Makefile 69751--- orig/linux-2.6.36/drivers/scst/srpt/Makefile
70477+++ linux-2.6.35/drivers/scst/srpt/Makefile 69752+++ linux-2.6.36/drivers/scst/srpt/Makefile
70478@@ -0,0 +1,1 @@ 69753@@ -0,0 +1,1 @@
70479+obj-$(CONFIG_SCST_SRPT) += ib_srpt.o 69754+obj-$(CONFIG_SCST_SRPT) += ib_srpt.o
70480diff -uprN orig/linux-2.6.35/drivers/scst/srpt/ib_dm_mad.h linux-2.6.35/drivers/scst/srpt/ib_dm_mad.h 69755diff -uprN orig/linux-2.6.36/drivers/scst/srpt/ib_dm_mad.h linux-2.6.36/drivers/scst/srpt/ib_dm_mad.h
70481--- orig/linux-2.6.35/drivers/scst/srpt/ib_dm_mad.h 69756--- orig/linux-2.6.36/drivers/scst/srpt/ib_dm_mad.h
70482+++ linux-2.6.35/drivers/scst/srpt/ib_dm_mad.h 69757+++ linux-2.6.36/drivers/scst/srpt/ib_dm_mad.h
70483@@ -0,0 +1,139 @@ 69758@@ -0,0 +1,139 @@
70484+/* 69759+/*
70485+ * Copyright (c) 2006 - 2009 Mellanox Technology Inc. All rights reserved. 69760+ * Copyright (c) 2006 - 2009 Mellanox Technology Inc. All rights reserved.
@@ -70620,9 +69895,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/srpt/ib_dm_mad.h linux-2.6.35/drivers/
70620+}; 69895+};
70621+ 69896+
70622+#endif 69897+#endif
70623diff -uprN orig/linux-2.6.35/drivers/scst/srpt/ib_srpt.c linux-2.6.35/drivers/scst/srpt/ib_srpt.c 69898diff -uprN orig/linux-2.6.36/drivers/scst/srpt/ib_srpt.c linux-2.6.36/drivers/scst/srpt/ib_srpt.c
70624--- orig/linux-2.6.35/drivers/scst/srpt/ib_srpt.c 69899--- orig/linux-2.6.36/drivers/scst/srpt/ib_srpt.c
70625+++ linux-2.6.35/drivers/scst/srpt/ib_srpt.c 69900+++ linux-2.6.36/drivers/scst/srpt/ib_srpt.c
70626@@ -0,0 +1,3698 @@ 69901@@ -0,0 +1,3698 @@
70627+/* 69902+/*
70628+ * Copyright (c) 2006 - 2009 Mellanox Technology Inc. All rights reserved. 69903+ * Copyright (c) 2006 - 2009 Mellanox Technology Inc. All rights reserved.
@@ -74322,9 +73597,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/srpt/ib_srpt.c linux-2.6.35/drivers/sc
74322+ * indent-tabs-mode: t 73597+ * indent-tabs-mode: t
74323+ * End: 73598+ * End:
74324+ */ 73599+ */
74325diff -uprN orig/linux-2.6.35/drivers/scst/srpt/ib_srpt.h linux-2.6.35/drivers/scst/srpt/ib_srpt.h 73600diff -uprN orig/linux-2.6.36/drivers/scst/srpt/ib_srpt.h linux-2.6.36/drivers/scst/srpt/ib_srpt.h
74326--- orig/linux-2.6.35/drivers/scst/srpt/ib_srpt.h 73601--- orig/linux-2.6.36/drivers/scst/srpt/ib_srpt.h
74327+++ linux-2.6.35/drivers/scst/srpt/ib_srpt.h 73602+++ linux-2.6.36/drivers/scst/srpt/ib_srpt.h
74328@@ -0,0 +1,353 @@ 73603@@ -0,0 +1,353 @@
74329+/* 73604+/*
74330+ * Copyright (c) 2006 - 2009 Mellanox Technology Inc. All rights reserved. 73605+ * Copyright (c) 2006 - 2009 Mellanox Technology Inc. All rights reserved.
@@ -74679,9 +73954,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/srpt/ib_srpt.h linux-2.6.35/drivers/sc
74679+ * indent-tabs-mode: t 73954+ * indent-tabs-mode: t
74680+ * End: 73955+ * End:
74681+ */ 73956+ */
74682diff -uprN orig/linux-2.6.35/Documentation/scst/README.srpt linux-2.6.35/Documentation/scst/README.srpt 73957diff -uprN orig/linux-2.6.36/Documentation/scst/README.srpt linux-2.6.36/Documentation/scst/README.srpt
74683--- orig/linux-2.6.35/Documentation/scst/README.srpt 73958--- orig/linux-2.6.36/Documentation/scst/README.srpt
74684+++ linux-2.6.35/Documentation/scst/README.srpt 73959+++ linux-2.6.36/Documentation/scst/README.srpt
74685@@ -0,0 +1,109 @@ 73960@@ -0,0 +1,109 @@
74686+SCSI RDMA Protocol (SRP) Target driver for Linux 73961+SCSI RDMA Protocol (SRP) Target driver for Linux
74687+================================================= 73962+=================================================
@@ -74792,9 +74067,9 @@ diff -uprN orig/linux-2.6.35/Documentation/scst/README.srpt linux-2.6.35/Documen
74792+ 74067+
74793+Send questions about this driver to scst-devel@lists.sourceforge.net, CC: 74068+Send questions about this driver to scst-devel@lists.sourceforge.net, CC:
74794+Vu Pham <vuhuong@mellanox.com> and Bart Van Assche <bart.vanassche@gmail.com>. 74069+Vu Pham <vuhuong@mellanox.com> and Bart Van Assche <bart.vanassche@gmail.com>.
74795diff -uprN orig/linux-2.6.35/drivers/scst/scst_local/Kconfig linux-2.6.35/drivers/scst/scst_local/Kconfig 74070diff -uprN orig/linux-2.6.36/drivers/scst/scst_local/Kconfig linux-2.6.36/drivers/scst/scst_local/Kconfig
74796--- orig/linux-2.6.35/drivers/scst/scst_local/Kconfig 74071--- orig/linux-2.6.36/drivers/scst/scst_local/Kconfig
74797+++ linux-2.6.35/drivers/scst/scst_local/Kconfig 74072+++ linux-2.6.36/drivers/scst/scst_local/Kconfig
74798@@ -0,0 +1,22 @@ 74073@@ -0,0 +1,22 @@
74799+config SCST_LOCAL 74074+config SCST_LOCAL
74800+ tristate "SCST Local driver" 74075+ tristate "SCST Local driver"
@@ -74818,15 +74093,15 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_local/Kconfig linux-2.6.35/driver
74818+ unsafe. 74093+ unsafe.
74819+ 74094+
74820+ If unsure, say "N". 74095+ If unsure, say "N".
74821diff -uprN orig/linux-2.6.35/drivers/scst/scst_local/Makefile linux-2.6.35/drivers/scst/scst_local/Makefile 74096diff -uprN orig/linux-2.6.36/drivers/scst/scst_local/Makefile linux-2.6.36/drivers/scst/scst_local/Makefile
74822--- orig/linux-2.6.35/drivers/scst/scst_local/Makefile 74097--- orig/linux-2.6.36/drivers/scst/scst_local/Makefile
74823+++ linux-2.6.35/drivers/scst/scst_local/Makefile 74098+++ linux-2.6.36/drivers/scst/scst_local/Makefile
74824@@ -0,0 +1,2 @@ 74099@@ -0,0 +1,2 @@
74825+obj-$(CONFIG_SCST_LOCAL) += scst_local.o 74100+obj-$(CONFIG_SCST_LOCAL) += scst_local.o
74826+ 74101+
74827diff -uprN orig/linux-2.6.35/drivers/scst/scst_local/scst_local.c linux-2.6.35/drivers/scst/scst_local/scst_local.c 74102diff -uprN orig/linux-2.6.36/drivers/scst/scst_local/scst_local.c linux-2.6.36/drivers/scst/scst_local/scst_local.c
74828--- orig/linux-2.6.35/drivers/scst/scst_local/scst_local.c 74103--- orig/linux-2.6.36/drivers/scst/scst_local/scst_local.c
74829+++ linux-2.6.35/drivers/scst/scst_local/scst_local.c 74104+++ linux-2.6.36/drivers/scst/scst_local/scst_local.c
74830@@ -0,0 +1,1563 @@ 74105@@ -0,0 +1,1563 @@
74831+/* 74106+/*
74832+ * Copyright (C) 2008 - 2010 Richard Sharpe 74107+ * Copyright (C) 2008 - 2010 Richard Sharpe
@@ -76391,9 +75666,9 @@ diff -uprN orig/linux-2.6.35/drivers/scst/scst_local/scst_local.c linux-2.6.35/d
76391+device_initcall(scst_local_init); 75666+device_initcall(scst_local_init);
76392+module_exit(scst_local_exit); 75667+module_exit(scst_local_exit);
76393+ 75668+
76394diff -uprN orig/linux-2.6.35/Documentation/scst/README.scst_local linux-2.6.35/Documentation/scst/README.scst_local 75669diff -uprN orig/linux-2.6.36/Documentation/scst/README.scst_local linux-2.6.36/Documentation/scst/README.scst_local
76395--- orig/linux-2.6.35/Documentation/scst/README.scst_local 75670--- orig/linux-2.6.36/Documentation/scst/README.scst_local
76396+++ linux-2.6.35/Documentation/scst/README.scst_local 75671+++ linux-2.6.36/Documentation/scst/README.scst_local
76397@@ -0,0 +1,259 @@ 75672@@ -0,0 +1,259 @@
76398+SCST Local ... 75673+SCST Local ...
76399+Richard Sharpe, 30-Nov-2008 75674+Richard Sharpe, 30-Nov-2008
diff --git a/testing/linux-scst/unionfs-2.5.7_for_2.6.35.8.patch b/testing/linux-scst/unionfs-2.5.7_for_2.6.36.diff
index 52fd9d8aa1..fabe758098 100644
--- a/testing/linux-scst/unionfs-2.5.7_for_2.6.35.8.patch
+++ b/testing/linux-scst/unionfs-2.5.7_for_2.6.36.diff
@@ -532,10 +532,10 @@ index 0000000..1adde69
532+ 532+
533+For more information, see <http://unionfs.filesystems.org/>. 533+For more information, see <http://unionfs.filesystems.org/>.
534diff --git a/MAINTAINERS b/MAINTAINERS 534diff --git a/MAINTAINERS b/MAINTAINERS
535index 02f75fc..8c5efe7 100644 535index f2a2b8e..11d7f45 100644
536--- a/MAINTAINERS 536--- a/MAINTAINERS
537+++ b/MAINTAINERS 537+++ b/MAINTAINERS
538@@ -5766,6 +5766,14 @@ F: Documentation/cdrom/ 538@@ -5917,6 +5917,14 @@ F: Documentation/cdrom/
539 F: drivers/cdrom/cdrom.c 539 F: drivers/cdrom/cdrom.c
540 F: include/linux/cdrom.h 540 F: include/linux/cdrom.h
541 541
@@ -551,7 +551,7 @@ index 02f75fc..8c5efe7 100644
551 M: Artem Bityutskiy <dedekind1@gmail.com> 551 M: Artem Bityutskiy <dedekind1@gmail.com>
552 W: http://www.linux-mtd.infradead.org/ 552 W: http://www.linux-mtd.infradead.org/
553diff --git a/fs/Kconfig b/fs/Kconfig 553diff --git a/fs/Kconfig b/fs/Kconfig
554index 5f85b59..7b4501b 100644 554index 3d18530..65b6aa1 100644
555--- a/fs/Kconfig 555--- a/fs/Kconfig
556+++ b/fs/Kconfig 556+++ b/fs/Kconfig
557@@ -169,6 +169,7 @@ if MISC_FILESYSTEMS 557@@ -169,6 +169,7 @@ if MISC_FILESYSTEMS
@@ -575,10 +575,10 @@ index e6ec1d3..787332e 100644
575 obj-$(CONFIG_NFS_FS) += nfs/ 575 obj-$(CONFIG_NFS_FS) += nfs/
576 obj-$(CONFIG_EXPORTFS) += exportfs/ 576 obj-$(CONFIG_EXPORTFS) += exportfs/
577diff --git a/fs/namei.c b/fs/namei.c 577diff --git a/fs/namei.c b/fs/namei.c
578index 868d0cb..b5e09e1 100644 578index 24896e8..db22420 100644
579--- a/fs/namei.c 579--- a/fs/namei.c
580+++ b/fs/namei.c 580+++ b/fs/namei.c
581@@ -386,6 +386,7 @@ void release_open_intent(struct nameidata *nd) 581@@ -385,6 +385,7 @@ void release_open_intent(struct nameidata *nd)
582 else 582 else
583 fput(nd->intent.open.file); 583 fput(nd->intent.open.file);
584 } 584 }
@@ -587,10 +587,10 @@ index 868d0cb..b5e09e1 100644
587 static inline struct dentry * 587 static inline struct dentry *
588 do_revalidate(struct dentry *dentry, struct nameidata *nd) 588 do_revalidate(struct dentry *dentry, struct nameidata *nd)
589diff --git a/fs/splice.c b/fs/splice.c 589diff --git a/fs/splice.c b/fs/splice.c
590index efdbfec..1ff6bca 100644 590index 8f1dfae..7a57fab 100644
591--- a/fs/splice.c 591--- a/fs/splice.c
592+++ b/fs/splice.c 592+++ b/fs/splice.c
593@@ -1104,8 +1104,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); 593@@ -1092,8 +1092,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
594 /* 594 /*
595 * Attempt to initiate a splice from pipe to file. 595 * Attempt to initiate a splice from pipe to file.
596 */ 596 */
@@ -601,7 +601,7 @@ index efdbfec..1ff6bca 100644
601 { 601 {
602 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, 602 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
603 loff_t *, size_t, unsigned int); 603 loff_t *, size_t, unsigned int);
604@@ -1128,13 +1128,14 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, 604@@ -1116,13 +1116,14 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
605 605
606 return splice_write(pipe, out, ppos, len, flags); 606 return splice_write(pipe, out, ppos, len, flags);
607 } 607 }
@@ -619,7 +619,7 @@ index efdbfec..1ff6bca 100644
619 { 619 {
620 ssize_t (*splice_read)(struct file *, loff_t *, 620 ssize_t (*splice_read)(struct file *, loff_t *,
621 struct pipe_inode_info *, size_t, unsigned int); 621 struct pipe_inode_info *, size_t, unsigned int);
622@@ -1154,6 +1155,7 @@ static long do_splice_to(struct file *in, loff_t *ppos, 622@@ -1142,6 +1143,7 @@ static long do_splice_to(struct file *in, loff_t *ppos,
623 623
624 return splice_read(in, ppos, pipe, len, flags); 624 return splice_read(in, ppos, pipe, len, flags);
625 } 625 }
@@ -627,7 +627,7 @@ index efdbfec..1ff6bca 100644
627 627
628 /** 628 /**
629 * splice_direct_to_actor - splices data directly between two non-pipes 629 * splice_direct_to_actor - splices data directly between two non-pipes
630@@ -1223,7 +1225,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, 630@@ -1211,7 +1213,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
631 size_t read_len; 631 size_t read_len;
632 loff_t pos = sd->pos, prev_pos = pos; 632 loff_t pos = sd->pos, prev_pos = pos;
633 633
@@ -636,7 +636,7 @@ index efdbfec..1ff6bca 100644
636 if (unlikely(ret <= 0)) 636 if (unlikely(ret <= 0))
637 goto out_release; 637 goto out_release;
638 638
639@@ -1282,8 +1284,8 @@ static int direct_splice_actor(struct pipe_inode_info *pipe, 639@@ -1270,8 +1272,8 @@ static int direct_splice_actor(struct pipe_inode_info *pipe,
640 { 640 {
641 struct file *file = sd->u.file; 641 struct file *file = sd->u.file;
642 642
@@ -647,7 +647,7 @@ index efdbfec..1ff6bca 100644
647 } 647 }
648 648
649 /** 649 /**
650@@ -1380,7 +1382,7 @@ static long do_splice(struct file *in, loff_t __user *off_in, 650@@ -1368,7 +1370,7 @@ static long do_splice(struct file *in, loff_t __user *off_in,
651 } else 651 } else
652 off = &out->f_pos; 652 off = &out->f_pos;
653 653
@@ -656,7 +656,7 @@ index efdbfec..1ff6bca 100644
656 656
657 if (off_out && copy_to_user(off_out, off, sizeof(loff_t))) 657 if (off_out && copy_to_user(off_out, off, sizeof(loff_t)))
658 ret = -EFAULT; 658 ret = -EFAULT;
659@@ -1400,7 +1402,7 @@ static long do_splice(struct file *in, loff_t __user *off_in, 659@@ -1388,7 +1390,7 @@ static long do_splice(struct file *in, loff_t __user *off_in,
660 } else 660 } else
661 off = &in->f_pos; 661 off = &in->f_pos;
662 662
@@ -723,11 +723,11 @@ index 0000000..f3c1ac4
723+ If you say Y here, you can turn on debugging output from Unionfs. 723+ If you say Y here, you can turn on debugging output from Unionfs.
724diff --git a/fs/unionfs/Makefile b/fs/unionfs/Makefile 724diff --git a/fs/unionfs/Makefile b/fs/unionfs/Makefile
725new file mode 100644 725new file mode 100644
726index 0000000..d34e085 726index 0000000..86c32ba
727--- /dev/null 727--- /dev/null
728+++ b/fs/unionfs/Makefile 728+++ b/fs/unionfs/Makefile
729@@ -0,0 +1,17 @@ 729@@ -0,0 +1,17 @@
730+UNIONFS_VERSION="2.5.7 (for 2.6.35.8)" 730+UNIONFS_VERSION="2.5.7 (for 2.6.36)"
731+ 731+
732+EXTRA_CFLAGS += -DUNIONFS_VERSION=\"$(UNIONFS_VERSION)\" 732+EXTRA_CFLAGS += -DUNIONFS_VERSION=\"$(UNIONFS_VERSION)\"
733+ 733+
@@ -746,7 +746,7 @@ index 0000000..d34e085
746+endif 746+endif
747diff --git a/fs/unionfs/commonfops.c b/fs/unionfs/commonfops.c 747diff --git a/fs/unionfs/commonfops.c b/fs/unionfs/commonfops.c
748new file mode 100644 748new file mode 100644
749index 0000000..740c4ad 749index 0000000..51ea65e
750--- /dev/null 750--- /dev/null
751+++ b/fs/unionfs/commonfops.c 751+++ b/fs/unionfs/commonfops.c
752@@ -0,0 +1,896 @@ 752@@ -0,0 +1,896 @@
@@ -1491,12 +1491,12 @@ index 0000000..740c4ad
1491+ goto out; 1491+ goto out;
1492+ if (lower_file->f_op->unlocked_ioctl) { 1492+ if (lower_file->f_op->unlocked_ioctl) {
1493+ err = lower_file->f_op->unlocked_ioctl(lower_file, cmd, arg); 1493+ err = lower_file->f_op->unlocked_ioctl(lower_file, cmd, arg);
1494+#ifdef CONFIG_COMPAT
1494+ } else if (lower_file->f_op->ioctl) { 1495+ } else if (lower_file->f_op->ioctl) {
1495+ lock_kernel(); 1496+ err = lower_file->f_op->compat_ioctl(
1496+ err = lower_file->f_op->ioctl(
1497+ lower_file->f_path.dentry->d_inode, 1497+ lower_file->f_path.dentry->d_inode,
1498+ lower_file, cmd, arg); 1498+ lower_file, cmd, arg);
1499+ unlock_kernel(); 1499+#endif
1500+ } 1500+ }
1501+ 1501+
1502+out: 1502+out:
@@ -4376,10 +4376,10 @@ index 0000000..5b77eac
4376+#endif /* not _FANOUT_H */ 4376+#endif /* not _FANOUT_H */
4377diff --git a/fs/unionfs/file.c b/fs/unionfs/file.c 4377diff --git a/fs/unionfs/file.c b/fs/unionfs/file.c
4378new file mode 100644 4378new file mode 100644
4379index 0000000..5a8f4e0 4379index 0000000..1c694c3
4380--- /dev/null 4380--- /dev/null
4381+++ b/fs/unionfs/file.c 4381+++ b/fs/unionfs/file.c
4382@@ -0,0 +1,379 @@ 4382@@ -0,0 +1,382 @@
4383+/* 4383+/*
4384+ * Copyright (c) 2003-2010 Erez Zadok 4384+ * Copyright (c) 2003-2010 Erez Zadok
4385+ * Copyright (c) 2003-2006 Charles P. Wright 4385+ * Copyright (c) 2003-2006 Charles P. Wright
@@ -4750,6 +4750,9 @@ index 0000000..5a8f4e0
4750+ .write = unionfs_write, 4750+ .write = unionfs_write,
4751+ .readdir = unionfs_file_readdir, 4751+ .readdir = unionfs_file_readdir,
4752+ .unlocked_ioctl = unionfs_ioctl, 4752+ .unlocked_ioctl = unionfs_ioctl,
4753+#ifdef CONFIG_COMPAT
4754+ .compat_ioctl = unionfs_ioctl,
4755+#endif
4753+ .mmap = unionfs_mmap, 4756+ .mmap = unionfs_mmap,
4754+ .open = unionfs_open, 4757+ .open = unionfs_open,
4755+ .flush = unionfs_flush, 4758+ .flush = unionfs_flush,
@@ -8381,10 +8384,10 @@ index 0000000..570a344
8381+} 8384+}
8382diff --git a/fs/unionfs/super.c b/fs/unionfs/super.c 8385diff --git a/fs/unionfs/super.c b/fs/unionfs/super.c
8383new file mode 100644 8386new file mode 100644
8384index 0000000..a8f5571 8387index 0000000..45bb9bf
8385--- /dev/null 8388--- /dev/null
8386+++ b/fs/unionfs/super.c 8389+++ b/fs/unionfs/super.c
8387@@ -0,0 +1,1048 @@ 8390@@ -0,0 +1,1029 @@
8388+/* 8391+/*
8389+ * Copyright (c) 2003-2010 Erez Zadok 8392+ * Copyright (c) 2003-2010 Erez Zadok
8390+ * Copyright (c) 2003-2006 Charles P. Wright 8393+ * Copyright (c) 2003-2006 Charles P. Wright
@@ -8461,31 +8464,6 @@ index 0000000..a8f5571
8461+} 8464+}
8462+ 8465+
8463+/* 8466+/*
8464+ * we now define delete_inode, because there are two VFS paths that may
8465+ * destroy an inode: one of them calls clear inode before doing everything
8466+ * else that's needed, and the other is fine. This way we truncate the inode
8467+ * size (and its pages) and then clear our own inode, which will do an iput
8468+ * on our and the lower inode.
8469+ *
8470+ * No need to lock sb info's rwsem.
8471+ */
8472+static void unionfs_delete_inode(struct inode *inode)
8473+{
8474+#if BITS_PER_LONG == 32 && defined(CONFIG_SMP)
8475+ spin_lock(&inode->i_lock);
8476+#endif
8477+ i_size_write(inode, 0); /* every f/s seems to do that */
8478+#if BITS_PER_LONG == 32 && defined(CONFIG_SMP)
8479+ spin_unlock(&inode->i_lock);
8480+#endif
8481+
8482+ if (inode->i_data.nrpages)
8483+ truncate_inode_pages(&inode->i_data, 0);
8484+
8485+ clear_inode(inode);
8486+}
8487+
8488+/*
8489+ * final actions when unmounting a file system 8467+ * final actions when unmounting a file system
8490+ * 8468+ *
8491+ * No need to lock rwsem. 8469+ * No need to lock rwsem.
@@ -8538,6 +8516,7 @@ index 0000000..a8f5571
8538+ struct super_block *sb; 8516+ struct super_block *sb;
8539+ struct dentry *lower_dentry; 8517+ struct dentry *lower_dentry;
8540+ struct dentry *parent; 8518+ struct dentry *parent;
8519+ struct path lower_path;
8541+ bool valid; 8520+ bool valid;
8542+ 8521+
8543+ sb = dentry->d_sb; 8522+ sb = dentry->d_sb;
@@ -8554,7 +8533,10 @@ index 0000000..a8f5571
8554+ unionfs_check_dentry(dentry); 8533+ unionfs_check_dentry(dentry);
8555+ 8534+
8556+ lower_dentry = unionfs_lower_dentry(sb->s_root); 8535+ lower_dentry = unionfs_lower_dentry(sb->s_root);
8557+ err = vfs_statfs(lower_dentry, buf); 8536+ lower_path.dentry = lower_dentry;
8537+ lower_path.mnt = unionfs_mntget(sb->s_root, 0);
8538+ err = vfs_statfs(&lower_path, buf);
8539+ mntput(lower_path.mnt);
8558+ 8540+
8559+ /* set return buf to our f/s to avoid confusing user-level utils */ 8541+ /* set return buf to our f/s to avoid confusing user-level utils */
8560+ buf->f_type = UNIONFS_SUPER_MAGIC; 8542+ buf->f_type = UNIONFS_SUPER_MAGIC;
@@ -9235,13 +9217,16 @@ index 0000000..a8f5571
9235+ * 9217+ *
9236+ * No need to lock sb info's rwsem. 9218+ * No need to lock sb info's rwsem.
9237+ */ 9219+ */
9238+static void unionfs_clear_inode(struct inode *inode) 9220+static void unionfs_evict_inode(struct inode *inode)
9239+{ 9221+{
9240+ int bindex, bstart, bend; 9222+ int bindex, bstart, bend;
9241+ struct inode *lower_inode; 9223+ struct inode *lower_inode;
9242+ struct list_head *pos, *n; 9224+ struct list_head *pos, *n;
9243+ struct unionfs_dir_state *rdstate; 9225+ struct unionfs_dir_state *rdstate;
9244+ 9226+
9227+ truncate_inode_pages(&inode->i_data, 0);
9228+ end_writeback(inode);
9229+
9245+ list_for_each_safe(pos, n, &UNIONFS_I(inode)->readdircache) { 9230+ list_for_each_safe(pos, n, &UNIONFS_I(inode)->readdircache) {
9246+ rdstate = list_entry(pos, struct unionfs_dir_state, cache); 9231+ rdstate = list_entry(pos, struct unionfs_dir_state, cache);
9247+ list_del(&rdstate->cache); 9232+ list_del(&rdstate->cache);
@@ -9422,11 +9407,10 @@ index 0000000..a8f5571
9422+} 9407+}
9423+ 9408+
9424+struct super_operations unionfs_sops = { 9409+struct super_operations unionfs_sops = {
9425+ .delete_inode = unionfs_delete_inode,
9426+ .put_super = unionfs_put_super, 9410+ .put_super = unionfs_put_super,
9427+ .statfs = unionfs_statfs, 9411+ .statfs = unionfs_statfs,
9428+ .remount_fs = unionfs_remount_fs, 9412+ .remount_fs = unionfs_remount_fs,
9429+ .clear_inode = unionfs_clear_inode, 9413+ .evict_inode = unionfs_evict_inode,
9430+ .umount_begin = unionfs_umount_begin, 9414+ .umount_begin = unionfs_umount_begin,
9431+ .show_options = unionfs_show_options, 9415+ .show_options = unionfs_show_options,
9432+ .write_inode = unionfs_write_inode, 9416+ .write_inode = unionfs_write_inode,
@@ -11256,10 +11240,10 @@ index 0000000..c84d97e
11256+#endif /* _LINUX_UNIONFS_H */ 11240+#endif /* _LINUX_UNIONFS_H */
11257+ 11241+
11258diff --git a/security/security.c b/security/security.c 11242diff --git a/security/security.c b/security/security.c
11259index 351942a..69505f7 100644 11243index c53949f..eb71394 100644
11260--- a/security/security.c 11244--- a/security/security.c
11261+++ b/security/security.c 11245+++ b/security/security.c
11262@@ -529,6 +529,7 @@ int security_inode_permission(struct inode *inode, int mask) 11246@@ -528,6 +528,7 @@ int security_inode_permission(struct inode *inode, int mask)
11263 return 0; 11247 return 0;
11264 return security_ops->inode_permission(inode, mask); 11248 return security_ops->inode_permission(inode, mask);
11265 } 11249 }
diff --git a/testing/scstadmin/APKBUILD b/testing/scstadmin/APKBUILD
index 85350e0675..6f07cce35c 100644
--- a/testing/scstadmin/APKBUILD
+++ b/testing/scstadmin/APKBUILD
@@ -2,7 +2,7 @@
2# Maintainer: 2# Maintainer:
3pkgname=scstadmin 3pkgname=scstadmin
4pkgver=2.0.0 4pkgver=2.0.0
5pkgrel=0 5pkgrel=1
6pkgdesc="SCST administration tool written in perl" 6pkgdesc="SCST administration tool written in perl"
7url="http://scst.sourceforge.net" 7url="http://scst.sourceforge.net"
8arch="x86_64" 8arch="x86_64"
@@ -12,12 +12,11 @@ makedepends="perl-dev"
12install= 12install=
13subpackages="$pkgname-doc" 13subpackages="$pkgname-doc"
14# increase pkgrel when updating svn rev 14# increase pkgrel when updating svn rev
15_svn="3161" 15source="http://downloads.sourceforge.net/scst/$pkgname-$pkgver.tar.gz
16source="http://alpine.nethq.org/distfiles/$pkgname-$pkgver-svn-$_svn.tar.gz
17 scst-init-ash-comapt.patch 16 scst-init-ash-comapt.patch
18 " 17 "
19 18
20_builddir="$srcdir"/$pkgname 19_builddir="$srcdir/$pkgname-$pkgver"
21 20
22prepare() { 21prepare() {
23 cd "$_builddir"/scstadmin.sysfs/scst-0.9.00 22 cd "$_builddir"/scstadmin.sysfs/scst-0.9.00
@@ -35,5 +34,5 @@ package() {
35 install -Dm755 init.d/scst.gentoo "$pkgdir"/etc/init.d/scstadmin || return 1 34 install -Dm755 init.d/scst.gentoo "$pkgdir"/etc/init.d/scstadmin || return 1
36} 35}
37 36
38md5sums="8f60857b6545dd60d7d26342aba038f1 scstadmin-2.0.0-svn-3161.tar.gz 37md5sums="ae94761148cc4eaade2973ba84387825 scstadmin-2.0.0.tar.gz
39061580b8ec84b5f7da0b1332601f505a scst-init-ash-comapt.patch" 38061580b8ec84b5f7da0b1332601f505a scst-init-ash-comapt.patch"