diff mbox series

[blktests,V3] tests/srp: fix module loading issue during srp tests

Message ID 20211024124258.26887-1-yi.zhang@redhat.com (mailing list archive)
State New, archived
Headers show
Series [blktests,V3] tests/srp: fix module loading issue during srp tests | expand

Commit Message

Yi Zhang Oct. 24, 2021, 12:42 p.m. UTC
The ib_isert/ib_srpt modules will be automatically loaded after the first
 time rdma_rxe/siw setup, which will lead srp tests fail.

$ modprobe rdma_rxe
$ echo eno1 >/sys/module/rdma_rxe/parameters/add
$ lsmod | grep -E "ib_srpt|iscsi_target_mod|ib_isert"
ib_srpt               167936  0
ib_isert              139264  0
iscsi_target_mod      843776  1 ib_isert
target_core_mod      1069056  3 iscsi_target_mod,ib_srpt,ib_isert
rdma_cm               315392  5 rpcrdma,ib_srpt,ib_iser,ib_isert,rdma_ucm
ib_cm                 344064  2 rdma_cm,ib_srpt
ib_core              1101824  10 rdma_cm,rdma_rxe,rpcrdma,ib_srpt,iw_cm,ib_iser,ib_isert,rdma_ucm,ib_uverbs,ib_cm

$ ./check srp/001
srp/001 (Create and remove LUNs)                             [failed]
    runtime    ...  3.675s
    --- tests/srp/001.out	2021-10-13 01:18:50.846740093 -0400
    +++ /root/blktests/results/nodev/srp/001.out.bad	2021-10-14 03:24:18.593852208 -0400
    @@ -1,3 +1 @@
    -Configured SRP target driver
    -count_luns(): 3 <> 3
    -Passed
    +insmod: ERROR: could not insert module /lib/modules/5.15.0-rc5.fix+/kernel/drivers/infiniband/ulp/srpt/ib_srpt.ko: File exists
modprobe: FATAL: Module iscsi_target_mod is in use.

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
---
 tests/srp/rc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Bart Van Assche Oct. 24, 2021, 9:22 p.m. UTC | #1
