From 923f5232c34de02a87595fecd4a18b5ae2c48ecb3b75beb73f73b73073476c2f Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Mon, 7 Sep 2015 09:06:20 +0000 Subject: [PATCH] Accepting request 329232 from home:mlatimer:branches:Virtualization:VMware Update to open-vm-tools 10.0.0 OBS-URL: https://build.opensuse.org/request/show/329232 OBS-URL: https://build.opensuse.org/package/show/Virtualization:VMware/open-vm-tools?expand=0&rev=312 --- 0001-Fix-vmxnet-module-on-kernels-3.16.patch | 74 --- ...alias-to-d_u.d_alias-for-kernel-3.18.patch | 42 -- 0003-Fix-f_dentry-msghdr-kernel-3.19.patch | 429 ------------------ 0004-vmhgfs-bdi-kernel-4.0.patch | 77 ---- open-vm-tools-10.0.0-85a99f4.tar.gz | 3 + open-vm-tools-9.10.2-2822639.tar.gz | 3 - open-vm-tools.changes | 36 ++ open-vm-tools.spec | 46 +- vmtoolsd | 14 +- xutils-add-cstring.patch | 12 - 10 files changed, 61 insertions(+), 675 deletions(-) delete mode 100644 0001-Fix-vmxnet-module-on-kernels-3.16.patch delete mode 100644 0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch delete mode 100644 0003-Fix-f_dentry-msghdr-kernel-3.19.patch delete mode 100644 0004-vmhgfs-bdi-kernel-4.0.patch create mode 100644 open-vm-tools-10.0.0-85a99f4.tar.gz delete mode 100644 open-vm-tools-9.10.2-2822639.tar.gz delete mode 100644 xutils-add-cstring.patch diff --git a/0001-Fix-vmxnet-module-on-kernels-3.16.patch b/0001-Fix-vmxnet-module-on-kernels-3.16.patch deleted file mode 100644 index 92f7239..0000000 --- a/0001-Fix-vmxnet-module-on-kernels-3.16.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 08836a47c56b47b658025e41a20027c5d915f836 Mon Sep 17 00:00:00 2001 -From: "Scott M. Kroll" -Date: Fri, 15 Aug 2014 10:40:38 -0400 -Subject: [PATCH 1/3] Fix vmxnet module on kernels >= 3.16 - -* Add compat check for ethtool_ops in net_device struct. -* SET_ETHTOOL_OPS is no longer defined, but can be manually. ---- - modules/linux/shared/compat_netdevice.h | 4 ++++ - modules/linux/vmxnet/vmxnet.c | 13 ++++++++----- - 2 files changed, 12 insertions(+), 5 deletions(-) - -diff --git a/modules/linux/shared/compat_netdevice.h b/modules/linux/shared/compat_netdevice.h -index 3aec25b..a65d59b 100644 ---- a/modules/linux/shared/compat_netdevice.h -+++ b/modules/linux/shared/compat_netdevice.h -@@ -337,4 +337,8 @@ typedef netdev_features_t compat_netdev_features_t; - typedef u32 compat_netdev_features_t; - #endif - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) || defined(SET_ETHTOOL_OPS) -+#define VMW_HAVE_ETHTOOL_OPS 1 -+#endif -+ - #endif /* __COMPAT_NETDEVICE_H__ */ -diff --git a/modules/linux/vmxnet/vmxnet.c b/modules/linux/vmxnet/vmxnet.c -index 33afb9b..40abde5 100644 ---- a/modules/linux/vmxnet/vmxnet.c -+++ b/modules/linux/vmxnet/vmxnet.c -@@ -279,8 +279,7 @@ vmxnet_change_mtu(struct net_device *dev, int new_mtu) - - #endif - -- --#ifdef SET_ETHTOOL_OPS -+#ifdef VMW_HAVE_ETHTOOL_OPS - /* - *---------------------------------------------------------------------------- - * -@@ -526,7 +525,7 @@ vmxnet_ethtool_ops = { - }; - - --#else /* !defined(SET_ETHTOOL_OPS) */ -+#else /* !defined(VMW_HAVE_ETHTOOL_OPS) */ - - - /* -@@ -739,7 +738,7 @@ vmxnet_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) - } - return -EOPNOTSUPP; - } --#endif /* SET_ETHTOOL_OPS */ -+#endif /* !defined(VMW_HAVE_ETHTOOL_OPS) */ - - - /* -@@ -1142,8 +1141,12 @@ vmxnet_probe_device(struct pci_dev *pdev, // IN: vmxnet PCI device - dev->watchdog_timeo = VMXNET_WATCHDOG_TIMEOUT; - #endif - --#ifdef SET_ETHTOOL_OPS -+#ifdef VMW_HAVE_ETHTOOL_OPS -+# ifdef SET_ETHTOOL_OPS - SET_ETHTOOL_OPS(dev, &vmxnet_ethtool_ops); -+# else -+ dev->ethtool_ops = &vmxnet_ethtool_ops; -+# endif - #else - dev->do_ioctl = vmxnet_ioctl; - #endif --- -2.3.4 - diff --git a/0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch b/0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch deleted file mode 100644 index ded67a0..0000000 --- a/0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 8df98f3c779fa43d073a42e82bd18cf28c2bd4af Mon Sep 17 00:00:00 2001 -From: Wendell Smith -Date: Sat, 7 Feb 2015 15:42:13 -0500 -Subject: [PATCH 2/3] Fix d_alias to d_u.d_alias for kernel 3.18 - ---- - a/modules/linux/vmhgfs/inode.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c -=================================================================== ---- open-vm-tools-9.10.0-2476743.orig/modules/linux/vmhgfs/inode.c -+++ open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c -@@ -1917,7 +1917,12 @@ HgfsPermission(struct inode *inode, - p, - #endif - &inode->i_dentry, -- d_alias) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 1) -+ d_u.d_alias -+#else -+ d_alias -+#endif -+ ) { - int dcount = hgfs_d_count(dentry); - if (dcount) { - LOG(4, ("Found %s %d \n", dentry->d_name.name, dcount)); -@@ -1970,7 +1975,13 @@ HgfsPermission(struct inode *inode, - /* Find a dentry with valid d_count. Refer bug 587879. */ - list_for_each(pos, &inode->i_dentry) { - int dcount; -- struct dentry *dentry = list_entry(pos, struct dentry, d_alias); -+ struct dentry *dentry = list_entry(pos, struct dentry, -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 1) -+ d_u.d_alias -+#else -+ d_alias -+#endif -+ ); - dcount = hgfs_d_count(dentry); - if (dcount) { - LOG(4, ("Found %s %d \n", (dentry)->d_name.name, dcount)); diff --git a/0003-Fix-f_dentry-msghdr-kernel-3.19.patch b/0003-Fix-f_dentry-msghdr-kernel-3.19.patch deleted file mode 100644 index b63521d..0000000 --- a/0003-Fix-f_dentry-msghdr-kernel-3.19.patch +++ /dev/null @@ -1,429 +0,0 @@ -From 61751db8cd4679fc76034a5d1f99df6c64c48de6 Mon Sep 17 00:00:00 2001 -From: lotan -Date: Mon, 30 Mar 2015 08:58:56 +0200 -Subject: [PATCH 3/3] Make vmhgfs work on kernel 3.19. - ---- - modules/linux/vmhgfs/dir.c | 35 ++++++------ - modules/linux/vmhgfs/file.c | 65 +++++++++++----------- - modules/linux/vmhgfs/fsutil.c | 3 +- - modules/linux/vmhgfs/shared/compat_dentry.h | 10 ++++ - 4 files changed, 63 insertions(+), 50 deletions(-) - create mode 100644 open-vm-tools/modules/linux/vmhgfs/shared/compat_dentry.h - -diff --git a/modules/linux/vmhgfs/dir.c b/modules/linux/vmhgfs/dir.c -index 809611a..c6a87bd 100644 ---- a/modules/linux/vmhgfs/dir.c -+++ b/modules/linux/vmhgfs/dir.c -@@ -31,6 +31,7 @@ - #include "compat_kernel.h" - #include "compat_slab.h" - #include "compat_mutex.h" -+#include "shared/compat_dentry.h" - - #include "cpName.h" - #include "hgfsEscape.h" -@@ -414,7 +415,7 @@ HgfsPackDirOpenRequest(struct file *file, // IN: File pointer for this open - - /* Build full name to send to server. */ - if (HgfsBuildPath(name, req->bufferSize - (requestSize - 1), -- file->f_dentry) < 0) { -+ DENTRY(file)) < 0) { - LOG(4, (KERN_DEBUG "VMware hgfs: HgfsPackDirOpenRequest: build path failed\n")); - return -EINVAL; - } -@@ -560,8 +561,8 @@ HgfsPrivateDirRelease(struct file *file, // IN: File for the dir getting relea - int result = 0; - - ASSERT(file); -- ASSERT(file->f_dentry); -- ASSERT(file->f_dentry->d_sb); -+ ASSERT(DENTRY(file)); -+ ASSERT(DENTRY(file)->d_sb); - - LOG(6, (KERN_DEBUG "VMware hgfs: HgfsPrivateDirRelease: close fh %u\n", handle)); - -@@ -704,7 +705,7 @@ HgfsDirLlseek(struct file *file, - loff_t offset, - int origin) - { -- struct dentry *dentry = file->f_dentry; -+ struct dentry *dentry = DENTRY(file); - struct inode *inode = dentry->d_inode; - compat_mutex_t *mtx; - -@@ -853,7 +854,7 @@ HgfsReaddirRefreshEntries(struct file *file) // IN: File pointer for this ope - } - - LOG(6, (KERN_DEBUG "VMware hgfs: %s: error: stale handle (%s) return %d)\n", -- __func__, file->f_dentry->d_name.name, result)); -+ __func__, DENTRY(file)->d_name.name, result)); - return result; - } - -@@ -988,9 +989,9 @@ HgfsReaddirNextEntry(struct file *file, // IN: file - char *fileName = NULL; - int result; - -- ASSERT(file->f_dentry->d_inode->i_sb); -+ ASSERT(DENTRY(file)->d_inode->i_sb); - -- si = HGFS_SB_TO_COMMON(file->f_dentry->d_inode->i_sb); -+ si = HGFS_SB_TO_COMMON(DENTRY(file)->d_inode->i_sb); - *entryIgnore = FALSE; - - /* -@@ -1079,18 +1080,18 @@ HgfsReaddirNextEntry(struct file *file, // IN: file - */ - if (!strncmp(entryName, ".", sizeof ".")) { - if (!dotAndDotDotIgnore) { -- *entryIno = file->f_dentry->d_inode->i_ino; -+ *entryIno = DENTRY(file)->d_inode->i_ino; - } else { - *entryIgnore = TRUE; - } - } else if (!strncmp(entryName, "..", sizeof "..")) { - if (!dotAndDotDotIgnore) { -- *entryIno = compat_parent_ino(file->f_dentry); -+ *entryIno = compat_parent_ino(DENTRY(file)); - } else { - *entryIgnore = TRUE; - } - } else { -- *entryIno = HgfsGetFileInode(&entryAttrs, file->f_dentry->d_inode->i_sb); -+ *entryIno = HgfsGetFileInode(&entryAttrs, DENTRY(file)->d_inode->i_sb); - } - - if (*entryIgnore) { -@@ -1170,16 +1171,16 @@ HgfsDoReaddir(struct file *file, // IN: - ASSERT(filldirCtx); - - if (!file || -- !(file->f_dentry) || -- !(file->f_dentry->d_inode)) { -+ !(DENTRY(file)) || -+ !(DENTRY(file)->d_inode)) { - LOG(4, (KERN_DEBUG "VMware hgfs: HgfsReaddir: null input\n")); - return -EFAULT; - } - - LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s, inum %lu, pos %Lu)\n", - __func__, -- file->f_dentry->d_name.name, -- file->f_dentry->d_inode->i_ino, -+ DENTRY(file)->d_name.name, -+ DENTRY(file)->d_inode->i_ino, - *currentPos)); - - /* -@@ -1294,7 +1295,7 @@ HgfsReaddir(struct file *file, // IN: - /* If either dot and dotdot are filled in for us we can exit. */ - if (!dir_emit_dots(file, ctx)) { - LOG(6, (KERN_DEBUG "VMware hgfs: %s: dir_emit_dots(%s, @ %Lu)\n", -- __func__, file->f_dentry->d_name.name, ctx->pos)); -+ __func__, DENTRY(file)->d_name.name, ctx->pos)); - return 0; - } - -@@ -1464,8 +1465,8 @@ HgfsDirRelease(struct inode *inode, // IN: Inode that the file* points to - - ASSERT(inode); - ASSERT(file); -- ASSERT(file->f_dentry); -- ASSERT(file->f_dentry->d_sb); -+ ASSERT(DENTRY(file)); -+ ASSERT(DENTRY(file)->d_sb); - - handle = FILE_GET_FI_P(file)->handle; - -diff --git a/modules/linux/vmhgfs/file.c b/modules/linux/vmhgfs/file.c -index bbde3f4..39502d0 100644 ---- a/modules/linux/vmhgfs/file.c -+++ b/modules/linux/vmhgfs/file.c -@@ -32,6 +32,7 @@ - #include "compat_fs.h" - #include "compat_kernel.h" - #include "compat_slab.h" -+#include "shared/compat_dentry.h" - - /* Must be after compat_fs.h */ - #if defined VMW_USE_AIO -@@ -384,7 +385,7 @@ HgfsPackOpenRequest(struct inode *inode, // IN: Inode of the file to open - /* Build full name to send to server. */ - if (HgfsBuildPath(name, - req->bufferSize - (requestSize - 1), -- file->f_dentry) < 0) { -+ DENTRY(file)) < 0) { - LOG(4, (KERN_DEBUG "VMware hgfs: HgfsPackOpenRequest: build path " - "failed\n")); - return -EINVAL; -@@ -523,8 +524,8 @@ HgfsOpen(struct inode *inode, // IN: Inode of the file to open - ASSERT(inode); - ASSERT(inode->i_sb); - ASSERT(file); -- ASSERT(file->f_dentry); -- ASSERT(file->f_dentry->d_inode); -+ ASSERT(DENTRY(file)); -+ ASSERT(DENTRY(file)->d_inode); - - iinfo = INODE_GET_II_P(inode); - -@@ -605,7 +606,7 @@ HgfsOpen(struct inode *inode, // IN: Inode of the file to open - * This is not the root of our file system so there should always - * be a parent. - */ -- ASSERT(file->f_dentry->d_parent); -+ ASSERT(DENTRY(file)->d_parent); - - /* - * Here we obtain a reference on the parent to make sure it doesn't -@@ -620,10 +621,10 @@ HgfsOpen(struct inode *inode, // IN: Inode of the file to open - * We could do this if we were willing to give up support for - * O_EXCL on 2.4 kernels. - */ -- dparent = dget(file->f_dentry->d_parent); -+ dparent = dget(DENTRY(file)->d_parent); - iparent = dparent->d_inode; - -- HgfsSetUidGid(iparent, file->f_dentry, -+ HgfsSetUidGid(iparent, DENTRY(file), - current_fsuid(), current_fsgid()); - - dput(dparent); -@@ -683,7 +684,7 @@ out: - * forcing a revalidate on one will not force it on any others. - */ - if (result != 0 && iinfo->createdAndUnopened == TRUE) { -- HgfsDentryAgeForce(file->f_dentry); -+ HgfsDentryAgeForce(DENTRY(file)); - } - return result; - } -@@ -772,13 +773,13 @@ HgfsFileRead(struct kiocb *iocb, // IN: I/O control block - - ASSERT(iocb); - ASSERT(iocb->ki_filp); -- ASSERT(iocb->ki_filp->f_dentry); -+ ASSERT(DENTRY(iocb->ki_filp)); - ASSERT(iov); - - pos = HGFS_IOCB_TO_POS(iocb, offset); - iovSegs = HGFS_IOV_TO_SEGS(iov, numSegs); - -- readDentry = iocb->ki_filp->f_dentry; -+ readDentry = DENTRY(iocb->ki_filp); - - LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n", - __func__, readDentry->d_parent->d_name.name, -@@ -882,13 +883,13 @@ HgfsFileWrite(struct kiocb *iocb, // IN: I/O control block - - ASSERT(iocb); - ASSERT(iocb->ki_filp); -- ASSERT(iocb->ki_filp->f_dentry); -+ ASSERT(DENTRY(iocb->ki_filp)); - ASSERT(iov); - - pos = HGFS_IOCB_TO_POS(iocb, offset); - iovSegs = HGFS_IOV_TO_SEGS(iov, numSegs); - -- writeDentry = iocb->ki_filp->f_dentry; -+ writeDentry = DENTRY(iocb->ki_filp); - - LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n", - __func__, writeDentry->d_parent->d_name.name, -@@ -951,7 +952,7 @@ HgfsRead(struct file *file, // IN: File to read from - int result; - - ASSERT(file); -- ASSERT(file->f_dentry); -+ ASSERT(DENTRY(file)); - ASSERT(buf); - ASSERT(offset); - -@@ -959,7 +960,7 @@ HgfsRead(struct file *file, // IN: File to read from - __func__, file->f_dentry->d_parent->d_name.name, - file->f_dentry->d_name.name, count, (long long) *offset)); - -- result = HgfsRevalidate(file->f_dentry); -+ result = HgfsRevalidate(DENTRY(file)); - if (result) { - LOG(4, (KERN_DEBUG "VMware hgfs: HgfsRead: invalid dentry\n")); - goto out; -@@ -1002,8 +1003,8 @@ HgfsWrite(struct file *file, // IN: File to write to - int result; - - ASSERT(file); -- ASSERT(file->f_dentry); -- ASSERT(file->f_dentry->d_inode); -+ ASSERT(DENTRY(file)); -+ ASSERT(DENTRY(file)->d_inode); - ASSERT(buf); - ASSERT(offset); - -@@ -1011,7 +1012,7 @@ HgfsWrite(struct file *file, // IN: File to write to - __func__, file->f_dentry->d_parent->d_name.name, - file->f_dentry->d_name.name, count, (long long) *offset)); - -- result = HgfsRevalidate(file->f_dentry); -+ result = HgfsRevalidate(DENTRY(file)); - if (result) { - LOG(4, (KERN_DEBUG "VMware hgfs: HgfsWrite: invalid dentry\n")); - goto out; -@@ -1051,7 +1052,7 @@ HgfsSeek(struct file *file, // IN: File to seek - loff_t result = -1; - - ASSERT(file); -- ASSERT(file->f_dentry); -+ ASSERT(DENTRY(file)); - - LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %u, %lld, %d)\n", - __func__, -@@ -1059,7 +1060,7 @@ HgfsSeek(struct file *file, // IN: File to seek - file->f_dentry->d_name.name, - FILE_GET_FI_P(file)->handle, offset, origin)); - -- result = (loff_t) HgfsRevalidate(file->f_dentry); -+ result = (loff_t) HgfsRevalidate(DENTRY(file)); - if (result) { - LOG(6, (KERN_DEBUG "VMware hgfs: %s: invalid dentry\n", __func__)); - goto out; -@@ -1143,8 +1144,8 @@ HgfsFlush(struct file *file // IN: file to flush - int ret = 0; - - LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n", -- __func__, file->f_dentry->d_parent->d_name.name, -- file->f_dentry->d_name.name)); -+ __func__, DENTRY(file)->d_parent->d_name.name, -+ DENTRY(file)->d_name.name)); - - if ((file->f_mode & FMODE_WRITE) == 0) { - goto exit; -@@ -1157,7 +1158,7 @@ HgfsFlush(struct file *file // IN: file to flush - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) - ret = vfs_fsync(file, 0); - #else -- ret = HgfsDoFsync(file->f_dentry->d_inode); -+ ret = HgfsDoFsync(DENTRY(file)->d_inode); - #endif - - exit: -@@ -1215,13 +1216,13 @@ HgfsFsync(struct file *file, // IN: File we operate on - - LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %lld, %lld, %d)\n", - __func__, -- file->f_dentry->d_parent->d_name.name, -- file->f_dentry->d_name.name, -+ DENTRY(file)->d_parent->d_name.name, -+ DENTRY(file)->d_name.name, - startRange, endRange, - datasync)); - - /* Flush writes to the server and return any errors */ -- inode = file->f_dentry->d_inode; -+ inode = DENTRY(file)->d_inode; - #if defined VMW_FSYNC_31 - ret = filemap_write_and_wait_range(inode->i_mapping, startRange, endRange); - #else -@@ -1261,14 +1262,14 @@ HgfsMmap(struct file *file, // IN: File we operate on - - ASSERT(file); - ASSERT(vma); -- ASSERT(file->f_dentry); -+ ASSERT(DENTRY(file)); - - LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n", - __func__, - file->f_dentry->d_parent->d_name.name, - file->f_dentry->d_name.name)); - -- result = HgfsRevalidate(file->f_dentry); -+ result = HgfsRevalidate(DENTRY(file)); - if (result) { - LOG(4, (KERN_DEBUG "VMware hgfs: %s: invalid dentry\n", __func__)); - goto out; -@@ -1309,8 +1310,8 @@ HgfsRelease(struct inode *inode, // IN: Inode that this file points to - - ASSERT(inode); - ASSERT(file); -- ASSERT(file->f_dentry); -- ASSERT(file->f_dentry->d_sb); -+ ASSERT(DENTRY(file)); -+ ASSERT(DENTRY(file)->d_sb); - - handle = FILE_GET_FI_P(file)->handle; - LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %u)\n", -@@ -1443,14 +1444,14 @@ HgfsSendfile(struct file *file, // IN: File to read from - ssize_t result; - - ASSERT(file); -- ASSERT(file->f_dentry); -+ ASSERT(DENTRY(file)); - ASSERT(target); - ASSERT(offset); - ASSERT(actor); - - LOG(6, (KERN_DEBUG "VMware hgfs: HgfsSendfile: was called\n")); - -- result = HgfsRevalidate(file->f_dentry); -+ result = HgfsRevalidate(DENTRY(file)); - if (result) { - LOG(4, (KERN_DEBUG "VMware hgfs: HgfsSendfile: invalid dentry\n")); - goto out; -@@ -1497,7 +1498,7 @@ HgfsSpliceRead(struct file *file, // IN: File to read from - ssize_t result; - - ASSERT(file); -- ASSERT(file->f_dentry); -+ ASSERT(DENTRY(file)); - - LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %lu@%Lu)\n", - __func__, -@@ -1505,7 +1506,7 @@ HgfsSpliceRead(struct file *file, // IN: File to read from - file->f_dentry->d_name.name, - (unsigned long) len, (unsigned long long) *offset)); - -- result = HgfsRevalidate(file->f_dentry); -+ result = HgfsRevalidate(DENTRY(file)); - if (result) { - LOG(4, (KERN_DEBUG "VMware hgfs: %s: invalid dentry\n", __func__)); - goto out; -diff --git a/modules/linux/vmhgfs/fsutil.c b/modules/linux/vmhgfs/fsutil.c -index 5023324..a2e794c 100644 ---- a/modules/linux/vmhgfs/fsutil.c -+++ b/modules/linux/vmhgfs/fsutil.c -@@ -36,6 +36,7 @@ - #include "compat_sched.h" - #include "compat_slab.h" - #include "compat_spinlock.h" -+#include "shared/compat_dentry.h" - - #include "vm_assert.h" - #include "cpName.h" -@@ -1924,7 +1925,7 @@ HgfsCreateFileInfo(struct file *file, // IN: File pointer to attach to - - ASSERT(file); - -- inodeInfo = INODE_GET_II_P(file->f_dentry->d_inode); -+ inodeInfo = INODE_GET_II_P(DENTRY(file)->d_inode); - ASSERT(inodeInfo); - - /* Get the mode of the opened file. */ -diff --git a/modules/linux/vmhgfs/shared/compat_dentry.h b/modules/linux/vmhgfs/shared/compat_dentry.h -new file mode 100644 -index 0000000..dd53760 ---- /dev/null -+++ b/modules/linux/vmhgfs/shared/compat_dentry.h -@@ -0,0 +1,10 @@ -+#ifndef __COMPAT_DENTRY_H__ -+# define __COMPAT_DENTRY_H__ -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) -+# define DENTRY(file) (file->f_path.dentry) -+#else -+# define DENTRY(file) (file->f_dentry) -+#endif -+ -+#endif /* __COMPAT_DENTRY_H__ */ --- -2.3.4 - diff --git a/0004-vmhgfs-bdi-kernel-4.0.patch b/0004-vmhgfs-bdi-kernel-4.0.patch deleted file mode 100644 index 02a039e..0000000 --- a/0004-vmhgfs-bdi-kernel-4.0.patch +++ /dev/null @@ -1,77 +0,0 @@ -This patch fixes a nasty bug with vmhgfs on kernel 4.x: files modified -on shared folders becomes 0 bytes on host. - -(Patch found at https://github.com/rasa/vmware-tools-patches) - - -Index: open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/filesystem.c -=================================================================== ---- open-vm-tools-9.10.0-2476743.orig/modules/linux/vmhgfs/filesystem.c -+++ open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/filesystem.c -@@ -386,8 +386,20 @@ HgfsReadSuper(struct super_block *sb, // - return PTR_ERR(si); - } - HGFS_SET_SB_TO_COMMON(sb, si); -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) -+ result = bdi_setup_and_register(&si->bdi, "vmhgfs"); -+ if (result) { -+ kfree(si->shareName); -+ kfree(si); -+ } -+#endif -+ - sb->s_magic = HGFS_SUPER_MAGIC; - sb->s_op = &HgfsSuperOperations; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) -+ sb->s_bdi = &si->bdi; -+#endif - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) - sb->s_d_op = &HgfsDentryOperations; -@@ -427,6 +439,9 @@ HgfsReadSuper(struct super_block *sb, // - exit: - if (result) { - dput(rootDentry); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) -+ bdi_destroy(&si->bdi); -+#endif - kfree(si->shareName); - kfree(si); - } -Index: open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/module.h -=================================================================== ---- open-vm-tools-9.10.0-2476743.orig/modules/linux/vmhgfs/module.h -+++ open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/module.h -@@ -29,6 +29,7 @@ - #include "driver-config.h" - - #include -+#include - #include "compat_fs.h" - #include "compat_semaphore.h" - #include "compat_slab.h" -@@ -130,6 +131,9 @@ typedef struct HgfsSuperInfo { - uint32 ttl; /* Maximum dentry age (in ticks). */ - char *shareName; /* Mounted share name. */ - size_t shareNameLen; /* To avoid repeated strlen() calls. */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) -+ struct backing_dev_info bdi; -+#endif - } HgfsSuperInfo; - - /* -Index: open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/super.c -=================================================================== ---- open-vm-tools-9.10.0-2476743.orig/modules/linux/vmhgfs/super.c -+++ open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/super.c -@@ -152,6 +152,9 @@ HgfsPutSuper(struct super_block *sb) // - - si = HGFS_SB_TO_COMMON(sb); - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) -+ bdi_destroy(&si->bdi); -+#endif - kfree(si->shareName); - kfree(si); - } diff --git a/open-vm-tools-10.0.0-85a99f4.tar.gz b/open-vm-tools-10.0.0-85a99f4.tar.gz new file mode 100644 index 0000000..e463076 --- /dev/null +++ b/open-vm-tools-10.0.0-85a99f4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dde879e4847010f62c86a0204492b4d4d08db1d64490206885e119229eb6530d +size 4283765 diff --git a/open-vm-tools-9.10.2-2822639.tar.gz b/open-vm-tools-9.10.2-2822639.tar.gz deleted file mode 100644 index 79c86e0..0000000 --- a/open-vm-tools-9.10.2-2822639.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6c5a7f88b597585a273fb9918fdb9201c79e30731a765fbec1acda14d1f3d74c -size 4044062 diff --git a/open-vm-tools.changes b/open-vm-tools.changes index 47e044e..21d4c42 100644 --- a/open-vm-tools.changes +++ b/open-vm-tools.changes @@ -1,3 +1,39 @@ +------------------------------------------------------------------- +Thu Sep 3 21:51:58 UTC 2015 - mlatimer@suse.com + +- Update to open-vm-tools-10.0.0-85a99f4 + + Common versioning + + Quiesced snapshots enhancements for Linux guests running IO workload + + Shared Folders (Linux kernel 4.0.0 and higher only) + + ESXi Serviceability + + GuestInfo Enhancements + + Internationalization, with support for: + + English + + French + + German + + Spanish + + Italian + + Japanese + + Korean + + Simplified Chinese + + Traditional Chinese + + Compatibility with all supported versions of VMware vSphere, VMware + Workstation 12.0 and VMware Fusion 8.0 +- Drop upstream patches included (or not necessary) in 10.0.0: + - 0001-Fix-vmxnet-module-on-kernels-3.16.patch + - 0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch + - 0003-Fix-f_dentry-msghdr-kernel-3.19.patch + - 0004-vmhgfs-bdi-kernel-4.0.patch + - xutils-add-cstring.patch +- Remove vmhgfs define to ensure vmhgfs is always built +- Only build kernel modules for versions <= openSUSE 13.2 + +------------------------------------------------------------------- +Wed Sep 2 22:39:25 UTC 2015 - mlatimer@suse.com + +- Do not attempt to start vmware-vmblock-fuse if vmware-vmblock-fuse + (included with the -desktop package) is not installed (bsc#943236) + ------------------------------------------------------------------- Wed Aug 12 06:54:48 UTC 2015 - dimstar@opensuse.org diff --git a/open-vm-tools.spec b/open-vm-tools.spec index 36f8e0c..713d5a3 100644 --- a/open-vm-tools.spec +++ b/open-vm-tools.spec @@ -1,7 +1,7 @@ # # spec file for package open-vm-tools # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2010 Dominique Leuenberger, Amsterdam, Netherlands. # # All modifications and additions to the file contributed by third parties @@ -28,10 +28,6 @@ %bcond_with deploypkg %endif -# The vmhgfs module is currently built for all versions -# (Shared Folders are not supported under ESX/ESXi, so this driver is not necessary for SLES11/12) -%define vmhgfs vmhgfs - # exclude AMD PCnet32 LANCE pci.id from Supplements list [bnc#397554] %define __find_supplements sh -c '/usr/lib/rpm/find-supplements %{name} | grep -v pci:v00001022d00002000' @@ -50,22 +46,26 @@ %define vm_modules1210 vmxnet %endif -# Modules that have to be build up to version 12.3 (Last checked on 2012-02-05 with kernel 3.2.0) -%define vm_modules %{?vm_modules1230} %{?vmhgfs} %{?vm_modules1210} %{?vm_modules1220} +# Modules are only built for versions <= openSUSE 13.2 +# The vmhgfs module is currently built for all versions <= openSUSE 13.2 +# Beginning with the 4.0.0 kernel, the vmhgfs module is replaced by the user space vmhgfs-fuse client +%if 0%{?suse_version} <= 1320 +%define vm_modules vmhgfs %{?vm_modules1230} %{?vm_modules1210} %{?vm_modules1220} +%endif # X modules are lower prio upstream and once in a while fail. Offer an easy way to enable/disable them. %define with_X 1 Name: open-vm-tools %define tarname open-vm-tools -Version: 9.10.2 +Version: 10.0.0 Release: 0 -%define svn_rev 2822639 +%define svn_rev 85a99f4 Summary: Open Virtual Machine Tools License: BSD-3-Clause and GPL-2.0 and LGPL-2.1 Group: System/Emulators/PC -Url: http://open-vm-tools.sourceforge.net/ -Source: http://sourceforge.net/projects/open-vm-tools/files/open-vm-tools/stable-9.10.x/%{tarname}-%{version}-%{svn_rev}.tar.gz +Url: https://github.com/vmware/open-vm-tools +Source: https://github.com/vmware/open-vm-tools/archive/%{tarname}-%{version}-%{svn_rev}.tar.gz Source1: vmtoolsd Source2: vmtoolsd.service Source3: vmware-user-autostart.desktop @@ -106,11 +106,9 @@ BuildRequires: xorg-x11-devel %if 0%{?suse_version} >= 1230 BuildRequires: procps-devel %endif -%if "%{?vmhgfs}" -# Fuse is optional and enables vmblock-fuse +# vmhgfs is always built so fuse is no longer optional BuildRequires: fuse-devel %endif -%endif Requires: net-tools Requires: tar %if 0%{?suse_version} >= 1310 @@ -127,12 +125,7 @@ Supplements: modalias(pci:v000015ADd*sv*sd*bc*sc*i*) Requires(pre): %fillup_prereq Requires(pre): %insserv_prereq ExclusiveArch: %ix86 x86_64 -Patch0: xutils-add-cstring.patch -Patch1: enable-gcc46+.patch -Patch2: 0001-Fix-vmxnet-module-on-kernels-3.16.patch -Patch3: 0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch -Patch4: 0003-Fix-f_dentry-msghdr-kernel-3.19.patch -Patch5: 0004-vmhgfs-bdi-kernel-4.0.patch +Patch0: enable-gcc46+.patch %if %{KMP} %suse_kernel_module_package -n vmware-guest -p %{SOURCE98} xen um @@ -230,15 +223,9 @@ if you intend to create own plugins for vmtoolsd. %prep %setup -q -n %{tarname}-%{version}-%{svn_rev} -chmod -x AUTHORS COPYING ChangeLog NEWS README # fix for an rpmlint warning regarding wrong line feeds sed -i -e "s/\r//" README %patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 %build %if ! %{KMP} @@ -387,12 +374,8 @@ rm %{buildroot}%{_sysconfdir}/xdg/autostart/vmware-user.desktop install -D -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/modprobe.d/50-vmnics.conf %endif -%if "%{?vmhgfs}" # fix a link pointing to the buildroot for mount.vmhgfs ( cd %{buildroot}/sbin; rm mount.vmhgfs; ln -s ..%{_sbindir}/mount.vmhgfs ) -%else -find %{buildroot} -name '*vmhgfs*' -delete -print -%endif %endif @@ -476,16 +459,15 @@ rm -rf %{buildroot} %{_libdir}/%{name}/plugins/vmsvc/libvmbackup.so %{_libdir}/%{name}/plugins/common/libhgfsServer.so %{_libdir}/%{name}/plugins/common/libvix.so +%{_bindir}/vmhgfs-fuse %{_bindir}/vmware-checkvm %{_bindir}/vmware-hgfsclient %{_bindir}/vmware-rpctool %{_bindir}/vmware-toolbox-cmd %{_bindir}/vmware-xferlogs %{_bindir}/vm-support -%if "%{?vmhgfs}" %{_sbindir}/mount.vmhgfs /sbin/mount.vmhgfs -%endif %config(noreplace) %{_sysconfdir}/pam.d/vmtoolsd %dir %{_sysconfdir}/vmware-tools %dir %{_sysconfdir}/vmware-tools/scripts diff --git a/vmtoolsd b/vmtoolsd index 4feb6fb..47b13e4 100644 --- a/vmtoolsd +++ b/vmtoolsd @@ -81,12 +81,14 @@ case "$1" in if [ ! -d /tmp/VMwareDnD ]; then mkdir -m 1777 /tmp/VMwareDnD fi - if [ ! -d /var/run/vmblock-fuse ]; then - mkdir -m 555 /var/run/vmblock-fuse + if [ -x /usr/bin/vmware-vmblock-fuse ]; then + if [ ! -d /var/run/vmblock-fuse ]; then + mkdir -m 555 /var/run/vmblock-fuse + fi + /usr/bin/vmware-vmblock-fuse \ + -o subtype=vmware-vmblock,default_permissions,allow_other \ + /var/run/vmblock-fuse fi - /usr/bin/vmware-vmblock-fuse \ - -o subtype=vmware-vmblock,default_permissions,allow_other \ - /var/run/vmblock-fuse modprobe $VMBALLOON ## Start daemon with startproc(8). If this fails ## the return value is set appropriately by startproc. @@ -107,7 +109,7 @@ case "$1" in /sbin/killproc -SIGUSR1 $VMTOOLSUSER_BIN fi /sbin/killproc -TERM $VMTOOLSD_BIN - umount /var/run/vmblock-fuse || : + /bin/mountpoint -q /var/run/vmblock-fuse && umount /var/run/vmblock-fuse || : modprobe -r $VMBALLOON || : # Remember status and be verbose diff --git a/xutils-add-cstring.patch b/xutils-add-cstring.patch deleted file mode 100644 index 7a11d12..0000000 --- a/xutils-add-cstring.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: open-vm-tools-9.10.0-2476743/services/plugins/dndcp/xutils/xutils.cc -=================================================================== ---- open-vm-tools-9.10.0-2476743.orig/services/plugins/dndcp/xutils/xutils.cc -+++ open-vm-tools-9.10.0-2476743/services/plugins/dndcp/xutils/xutils.cc -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include - - extern "C" { - #include "vm_assert.h"