You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I had a timeout issue when an initiator sent a vendor-specific command to our target devices.
(It occurred on device-scanning from the initiator. So, (timeout value x # of devices) took very long time.)
It turned out that:
- tcmu_cdb_get_length() returns -EINVAL for vendor specific cdb, group_code 6 and 7.
- So, tcmulib_get_next_command() returns NULL.
- So, TCMU-runner drops the cdb, does nothing, and just ppoll() resulting to timeout in tcmur_cmdproc_thread().
So, I propose a few lines of fix we tested and would like to open a pull-request.
To match TCMU, tcmu-runner should provide a length of 10 for the group 6 and 7 cdb.
(tcmu_cdb_get_length() should return 10 for 6 and 7 cdb.) - api.c
Ideally, the loop where it detects an invalid length still creates a cmd/job in tcmu-runner so that it can return status NOT_HANDLED instead of just dropping the command in tcmur_cmdproc_thread() - main.c
The text was updated successfully, but these errors were encountered:
rkawase
added a commit
to rkawase/tcmu-runner
that referenced
this issue
Sep 25, 2024
Hello, this is my first post to this github.
I had a timeout issue when an initiator sent a vendor-specific command to our target devices.
(It occurred on device-scanning from the initiator. So, (timeout value x # of devices) took very long time.)
It turned out that:
- tcmu_cdb_get_length() returns -EINVAL for vendor specific cdb, group_code 6 and 7.
- So, tcmulib_get_next_command() returns NULL.
- So, TCMU-runner drops the cdb, does nothing, and just ppoll() resulting to timeout in tcmur_cmdproc_thread().
So, I propose a few lines of fix we tested and would like to open a pull-request.
(tcmu_cdb_get_length() should return 10 for 6 and 7 cdb.) - api.c
The text was updated successfully, but these errors were encountered: