i use loop-AES on a USB flash device. when unplugging the device while
reading from it, the execution of the timer softirq (and others?)
seems to be blocked for 250ms. our device has a hardware watchdog that
relies on a kernel timer to be triggered. i don't observe this
behaviour without encryption.
the platform is ep9307 (ARM) based, running a linux 2.6.20 and
loop-AES 3.2c
below some traces:
[ 89.890000] __run_timers()
[ 89.900000] __run_timers()
[ 89.910000] __run_timers()
[ 89.920000] __run_timers()
[ 89.930000] __run_timers()
[ 89.930000] usb 1-3: USB disconnect, address 2
[ 89.940000] __run_timers()
[ 89.940000] sd 0:0:0:0: SCSI error: return code = 0x00010000
[ 89.940000] end_request: I/O error, dev sda, sector 6981704
[ 89.950000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.950000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.960000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 89.970000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 90.230000] __run_timers()
[ 90.230000] sd 0:0:0:0: SCSI error: return code = 0x00010000
[ 90.240000] end_request: I/O error, dev sda, sector 6981736
[ 90.240000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 90.250000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 90.250000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 90.260000] loop1: loop_end_io_transfer err=-5 bi_rw=0x0
[ 90.260000] __run_timers()
[ 90.280000] __run_timers()
[ 90.290000] __run_timers()
[ 90.300000] __run_timers()
[ 90.310000] __run_timers()
[ 90.320000] __run_timers()
[ 90.330000] __run_timers()
[ 90.340000] __run_timers()