Skip to contentSkip to conversation

selftests: netconsole: enable the targets created by the torture test

PATCH In review Breno Leitao 2 participants 4 messages Nov 10 – Nov 11

Subsystems (4)
lore
Share & tools
lore

Breno Leitao

author maintainer
#0 lore raw

PATCH 1/1 selftests: netconsole: enable the targets created by the torture test

create_and_delete_random_target() is meant to create, enable and remove targets while messages are sent, but it only creates and removes them. The helper it calls, _create_dynamic_target(), stopped enabling the target when the bonding test moved that step into create_dynamic_target().

Enable the targets again, so they come up while messages flow and are disabled before being removed. Like toggle_netcons_target(), ignore a failed enable, which would otherwise end the function and leave the targets behind. With a console per target, this also registers and unregisters their consoles under load.

Fixes 236682db3b6f ("selftest: netcons: add test for netconsole over bonded interfaces")
---
 tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh | 1 +
 1 file changed, 1 insertion(+)
tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh +1 -0
index 33a44adb6f8f3a..3dfab0bf1b0756 100755
@@ -46,6 +46,7 @@ create_and_delete_random_target() {
 
 		# Basic population so the target can come up
 		_create_dynamic_target "${FORMAT}" "${RND_TARGET_PATH}"
+		echo 1 > "${RND_TARGET_PATH}"/enabled 2> /dev/null || true
 	done
 
 	echo "netconsole selftest: ${COUNT} additional targets were created" > /dev/kmsg

---
base-commit: b3dfbde62cf1981c4638939c159dfd087b7a72e9
change-id: 20261110-netcons_selftest_fix-4cbf633295ef

Best regards,

Signature · 1 line
Breno Leitao <[email protected]>
#1 lore raw

Hi Breno,

Quoted 35 lines · Breno Leitao

create_and_delete_random_target() is meant to create, enable and remove targets while messages are sent, but it only creates and removes them. The helper it calls, _create_dynamic_target(), stopped enabling the target when the bonding test moved that step into create_dynamic_target().

Enable the targets again, so they come up while messages flow and are disabled before being removed. Like toggle_netcons_target(), ignore a failed enable, which would otherwise end the function and leave the targets behind. With a console per target, this also registers and unregisters their consoles under load.

Fixes 236682db3b6f ("selftest: netcons: add test for netconsole over bonded interfaces")
---
 tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh | 1 +
 1 file changed, 1 insertion(+)
tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh +1 -1
index 33a44adb6f8f3a..3dfab0bf1b0756 100755
@@ -46,6 +46,7 @@ create_and_delete_random_target() {
 
 		# Basic population so the target can come up
 		_create_dynamic_target "${FORMAT}" "${RND_TARGET_PATH}"
+		echo 1 > "${RND_TARGET_PATH}"/enabled 2> /dev/null || true
 	done
 
 	echo "netconsole selftest: ${COUNT} additional targets were created" > /dev/kmsg
 
---

base-commit: b3dfbde62cf1981c4638939c159dfd087b7a72e9
change-id: 20261110-netcons_selftest_fix-4cbf633295ef

Quoted 4 lines

Best regards,

Signature · 1 line
Breno Leitao <[email protected]>

Ignore the failed enable makes sense to me, as we enabled set -e and use random target. Do we need sleep 1s like create_dynamic_target() to make sure the configuration loaded?

Thanks
Hangbin

author maintainer
#2 lore raw

Hello Hangbin,

Quoted 36 lines · Hangbin Liu
Quoted 35 lines · Breno Leitao

create_and_delete_random_target() is meant to create, enable and remove targets while messages are sent, but it only creates and removes them. The helper it calls, _create_dynamic_target(), stopped enabling the target when the bonding test moved that step into create_dynamic_target().

Enable the targets again, so they come up while messages flow and are disabled before being removed. Like toggle_netcons_target(), ignore a failed enable, which would otherwise end the function and leave the targets behind. With a console per target, this also registers and unregisters their consoles under load.

Fixes 236682db3b6f ("selftest: netcons: add test for netconsole over bonded interfaces")
---
 tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh | 1 +
 1 file changed, 1 insertion(+)
tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh +1 -1
index 33a44adb6f8f3a..3dfab0bf1b0756 100755
@@ -46,6 +46,7 @@ create_and_delete_random_target() {
 
 		# Basic population so the target can come up
 		_create_dynamic_target "${FORMAT}" "${RND_TARGET_PATH}"
+		echo 1 > "${RND_TARGET_PATH}"/enabled 2> /dev/null || true
 	done
 
 	echo "netconsole selftest: ${COUNT} additional targets were created" > /dev/kmsg
 
---

base-commit: b3dfbde62cf1981c4638939c159dfd087b7a72e9
change-id: 20261110-netcons_selftest_fix-4cbf633295ef

Quoted 7 lines
Quoted 4 lines

Best regards,

Signature · 1 line
Breno Leitao <[email protected]>

Ignore the failed enable makes sense to me, as we enabled set -e and use random target.

ack!

Quoted 2 lines

Do we need sleep 1s like create_dynamic_target() to make sure the configuration loaded?

I don't think we need it. The write to enabled is synchronous:
enabled_store() sets up netpoll and moves the target to STATE_ENABLED before it returns. If the setup fails, enabled reads back 0, and the disable loop checks enabled before writing 0 to it.

The other reason for that sleep, keeping the console messages in order, does not apply either, since the torture test does not read back any message.

Thanks for the review,
--breno

Reviewed-by
#3 lore raw
Quoted 52 lines · Breno Leitao

Hello Hangbin,

Quoted 36 lines · Hangbin Liu
Quoted 35 lines · Breno Leitao

create_and_delete_random_target() is meant to create, enable and remove targets while messages are sent, but it only creates and removes them. The helper it calls, _create_dynamic_target(), stopped enabling the target when the bonding test moved that step into create_dynamic_target().

Enable the targets again, so they come up while messages flow and are disabled before being removed. Like toggle_netcons_target(), ignore a failed enable, which would otherwise end the function and leave the targets behind. With a console per target, this also registers and unregisters their consoles under load.

Fixes 236682db3b6f ("selftest: netcons: add test for netconsole over bonded interfaces")
---
 tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh | 1 +
 1 file changed, 1 insertion(+)
tools/testing/selftests/drivers/net/netconsole/netcons_torture.sh +1 -1
index 33a44adb6f8f3a..3dfab0bf1b0756 100755
@@ -46,6 +46,7 @@ create_and_delete_random_target() {
 
 		# Basic population so the target can come up
 		_create_dynamic_target "${FORMAT}" "${RND_TARGET_PATH}"
+		echo 1 > "${RND_TARGET_PATH}"/enabled 2> /dev/null || true
 	done
 
 	echo "netconsole selftest: ${COUNT} additional targets were created" > /dev/kmsg
 
---

base-commit: b3dfbde62cf1981c4638939c159dfd087b7a72e9
change-id: 20261110-netcons_selftest_fix-4cbf633295ef

Quoted 7 lines
Quoted 4 lines

Best regards,

Signature · 1 line
Breno Leitao <[email protected]>

Ignore the failed enable makes sense to me, as we enabled set -e and use random target.

ack!

Quoted 2 lines

Do we need sleep 1s like create_dynamic_target() to make sure the configuration loaded?

Quoted 8 lines

I don't think we need it. The write to enabled is synchronous:
enabled_store() sets up netpoll and moves the target to STATE_ENABLED before it returns. If the setup fails, enabled reads back 0, and the disable loop checks enabled before writing 0 to it.

The other reason for that sleep, keeping the console messages in order, does not apply either, since the torture test does not read back any message.

Thanks for the explain.