~n-muench/ubuntu/precise/open-vm-tools/open-vm-tools.raring-precise.backport

« back to all changes in this revision

Viewing changes to lib/syncDriver/vmSyncDriver.c

  • Committer: Package Import Robot
  • Author(s): Nate Muench
  • Date: 2012-01-23 16:09:45 UTC
  • mfrom: (1.4.6) (2.4.26 sid)
  • Revision ID: package-import@ubuntu.com-20120123160945-b6s0r1vkcovucpf3
Tags: 2011.12.20-562307-0ubuntu1
* Merge latest upstream git tag. Fixes building on Precise
  (LP: #898289, LP: #905612)

* Items merged from Debian unstable:
  - debian/control:
    + open-vm-tools recommends open-vm-dkms. (LP: #598933)
    + open-vm-tools now suggests open-vm-toolbox. (LP: #604998)
  (From 2011.08.21-471295-1 release)
  - Updating maintainer and uploaders fields.
  - Removing vcs fields.
  - Removing references to Daniel's old email address.
  - Updating years in copyright file.
  - Updating to standards version 3.9.2.
  - Updating to debhelper version 8.
  - Switching to source format 3.0 (quilt).
  - Removing manual chrpath setting.
  - Removing exclusion from plugins from debhelper shlibs.
  - Rediffing kvers.patch.
  (From 2011.09.23-491607-1 release)
  - Marking binary architecture-dependend packages as linux and kfreebsd
  only.
  - Removing liburiparser-dev from build-depends as upstream dropped
  unity support.
  - Building with libproc-dev on amd64 again.
  - Dropping disabling of dnet support.
  (From 2011.09.23-491607-2 release)
  - Adding doxygen to build-depends for api documentation.
  - Adding libcunit1-dev to build-depends for test suites.
  - Minimizing rules file.
  - Adding open-vm-tools-dev package, containing only the api
    documentation for now.
  (From 2011.09.23-491607-3 release)
  - Sorting overrides in rules alphabetically.
  - Compacting copyright file.
  - Adding udev rule to set timeout for vmware scsi devices
  (From 2011.12.20-562307-1 release)
  - Adding patch to correct typo in upstreams dkms configuration

* Remaining Changes:
  - Remove Stable part of version numbering.
  - debian folder:
    + Re-added open-vm-dkms.postinst & open-vm-dkms.prerm.
      * Allows dkms modules to compile upon installation.
  - debian/control:
    + Re-add open-vm-source and make into a transitional package
      for open-vm-toolbox.
    + Return dependancies that were moved to open-vm-tools back to
      open-vm-toolbox.
  - debian/rules and debian/open-vm-toolbox.lintian-overrides:
    + Make vmware-user-suid-wrapper suid-root
  - debian/rules:
    + Added CFLAGS field with -Wno-deprecated-declarations
      * Will suppress issues with glib 2.31 or later.
    + Add line to copy vmware-xdg-detect-de into place.
    + Install vmware-user.desktop through toolbox package.
  - debian/open-vm-tools.init:
    + Re-add 'modprobe [-r] vmblock'.
    + Add 'modprobe [-r] vmxnet'.
      * Incase it's not loaded during boot.
    + Remove and re-add pcnet32 module
      * Will be done before (remove) and after (readd) vmxnet module
        is added.
      * If vmxnet doesn't exist (aka modules fail to build), pcnet32 can be
        still used for network connectivity.
      * Workaround until a better fix can be done.
  - Re-add gnome-session to debian/local/xautostart.conf
  - Manpages removed (from debian/manpages):
    + vmmemctl.9
    + vmxnet3.9
    + Remove references to manpages that have been removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*********************************************************
 
2
 * Copyright (C) 2011 VMware, Inc. All rights reserved.
 
3
 *
 
4
 * This program is free software; you can redistribute it and/or modify it
 
5
 * under the terms of the GNU Lesser General Public License as published
 
6
 * by the Free Software Foundation version 2.1 and no later version.
 
7
 *
 
8
 * This program is distributed in the hope that it will be useful, but
 
9
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 
10
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
 
11
 * License for more details.
 
12
 *
 
13
 * You should have received a copy of the GNU Lesser General Public License
 
14
 * along with this program; if not, write to the Free Software Foundation, Inc.,
 
15
 * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
 
16
 *
 
17
 *********************************************************/
 
18
 
 
19
/**
 
20
 * @file vmSyncDriver.c
 
21
 *
 
22
 * A sync driver backend that uses VMware's "vmsync" driver.
 
23
 */
 
24
 
 
25
#include <fcntl.h>
 
26
#include <sys/ioctl.h>
 
27
#include "debug.h"
 
28
#include "syncDriverInt.h"
 
29
#include "syncDriverIoc.h"
 
30
#include "util.h"
 
31
 
 
32
#define SYNC_PROC_PATH "/proc/driver/vmware-sync"
 
33
 
 
34
typedef struct VmSyncDriver {
 
35
   SyncHandle     driver;
 
36
   int            fd;
 
37
} VmSyncDriver;
 
38
 
 
39
 
 
40
/*
 
41
 *******************************************************************************
 
42
 * VmSyncThaw --                                                          */ /**
 
43
 *
 
44
 * Thaws filesystems previously frozen.
 
45
 *
 
46
 * @param[in] handle Handle returned by the freeze operation.
 
47
 *
 
48
 * @return A SyncDriverErr.
 
49
 *
 
50
 *******************************************************************************
 
51
 */
 
52
 
 
53
static SyncDriverErr
 
54
VmSyncThaw(const SyncDriverHandle handle)
 
55
{
 
56
   const VmSyncDriver *sync = (VmSyncDriver *) handle;
 
57
   ASSERT(handle != SYNCDRIVER_INVALID_HANDLE);
 
58
   return ioctl(sync->fd, SYNC_IOC_THAW) != -1 ? SD_SUCCESS : SD_ERROR;
 
59
}
 
60
 
 
61
 
 
62
/*
 
63
 *******************************************************************************
 
64
 * VmSyncClose --                                                         */ /**
 
65
 *
 
66
 * Closes the descriptor used to talk to the vmsync driver and frees memory
 
67
 * associated with it.
 
68
 *
 
69
 * @param[in] handle Handle to close.
 
70
 *
 
71
 *******************************************************************************
 
72
 */
 
73
 
 
74
static void
 
75
VmSyncClose(SyncDriverHandle handle)
 
76
{
 
77
   VmSyncDriver *sync = (VmSyncDriver *) handle;
 
78
   close(sync->fd);
 
79
   free(sync);
 
80
}
 
81
 
 
82
 
 
83
/*
 
84
 *******************************************************************************
 
85
 * VmSync_Freeze --                                                       */ /**
 
86
 *
 
87
 * Tries to freeze the requested filesystems with the vmsync driver.
 
88
 *
 
89
 * Opens a description to the driver's proc node, and if successful, send an
 
90
 * ioctl to freeze the requested filesystems.
 
91
 *
 
92
 * @param[in]  paths    Paths to freeze (colon-delimited).
 
93
 * @param[out] handle   Where to store the handle to use for thawing.
 
94
 *
 
95
 * @return A SyncDriverErr.
 
96
 *
 
97
 *******************************************************************************
 
98
 */
 
99
 
 
100
SyncDriverErr
 
101
VmSync_Freeze(const char *paths,
 
102
              SyncDriverHandle *handle)
 
103
{
 
104
   int file;
 
105
   VmSyncDriver *sync = NULL;
 
106
 
 
107
   Debug(LGPFX "Freezing using vmsync driver...\n");
 
108
 
 
109
   file = open(SYNC_PROC_PATH, O_RDONLY);
 
110
   if (file == -1) {
 
111
      return SD_UNAVAILABLE;
 
112
   }
 
113
 
 
114
   sync = calloc(1, sizeof *sync);
 
115
   if (sync == NULL) {
 
116
      goto exit;
 
117
   }
 
118
 
 
119
   sync->driver.thaw = VmSyncThaw;
 
120
   sync->driver.close = VmSyncClose;
 
121
   sync->fd = file;
 
122
 
 
123
   if (ioctl(file, SYNC_IOC_FREEZE, paths) == -1) {
 
124
      free(sync);
 
125
      sync = NULL;
 
126
   }
 
127
 
 
128
exit:
 
129
   if (sync == NULL) {
 
130
      if (file != -1) {
 
131
         close(file);
 
132
      }
 
133
   } else {
 
134
      *handle = &sync->driver;
 
135
   }
 
136
   return sync != NULL ? SD_SUCCESS : SD_ERROR;
 
137
}
 
138