[Libguestfs] [PATCH 2/4] Call sync after guestfsd exits

Richard W.M. Jones rjones at redhat.com
Thu Aug 26 12:11:54 UTC 2010


On Thu, Aug 26, 2010 at 12:11:59PM +0100, Matthew Booth wrote:
> Core files are not reliably written to disk if guestfsd dumps core. This patch
> makes libguestfs do the same appliance cleanup for guestfsd and virt-rescue,
> which seems to fix the matter.
> 
> It also removes a redundant sleep and additional sync when exiting virt-rescue.
> ---
>  appliance/init |   45 ++++++++++++++++++++++++---------------------
>  1 files changed, 24 insertions(+), 21 deletions(-)
> 
> diff --git a/appliance/init b/appliance/init
> index 6aeea0c..90da1cb 100755
> --- a/appliance/init
> +++ b/appliance/init
> @@ -88,27 +88,30 @@ if grep -sq guestfs_verbose=1 /proc/cmdline; then
>  fi
>  
>  if ! grep -sq guestfs_rescue=1 /proc/cmdline; then
> -  exec guestfsd -f
> +  # The host will kill qemu abruptly if guestfsd shuts down normally
> +  guestfsd -f
> +
> +  # Otherwise we try to clean up gracefully. For example, this ensures that a
> +  # core dump generated by the guest daemon will be written to disk.
> +else
> +  # Use appliance in rescue mode, also used by the virt-rescue command.
> +  eval $(grep -Eo 'TERM=[^[:space:]]+' /proc/cmdline)
> +  PS1='><rescue> '
> +  export TERM PS1
> +  echo
> +  echo "------------------------------------------------------------"
> +  echo
> +  echo "Welcome to virt-rescue, the libguestfs rescue shell."
> +  echo
> +  echo "Note: The contents of / are the rescue appliance."
> +  echo "You have to mount the guest's partitions under /sysroot"
> +  echo "before you can examine them."
> +  echo
> +  bash -i
> +  echo
> +  echo "virt-rescue: Syncing the disk now before exiting ..."
> +  echo "(Don't worry if you see a 'Kernel panic' message below)"
> +  echo
>  fi
>  
> -# Use appliance in rescue mode, also used by the virt-rescue command.
> -eval $(grep -Eo 'TERM=[^[:space:]]+' /proc/cmdline)
> -PS1='><rescue> '
> -export TERM PS1
> -echo
> -echo "------------------------------------------------------------"
> -echo
> -echo "Welcome to virt-rescue, the libguestfs rescue shell."
> -echo
> -echo "Note: The contents of / are the rescue appliance."
> -echo "You have to mount the guest's partitions under /sysroot"
> -echo "before you can examine them."
> -echo
> -bash -i
> -echo
> -echo "virt-rescue: Syncing the disk now before exiting ..."
> -echo "(Don't worry if you see a 'Kernel panic' message below)"
> -echo
> -sync
> -sleep 1
>  sync

ACK.  I'll push this once 1/4 is reposted.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora




More information about the Libguestfs mailing list