On 10/24/21 05:42, Yi Zhang wrote:
> The ib_isert/ib_srpt modules will be automatically loaded after the first
>   time rdma_rxe/siw setup, which will lead srp tests fail.
> 
> $ modprobe rdma_rxe
> $ echo eno1 >/sys/module/rdma_rxe/parameters/add
> $ lsmod | grep -E "ib_srpt|iscsi_target_mod|ib_isert"
> ib_srpt               167936  0
> ib_isert              139264  0
> iscsi_target_mod      843776  1 ib_isert
> target_core_mod      1069056  3 iscsi_target_mod,ib_srpt,ib_isert
> rdma_cm               315392  5 rpcrdma,ib_srpt,ib_iser,ib_isert,rdma_ucm
> ib_cm                 344064  2 rdma_cm,ib_srpt
> ib_core              1101824  10 rdma_cm,rdma_rxe,rpcrdma,ib_srpt,iw_cm,ib_iser,ib_isert,rdma_ucm,ib_uverbs,ib_cm
> 
> $ ./check srp/001
> srp/001 (Create and remove LUNs)                             [failed]
>      runtime    ...  3.675s
>      --- tests/srp/001.out	2021-10-13 01:18:50.846740093 -0400
>      +++ /root/blktests/results/nodev/srp/001.out.bad	2021-10-14 03:24:18.593852208 -0400
>      @@ -1,3 +1 @@
>      -Configured SRP target driver
>      -count_luns(): 3 <> 3
>      -Passed
>      +insmod: ERROR: could not insert module /lib/modules/5.15.0-rc5.fix+/kernel/drivers/infiniband/ulp/srpt/ib_srpt.ko: File exists
> modprobe: FATAL: Module iscsi_target_mod is in use.
> 
> Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
> ---
>   tests/srp/rc | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/srp/rc b/tests/srp/rc
> index 7239d87..b3dfd4d 100755
> --- a/tests/srp/rc
> +++ b/tests/srp/rc
> @@ -497,7 +497,7 @@ start_lio_srpt() {
>   	if modinfo ib_srpt | grep -q '^parm:[[:blank:]]*rdma_cm_port:'; then
>   		opts+=("rdma_cm_port=${srp_rdma_cm_port}")
>   	fi
> -	insmod "/lib/modules/$(uname -r)/kernel/drivers/infiniband/ulp/srpt/ib_srpt."* "${opts[@]}" || return $?
> +	unload_module ib_srpt && modprobe ib_srpt "${opts[@]}" || return $?
>   	i=0

The "&&" above seems wrong to me. It is not guaranteed that the ib_srpt
kernel mode has already been loaded before this code runs. I propose to
use the following code instead:

	unload_module ib_srpt
	modprobe ib_srpt "${opts[@]}" || return $?

Thanks,

Bart.
Yi Zhang Oct. 25, 2021, 1:27 a.m. UTC | #2
On Mon, Oct 25, 2021 at 5:22 AM Bart Van Assche <bvanassche@acm.org> wrote:
>
> On 10/24/21 05:42, Yi Zhang wrote:
> > The ib_isert/ib_srpt modules will be automatically loaded after the first
> >   time rdma_rxe/siw setup, which will lead srp tests fail.
> >
> > $ modprobe rdma_rxe
> > $ echo eno1 >/sys/module/rdma_rxe/parameters/add
> > $ lsmod | grep -E "ib_srpt|iscsi_target_mod|ib_isert"
> > ib_srpt               167936  0
> > ib_isert              139264  0
> > iscsi_target_mod      843776  1 ib_isert
> > target_core_mod      1069056  3 iscsi_target_mod,ib_srpt,ib_isert
> > rdma_cm               315392  5 rpcrdma,ib_srpt,ib_iser,ib_isert,rdma_ucm
> > ib_cm                 344064  2 rdma_cm,ib_srpt
> > ib_core              1101824  10 rdma_cm,rdma_rxe,rpcrdma,ib_srpt,iw_cm,ib_iser,ib_isert,rdma_ucm,ib_uverbs,ib_cm
> >
> > $ ./check srp/001
> > srp/001 (Create and remove LUNs)                             [failed]
> >      runtime    ...  3.675s
> >      --- tests/srp/001.out    2021-10-13 01:18:50.846740093 -0400
> >      +++ /root/blktests/results/nodev/srp/001.out.bad 2021-10-14 03:24:18.593852208 -0400
> >      @@ -1,3 +1 @@
> >      -Configured SRP target driver
> >      -count_luns(): 3 <> 3
> >      -Passed
> >      +insmod: ERROR: could not insert module /lib/modules/5.15.0-rc5.fix+/kernel/drivers/infiniband/ulp/srpt/ib_srpt.ko: File exists
> > modprobe: FATAL: Module iscsi_target_mod is in use.
> >
> > Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
> > ---
> >   tests/srp/rc | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/tests/srp/rc b/tests/srp/rc
> > index 7239d87..b3dfd4d 100755
> > --- a/tests/srp/rc
> > +++ b/tests/srp/rc
> > @@ -497,7 +497,7 @@ start_lio_srpt() {
> >       if modinfo ib_srpt | grep -q '^parm:[[:blank:]]*rdma_cm_port:'; then
> >               opts+=("rdma_cm_port=${srp_rdma_cm_port}")
> >       fi
> > -     insmod "/lib/modules/$(uname -r)/kernel/drivers/infiniband/ulp/srpt/ib_srpt."* "${opts[@]}" || return $?
> > +     unload_module ib_srpt && modprobe ib_srpt "${opts[@]}" || return $?
> >       i=0
>
> The "&&" above seems wrong to me. It is not guaranteed that the ib_srpt
> kernel mode has already been loaded before this code runs. I propose to
> use the following code instead:
>
>         unload_module ib_srpt
>         modprobe ib_srpt "${opts[@]}" || return $?

Thanks Bart, send v4 for this change.

>
> Thanks,
>
> Bart.
>
diff mbox series

Patch

diff --git a/tests/srp/rc b/tests/srp/rc
index 7239d87..b3dfd4d 100755
--- a/tests/srp/rc
+++ b/tests/srp/rc
@@ -497,7 +497,7 @@  start_lio_srpt() {
 	if modinfo ib_srpt | grep -q '^parm:[[:blank:]]*rdma_cm_port:'; then
 		opts+=("rdma_cm_port=${srp_rdma_cm_port}")
 	fi
-	insmod "/lib/modules/$(uname -r)/kernel/drivers/infiniband/ulp/srpt/ib_srpt."* "${opts[@]}" || return $?
+	unload_module ib_srpt && modprobe ib_srpt "${opts[@]}" || return $?
 	i=0
 	for r in "${vdev_path[@]}"; do
 		if [ -b "$(readlink -f "$r")" ]; then
@@ -554,7 +554,7 @@  stop_lio_srpt() {
 	rmdir /sys/kernel/config/target/*/* >&/dev/null
 	rmdir /sys/kernel/config/target/* >&/dev/null
 
-	for m in ib_srpt iscsi_target_mod target_core_pscsi target_core_iblock \
+	for m in ib_srpt ib_isert iscsi_target_mod target_core_pscsi target_core_iblock \
 			 target_core_file target_core_stgt target_core_user \
 			 target_core_mod
 	do