[PATCH V2 1/1] Drivers: hv: Add a new driver to support host initiated backup

KY Srinivasan kys at microsoft.com
Tue Mar 26 18:25:35 UTC 2013



> -----Original Message-----
> From: Paolo Bonzini [mailto:paolo.bonzini at gmail.com] On Behalf Of Paolo
> Bonzini
> Sent: Tuesday, March 26, 2013 5:02 AM
> To: KY Srinivasan
> Cc: gregkh at linuxfoundation.org; linux-kernel at vger.kernel.org;
> devel at linuxdriverproject.org; olaf at aepfle.de; apw at canonical.com;
> jasowang at redhat.com; Evgeniy Polyakov
> Subject: Re: [PATCH V2 1/1] Drivers: hv: Add a new driver to support host
> initiated backup
> 
> > diff --git a/tools/hv/hv_vss_daemon.c b/tools/hv/hv_vss_daemon.c
> > new file mode 100644
> > index 0000000..9526995
> > --- /dev/null
> > +++ b/tools/hv/hv_vss_daemon.c
> > @@ -0,0 +1,220 @@
> > +/*
> > + * An implementation of the host initiated guest snapshot for Hyper-V.
> > + *
> > + *
> > + * Copyright (C) 2013, Microsoft, Inc.
> > + * Author : K. Y. Srinivasan <kys at microsoft.com>
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms of the GNU General Public License version 2 as published
> > + * by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful, but
> > + * WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE
> or
> > + * NON INFRINGEMENT.  See the GNU General Public License for more
> > + * details.
> > + *
> > + */
> > +
> > +
> > +#include <sys/types.h>
> > +#include <sys/socket.h>
> > +#include <sys/poll.h>
> > +#include <linux/types.h>
> > +#include <stdio.h>
> > +#include <stdlib.h>
> > +#include <unistd.h>
> > +#include <string.h>
> > +#include <ctype.h>
> > +#include <errno.h>
> > +#include <arpa/inet.h>
> > +#include <linux/connector.h>
> > +#include <linux/hyperv.h>
> > +#include <linux/netlink.h>
> > +#include <syslog.h>
> > +
> > +static char vss_recv_buffer[4096];
> > +static char vss_send_buffer[4096];
> > +static struct sockaddr_nl addr;
> > +
> > +#ifndef SOL_NETLINK
> > +#define SOL_NETLINK 270
> > +#endif
> > +
> > +
> > +static int vss_operate(int operation)
> > +{
> > +	char *fs_op;
> > +	char cmd[512];
> > +	char buf[512];
> > +	FILE *file;
> > +	char *p;
> > +	char *x;
> > +	int error;
> > +
> > +	switch (operation) {
> > +	case VSS_OP_FREEZE:
> > +		fs_op = "-f ";
> > +		break;
> > +	case VSS_OP_THAW:
> > +		fs_op = "-u ";
> > +		break;
> > +	}
> > +
> > +	file = popen("mount | awk '/^\/dev\// { print $3}'", "r");
> > +	if (file == NULL)
> > +		return;
> > +
> > +	while ((p = fgets(buf, sizeof(buf), file)) != NULL) {
> > +		x = strchr(p, '\n');
> > +		*x = '\0';
> > +		if (!strncmp(p, "/", sizeof("/")))
> > +			continue;
> > +
> > +		sprintf(cmd, "%s %s %s", "fsfreeze ", fs_op, p);
> 
> Please use getmntent and FIFREEZE/FITHAW.

I think Olaf has already addressed this in the recent patches he has sent.

> 
> However, I wonder if a dedicated daemon is really the best mechanism.
> Perhaps you can use uevents instead, and trigger the freeze/thaw with
> udev rules?

I need to be able to return errors back from the freeze/thaw operations.

Regards,

K. Y




More information about the devel mailing list