Commit 436ad94
scsi: storvsc: Allow only one remove lun work item to be issued per lun
When running multipath on a VM if all available paths go down the driver
can schedule large amounts of storvsc_remove_lun work items to the same
lun. In response to the failing paths typically storvsc responds by
taking host->scan_mutex and issuing a TUR per lun. If there has been
heavy IO to the failed device all the failed IOs are returned from the
host. A remove lun work item is issued per failed IO. If the outstanding
TURs have not been completed in a timely manner the scan_mutex is never
released or released too late. Consequently the many remove lun work
items are not completed as scsi_remove_device also tries to take
host->scan_mutex. This results in dragging the VM down and sometimes
completely.
This patch only allows one remove lun to be issued to a particular lun
while it is an instantiated member of the scsi stack.
Signed-off-by: Cathy Avery <cavery@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Long Li <longli@microsoft.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>1 parent ca6958b commit 436ad94
1 file changed
+21
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
486 | 486 | | |
487 | 487 | | |
488 | 488 | | |
| 489 | + | |
489 | 490 | | |
490 | 491 | | |
491 | 492 | | |
| |||
922 | 923 | | |
923 | 924 | | |
924 | 925 | | |
| 926 | + | |
925 | 927 | | |
926 | 928 | | |
927 | 929 | | |
| |||
988 | 990 | | |
989 | 991 | | |
990 | 992 | | |
991 | | - | |
| 993 | + | |
992 | 994 | | |
993 | 995 | | |
994 | 996 | | |
| |||
1803 | 1805 | | |
1804 | 1806 | | |
1805 | 1807 | | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
1806 | 1817 | | |
1807 | 1818 | | |
1808 | 1819 | | |
1809 | | - | |
| 1820 | + | |
1810 | 1821 | | |
1811 | 1822 | | |
1812 | 1823 | | |
| |||
1815 | 1826 | | |
1816 | 1827 | | |
1817 | 1828 | | |
1818 | | - | |
| 1829 | + | |
1819 | 1830 | | |
1820 | 1831 | | |
1821 | 1832 | | |
| |||
1827 | 1838 | | |
1828 | 1839 | | |
1829 | 1840 | | |
1830 | | - | |
| 1841 | + | |
1831 | 1842 | | |
1832 | 1843 | | |
1833 | 1844 | | |
1834 | 1845 | | |
1835 | | - | |
| 1846 | + | |
1836 | 1847 | | |
1837 | 1848 | | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
1838 | 1852 | | |
1839 | 1853 | | |
1840 | 1854 | | |
| |||
1858 | 1872 | | |
1859 | 1873 | | |
1860 | 1874 | | |
| 1875 | + | |
1861 | 1876 | | |
1862 | 1877 | | |
1863 | 1878 | | |
1864 | 1879 | | |
1865 | 1880 | | |
1866 | 1881 | | |
1867 | 1882 | | |
| 1883 | + | |
1868 | 1884 | | |
1869 | 1885 | | |
1870 | 1886 | | |
| |||
0 commit comments