From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com,
jasowang@redhat.com
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Subject: [PATCH 4/5] tools: hv: use FIFREEZE/FITHAW in hv_vss_daemon
Date: Tue, 23 Apr 2013 14:24:00 -0700 [thread overview]
Message-ID: <1366752241-357-4-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1366752241-357-1-git-send-email-kys@microsoft.com>
From: Olaf Hering <olaf@aepfle.de>
As suggested by Paolo Bonzini, use ioctl instead of calling fsfreeze.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
---
tools/hv/hv_vss_daemon.c | 31 ++++++++++++++++++++++---------
1 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/tools/hv/hv_vss_daemon.c b/tools/hv/hv_vss_daemon.c
index e37d86c..830d606 100644
--- a/tools/hv/hv_vss_daemon.c
+++ b/tools/hv/hv_vss_daemon.c
@@ -21,7 +21,9 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/poll.h>
+#include <sys/ioctl.h>
#include <linux/types.h>
+#include <fcntl.h>
#include <stdio.h>
#include <mntent.h>
#include <stdlib.h>
@@ -30,6 +32,7 @@
#include <ctype.h>
#include <errno.h>
#include <arpa/inet.h>
+#include <linux/fs.h>
#include <linux/connector.h>
#include <linux/hyperv.h>
#include <linux/netlink.h>
@@ -44,21 +47,35 @@ static struct sockaddr_nl addr;
#endif
+static int vss_do_freeze(char *dir, unsigned int cmd, char *fs_op)
+{
+ int ret, fd = open(dir, O_RDONLY);
+
+ if (fd < 0)
+ return 1;
+ ret = ioctl(fd, cmd, 0);
+ syslog(LOG_INFO, "VSS: %s of %s: %s\n", fs_op, dir, strerror(errno));
+ close(fd);
+ return !!ret;
+}
+
static int vss_operate(int operation)
{
char *fs_op;
- char cmd[512];
char match[] = "/dev/";
FILE *mounts;
struct mntent *ent;
+ unsigned int cmd;
int error = 0, root_seen = 0;
switch (operation) {
case VSS_OP_FREEZE:
- fs_op = "-f ";
+ cmd = FIFREEZE;
+ fs_op = "freeze";
break;
case VSS_OP_THAW:
- fs_op = "-u ";
+ cmd = FITHAW;
+ fs_op = "thaw";
break;
default:
return -1;
@@ -75,16 +92,12 @@ static int vss_operate(int operation)
root_seen = 1;
continue;
}
- snprintf(cmd, sizeof(cmd), "fsfreeze %s '%s'", fs_op, ent->mnt_dir);
- syslog(LOG_INFO, "VSS cmd is %s\n", cmd);
- error |= system(cmd);
+ error |= vss_do_freeze(ent->mnt_dir, cmd, fs_op);
}
endmntent(mounts);
if (root_seen) {
- sprintf(cmd, "fsfreeze %s /", fs_op);
- syslog(LOG_INFO, "VSS cmd is %s\n", cmd);
- error |= system(cmd);
+ error |= vss_do_freeze("/", cmd, fs_op);
}
return error;
--
1.7.4.1
next prev parent reply other threads:[~2013-04-23 20:51 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-23 21:23 [PATCH 0/5] Tools: hv: snapshot K. Y. Srinivasan
2013-04-23 21:23 ` [PATCH 1/5] Tools: hv: fix warnings in hv_vss_daemon K. Y. Srinivasan
2013-04-23 21:23 ` [PATCH 2/5] tools: hv: fix checks for origin of netlink message " K. Y. Srinivasan
2013-04-23 21:23 ` [PATCH 3/5] tools: hv: use getmntent " K. Y. Srinivasan
2013-04-23 21:24 ` K. Y. Srinivasan [this message]
2013-04-23 21:24 ` [PATCH 5/5] [PATCH 2/2] tools: hv: skip iso9660 mounts " K. Y. Srinivasan
2013-04-23 21:09 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1366752241-357-4-git-send-email-kys@microsoft.com \
--to=kys@microsoft.com \
--cc=apw@canonical.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@linuxfoundation.org \
--cc=jasowang@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=olaf@aepfle.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.