From 5c1e4273842225ca72173d4165f905a8469460e9eda2bd3ef87ce6f6e1df3196 Mon Sep 17 00:00:00 2001 From: Bruce Rogers Date: Thu, 8 Jun 2017 20:03:44 +0000 Subject: [PATCH] Accepting request 501556 from home:lyan:branches:Virtualization Backport ipxe to support FirstBurstLength OBS-URL: https://build.opensuse.org/request/show/501556 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=344 --- ...ways-send-FirstBurstLength-parameter.patch | 79 +++++++++++++++++++ qemu-testsuite.changes | 6 ++ qemu-testsuite.spec | 2 + qemu.changes | 6 ++ qemu.spec | 2 + 5 files changed, 95 insertions(+) create mode 100644 ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch diff --git a/ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch b/ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch new file mode 100644 index 00000000..4f714609 --- /dev/null +++ b/ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch @@ -0,0 +1,79 @@ +From 08a98a925917dc2445d098c3ce9a2d2d8b8acda4 Mon Sep 17 00:00:00 2001 +From: Michael Brown +Date: Wed, 3 May 2017 13:01:11 +0100 +Subject: [PATCH 2/2] [iscsi] Always send FirstBurstLength parameter + +As of kernel 4.11, the LIO target will propose a value for +FirstBurstLength if the initiator did not do so. This is entirely +redundant in our case, since FirstBurstLength is defined by RFC 3720 +to be + + "Irrelevant when: ( InitialR2T=Yes and ImmediateData=No )" + +and we already enforce both InitialR2T=Yes and ImmediateData=No in our +initial proposal. However, LIO (arguably correctly) complains when we +do not respond to its redundant proposal of an already-irrelevant +value. + +Fix by always proposing the default value for FirstBurstLength. + +Debugged-by: Patrick Seeburger +Tested-by: Patrick Seeburger +Signed-off-by: Michael Brown +[BR: BSC#1040476] +Signed-off-by: Liang Yan +--- + src/net/tcp/iscsi.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/net/tcp/iscsi.c b/src/net/tcp/iscsi.c +index 6da8570c..aa30efda 100644 +--- a/src/net/tcp/iscsi.c ++++ b/src/net/tcp/iscsi.c +@@ -434,12 +434,12 @@ static int iscsi_tx_data_out ( struct iscsi_session *iscsi ) { + * + * HeaderDigest=None + * DataDigest=None +- * MaxConnections is irrelevant; we make only one connection anyway [4] ++ * MaxConnections=1 (irrelevant; we make only one connection anyway) [4] + * InitialR2T=Yes [1] +- * ImmediateData is irrelevant; we never send immediate data [4] ++ * ImmediateData=No (irrelevant; we never send immediate data) [4] + * MaxRecvDataSegmentLength=8192 (default; we don't care) [3] + * MaxBurstLength=262144 (default; we don't care) [3] +- * FirstBurstLength=262144 (default; we don't care) ++ * FirstBurstLength=65536 (irrelevant due to other settings) [5] + * DefaultTime2Wait=0 [2] + * DefaultTime2Retain=0 [2] + * MaxOutstandingR2T=1 +@@ -464,6 +464,11 @@ static int iscsi_tx_data_out ( struct iscsi_session *iscsi ) { + * these parameters, but some targets (notably a QNAP TS-639Pro) fail + * unless they are supplied, so we explicitly specify the default + * values. ++ * ++ * [5] FirstBurstLength is defined to be irrelevant since we already ++ * force InitialR2T=Yes and ImmediateData=No, but some targets ++ * (notably LIO as of kernel 4.11) fail unless it is specified, so we ++ * explicitly specify the default value. + */ + static int iscsi_build_login_request_strings ( struct iscsi_session *iscsi, + void *data, size_t len ) { +@@ -526,13 +531,14 @@ static int iscsi_build_login_request_strings ( struct iscsi_session *iscsi, + "ImmediateData=No%c" + "MaxRecvDataSegmentLength=8192%c" + "MaxBurstLength=262144%c" ++ "FirstBurstLength=65536%c" + "DefaultTime2Wait=0%c" + "DefaultTime2Retain=0%c" + "MaxOutstandingR2T=1%c" + "DataPDUInOrder=Yes%c" + "DataSequenceInOrder=Yes%c" + "ErrorRecoveryLevel=0%c", +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ); ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ); + } + + return used; +-- +2.13.0 + diff --git a/qemu-testsuite.changes b/qemu-testsuite.changes index a93fd3e7..01b0bd4d 100644 --- a/qemu-testsuite.changes +++ b/qemu-testsuite.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Jun 6 21:21:53 UTC 2017 - lyan@suse.com + +- Backport ipxe to support FirstBurstLength (bsc#1040476) + ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch + ------------------------------------------------------------------- Mon May 22 23:52:12 UTC 2017 - brogers@suse.com diff --git a/qemu-testsuite.spec b/qemu-testsuite.spec index 8de664da..fefd71cd 100644 --- a/qemu-testsuite.spec +++ b/qemu-testsuite.spec @@ -199,6 +199,7 @@ Patch0059: 0059-Hacks-for-building-on-gcc-7-Fedora-.patch Patch1100: ipxe-stable-buildid.patch Patch1101: ipxe-use-gcc6-for-more-compact-code.patch Patch1102: ipxe-build-Avoid-implicit-fallthrough-warnings-on-GCC-7.patch +Patch1103: ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch # sgabios # PATCH-FIX-OPENSUSE sgabios-stable-buildid.patch brogers@suse.com -- reproducible builds @@ -899,6 +900,7 @@ pushd roms/ipxe %patch1100 -p1 %patch1101 -p1 %patch1102 -p1 +%patch1103 -p1 popd pushd roms/sgabios diff --git a/qemu.changes b/qemu.changes index a93fd3e7..01b0bd4d 100644 --- a/qemu.changes +++ b/qemu.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Jun 6 21:21:53 UTC 2017 - lyan@suse.com + +- Backport ipxe to support FirstBurstLength (bsc#1040476) + ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch + ------------------------------------------------------------------- Mon May 22 23:52:12 UTC 2017 - brogers@suse.com diff --git a/qemu.spec b/qemu.spec index e4d938b0..d870f37d 100644 --- a/qemu.spec +++ b/qemu.spec @@ -199,6 +199,7 @@ Patch0059: 0059-Hacks-for-building-on-gcc-7-Fedora-.patch Patch1100: ipxe-stable-buildid.patch Patch1101: ipxe-use-gcc6-for-more-compact-code.patch Patch1102: ipxe-build-Avoid-implicit-fallthrough-warnings-on-GCC-7.patch +Patch1103: ipxe-iscsi-Always-send-FirstBurstLength-parameter.patch # sgabios # PATCH-FIX-OPENSUSE sgabios-stable-buildid.patch brogers@suse.com -- reproducible builds @@ -899,6 +900,7 @@ pushd roms/ipxe %patch1100 -p1 %patch1101 -p1 %patch1102 -p1 +%patch1103 -p1 popd pushd roms/sgabios