scsi_set_medium_removal timeout issue

From: Zengtao (B)
Date: Tue Oct 30 2018 - 04:28:20 EST


I have recently met a scsi_set_medium_removal timeout issue, and it's related
to both SCSI and USB MASS storage.
Since i am not an expert in either scsi or usb mass storage, i am writing to report
the issue and ask for a solution from you guys.

My test scenario is as follow:
1.Linux HOST-----Linux mass storage gadget(the back store is a flash partition).
2.Host mount the device.
3.Host writes some data to the Mass storage device.
4.Host Unmount the device.
Both Linux kernels(Host and Device) are Linux 4.9.
Some has reported the same issue a long time ago, but it remains there.

For the issue itself, there is my observation:
In the step 4, the Host will issue an PREVENT_ALLOW_MEDIUM_REMOVAL scsi command.
and and timeout happens due to the device 's very slow fsg_lun_fsync_sub.
I found there are two methods to workaround the issue:
1. Change the timeout value of host scsi command PREVENT_ALLOW_MEDIUM_REMOVAL to
to about 60 seconds from 10 seconds.
2. Remove the fsg_lun_fsync_sub in the device's Mass storage gadget driver.