Il 23/05/2013 23:58, Mark Trumpold ha scritto: > I have a working configuration using the signal approach suggested by Stefan. > > 'qemu-nbd.c' is patched as follows: > > do { > main_loop_wait(false); > + if (sighup_reported) { > + sighup_reported = false; > + bdrv_drain_all(); > + bdrv_flush_all(); > } > } while (!sigterm_reported && (persistent || !nbd_started || nb_fds > 0)); > > The driving script was patched as follows:
Yes, a patch along these lines would be acceptable. > mount -o remount,ro /dev/nbd0 > blockdev --flushbufs /dev/nbd0 > + kill -HUP <qemu-nbd process id> > > I needed to retain 'blockdev --flushbufs' for things to work. Seems > the 'bdrv_flush_all' is flushing what is being missed by the blockdev > flush. I did not go back an retest with 'fsync' or other approaches I > had tried before. Right. That said, I think a newer kernel would do what you want. Perhaps you can look at the actual patches that went into 3.9 and backport them. Paolo