Fix DMA API when handling an immediate error from block layer (Avi Kivity)

The block layer may signal an immediate error on an asynchronous request
by returning NULL.  The DMA API did not handle this correctly, returning
an AIO request which would never complete (and which would crash if
cancelled).

Fix by detecting the failure and propagating it.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6893 c046a42c-6fe2-441c-8c8c-71466251a162
1 file changed
tree: eeaa665b9911bf9baa42240d67956c1a4c0bc35a
  1. audio/
  2. bsd-user/
  3. darwin-user/
  4. fpu/
  5. gdb-xml/
  6. hw/
  7. keymaps/
  8. linux-user/
  9. pc-bios/
  10. slirp/
  11. target-alpha/
  12. target-arm/
  13. target-cris/
  14. target-i386/
  15. target-m68k/
  16. target-mips/
  17. target-ppc/
  18. target-sh4/
  19. target-sparc/
  20. tcg/
  21. tests/
  22. .gitignore
  23. a.out.h
  24. acl.c
  25. acl.h
  26. aes.c
  27. aes.h
  28. aio.c
  29. alpha-dis.c
  30. alpha.ld
  31. arm-dis.c
  32. arm-semi.c
  33. arm.ld
  34. balloon.h
  35. block-bochs.c
  36. block-cloop.c
  37. block-cow.c
  38. block-dmg.c
  39. block-nbd.c
  40. block-parallels.c
  41. block-qcow.c
  42. block-qcow2.c
  43. block-raw-posix.c
  44. block-raw-win32.c
  45. block-vmdk.c
  46. block-vpc.c
  47. block-vvfat.c
  48. block.c
  49. block.h
  50. block_int.h
  51. bswap.h
  52. bt-host.c
  53. bt-host.h
  54. bt-vhci.c
  55. buffered_file.c
  56. buffered_file.h
  57. cache-utils.c
  58. cache-utils.h
  59. Changelog
  60. cocoa.m
  61. configure
  62. console.c
  63. console.h
  64. COPYING
  65. COPYING.LIB
  66. cpu-all.h
  67. cpu-defs.h
  68. cpu-exec.c
  69. cris-dis.c
  70. curses.c
  71. curses_keys.h
  72. cutils.c
  73. d3des.c
  74. d3des.h
  75. def-helper.h
  76. device_tree.c
  77. device_tree.h
  78. dis-asm.h
  79. disas.c
  80. disas.h
  81. dma-helpers.c
  82. dma.h
  83. dyngen-exec.h
  84. elf.h
  85. elf_ops.h
  86. exec-all.h
  87. exec.c
  88. feature_to_c.sh
  89. gdbstub.c
  90. gdbstub.h
  91. gen-icount.h
  92. host-utils.c
  93. host-utils.h
  94. hostregs_helper.h
  95. hpet.h
  96. hppa-dis.c
  97. hppa.ld
  98. hxtool
  99. i386-dis.c
  100. i386.ld
  101. ia64.ld
  102. keymaps.c
  103. keymaps.h
  104. kqemu.c
  105. kqemu.h
  106. kvm-all.c
  107. kvm.h
  108. libfdt_env.h
  109. LICENSE
  110. loader.c
  111. m68k-dis.c
  112. m68k-semi.c
  113. m68k.ld
  114. MAINTAINERS
  115. Makefile
  116. Makefile.target
  117. migration-exec.c
  118. migration-tcp.c
  119. migration.c
  120. migration.h
  121. mips-dis.c
  122. mips.ld
  123. mipsel.ld
  124. monitor.c
  125. monitor.h
  126. nbd.c
  127. nbd.h
  128. net-checksum.c
  129. net.c
  130. net.h
  131. osdep.c
  132. osdep.h
  133. pci-ids.txt
  134. posix-aio-compat.c
  135. posix-aio-compat.h
  136. ppc-dis.c
  137. ppc.ld
  138. ppc64.ld
  139. qemu-aio.h
  140. qemu-binfmt-conf.sh
  141. qemu-char.c
  142. qemu-char.h
  143. qemu-common.h
  144. qemu-doc.texi
  145. qemu-img.c
  146. qemu-img.texi
  147. qemu-lock.h
  148. qemu-log.h
  149. qemu-malloc.c
  150. qemu-nbd.c
  151. qemu-nbd.texi
  152. qemu-options.hx
  153. qemu-sockets.c
  154. qemu-tech.texi
  155. qemu-timer.h
  156. qemu-tool.c
  157. qemu.sasl
  158. qemu_socket.h
  159. readline.c
  160. readline.h
  161. README
  162. rules.mak
  163. s390-dis.c
  164. s390.ld
  165. savevm.c
  166. sdl.c
  167. sdl_keysym.h
  168. sh4-dis.c
  169. softmmu-semi.h
  170. softmmu_defs.h
  171. softmmu_exec.h
  172. softmmu_header.h
  173. softmmu_template.h
  174. sparc-dis.c
  175. sparc.ld
  176. sparc64.ld
  177. sys-queue.h
  178. sysemu.h
  179. tap-win32.c
  180. texi2pod.pl
  181. thunk.c
  182. thunk.h
  183. TODO
  184. translate-all.c
  185. uboot_image.h
  186. usb-bsd.c
  187. usb-linux.c
  188. usb-stub.c
  189. VERSION
  190. vgafont.h
  191. vl.c
  192. vnc-auth-sasl.c
  193. vnc-auth-sasl.h
  194. vnc-auth-vencrypt.c
  195. vnc-auth-vencrypt.h
  196. vnc-tls.c
  197. vnc-tls.h
  198. vnc.c
  199. vnc.h
  200. vnc_keysym.h
  201. vnchextile.h
  202. x86_64.ld
  203. x_keymap.c
  204. x_keymap.h