block: call the snapshot handlers of the protocol drivers

When snapshot handlers are not defined in the format driver, it is
better to call the ones of the protocol driver.  This enables us to
implement snapshot support in the protocol driver.

We need to call bdrv_close() and bdrv_open() handlers of the format
driver before and after bdrv_snapshot_goto() call of the protocol.  It is
because the contents of the block driver state may need to be changed
after loading vmstate.

Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
1 file changed
tree: cf251eb11f8e7b719bbf2d1b867b564dd8422690
  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. .gitignore
  32. .gitmodules
  33. a.out.h
  34. acl.c
  35. acl.h
  36. aes.c
  37. aes.h
  38. aio.c
  39. alpha-dis.c
  40. alpha.ld
  41. arch_init.c
  42. arch_init.h
  43. arm-dis.c
  44. arm-semi.c
  45. arm.ld
  46. async.c
  47. balloon.c
  48. balloon.h
  49. block-migration.c
  50. block-migration.h
  51. block.c
  52. block.h
  53. block_int.h
  54. bswap.h
  55. bt-host.c
  56. bt-host.h
  57. bt-vhci.c
  58. buffered_file.c
  59. buffered_file.h
  60. cache-utils.c
  61. cache-utils.h
  62. Changelog
  63. check-qdict.c
  64. check-qfloat.c
  65. check-qint.c
  66. check-qjson.c
  67. check-qlist.c
  68. check-qstring.c
  69. cmd.c
  70. cmd.h
  71. cocoa.m
  72. CODING_STYLE
  73. config.h
  74. configure
  75. console.c
  76. console.h
  77. COPYING
  78. COPYING.LIB
  79. cpu-all.h
  80. cpu-common.h
  81. cpu-defs.h
  82. cpu-exec.c
  83. cpus.c
  84. cpus.h
  85. create_config
  86. cris-dis.c
  87. curses.c
  88. curses_keys.h
  89. cursor.c
  90. cursor_hidden.xpm
  91. cursor_left_ptr.xpm
  92. cutils.c
  93. d3des.c
  94. d3des.h
  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. host-utils.c
  114. host-utils.h
  115. hpet.h
  116. hppa-dis.c
  117. hppa.ld
  118. hxtool
  119. i386-dis.c
  120. i386.ld
  121. ia64-dis.c
  122. ia64.ld
  123. input.c
  124. ioport-user.c
  125. ioport.c
  126. ioport.h
  127. iov.c
  128. iov.h
  129. json-lexer.c
  130. json-lexer.h
  131. json-parser.c
  132. json-parser.h
  133. json-streamer.c
  134. json-streamer.h
  135. keymaps.c
  136. keymaps.h
  137. kvm-all.c
  138. kvm-stub.c
  139. kvm.h
  140. libfdt_env.h
  141. LICENSE
  142. linux-aio.c
  143. m68k-dis.c
  144. m68k-semi.c
  145. m68k.ld
  146. MAINTAINERS
  147. Makefile
  148. Makefile.dis
  149. Makefile.hw
  150. Makefile.objs
  151. Makefile.target
  152. Makefile.user
  153. microblaze-dis.c
  154. migration-exec.c
  155. migration-fd.c
  156. migration-tcp.c
  157. migration-unix.c
  158. migration.c
  159. migration.h
  160. mips-dis.c
  161. mips.ld
  162. module.c
  163. module.h
  164. monitor.c
  165. monitor.h
  166. nbd.c
  167. nbd.h
  168. net-checksum.c
  169. net.c
  170. net.h
  171. notify.c
  172. notify.h
  173. osdep.c
  174. osdep.h
  175. path.c
  176. pci-ids.txt
  177. poison.h
  178. posix-aio-compat.c
  179. ppc-dis.c
  180. ppc.ld
  181. ppc64.ld
  182. qbool.c
  183. qbool.h
  184. qdict-test-data.txt
  185. qdict.c
  186. qdict.h
  187. qemu-aio.h
  188. qemu-barrier.h
  189. qemu-binfmt-conf.sh
  190. qemu-char.c
  191. qemu-char.h
  192. qemu-common.h
  193. qemu-config.c
  194. qemu-config.h
  195. qemu-doc.texi
  196. qemu-error.c
  197. qemu-error.h
  198. qemu-img-cmds.hx
  199. qemu-img.c
  200. qemu-img.texi
  201. qemu-io.c
  202. qemu-lock.h
  203. qemu-log.h
  204. qemu-malloc.c
  205. qemu-monitor.hx
  206. qemu-nbd.c
  207. qemu-nbd.texi
  208. qemu-objects.h
  209. qemu-option.c
  210. qemu-option.h
  211. qemu-options.hx
  212. qemu-queue.h
  213. qemu-sockets.c
  214. qemu-tech.texi
  215. qemu-thread.c
  216. qemu-thread.h
  217. qemu-timer.c
  218. qemu-timer.h
  219. qemu-tool.c
  220. qemu-x509.h
  221. qemu.sasl
  222. qemu_socket.h
  223. qerror.c
  224. qerror.h
  225. qfloat.c
  226. qfloat.h
  227. qint.c
  228. qint.h
  229. qjson.c
  230. qjson.h
  231. qlist.c
  232. qlist.h
  233. qobject.h
  234. qstring.c
  235. qstring.h
  236. readline.c
  237. readline.h
  238. README
  239. rules.mak
  240. rwhandler.c
  241. rwhandler.h
  242. s390-dis.c
  243. s390.ld
  244. savevm.c
  245. sdl.c
  246. sdl_keysym.h
  247. sdl_zoom.c
  248. sdl_zoom.h
  249. sdl_zoom_template.h
  250. sh4-dis.c
  251. softmmu-semi.h
  252. softmmu_defs.h
  253. softmmu_exec.h
  254. softmmu_header.h
  255. softmmu_template.h
  256. sparc-dis.c
  257. sparc.ld
  258. sparc64.ld
  259. sysemu.h
  260. targphys.h
  261. tcg-runtime.c
  262. texi2pod.pl
  263. thunk.c
  264. thunk.h
  265. TODO
  266. translate-all.c
  267. uboot_image.h
  268. usb-bsd.c
  269. usb-linux.c
  270. usb-stub.c
  271. VERSION
  272. vgafont.h
  273. vl.c
  274. vnc-auth-sasl.c
  275. vnc-auth-sasl.h
  276. vnc-auth-vencrypt.c
  277. vnc-auth-vencrypt.h
  278. vnc-encoding-hextile.c
  279. vnc-encoding-tight.c
  280. vnc-encoding-tight.h
  281. vnc-encoding-zlib.c
  282. vnc-tls.c
  283. vnc-tls.h
  284. vnc.c
  285. vnc.h
  286. vnc_keysym.h
  287. vnchextile.h
  288. x86_64.ld
  289. x_keymap.c
  290. x_keymap.h