commit 01d05bd9a3f5751b6e862fc5da0d36bd30e6ee21 Author: Jan Rękorajski <bagg...@pld-linux.org> Date: Sun Aug 25 12:59:03 2013 +0200
- fix building with linux 3.10 - vmci module is present in kernel 3.10+ - rel 10 open-vm-tools-linux-3.10.patch | 259 +++++++++++++++++++++++++++++++++++++++++ open-vm-tools.spec | 16 +-- 2 files changed, 268 insertions(+), 7 deletions(-) --- diff --git a/open-vm-tools.spec b/open-vm-tools.spec index d6fc38c..16832ce 100644 --- a/open-vm-tools.spec +++ b/open-vm-tools.spec @@ -8,7 +8,7 @@ %define subver %(echo %{snap} | tr -d .) %define ver 9.2.3 %define rev 1031360 -%define rel 9 +%define rel 10 %define pname open-vm-tools %define modsrc modules/linux Summary: VMWare guest utilities @@ -27,6 +27,7 @@ Source1: %{pname}-packaging Source2: %{pname}-modprobe.d Source3: %{pname}-init Source4: %{pname}-vmware-user.desktop +Patch0: %{pname}-linux-3.10.patch URL: http://open-vm-tools.sourceforge.net/ BuildRequires: rpmbuild(macros) >= 1.453 %if %{with userspace} @@ -220,6 +221,7 @@ Moduł jądra Linuksa VMware vsock. %prep #setup -q -n %{pname}-%{snap}-%{rev} %setup -q -n %{pname}-%{ver}-%{rev} +%patch0 -p1 cp %{SOURCE1} packaging %{__sed} -i -e 's|##{BUILD_OUTPUT}##|build|' docs/api/doxygen.conf @@ -228,11 +230,11 @@ cp %{SOURCE1} packaging %if %{with kernel} export OVT_SOURCE_DIR=$PWD %build_kernel_modules -C %{modsrc}/vmblock -m vmblock SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} -%build_kernel_modules -C %{modsrc}/vmci -m vmci SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} %build_kernel_modules -C %{modsrc}/vmhgfs -m vmhgfs SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} %build_kernel_modules -C %{modsrc}/vmxnet -m vmxnet SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} %build_kernel_modules -C %{modsrc}/vsock -m vsock SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} %if "%{_alt_kernel}" == "-longterm" +%build_kernel_modules -C %{modsrc}/vmci -m vmci SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} %build_kernel_modules -C %{modsrc}/vmsync -m vmsync SRCROOT=$PWD VM_KBUILD=26 VM_CCVER=%{cc_version} %endif %endif @@ -252,11 +254,11 @@ rm -rf $RPM_BUILD_ROOT %if %{with kernel} %install_kernel_modules -m %{modsrc}/vmblock/vmblock -d misc -%install_kernel_modules -m %{modsrc}/vmci/vmci -d misc %install_kernel_modules -m %{modsrc}/vmhgfs/vmhgfs -d misc %install_kernel_modules -m %{modsrc}/vmxnet/vmxnet -d misc %install_kernel_modules -m %{modsrc}/vsock/vsock -d misc %if "%{_alt_kernel}" == "-longterm" +%install_kernel_modules -m %{modsrc}/vmci/vmci -d misc %install_kernel_modules -m %{modsrc}/vmsync/vmsync -d misc %endif %endif @@ -390,15 +392,15 @@ fi %defattr(644,root,root,755) /lib/modules/%{_kernel_ver}/misc/vmblock.ko* -%files -n kernel%{_alt_kernel}-misc-vmci -%defattr(644,root,root,755) -/lib/modules/%{_kernel_ver}/misc/vmci.ko* - %files -n kernel%{_alt_kernel}-misc-vmhgfs %defattr(644,root,root,755) /lib/modules/%{_kernel_ver}/misc/vmhgfs.ko* %if "%{_alt_kernel}" == "-longterm" +%files -n kernel%{_alt_kernel}-misc-vmci +%defattr(644,root,root,755) +/lib/modules/%{_kernel_ver}/misc/vmci.ko* + %files -n kernel%{_alt_kernel}-misc-vmsync %defattr(644,root,root,755) /lib/modules/%{_kernel_ver}/misc/vmsync.ko* diff --git a/open-vm-tools-linux-3.10.patch b/open-vm-tools-linux-3.10.patch new file mode 100644 index 0000000..88d7aa7 --- /dev/null +++ b/open-vm-tools-linux-3.10.patch @@ -0,0 +1,259 @@ +diff --git a/modules/linux/dkms.conf b/modules/linux/dkms.conf +index 3ed77f9..263921f 100644 +--- a/modules/linux/dkms.conf ++++ b/modules/linux/dkms.conf +@@ -1,39 +1,39 @@ + PACKAGE_NAME=open-vm-tools + PACKAGE_VERSION=2013.04.16 + MAKE_CMD_TMPL="make VM_UNAME=\$kernelver \ +- MODULEBUILDDIR=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build" ++ MODULEBUILDDIR=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build \ ++ CC_WARNINGS=-Wno-unused-local-typedefs" + + # The vsock module depends on symbols exported by the vmci module, so it + # needs to be built afterwards; the MODULEBUILDDIR variable tells the makefiles + # where to store / retrive those symbol files. + MAKE[0]="$MAKE_CMD_TMPL -C vmblock; \ + $MAKE_CMD_TMPL -C vmci; \ + $MAKE_CMD_TMPL -C vmhgfs; \ + $MAKE_CMD_TMPL -C vmsync; \ + $MAKE_CMD_TMPL -C vmxnet; \ + $MAKE_CMD_TMPL -C vsock" + CLEAN[0]="$MAKE_CMD_TMPL -C vmblock clean; \ + $MAKE_CMD_TMPL -C vmci clean; \ + $MAKE_CMD_TMPL -C vmhgfs clean; \ +- $MAKE_CMD_TMPL -C vmsync clean"; \ ++ $MAKE_CMD_TMPL -C vmsync clean; \ + $MAKE_CMD_TMPL -C vmxnet clean; \ +- $MAKE_CMD_TMPL -C vsock clean ++ $MAKE_CMD_TMPL -C vsock clean" + BUILT_MODULE_NAME[0]="vmblock" + BUILT_MODULE_NAME[1]="vmci" +-BUILT_MODULE_NAME[2]="vmhgfs" +-BUILT_MODULE_NAME[3]="vmsync" +-BUILT_MODULE_NAME[4]="vmxnet" +-BUILT_MODULE_NAME[5]="vsock" ++BUILT_MODULE_NAME[1]="vmhgfs" ++BUILT_MODULE_NAME[2]="vmsync" ++BUILT_MODULE_NAME[3]="vmxnet" ++BUILT_MODULE_NAME[4]="vsock" + BUILT_MODULE_LOCATION[0]="vmblock/" + BUILT_MODULE_LOCATION[1]="vmci/" +-BUILT_MODULE_LOCATION[2]="vmhgfs/" +-BUILT_MODULE_LOCATION[3]="vmsync/" +-BUILT_MODULE_LOCATION[4]="vmxnet/" +-BUILT_MODULE_LOCATION[5]="vsock/" ++BUILT_MODULE_LOCATION[1]="vmhgfs/" ++BUILT_MODULE_LOCATION[2]="vmsync/" ++BUILT_MODULE_LOCATION[3]="vmxnet/" ++BUILT_MODULE_LOCATION[4]="vsock/" + DEST_MODULE_LOCATION[0]="/kernel/fs/vmblock" +-DEST_MODULE_LOCATION[1]="/kernel/drivers/misc" +-DEST_MODULE_LOCATION[2]="/kernel/fs/vmhgfs" +-DEST_MODULE_LOCATION[3]="/kernel/drivers/misc" +-DEST_MODULE_LOCATION[4]="/kernel/drivers/net" +-DEST_MODULE_LOCATION[5]="/kernel/net/vsock" ++DEST_MODULE_LOCATION[1]="/kernel/fs/vmhgfs" ++DEST_MODULE_LOCATION[2]="/kernel/drivers/misc" ++DEST_MODULE_LOCATION[3]="/kernel/drivers/net" ++DEST_MODULE_LOCATION[4]="/kernel/net/vsock" + AUTOINSTALL="YES" +diff --git a/modules/linux/vmblock/linux/control.c b/modules/linux/vmblock/linux/control.c +index 79716bd..ee64cdc 100644 +--- a/modules/linux/vmblock/linux/control.c ++++ b/modules/linux/vmblock/linux/control.c +@@ -208,9 +208,10 @@ SetupProcDevice(void) + VMBlockSetProcEntryOwner(controlProcMountpoint); + + /* Create /proc/fs/vmblock/dev */ +- controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, +- VMBLOCK_CONTROL_MODE, +- controlProcDirEntry); ++ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, ++ VMBLOCK_CONTROL_MODE, ++ controlProcDirEntry, ++ &ControlFileOps); + if (!controlProcEntry) { + Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); + remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); +@@ -218,7 +219,6 @@ SetupProcDevice(void) + return -EINVAL; + } + +- controlProcEntry->proc_fops = &ControlFileOps; + return 0; + } + +@@ -278,7 +278,7 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name + int (*blockOp)(const char *filename, // IN: block operation + const os_blocker_id_t blocker)) + { +- char *name; ++ struct filename *name; + int i; + int retval; + +@@ -287,13 +287,13 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name + return PTR_ERR(name); + } + +- for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { +- name[i] = '\0'; ++ for (i = strlen(name->name) - 1; i >= 0 && name->name[i] == '/'; i--) { ++ ((char *)name->name)[i] = '\0'; + } + +- retval = i < 0 ? -EINVAL : blockOp(name, blocker); ++ retval = i < 0 ? -EINVAL : blockOp(name->name, blocker); + +- putname(name); ++ __putname(name); + + return retval; + } +diff --git a/modules/linux/vmblock/linux/dentry.c b/modules/linux/vmblock/linux/dentry.c +index 05ea95a..d93b2f0 100644 +--- a/modules/linux/vmblock/linux/dentry.c ++++ b/modules/linux/vmblock/linux/dentry.c +@@ -31,8 +31,7 @@ + #include "filesystem.h" + #include "block.h" + +- +-static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); ++static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags); + + struct dentry_operations LinkDentryOps = { + .d_revalidate = DentryOpRevalidate, +@@ -60,7 +59,7 @@ struct dentry_operations LinkDentryOps = { + + static int + DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating +- struct nameidata *nd) // IN: lookup flags & intent ++ unsigned int flags) // IN: lookup flags + { + VMBlockInodeInfo *iinfo; + struct nameidata actualNd; +@@ -101,7 +100,7 @@ DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating + if (actualDentry && + actualDentry->d_op && + actualDentry->d_op->d_revalidate) { +- return actualDentry->d_op->d_revalidate(actualDentry, nd); ++ return actualDentry->d_op->d_revalidate(actualDentry, flags); + } + + if (compat_path_lookup(iinfo->name, 0, &actualNd)) { +diff --git a/modules/linux/vmblock/linux/inode.c b/modules/linux/vmblock/linux/inode.c +index 098c94c..ddd37f3 100644 +--- a/modules/linux/vmblock/linux/inode.c ++++ b/modules/linux/vmblock/linux/inode.c +@@ -36,7 +36,7 @@ + + /* Inode operations */ + static struct dentry *InodeOpLookup(struct inode *dir, +- struct dentry *dentry, struct nameidata *nd); ++ struct dentry *dentry, unsigned int flags); + static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); +@@ -75,7 +75,7 @@ static struct inode_operations LinkInodeOps = { + static struct dentry * + InodeOpLookup(struct inode *dir, // IN: parent directory's inode + struct dentry *dentry, // IN: dentry to lookup +- struct nameidata *nd) // IN: lookup intent and information ++ unsigned int flags) // IN: lookup flags + { + char *filename; + struct inode *inode; +diff --git a/modules/linux/vmhgfs/file.c b/modules/linux/vmhgfs/file.c +index 1033984..db62070 100644 +--- a/modules/linux/vmhgfs/file.c ++++ b/modules/linux/vmhgfs/file.c +@@ -25,6 +25,7 @@ + /* Must come before any kernel header file. */ + #include "driver-config.h" + ++#include <linux/aio.h> + #include <linux/errno.h> + #include <linux/module.h> + #include <linux/signal.h> +diff --git a/modules/linux/vmsync/sync.c b/modules/linux/vmsync/sync.c +index d05ccad..73baf8b 100644 +--- a/modules/linux/vmsync/sync.c ++++ b/modules/linux/vmsync/sync.c +@@ -162,7 +162,7 @@ VmSyncThawDevices(void *_state) // IN + cancel_delayed_work(&state->thawTask); + list_for_each_safe(cur, tmp, &state->devices) { + dev = list_entry(cur, VmSyncBlockDevice, list); +- if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) { ++ if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) { + thaw_bdev(dev->bdev, dev->sb); + atomic_dec(&gFreezeCount); + } +@@ -237,7 +237,7 @@ VmSyncAddPath(const VmSyncState *state, // IN + * the superblock is already frozen. + */ + if (inode->i_sb->s_bdev == NULL || +- inode->i_sb->s_frozen != SB_UNFROZEN) { ++ inode->i_sb->s_writers.frozen != SB_UNFROZEN) { + result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY; + compat_path_release(&nd); + goto exit; +@@ -303,7 +303,7 @@ VmSyncFreezeDevices(VmSyncState *state, // IN + const char __user *userPaths) // IN + { + int result = 0; +- char *paths; ++ struct filename *paths; + char *currPath; + char *nextSep; + struct list_head *cur, *tmp; +@@ -328,7 +328,8 @@ VmSyncFreezeDevices(VmSyncState *state, // IN + /* + * First, try to add all paths to the list of paths to be frozen. + */ +- currPath = paths; ++ currPath = __getname(); ++ strcpy(currPath, paths->name); + do { + nextSep = strchr(currPath, ':'); + if (nextSep != NULL) { +@@ -347,6 +348,7 @@ VmSyncFreezeDevices(VmSyncState *state, // IN + } + currPath = nextSep + 1; + } while (nextSep != NULL); ++ __putname(currPath); + + /* + * If adding all the requested paths worked, then freeze them. +@@ -371,6 +373,8 @@ VmSyncFreezeDevices(VmSyncState *state, // IN + compat_mutex_unlock(&state->lock); + compat_mutex_unlock(&gFreezeLock); + ++ __putname(paths); ++ + if (result == 0) { + compat_schedule_delayed_work(&state->thawTask, VMSYNC_THAW_TASK_DELAY); + } +@@ -670,9 +674,10 @@ init_module(void) + } + + /* Create /proc/driver/vmware-sync */ +- controlProcEntry = create_proc_entry("driver/vmware-sync", +- S_IFREG | S_IRUSR | S_IRGRP | S_IROTH, +- NULL); ++ controlProcEntry = proc_create("driver/vmware-sync", ++ S_IFREG | S_IRUSR | S_IRGRP | S_IROTH, ++ NULL, ++ &VmSyncFileOps); + if (!controlProcEntry) { + printk(KERN_ERR "vmsync: could not create /proc/driver/vmware-sync\n"); + kmem_cache_destroy(gSyncStateCache); +@@ -680,7 +685,6 @@ init_module(void) + return -EINVAL; + } + +- controlProcEntry->proc_fops = &VmSyncFileOps; + return 0; + } + ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/open-vm-tools.git/commitdiff/01d05bd9a3f5751b6e862fc5da0d36bd30e6ee21 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit