]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes
authorXiubo Li <xiubli@redhat.com>
Fri, 23 Nov 2018 01:15:30 +0000 (09:15 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 12 Jan 2019 01:58:52 +0000 (20:58 -0500)
commit6241b579abdf215c04d73f5026ad329e18440294
tree65f91fa95a66f54f0b065a0051b748196d6fed05
parente5f41b65fa78ad7e1d75090c43bb440e6a789e23
scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes

Currently there is one cmd timeout timer and one qfull timer for each udev,
and whenever any new command is coming in we will update the cmd timer or
qfull timer. For some corner cases the timers are always working only for
the ringbuffer's and full queue's newest cmd. That's to say the timer won't
be fired even if one cmd has been stuck for a very long time and the
deadline is reached.

This fix will keep the cmd/qfull timers to be pended for the oldest cmd in
ringbuffer and full queue, and will update them with the next cmd's
deadline only when the old cmd's deadline is reached or removed from the
ringbuffer and full queue.

Signed-off-by: Xiubo Li <xiubli@redhat.com>
Acked-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_user.c