forked from pool/hyper-v
- update buffer handling in hv_fcopy_daemon
- remove unnecessary header files and netlink related code - Avoid reading past allocated blocks from KVP file - fix snprintf warning in kvp_daemon - properly handle long paths - kvp: configurable external scripts path - vss: Thaw the filesystem and continue if freeze call has timed out - vss: Skip freezing filesystems backed by loop OBS-URL: https://build.opensuse.org/package/show/Virtualization/hyper-v?expand=0&rev=123
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/poll.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <mntent.h>
|
||||
@@ -30,6 +31,7 @@
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/major.h>
|
||||
#include <linux/hyperv.h>
|
||||
#include <syslog.h>
|
||||
#include <getopt.h>
|
||||
@@ -70,6 +72,7 @@ static int vss_operate(int operation)
|
||||
char match[] = "/dev/";
|
||||
FILE *mounts;
|
||||
struct mntent *ent;
|
||||
struct stat sb;
|
||||
char errdir[1024] = {0};
|
||||
unsigned int cmd;
|
||||
int error = 0, root_seen = 0, save_errno = 0;
|
||||
@@ -92,6 +95,10 @@ static int vss_operate(int operation)
|
||||
while ((ent = getmntent(mounts))) {
|
||||
if (strncmp(ent->mnt_fsname, match, strlen(match)))
|
||||
continue;
|
||||
if (stat(ent->mnt_fsname, &sb) == -1)
|
||||
continue;
|
||||
if (S_ISBLK(sb.st_mode) && major(sb.st_rdev) == LOOP_MAJOR)
|
||||
continue;
|
||||
if (hasmntopt(ent, MNTOPT_RO) != NULL)
|
||||
continue;
|
||||
if (strcmp(ent->mnt_type, "vfat") == 0)
|
||||
@@ -261,7 +268,9 @@ int main(int argc, char *argv[])
|
||||
if (len != sizeof(struct hv_vss_msg)) {
|
||||
syslog(LOG_ERR, "write failed; error: %d %s", errno,
|
||||
strerror(errno));
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
if (op == VSS_OP_FREEZE)
|
||||
vss_operate(VSS_OP_THAW);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user