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

From: KY Srinivasan
Date: Tue Mar 26 2013 - 14:27:31 EST




> -----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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/