> -----Original Message----- > From: Paolo Bonzini [mailto:paolo.bonzini@xxxxxxxxx] On Behalf Of Paolo > Bonzini > Sent: Tuesday, March 26, 2013 5:02 AM > To: KY Srinivasan > Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; apw@xxxxxxxxxxxxx; > jasowang@xxxxxxxxxx; 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@xxxxxxxxxxxxx> > > + * > > + * 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 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel