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
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:
So, I propose a few lines of fix we tested and would like to open a pull-request.