scsi-disk: Move active request asserts

SCSI read/write requests should not be re-issued before the current
fragment of I/O completes.  There are asserts in scsi-disk.c that guard
this constraint but they trigger on SPARC Linux 2.4.  It turns out that
the asserts are too early in the code path and don't allow for read
requests to terminate.

Only the read assert needs to be moved but move the write assert too for
consistency.

Reported-by: Nigel Horne <njh@bandsman.co.uk>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
1 file changed
tree: 75e8079858a8fb5ec6a809fd032a947911583cdc
  1. audio/
  2. block/
  3. bsd-user/
  4. darwin-user/
  5. default-configs/
  6. docs/
  7. fpu/
  8. fsdev/
  9. gdb-xml/
  10. hw/
  11. linux-user/
  12. net/
  13. pc-bios/
  14. QMP/
  15. roms/
  16. slirp/
  17. sysconfigs/
  18. target-alpha/
  19. target-arm/
  20. target-cris/
  21. target-i386/
  22. target-m68k/
  23. target-microblaze/
  24. target-mips/
  25. target-ppc/
  26. target-s390x/
  27. target-sh4/
  28. target-sparc/
  29. tcg/
  30. tests/
  31. ui/
  32. .gitignore
  33. .gitmodules
  34. a.out.h
  35. acl.c
  36. acl.h
  37. aes.c
  38. aes.h
  39. aio.c
  40. alpha-dis.c
  41. alpha.ld
  42. arch_init.c
  43. arch_init.h
  44. arm-dis.c
  45. arm-semi.c
  46. arm.ld
  47. async.c
  48. balloon.c
  49. balloon.h
  50. block-migration.c
  51. block-migration.h
  52. block.c
  53. block.h
  54. block_int.h
  55. blockdev.c
  56. blockdev.h
  57. bswap.h
  58. bt-host.c
  59. bt-host.h
  60. bt-vhci.c
  61. buffered_file.c
  62. buffered_file.h
  63. cache-utils.c
  64. cache-utils.h
  65. Changelog
  66. check-qdict.c
  67. check-qfloat.c
  68. check-qint.c
  69. check-qjson.c
  70. check-qlist.c
  71. check-qstring.c
  72. cmd.c
  73. cmd.h
  74. CODING_STYLE
  75. compatfd.c
  76. compatfd.h
  77. config.h
  78. configure
  79. console.c
  80. console.h
  81. COPYING
  82. COPYING.LIB
  83. cpu-all.h
  84. cpu-common.h
  85. cpu-defs.h
  86. cpu-exec.c
  87. cpus.c
  88. cpus.h
  89. create_config
  90. cris-dis.c
  91. cursor.c
  92. cursor_hidden.xpm
  93. cursor_left_ptr.xpm
  94. cutils.c
  95. def-helper.h
  96. device_tree.c
  97. device_tree.h
  98. dis-asm.h
  99. disas.c
  100. disas.h
  101. dma-helpers.c
  102. dma.h
  103. dyngen-exec.h
  104. elf.h
  105. envlist.c
  106. envlist.h
  107. exec-all.h
  108. exec.c
  109. feature_to_c.sh
  110. gdbstub.c
  111. gdbstub.h
  112. gen-icount.h
  113. HACKING
  114. hmp-commands.hx
  115. host-utils.c
  116. host-utils.h
  117. hpet.h
  118. hppa-dis.c
  119. hppa.ld
  120. hxtool
  121. i386-dis.c
  122. i386.ld
  123. ia64-dis.c
  124. ia64.ld
  125. input.c
  126. ioport-user.c
  127. ioport.c
  128. ioport.h
  129. iorange.h
  130. iov.c
  131. iov.h
  132. json-lexer.c
  133. json-lexer.h
  134. json-parser.c
  135. json-parser.h
  136. json-streamer.c
  137. json-streamer.h
  138. kvm-all.c
  139. kvm-stub.c
  140. kvm.h
  141. libfdt_env.h
  142. LICENSE
  143. linux-aio.c
  144. m68k-dis.c
  145. m68k-semi.c
  146. m68k.ld
  147. MAINTAINERS
  148. Makefile
  149. Makefile.dis
  150. Makefile.hw
  151. Makefile.objs
  152. Makefile.target
  153. Makefile.user
  154. microblaze-dis.c
  155. migration-exec.c
  156. migration-fd.c
  157. migration-tcp.c
  158. migration-unix.c
  159. migration.c
  160. migration.h
  161. mips-dis.c
  162. mips.ld
  163. module.c
  164. module.h
  165. monitor.c
  166. monitor.h
  167. nbd.c
  168. nbd.h
  169. net-checksum.c
  170. net.c
  171. net.h
  172. notify.c
  173. notify.h
  174. os-posix.c
  175. os-win32.c
  176. osdep.c
  177. osdep.h
  178. oslib-posix.c
  179. oslib-win32.c
  180. path.c
  181. pci-ids.txt
  182. pflib.c
  183. pflib.h
  184. poison.h
  185. posix-aio-compat.c
  186. ppc-dis.c
  187. ppc.ld
  188. ppc64.ld
  189. qbool.c
  190. qbool.h
  191. qdict-test-data.txt
  192. qdict.c
  193. qdict.h
  194. qemu-aio.h
  195. qemu-barrier.h
  196. qemu-binfmt-conf.sh
  197. qemu-char.c
  198. qemu-char.h
  199. qemu-common.h
  200. qemu-config.c
  201. qemu-config.h
  202. qemu-doc.texi
  203. qemu-error.c
  204. qemu-error.h
  205. qemu-img-cmds.hx
  206. qemu-img.c
  207. qemu-img.texi
  208. qemu-io.c
  209. qemu-lock.h
  210. qemu-log.h
  211. qemu-malloc.c
  212. qemu-nbd.c
  213. qemu-nbd.texi
  214. qemu-objects.h
  215. qemu-option.c
  216. qemu-option.h
  217. qemu-options.h
  218. qemu-options.hx
  219. qemu-os-posix.h
  220. qemu-os-win32.h
  221. qemu-queue.h
  222. qemu-sockets.c
  223. qemu-tech.texi
  224. qemu-thread.c
  225. qemu-thread.h
  226. qemu-timer-common.c
  227. qemu-timer.c
  228. qemu-timer.h
  229. qemu-tool.c
  230. qemu-x509.h
  231. qemu.sasl
  232. qemu_socket.h
  233. qerror.c
  234. qerror.h
  235. qfloat.c
  236. qfloat.h
  237. qint.c
  238. qint.h
  239. qjson.c
  240. qjson.h
  241. qlist.c
  242. qlist.h
  243. qmp-commands.hx
  244. qobject.h
  245. qstring.c
  246. qstring.h
  247. range.h
  248. readline.c
  249. readline.h
  250. README
  251. rules.mak
  252. rwhandler.c
  253. rwhandler.h
  254. s390-dis.c
  255. s390.ld
  256. savevm.c
  257. sh4-dis.c
  258. simpletrace.c
  259. simpletrace.h
  260. simpletrace.py
  261. softmmu-semi.h
  262. softmmu_defs.h
  263. softmmu_exec.h
  264. softmmu_header.h
  265. softmmu_template.h
  266. sparc-dis.c
  267. sparc.ld
  268. sparc64.ld
  269. sysemu.h
  270. targphys.h
  271. tcg-runtime.c
  272. texi2pod.pl
  273. thunk.c
  274. thunk.h
  275. TODO
  276. trace-events
  277. tracetool
  278. translate-all.c
  279. uboot_image.h
  280. usb-bsd.c
  281. usb-linux.c
  282. usb-stub.c
  283. VERSION
  284. version.rc
  285. vgafont.h
  286. vl.c
  287. x86_64.ld