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
This commit is contained in:
parent
1d68c50f86
commit
923f5232c3
@ -1,74 +0,0 @@
|
||||
From 08836a47c56b47b658025e41a20027c5d915f836 Mon Sep 17 00:00:00 2001
|
||||
From: "Scott M. Kroll" <skroll@gmail.com>
|
||||
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
|
||||
|
@ -1,42 +0,0 @@
|
||||
From 8df98f3c779fa43d073a42e82bd18cf28c2bd4af Mon Sep 17 00:00:00 2001
|
||||
From: Wendell Smith <wendellwsmith@gmail.com>
|
||||
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));
|
@ -1,429 +0,0 @@
|
||||
From 61751db8cd4679fc76034a5d1f99df6c64c48de6 Mon Sep 17 00:00:00 2001
|
||||
From: lotan <lotan@gmx.de>
|
||||
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
|
||||
|
@ -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 <asm/atomic.h>
|
||||
+#include <linux/backing-dev.h>
|
||||
#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);
|
||||
}
|
3
open-vm-tools-10.0.0-85a99f4.tar.gz
Normal file
3
open-vm-tools-10.0.0-85a99f4.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dde879e4847010f62c86a0204492b4d4d08db1d64490206885e119229eb6530d
|
||||
size 4283765
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c5a7f88b597585a273fb9918fdb9201c79e30731a765fbec1acda14d1f3d74c
|
||||
size 4044062
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
14
vmtoolsd
14
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
|
||||
|
@ -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 <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <gdk/gdkx.h>
|
||||
+#include <cstring>
|
||||
|
||||
extern "C" {
|
||||
#include "vm_assert.h"
|
Loading…
Reference in New Issue
Block a user