[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#856414: marked as done (unblock: open-vm-tools/2:10.1.5-5055683-1)



Your message dated Sun, 05 Mar 2017 07:18:00 +0000
with message-id <e9753178-5a8a-5dfc-4d5a-a1ffffb195e2@thykier.net>
and subject line Re: Bug#856414: unblock: open-vm-tools/2:10.1.5-5055683-1
has caused the Debian Bug report #856414,
regarding unblock: open-vm-tools/2:10.1.5-5055683-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
856414: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=856414
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Hi release team,

unfortunately I have to ask for an open-vm-tools unblock again.
Upstream released a bugfix pointrelease.

To make it easier to review the changes I've attached the debdiff
and a git format-patch patch series of the upstream changes.
The debdiff is against the current version in testing,
2:10.1.0-4449150-4 was unblocked already in #855855.

The debian changelog summarizes the changes:

  * [60d1417] Merge tag 'upstream/10.1.5-5055683'
    Upstream version 10.1.5-5055683
    Closes: #856330

    10.1.5 is a point release fixing the following issues:
    - Authentication failure is reported as unknown general system error.
      Attempts to authenticate through VGAuth service might result
      in an authentication-specific error such as an expired account or
      password. The authentication-specific error might then be incorrectly
      reported as an unknown general system error, similar to the following:
      CommunicationException: Failed to create temp file on target
      <IP_ADDRESS>: A general system error occurred: Unknown error

    - Unable to backup virtual machines with active Docker containers.
      This bug should not happen in Debian stretch at all, but might
      be relevant for backports.

    - Fix ISO mappings for CentOS/OracleLinux. Not relevant for Debian

    - Thaw Filesystems if snapshot commit message to VMX fails.

    - Add missing agent configuration files that were accidentally
      ignored by .gitignore



unblock open-vm-tools/2:10.1.5-5055683-1


Thanks,

Bernd

-- 
 Bernd Zeimetz                            Debian GNU/Linux Developer
 http://bzed.de                                http://www.debian.org
 GPG Fingerprint: ECA1 E3F2 8E11 2432 D485  DD95 EB36 171A 6FF9 435F
>From 5d17f073345251c33cccd4c630438546d020d2df Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Fri, 23 Dec 2016 16:46:38 -0800
Subject: [PATCH 1/8] - add missing directory common-agent/etc/config - fix
 .gitignore, so the directory above will not be ignored any more

---
 open-vm-tools/.gitignore                           |   1 +
 .../etc/config/CommAmqpListener-appconfig          |  80 +++++
 .../etc/config/CommAmqpListener-context-amqp.xml   |  65 ++++
 .../etc/config/CommAmqpListener-context-common.xml | 200 ++++++++++++
 .../etc/config/CommAmqpListener-context-tunnel.xml |  43 +++
 .../etc/config/CommAmqpListener-log4cpp_config     |  18 ++
 .../common-agent/etc/config/IntBeanConfigFile.xml  |  19 ++
 open-vm-tools/common-agent/etc/config/Makefile.am  |  36 +++
 .../common-agent/etc/config/cafenv-appconfig       |  39 +++
 open-vm-tools/common-agent/etc/config/ma-appconfig |  89 ++++++
 .../common-agent/etc/config/ma-context.xml         | 340 +++++++++++++++++++++
 .../common-agent/etc/config/ma-log4cpp_config      |  18 ++
 .../common-agent/etc/config/providerFx-appconfig   |  24 ++
 .../etc/config/providerFx-log4cpp_config           |  18 ++
 open-vm-tools/common-agent/etc/config/vgauth.conf  |   9 +
 15 files changed, 999 insertions(+)
 create mode 100644 open-vm-tools/common-agent/etc/config/CommAmqpListener-appconfig
 create mode 100644 open-vm-tools/common-agent/etc/config/CommAmqpListener-context-amqp.xml
 create mode 100644 open-vm-tools/common-agent/etc/config/CommAmqpListener-context-common.xml
 create mode 100644 open-vm-tools/common-agent/etc/config/CommAmqpListener-context-tunnel.xml
 create mode 100644 open-vm-tools/common-agent/etc/config/CommAmqpListener-log4cpp_config
 create mode 100644 open-vm-tools/common-agent/etc/config/IntBeanConfigFile.xml
 create mode 100644 open-vm-tools/common-agent/etc/config/Makefile.am
 create mode 100644 open-vm-tools/common-agent/etc/config/cafenv-appconfig
 create mode 100644 open-vm-tools/common-agent/etc/config/ma-appconfig
 create mode 100644 open-vm-tools/common-agent/etc/config/ma-context.xml
 create mode 100644 open-vm-tools/common-agent/etc/config/ma-log4cpp_config
 create mode 100644 open-vm-tools/common-agent/etc/config/providerFx-appconfig
 create mode 100644 open-vm-tools/common-agent/etc/config/providerFx-log4cpp_config
 create mode 100644 open-vm-tools/common-agent/etc/config/vgauth.conf

diff --git a/open-vm-tools/.gitignore b/open-vm-tools/.gitignore
index dfc1a5a6..0b46a8cb 100644
--- a/open-vm-tools/.gitignore
+++ b/open-vm-tools/.gitignore
@@ -12,6 +12,7 @@ Makefile
 Makefile.in
 aclocal.m4
 config
+!common-agent/etc/config
 config.log
 config.status
 configure
diff --git a/open-vm-tools/common-agent/etc/config/CommAmqpListener-appconfig b/open-vm-tools/common-agent/etc/config/CommAmqpListener-appconfig
new file mode 100644
index 00000000..b34e5575
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/CommAmqpListener-appconfig
@@ -0,0 +1,80 @@
+[globals]
+response_dir=${output_dir}/responses
+event_dir=${output_dir}/events
+request_dir=${output_dir}/requests
+tmp_dir=${output_dir}/tmp
+persistence_dir=${input_dir}/persistence
+monitor_dir=${input_dir}/monitor
+log_config_file=${config_dir}/CommAmqpListener-log4cpp_config
+
+thread_stack_size_kb=0
+
+schema_namespace_root=http://schemas.vmware.com/caf/schema
+schema_location_root=${input_dir}/schemas/caf
+
+remap_logging_location=false
+
+[communication_amqp]
+working_dir=${output_dir}/comm-wrk
+context_file=${comm_amqp_listener_context}
+resolver_cache_file=${output_dir}/cache/commAmqpResolver-cache
+
+reactive_request_queue_id=${reactive_request_amqp_queue_id}
+
+startup_timeout=5000
+shutdown_timeout=5000
+connection_retry_interval=5000
+
+# Temporarily set to 60MB for Hyperic Agent POC
+# 1024 Bytes/KB * 1024 KB/MB * 60
+max_part_size=62976000
+
+vhost=caf
+
+# Wait for (connection_retries * connection_seconds_to_wait) in milli-seconds
+connection_timeout=150000
+
+connection_retries=10
+connection_seconds_to_wait=15
+channel_cache_size=4
+reply_timeout=5000
+
+[security]
+cms_policy=CAF_Encrypted_And_Signed
+is_signing_enforced=true
+is_encryption_enforced=true
+
+tls_protocol=TLSv1_2
+tls_ciphers=SRP-RSA-AES-128-CBC-SHA
+cms_cipher=des-ede3-cbc
+
+[subsystems]
+# Integration System Beans
+com.vmware.commonagent.integration.objectfactory=IntegrationSubsys
+com.vmware.commonagent.integration.channels.errorchannel=IntegrationSubsys
+com.vmware.commonagent.integration.channels.nullchannel=IntegrationSubsys
+com.vmware.commonagent.integration.headerexpressioninvoker=IntegrationSubsys
+
+# Communication Integration Beans
+com.vmware.caf.comm.integration.cmsmessagetransformer=CommIntegrationSubsys
+com.vmware.caf.comm.integration.cmsmessagetransformerinstance=CommIntegrationSubsys
+com.vmware.caf.comm.integration.eventtopiccalculator=CommIntegrationSubsys
+com.vmware.caf.comm.integration.incomingmessagehandler=CommIntegrationSubsys
+com.vmware.caf.comm.integration.incomingmessagehandlerinstance=CommIntegrationSubsys
+com.vmware.caf.comm.integration.outgoingmessagehandler=CommIntegrationSubsys
+com.vmware.caf.comm.integration.protocolheaderenricher=CommIntegrationSubsys
+com.vmware.caf.comm.integration.protocolheaderenricherinstance=CommIntegrationSubsys
+com.vmware.caf.comm.integration.replytocacher=CommIntegrationSubsys
+com.vmware.caf.comm.integration.replytocacherinstance=CommIntegrationSubsys
+com.vmware.caf.comm.integration.replytoresolver=CommIntegrationSubsys
+com.vmware.caf.comm.integration.objects=CommAmqpIntegrationSubsys
+
+# Amqp Listener Context Beans
+com.vmware.caf.comm.integration.amqp.caching.connection.factory=CommAmqpIntegrationSubsys
+com.vmware.caf.comm.integration.amqp.secure.caching.connection.factory=CommAmqpIntegrationSubsys
+
+# CAF Integration System Beans
+com.vmware.commonagent.cafintegration.errortoresponsetransformerinstance=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.errortoresponsetransformer=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.payloadheaderenricherinstance=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.payloadheaderenricher=CafIntegrationSubsys
diff --git a/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-amqp.xml b/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-amqp.xml
new file mode 100644
index 00000000..71148568
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-amqp.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<caf:beans
+   xmlns:caf="http://schemas.vmware.com/caf/schema/fx";
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+   xsi:schemaLocation="http://schemas.vmware.com/caf/schema/fx http://10.25.57.32/caf-downloads/schema/fx/CafIntegration.xsd";>
+
+   <import resource="IntBeanConfigFile.xml"/>
+   <import resource="CommAmqpListener-context-common.xml"/>
+
+   <bean
+      id="amqpConnectionFactory"
+      class="com.vmware.caf.comm.integration.amqp.caching.connection.factory"/>
+
+   <rabbit-outbound-channel-adapter
+      id="amqpResponseOutboundChannel"
+      channel="managementMessageOutboundAmqp"
+      amqp-template="amqpTemplate"
+      exchange-name="client.mgmt.direct"
+      routing-key-expression="@headerExprInvoker.toString('replyTo')"
+      mapped-request-headers="caf.msg.*|amqp*" />
+
+   <rabbit-outbound-channel-adapter
+      id="amqpEventOutboundChannel"
+      channel="eventOutFileChannel"
+      amqp-template="amqpTemplate"
+      exchange-name="client.mgmt.event"
+      routing-key="caf.event"
+      mapped-request-headers="caf.msg.*|amqp*" />
+
+   <rabbit-inbound-channel-adapter
+      id="amqpRequestInboundChannel"
+      channel="managementInboundAmqp"
+      queue-name="#{managementMessageQ}"
+      connection-factory="amqpConnectionFactory"
+      error-channel="errorChannel"
+      mapped-request-headers="caf.msg.*|amqp*" />
+
+   <rabbit-template
+      id="amqpTemplate"
+      connection-factory="amqpConnectionFactory"/>
+
+   <rabbit-admin
+      connection-factory="amqpConnectionFactory" />
+
+   <rabbit-queue
+      id="managementMessageQ"
+      name="${var:communication_amqp:reactive_request_queue_id}.mgmt"
+      auto-delete="true"
+      durable="false"/>
+
+   <rabbit-direct-exchange
+      name="agent.mgmt.direct">
+      <rabbit-bindings>
+         <rabbit-binding
+            queue="managementMessageQ"
+            key="${var:communication_amqp:reactive_request_queue_id}.mgmt" />
+      </rabbit-bindings>
+   </rabbit-direct-exchange>
+
+   <rabbit-direct-exchange
+      name="client.mgmt.direct" />
+
+   <rabbit-topic-exchange
+      name="client.mgmt.event" />
+</caf:beans>
diff --git a/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-common.xml b/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-common.xml
new file mode 100644
index 00000000..8e06ca5a
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-common.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<caf:beans
+   xmlns:caf="http://schemas.vmware.com/caf/schema/fx";
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+   xsi:schemaLocation="http://schemas.vmware.com/caf/schema/fx http://10.25.57.32/caf-downloads/schema/fx/CafIntegration.xsd";>
+
+   <import resource="IntBeanConfigFile.xml"/>
+
+   <!-- <channel id="logger"/> -->
+   <!-- <int:logging-channel-adapter channel="logger" log-full-message="true" level="INFO"/> -->
+   <!-- <int:wire-tap channel="logger" pattern="*"/> -->
+
+   <!-- Listener Infrastructure -->
+
+   <bean
+      id="amqpIntegrationObjects"
+      class="com.vmware.caf.comm.integration.objects" />
+
+   <bean
+      id="replyToResolver"
+      class="com.vmware.caf.comm.integration.replytoresolver"/>
+
+   <bean
+      id="eventTopicCalculator"
+      class="com.vmware.caf.comm.integration.eventtopiccalculator"/>
+
+   <bean
+      id="outgoingMessageHandler"
+      class="com.vmware.caf.comm.integration.outgoingmessagehandler"/>
+
+   <bean
+      id="headerExprInvoker"
+      class="com.vmware.commonagent.integration.headerexpressioninvoker" />
+
+   <bean
+      id="cmsMessageTransformerBean"
+      class="com.vmware.caf.comm.integration.cmsmessagetransformer">
+      <property name="cmsPolicy" value="${var:security:cms_policy}"/>
+      <property name="isSigningEnforced" value="${var:security:is_signing_enforced}"/>
+      <property name="isEncryptionEnforced" value="${var:security:is_encryption_enforced}"/>
+   </bean>
+
+   <bean
+      id="incomingMessageHandlerBean"
+      class="com.vmware.caf.comm.integration.incomingmessagehandler"/>
+
+   <bean
+      id="replyToCacherBean"
+      class="com.vmware.caf.comm.integration.replytocacher"/>
+
+   <bean
+      id="payloadHeaderEnricherBean"
+      class="com.vmware.commonagent.cafintegration.payloadheaderenricher" >
+      <property name="includeFilename" value="false"/>
+   </bean>
+
+   <!-- Outbound messages -->
+   <channel id="responseFileChannel" />
+   <channel id="managementMessageOutboundAmqp" />
+
+   <file-inbound-channel-adapter
+      id="responseInboundChannel"
+      auto-create-directory="true"
+      filename-regex=".*\.xml"
+      directory="${var:globals:response_dir}"
+      channel="responseFileChannel" />
+
+   <chain
+      id="responseChain"
+      input-channel="responseFileChannel"
+      output-channel="managementMessageOutboundAmqp" >
+      <file-to-string-transformer
+         id="responseFileToString"
+         charset="UTF-8"
+         delete-files="true" />
+      <transformer
+         id="payloadHeaderEnricher"
+         ref="payloadHeaderEnricherBean"/>
+      <header-enricher
+         id="responseHeaderEnricher">
+         <header
+            name="replyTo"
+            expression="@replyToResolver.lookupReplyTo()"/>
+         <header
+            name="cafcomm.internal.msgflow"
+            value="OUTGOING"/>
+      </header-enricher>
+      <transformer
+         id="outgoingCmsMessageTransformerId"
+         ref="cmsMessageTransformerBean"/>
+      <service-activator
+         id="outgoingMessageServiceActivator"
+         ref="outgoingMessageHandler"/>
+   </chain>
+
+   <!-- proactive messages -->
+   <channel id="eventFileChannel" />
+   <channel id="eventOutFileChannel" />
+   <file-inbound-channel-adapter
+      id="eventInboundChannel"
+      auto-create-directory="true"
+      filename-regex=".*\.xml"
+      directory="${var:globals:event_dir}"
+      channel="eventFileChannel" />
+
+   <chain
+      id="eventChain"
+      input-channel="eventFileChannel"
+      output-channel="eventOutFileChannel">
+
+      <file-to-string-transformer
+         id="eventFileToString"
+         charset="UTF-8"
+         delete-files="true" />
+
+      <transformer
+         id="payloadHeaderEnricher"
+         ref="payloadHeaderEnricherBean"/>
+
+      <header-enricher
+         id="eventHeaderEnricher">
+         <header
+            name="cafcomm.internal.msgflow"
+            value="OUTGOING"/>
+
+      </header-enricher>
+
+      <transformer
+         id="outgoingCmsMessageTransformerId"
+         ref="cmsMessageTransformerBean"/>
+   </chain>
+
+   <!-- Inbound messages -->
+   <channel id="managementInboundAmqp" />
+   <channel id="managementInboundChannel" />
+
+   <chain
+      id="requestChain"
+      input-channel="managementInboundAmqp"
+      output-channel="managementInboundChannel">
+
+      <header-enricher
+         id="requestEnricher">
+         <header
+            name="cafcomm.internal.msgflow"
+            value="INCOMING"/>
+      </header-enricher>
+
+      <transformer
+         id="requestIncomingMessageHandler"
+         ref="incomingMessageHandlerBean"/>
+
+      <transformer
+         id="payloadHeaderEnricher"
+         ref="payloadHeaderEnricherBean"/>
+
+      <transformer
+         id="requestReplyToCacher"
+         ref="replyToCacherBean"
+         reply-to-resolver="replyToResolver"/>
+
+      <transformer
+         id="incomingCmsMessageTransformerId"
+         ref="cmsMessageTransformerBean"/>
+   </chain>
+
+   <file-outbound-channel-adapter
+      id="requestOutboundChannel"
+      channel="managementInboundChannel"
+      auto-create-directory="true"
+      delete-source-files="true"
+      charset="UTF-8"
+      directory="${var:globals:request_dir}"
+      temporary-file-suffix=".tmp" />
+
+   <!-- Stores the error information from the default error channel into the respose directory. -->
+   <channel id="fileSenderErrChannel"/>
+   <bean
+      id="errorToResponseTransformerBean"
+      class="com.vmware.commonagent.cafintegration.errortoresponsetransformer" />
+   <chain
+      id="responseErrorChain"
+      input-channel="errorChannel"
+      output-channel="fileSenderErrChannel">
+
+      <!-- Convert the error information into an error response message. -->
+      <transformer
+         id="errorToResponseTransformer"
+         ref="errorToResponseTransformerBean"/>
+   </chain>
+
+   <!-- Store the response into the responses directory. In normal processing, the responses
+          directory is monitored by the listener process, which sends the responses back to
+          the client. -->
+   <file-outbound-channel-adapter
+      id="responseErrFileOutbound"
+      channel="fileSenderErrChannel"
+      directory="${var:globals:response_dir}"
+      delete-source-files="true" />
+</caf:beans>
diff --git a/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-tunnel.xml b/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-tunnel.xml
new file mode 100644
index 00000000..469b5c77
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/CommAmqpListener-context-tunnel.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<caf:beans
+   xmlns:caf="http://schemas.vmware.com/caf/schema/fx";
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+   xsi:schemaLocation="http://schemas.vmware.com/caf/schema/fx http://10.25.57.32/caf-downloads/schema/fx/CafIntegration.xsd";>
+
+   <import resource="IntBeanConfigFile.xml"/>
+   <import resource="CommAmqpListener-context-common.xml"/>
+
+   <bean
+      id="tunnelConnectionFactory"
+      class="com.vmware.caf.comm.integration.amqp.secure.caching.connection.factory"/>
+
+   <rabbit-outbound-channel-adapter
+      id="tunnelResponseOutboundChannel"
+      channel="managementMessageOutboundAmqp"
+      amqp-template="amqpTemplate"
+      exchange-name="client.mgmt.direct"
+      routing-key-expression="@headerExprInvoker.toString('replyTo')"
+      mapped-request-headers="caf.msg.*|amqp*" />
+
+   <rabbit-outbound-channel-adapter
+      id="tunnelEventOutboundChannel"
+      channel="eventOutFileChannel"
+      amqp-template="amqpTemplate"
+      exchange-name="client.mgmt.event"
+      routing-key="caf.event" />
+
+   <rabbit-inbound-channel-adapter
+      id="tunnelRequestInboundChannel"
+      channel="managementInboundAmqp"
+      queue-name="${var:communication_amqp:reactive_request_queue_id}.mgmt"
+      connection-factory="tunnelConnectionFactory"
+      error-channel="errorChannel"
+      mapped-request-headers="caf.msg.*|amqp*" />
+
+   <rabbit-template
+      id="amqpTemplate"
+      connection-factory="tunnelConnectionFactory"/>
+
+   <rabbit-admin
+      connection-factory="tunnelConnectionFactory" />
+</caf:beans>
diff --git a/open-vm-tools/common-agent/etc/config/CommAmqpListener-log4cpp_config b/open-vm-tools/common-agent/etc/config/CommAmqpListener-log4cpp_config
new file mode 100644
index 00000000..d6949ebc
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/CommAmqpListener-log4cpp_config
@@ -0,0 +1,18 @@
+#log4j.rootCategory=DEBUG, console
+log4j.rootCategory=ERROR, rolling
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+
+log4j.appender.logfile=org.apache.log4j.FileAppender
+log4j.appender.logfile.fileName=CommAmqpListener-log4cpp.log
+log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
+log4j.appender.logfile.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+
+log4j.appender.rolling=org.apache.log4j.RollingFileAppender
+log4j.appender.rolling.fileName=CommAmqpListener-log4cpp_rolling.log
+log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
+log4j.appender.rolling.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+log4j.appender.rolling.MaxFileSize=1024KB
+log4j.appender.rolling.MaxBackupIndex=5
diff --git a/open-vm-tools/common-agent/etc/config/IntBeanConfigFile.xml b/open-vm-tools/common-agent/etc/config/IntBeanConfigFile.xml
new file mode 100644
index 00000000..d4e22ed4
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/IntBeanConfigFile.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<caf:beans
+	xmlns:caf="http://schemas.vmware.com/caf/schema/fx";
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+	xsi:schemaLocation="http://schemas.vmware.com/caf/schema/fx http://10.25.57.32/caf-downloads/schema/fx/CafIntegration.xsd";>
+
+	<bean
+		id="integrationObjectFactory"
+		class="com.vmware.commonagent.integration.objectfactory" />
+
+	<bean
+		id="errorChannelBean"
+		class="com.vmware.commonagent.integration.channels.errorchannel" />
+
+	<bean
+		id="nullChannelBean"
+		class="com.vmware.commonagent.integration.channels.nullchannel" />
+		
+</caf:beans>
diff --git a/open-vm-tools/common-agent/etc/config/Makefile.am b/open-vm-tools/common-agent/etc/config/Makefile.am
new file mode 100644
index 00000000..acc715b1
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/Makefile.am
@@ -0,0 +1,36 @@
+################################################################################
+### Copyright (C) 2016 VMware, Inc.  All rights reserved.
+###
+### This program is free software; you can redistribute it and/or modify
+### it under the terms of version 2 of the GNU General Public License as
+### published by the Free Software Foundation.
+###
+### This program is distributed in the hope that it will be useful,
+### but WITHOUT ANY WARRANTY; without even the implied warranty of
+### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+### GNU General Public License for more details.
+###
+### You should have received a copy of the GNU General Public License
+### along with this program; if not, write to the Free Software
+### Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+################################################################################
+
+confdir=/etc/vmware-caf/pme/config
+
+conf_DATA = \
+	cafenv-appconfig \
+	CommAmqpListener-appconfig \
+	CommAmqpListener-context-amqp.xml \
+	CommAmqpListener-context-common.xml \
+	CommAmqpListener-context-tunnel.xml \
+	CommAmqpListener-log4cpp_config \
+	IntBeanConfigFile.xml \
+	ma-appconfig \
+	ma-context.xml \
+	ma-log4cpp_config \
+	providerFx-appconfig \
+	providerFx-log4cpp_config \
+	vgauth.conf
+
+install-data-local:
+	D=$(DESTDIR) /bin/bash $(top_srcdir)/common-agent/etc/install/install.sh -L -l $(libdir)/open-vm-tools -B $(libdir)/open-vm-tools -i /var -o /var
diff --git a/open-vm-tools/common-agent/etc/config/cafenv-appconfig b/open-vm-tools/common-agent/etc/config/cafenv-appconfig
new file mode 100644
index 00000000..91e8e2af
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/cafenv-appconfig
@@ -0,0 +1,39 @@
+[globals]
+# Specifies where python is located.
+python_dir=/opt/vmware/caf/python
+
+# Substitute @binDir@ for the value passed in during install
+# Maps to 'bin' in the build output
+bin_dir=@binDir@
+
+# Substitute @libDir@ for the value passed in during install
+# Maps to 'lib' in the build output
+lib_dir=@libDir@
+
+# Substitute @configDir@ for the value passed in during install
+# Maps to 'config' in the build output
+config_dir=@configDir@
+
+# Substitute @inputDir@ for the value passed in during install
+# Maps to 'data/input' in the build output
+input_dir=@inputDir@
+
+# Substitute @outputDir@ for the value passed in during install
+# No mapping in the build output since the output files are created at run-time
+output_dir=@outputDir@
+
+# Substitute @logDir@ for the value passed in during install
+# No mapping in the build output since the log files are created at run-time
+log_dir=@logDir@
+
+# Substitute @invokersDir@ for the value passed in during install
+# Maps to 'invokers' in the build output - Used by the internal providers
+invokers_dir=@invokersDir@
+
+# Substitute @providersDir@ for the value passed in during install
+# Maps to 'providers' in the build output - Used by the internal providers
+providers_dir=@providersDir@
+
+# Substitute @toolsLibDir@ for the value passed in during install
+# Maps to 'lib' in the build output
+tools_lib_dir=@toolsLibDir@
diff --git a/open-vm-tools/common-agent/etc/config/ma-appconfig b/open-vm-tools/common-agent/etc/config/ma-appconfig
new file mode 100644
index 00000000..1818b9ba
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/ma-appconfig
@@ -0,0 +1,89 @@
+[globals]
+persistence_dir=${input_dir}/persistence
+monitor_dir=${input_dir}/monitor
+response_dir=${output_dir}/responses
+request_dir=${output_dir}/requests
+split_request_dir=${output_dir}/split-requests
+tmp_dir=${output_dir}/tmp
+bean_config_file=${config_dir}/ma-context.xml
+log_config_file=${config_dir}/ma-log4cpp_config
+scripts_dir=${config_dir}/../scripts
+
+thread_stack_size_kb=0
+
+schema_namespace_root=http://schemas.vmware.com/caf/schema
+schema_location_root=${input_dir}/schemas/caf
+
+remap_logging_location=false
+
+[security]
+cms_policy=CAF_Encrypted_And_Signed
+
+[managementAgent]
+host_delay_sec=5
+host_integration_timeout_ms=5000
+use_impersonation=false
+# Value used to specify the priority that provider sub-process are created at.
+# Valid values are:  NORMAL, LOW, IDLE.  Default value is NORMAL.
+provider_process_priority=NORMAL
+
+[providerHost]
+install_dir=${config_dir}/../install
+invokers_dir=${invokers_dir}
+providers_dir=${providers_dir}
+schema_cache_dir=${output_dir}/schemaCache
+provider_reg_dir=${input_dir}/providerReg
+common_packages_dir=${input_dir}/commonPackages
+
+[provider]
+diagFileAliases=ma-appconfig:ma-log4cpp_config:ma-context:CommAmqpListener-appconfig:CommAmqpListener-log4cpp_config:CommAmqpListener-context:IntBeanConfigFile
+diagFileAlias_ma-appconfig=file://${root_dir}/config/ma-appconfig?encoding=iniFile
+diagFileAlias_ma-log4cpp_config=file://${root_dir}/config/ma-log4cpp_config?encoding=iniFileWithoutSection
+diagFileAlias_ma-context=file://${root_dir}/config/ma-context.xml?encoding=xmlFile
+diagFileAlias_CommAmqpListener-appconfig=file://${root_dir}/config/CommAmqpListener-appconfig?encoding=iniFile
+diagFileAlias_CommAmqpListener-log4cpp_config=file://${root_dir}/config/CommAmqpListener-log4cpp_config?encoding=iniFileWithoutSection
+diagFileAlias_CommAmqpListener-context=file://${root_dir}/config/CommAmqpListener-context.xml?encoding=xmlFile
+diagFileAlias_IntBeanConfigFile=file://${root_dir}/config/IntBeanConfigFile.xml?encoding=xmlFile
+
+[monitor]
+listener_retry_max=-1
+listener_startup_type=Automatic
+listener_restart_hours=48
+nsdb_poller_signal_file=${monitor_dir}/nsdbPollerSignal.txt
+nsdb_polling_interval_secs=86400
+
+[subsystems]
+# Integration System Beans
+com.vmware.commonagent.integration.objectfactory=IntegrationSubsys
+com.vmware.commonagent.integration.channels.errorchannel=IntegrationSubsys
+com.vmware.commonagent.integration.channels.nullchannel=IntegrationSubsys
+
+# CAF Integration
+com.vmware.commonagent.cafintegration.errortoresponsetransformerinstance=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.errortoresponsetransformer=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.payloadheaderenricherinstance=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.payloadheaderenricher=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.envelopetopayloadtransformerinstance=CafIntegrationSubsys
+com.vmware.commonagent.cafintegration.envelopetopayloadtransformer=CafIntegrationSubsys
+
+# Management Agent
+
+# MA Integration
+com.vmware.commonagent.maintegration.collectschemaexecutor=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.providercollectschemaexecutor=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.providerexecutor=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.singlepmerequestsplitterinstance=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.singlepmerequestsplitter=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.diagtomgmtrequesttransformerinstance=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.diagtomgmtrequesttransformer=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.installtomgmtrequesttransformerinstance=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.installtomgmtrequesttransformer=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.versiontransformerinstance=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.versiontransformer=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.attachmentrequesttransformerinstance=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.attachmentrequesttransformer=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.integrationobjects=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.guestauthenticatorinstance=VgAuthIntegrationSubsys
+com.vmware.commonagent.maintegration.guestauthenticator=VgAuthIntegrationSubsys
+com.vmware.commonagent.maintegration.configenv=MaIntegrationSubsys
+com.vmware.commonagent.maintegration.persistencenamespacedb=MaIntegrationSubsys
diff --git a/open-vm-tools/common-agent/etc/config/ma-context.xml b/open-vm-tools/common-agent/etc/config/ma-context.xml
new file mode 100644
index 00000000..cf0c0a4b
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/ma-context.xml
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<caf:beans
+   xmlns:caf="http://schemas.vmware.com/caf/schema/fx";
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+   xsi:schemaLocation="http://schemas.vmware.com/caf/schema/fx http://10.25.57.32/caf-downloads/schema/fx/CafIntegration.xsd";>
+
+	<import resource="IntBeanConfigFile.xml"/>
+
+<!-- Channel wire tap to log -->
+<!--
+	<channel id="wireTapChannel"/>
+
+	<logging-channel-adapter
+		id="logger"
+		level="info"
+		log-full-message="false"
+		input-channel="wireTapChannel"/>
+
+	<wire-tap
+		id="wireTap"
+		order="1"
+		channel="wireTapChannel"
+		pattern=".*" />
+ -->
+
+<!-- Management Agent Request Processing -->
+
+	<channel id="requestToStringTransformerChannel"/>
+	<channel id="payloadXmlRootRouterChannel"/>
+	<channel id="payloadHeaderEnricherChannel"/>
+	<channel id="diagToMgmtRequestTransformerChannel"/>
+	<channel id="installToMgmtRequestTransformerChannel"/>
+	<channel id="headerValueRouterChannel"/>
+	<channel id="collectSchemaExecutorChannel"/>
+	<channel id="providerExecutorChannel"/>
+
+	<!-- Read the request from the agreed-upon directory. In most cases, the request is
+		written to this directory by the communication component. -->
+	<file-inbound-channel-adapter
+		id="receiveGoodRequest"
+		channel="requestToStringTransformerChannel"
+		directory="${var:globals:request_dir}"/>
+
+	<bean
+		id="payloadHeaderEnricherBean"
+		class="com.vmware.commonagent.cafintegration.payloadheaderenricher" />
+	<bean
+		id="envelopeToPayloadTransformerBean"
+		class="com.vmware.commonagent.cafintegration.envelopetopayloadtransformer"/>
+	<bean
+		id="attachmentRequestTransformerBean"
+		class="com.vmware.commonagent.maintegration.attachmentrequesttransformer"/>
+	<bean
+		id="versionTransformerBean"
+		class="com.vmware.commonagent.maintegration.versiontransformer"/>
+	<chain
+		id="requestChain1"
+		input-channel="requestToStringTransformerChannel"
+		output-channel="payloadXmlRootRouterChannel">
+
+		<!-- Read the request file into memory and pass it through the
+			system as the canonical in-memory message. -->
+		<file-to-string-transformer
+			id="requestToStringTransformer"
+			delete-files="false"/>
+
+		<!-- Store the indentifying request information into the message headers, which
+			lets some of the downstream processing be more request-independent. -->
+		<transformer
+			id="payloadHeaderEnricher"
+			ref="payloadHeaderEnricherBean"/>
+
+		<!-- Either throws an unsupported version exception or converts the
+			old version into the latest version or passes the untouched supported
+			version through. -->
+		<transformer
+			id="versionTransformerId"
+			ref="versionTransformerBean"/>
+
+		<!-- Moves the attachments into the input directory and touches up the attachment
+			URI's in the request. -->
+		<transformer
+			id="attachmentRequestTransformerId"
+			ref="attachmentRequestTransformerBean"/>
+
+		<!-- Transforms the envelope back into the normal payload -->
+		<transformer
+			id="envelopeToPayloadTransformerId"
+			ref="envelopeToPayloadTransformerBean"/>
+	</chain>
+
+	<!-- Route the request based on its type. The logic to come simply transforms the specific
+		request type (e.g. diag, install) into the standard request format. -->
+	<payload-content-router
+		id="payloadXmlRootRouter"
+		input-channel="payloadXmlRootRouterChannel">
+		<mapping value="caf:mgmtRequest " channel="payloadHeaderEnricherChannel" />
+		<mapping value="caf:diagRequest " channel="diagToMgmtRequestTransformerChannel" />
+		<mapping value="caf:installRequest " channel="installToMgmtRequestTransformerChannel" />
+	</payload-content-router>
+
+	<!-- Transform the diag request into the standard request format. -->
+	<bean
+		id="diagToMgmtRequestTransformerBean"
+		class="com.vmware.commonagent.maintegration.diagtomgmtrequesttransformer" />
+	<transformer
+		id="diagToMgmtRequestTransformer"
+		input-channel="diagToMgmtRequestTransformerChannel"
+		output-channel="payloadHeaderEnricherChannel"
+		ref="diagToMgmtRequestTransformerBean"/>
+
+	<!-- Transform the install request into the standard request format. -->
+	<bean
+		id="installToMgmtRequestTransformerBean"
+		class="com.vmware.commonagent.maintegration.installtomgmtrequesttransformer" />
+	<transformer
+		id="installToMgmtRequestTransformer"
+		input-channel="installToMgmtRequestTransformerChannel"
+		output-channel="payloadHeaderEnricherChannel"
+		ref="installToMgmtRequestTransformerBean"/>
+
+	<bean
+		id="singlePmeRequestSplitterBean"
+		class="com.vmware.commonagent.maintegration.singlepmerequestsplitter"/>
+	<chain
+		id="requestChain2"
+		input-channel="payloadHeaderEnricherChannel"
+		output-channel="headerValueRouterChannel">
+
+		<!-- Splits the single request into the processing components that require very different processing;
+                    collect schema vs. collect instances / invoke method. Also splits requests by provider. -->
+		<splitter
+			id="phReqSplitter"
+			ref="singlePmeRequestSplitterBean"/>
+	</chain>
+
+	<!-- Routes the collect schema request and regular request processing down different paths. -->
+	<header-value-router
+		id="headerValuePayloadTypeRouter"
+		input-channel="headerValueRouterChannel"
+		header-name="payloadType">
+		<mapping value="providerCollectSchemaRequest" channel="collectSchemaExecutorChannel" />
+		<mapping value="providerRequest" channel="requestSplitOutboundChannel" />
+	</header-value-router>
+
+	<!-- Collects the schema information, which basically just copies the cached schema into the
+		response directories. -->
+	<bean
+		id="collectSchemaExecutorBean"
+		class="com.vmware.commonagent.maintegration.collectschemaexecutor"/>
+	<service-activator
+		id="collectSchemaExecutor"
+		input-channel="collectSchemaExecutorChannel"
+		output-channel="fileSenderGoodChannel"
+		ref="collectSchemaExecutorBean"/>
+
+	<!-- Saves the split request into an interim request cache directory for future asynchronous
+	processing and deletes the original request. -->
+	<channel id="requestSplitOutboundChannel"/>
+	<file-outbound-channel-adapter
+		id="splitRequestFileOutbound"
+		channel="requestSplitOutboundChannel"
+		directory="${var:globals:split_request_dir}"
+		delete-source-files="true" />
+
+	<!-- Read the split request from the interim request cache directory. -->
+	<file-inbound-channel-adapter
+		id="splitRequestFileInbound"
+		channel="providerExecutorChannel"
+		directory="${var:globals:split_request_dir}"/>
+
+	<bean
+		id="providerExecutorBean"
+		class="com.vmware.commonagent.maintegration.providerexecutor">
+		<property name="beginImpersonationBeanRef" value="guestAuthenticatorBeginImpersonationBean"/>
+		<property name="endImpersonationBeanRef" value="guestAuthenticatorEndImpersonationBean"/>
+	</bean>
+	<bean
+		id="guestAuthenticatorBeginImpersonationBean"
+		class="com.vmware.commonagent.maintegration.guestauthenticator">
+		<property name="beginImpersonation" value="true"/>
+	</bean>
+	<bean
+		id="guestAuthenticatorEndImpersonationBean"
+		class="com.vmware.commonagent.maintegration.guestauthenticator">
+		<property name="endImpersonation" value="true"/>
+	</bean>
+	<chain
+		id="providerExecutorChain"
+		input-channel="providerExecutorChannel"
+		output-channel="nullChannel">
+
+		<!-- Read the request file into memory and pass it through the
+			system as the canonical in-memory message. -->
+		<file-to-string-transformer
+			id="requestToStringTransformer"
+			delete-files="false"/>
+
+		<header-enricher
+			id="responseHeaderEnricher">
+			<header
+				name="cafma.internal.useImpersonation"
+				value="${var:managementAgent:use_impersonation}"/>
+		</header-enricher>
+
+		<!-- Uses the provider URI information in the request to locate and call the appropriate provider. -->
+		<service-activator
+			id="providerExecutor"
+			ref="providerExecutorBean"/>
+	</chain>
+
+	<!-- Runs the response processing and then stores the message in the agreed-upon output
+		directory. In most cases, the communication will monitor this directory and send
+		the request back to the client. -->
+	<channel id="fileSenderGoodChannel"/>
+
+	<!-- Stores the response information into the response directory. -->
+	<file-outbound-channel-adapter
+		id="responseFileOutbound"
+		channel="fileSenderGoodChannel"
+		directory="${var:globals:response_dir}"
+		delete-source-files="true" />
+
+	<!-- Stores the error information from the default error channel into the response directory. -->
+	<channel id="fileSenderErrChannel"/>
+	<bean
+		id="errorToResponseTransformerBean"
+		class="com.vmware.commonagent.cafintegration.errortoresponsetransformer" />
+	<chain
+		id="responseErrorChain"
+		input-channel="errorChannel"
+		output-channel="fileSenderErrChannel">
+
+		<!-- Convert the error information into an error response message. -->
+		<transformer
+			id="errorToResponseTransformer"
+			ref="errorToResponseTransformerBean"/>
+	</chain>
+
+	<!-- Store the response into the responses directory. In normal processing, the responses
+		directory is monitored by the listener process, which sends the responses back to
+		the client. -->
+	<file-outbound-channel-adapter
+		id="responseErrFileOutbound"
+		channel="fileSenderErrChannel"
+		directory="${var:globals:response_dir}"
+		delete-source-files="true" />
+
+	<!-- Provider Registration -->
+	<channel id="providerRegErrorChannelSetterChannel"/>
+	<channel id="providerRegToStringTransformerChannel"/>
+	<publish-subscribe-channel id="providerRegErrorChannel"/>
+
+	<!-- Read the provider registration files -->
+	<file-inbound-channel-adapter
+		id="receiveProviderReg"
+		channel="providerRegErrorChannelSetterChannel"
+		directory="${var:providerHost:provider_reg_dir}"/>
+
+	<!-- Redirect the default error channel because provider registration takes
+		a different error path than request execution -->
+	<header-enricher
+		id="providerRegErrorChannelSetter"
+		input-channel="providerRegErrorChannelSetterChannel"
+		output-channel="providerRegToStringTransformerChannel">
+		<error-channel ref="providerRegErrorChannel"/>
+	</header-enricher>
+
+	<bean
+		id="providerCollectSchemaExecutorBean"
+		class="com.vmware.commonagent.maintegration.providercollectschemaexecutor"/>
+	<chain
+		id="providerRegChain"
+		input-channel="providerRegToStringTransformerChannel"
+		output-channel="nullChannel">
+
+		<!-- Read the provider registration file into memory and pass it through the
+			system as the canonical in-memory message. -->
+		<file-to-string-transformer
+			id="providerRegToStringTransformer"
+			delete-files="false"/>
+
+		<!-- Collect and cache the schema for the provider specified in the message. -->
+		<service-activator
+			id="providerCollectSchemaExecutor"
+			ref="providerCollectSchemaExecutorBean"/>
+	</chain>
+
+	<!-- Because the provider registration processing runs independently of request execution,
+		it currently just logs the error messages. -->
+	<transformer
+		id="providerRegErrorToResponseTransformer"
+		input-channel="providerRegErrorChannel"
+		output-channel="nullChannel"
+		ref="errorToResponseTransformerBean"/>
+
+	<channel id="configenvOutboundChannel"/>
+	<bean
+		id="maIntegrationObjects"
+		class="com.vmware.commonagent.maintegration.integrationobjects" />
+	<bean
+		id="configenvBean"
+		class="com.vmware.commonagent.maintegration.configenv"/>
+	<bean
+		id="persistenceNsdbBean"
+		class="com.vmware.commonagent.maintegration.persistencenamespacedb"/>
+
+	<persistence-inbound-channel-adapter
+		id="persistenceInboundChannelAdapterId"
+		channel="configenvOutboundChannel"
+		ref="persistenceNsdbBean">
+		<poller fixed-rate="300000"/>
+	</persistence-inbound-channel-adapter>
+
+	<configenv-outbound-channel-adapter
+		id="configenvOutboundChannelAdapterId"
+		channel="configenvOutboundChannel"
+		ref="configenvBean"
+		remove-ref="persistenceNsdbBean"/>
+
+	<channel id="persistenceOutboundChannel"/>
+
+	<configenv-inbound-channel-adapter
+		id="configenvInboundChannelAdapterId"
+		channel="persistenceOutboundChannel"
+		ref="configenvBean">
+		<poller fixed-rate="30000"/>
+	</configenv-inbound-channel-adapter>
+
+	<persistence-outbound-channel-adapter
+		id="persistenceOutboundChannelAdapterId"
+		channel="persistenceOutboundChannel"
+		ref="persistenceNsdbBean"/>
+
+	<monitor-inbound-channel-adapter
+		id="monitorInboundChannelAdapterId"
+		channel="nullChannel">
+		<poller fixed-rate="5000"/>
+	</monitor-inbound-channel-adapter>
+</caf:beans>
diff --git a/open-vm-tools/common-agent/etc/config/ma-log4cpp_config b/open-vm-tools/common-agent/etc/config/ma-log4cpp_config
new file mode 100644
index 00000000..b4f9156d
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/ma-log4cpp_config
@@ -0,0 +1,18 @@
+#log4j.rootCategory=DEBUG, console
+log4j.rootCategory=ERROR, rolling
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+
+log4j.appender.logfile=org.apache.log4j.FileAppender
+log4j.appender.logfile.fileName=ma-log4cpp.log
+log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
+log4j.appender.logfile.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+
+log4j.appender.rolling=org.apache.log4j.RollingFileAppender
+log4j.appender.rolling.fileName=ma-log4cpp_rolling.log
+log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
+log4j.appender.rolling.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+log4j.appender.rolling.MaxFileSize=1024KB
+log4j.appender.rolling.MaxBackupIndex=5
diff --git a/open-vm-tools/common-agent/etc/config/providerFx-appconfig b/open-vm-tools/common-agent/etc/config/providerFx-appconfig
new file mode 100644
index 00000000..94858c31
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/providerFx-appconfig
@@ -0,0 +1,24 @@
+[globals]
+#response_dir=${output_dir}/responses
+#request_dir=${output_dir}/requests
+#tmp_dir=${output_dir}/tmp
+#bean_config_file=${config_dir}/ma-context.xml
+log_config_file=${config_dir}/providerFx-log4cpp_config
+
+thread_stack_size_kb=0
+
+schema_namespace_root=http://schemas.vmware.com/caf/schema
+schema_location_root=${input_dir}/schemas/caf
+
+remap_logging_location=false
+
+[providerHost]
+install_dir=${config_dir}/../install
+invokers_dir=${invokers_dir}
+providers_dir=${providers_dir}
+schema_cache_dir=${output_dir}/schemaCache
+provider_reg_dir=${input_dir}/providerReg
+common_packages_dir=${input_dir}/commonPackages
+
+[security]
+cms_policy=CAF_Encrypted_And_Signed
\ No newline at end of file
diff --git a/open-vm-tools/common-agent/etc/config/providerFx-log4cpp_config b/open-vm-tools/common-agent/etc/config/providerFx-log4cpp_config
new file mode 100644
index 00000000..f4ac3657
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/providerFx-log4cpp_config
@@ -0,0 +1,18 @@
+#log4j.rootCategory=DEBUG, console
+log4j.rootCategory=ERROR, rolling
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+
+log4j.appender.logfile=org.apache.log4j.FileAppender
+log4j.appender.logfile.fileName=providerFx-log4cpp.log
+log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
+log4j.appender.logfile.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+
+log4j.appender.rolling=org.apache.log4j.RollingFileAppender
+log4j.appender.rolling.fileName=providerFx-log4cpp_rolling.log
+log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
+log4j.appender.rolling.layout.ConversionPattern=%p|%d{ISO8601}|%t|%c|%m%n
+log4j.appender.rolling.MaxFileSize=1024KB
+log4j.appender.rolling.MaxBackupIndex=5
diff --git a/open-vm-tools/common-agent/etc/config/vgauth.conf b/open-vm-tools/common-agent/etc/config/vgauth.conf
new file mode 100644
index 00000000..aa13fa7c
--- /dev/null
+++ b/open-vm-tools/common-agent/etc/config/vgauth.conf
@@ -0,0 +1,9 @@
+[service]
+logfile=@logDir@/vgauth.log
+loglevel=verbose
+enableLogging=true
+enableCoreDumps=true
+samlSchemaDir=${input_dir}/schemas/saml
+
+[auditing]
+auditSuccessEvents=true
-- 
2.11.0

>From abe62058c37f33f91c53ee0b859e0486c1034f9b Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Wed, 18 Jan 2017 17:28:16 -0800
Subject: [PATCH 2/8] Thaw filesystems if the snapshot commit message to VMX
 fails

---
 .../services/plugins/vmbackup/syncDriverOps.c      | 23 +++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c b/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
index 5559aa30..2af45b07 100644
--- a/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
+++ b/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
@@ -61,10 +61,10 @@ typedef struct VmBackupDriverOp {
  */
 
 static Bool
-VmBackupDriverThaw(VmBackupDriverOp *op)
+VmBackupDriverThaw(SyncDriverHandle *handle)
 {
-   Bool success = SyncDriver_Thaw(*op->syncHandle);
-   SyncDriver_CloseHandle(op->syncHandle);
+   Bool success = SyncDriver_Thaw(*handle);
+   SyncDriver_CloseHandle(handle);
    return success;
 }
 
@@ -106,7 +106,7 @@ VmBackupDriverOpQuery(VmBackupOp *_op) // IN
 
       case SYNCDRIVER_IDLE:
          if (op->canceled) {
-            VmBackupDriverThaw(op);
+            VmBackupDriverThaw(op->syncHandle);
          }
          /*
           * This prevents the release callback from freeing the handle, which
@@ -117,7 +117,7 @@ VmBackupDriverOpQuery(VmBackupOp *_op) // IN
          break;
 
       default:
-         VmBackupDriverThaw(op);
+         VmBackupDriverThaw(op->syncHandle);
          ret = VMBACKUP_STATUS_ERROR;
          break;
       }
@@ -231,7 +231,7 @@ VmBackupNewDriverOp(VmBackupState *state,       // IN
                                   state->enableNullDriver : FALSE,
                                   op->syncHandle);
    } else {
-      success = VmBackupDriverThaw(op);
+      success = VmBackupDriverThaw(op->syncHandle);
    }
    if (!success) {
       g_warning("Error %s filesystems.", freeze ? "freezing" : "thawing");
@@ -264,15 +264,24 @@ VmBackupNewDriverOp(VmBackupState *state,       // IN
 static Bool
 VmBackupSyncDriverReadyForSnapshot(VmBackupState *state)
 {
-   Bool success;
    SyncDriverHandle *handle = state->clientData;
 
    g_debug("*** %s\n", __FUNCTION__);
    if (handle != NULL && *handle != SYNCDRIVER_INVALID_HANDLE) {
+      Bool success;
       success = VmBackup_SendEvent(VMBACKUP_EVENT_SNAPSHOT_COMMIT, 0, "");
       if (success) {
          state->freezeStatus = VMBACKUP_FREEZE_FINISHED;
       } else {
+         /*
+          * If the vmx does not know this event (e.g. due to an RPC timeout),
+          * then filesystems need to be thawed here because snapshotDone
+          * will not be sent by the vmx.
+          */
+         g_debug("VMX state changed; thawing filesystems.\n");
+         if (!VmBackupDriverThaw(handle)) {
+            g_warning("Error thawing filesystems.\n");
+         }
          state->freezeStatus = VMBACKUP_FREEZE_ERROR;
       }
       return success;
-- 
2.11.0

>From dd09841deacd2b2936f6542f56df07b452f32abe Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Wed, 18 Jan 2017 17:28:16 -0800
Subject: [PATCH 3/8] Add enhanced log messages and a few new log messages.

---
 open-vm-tools/lib/syncDriver/syncDriverLinux.c          | 7 +++++--
 open-vm-tools/services/plugins/vix/foundryToolsDaemon.c | 6 ++++--
 open-vm-tools/services/plugins/vmbackup/stateMachine.c  | 3 ++-
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/open-vm-tools/lib/syncDriver/syncDriverLinux.c b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
index 68d5f5f4..80d937f8 100644
--- a/open-vm-tools/lib/syncDriver/syncDriverLinux.c
+++ b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
@@ -73,7 +73,9 @@ LinuxFiThaw(const SyncDriverHandle handle)
     * Thaw in the reverse order of freeze
     */
    for (i = sync->fdCnt; i > 0; i--) {
+      Debug(LGPFX "Thawing fd=%d.\n", sync->fds[i-1]);
       if (ioctl(sync->fds[i-1], FITHAW) == -1) {
+         Debug(LGPFX "Thaw failed for fd=%d.\n", sync->fds[i-1]);
          err = SD_ERROR;
       }
    }
@@ -104,6 +106,7 @@ LinuxFiClose(SyncDriverHandle handle)
     * Close in the reverse order of open
     */
    for (i = sync->fdCnt; i > 0; i--) {
+      Debug(LGPFX "Closing fd=%d.\n", sync->fds[i-1]);
       close(sync->fds[i-1]);
    }
    free(sync->fds);
@@ -198,7 +201,7 @@ LinuxDriver_Freeze(const GSList *paths,
          }
       }
 
-      Debug(LGPFX "freezing path '%s'.\n", path);
+      Debug(LGPFX "freezing path '%s' (fd=%d).\n", path, fd);
       if (ioctl(fd, FIFREEZE) == -1) {
          int ioctlerr = errno;
          /*
@@ -221,7 +224,7 @@ LinuxDriver_Freeze(const GSList *paths,
             break;
          }
       } else {
-         Debug(LGPFX "successfully froze '%s'.\n", path);
+         Debug(LGPFX "successfully froze '%s' (fd=%d).\n", path, fd);
          if (!DynBuf_Append(&fds, &fd, sizeof fd)) {
             if (ioctl(fd, FITHAW) == -1) {
                Warning(LGPFX "failed to thaw '%s': %d (%s)\n",
diff --git a/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c b/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
index 795dd118..6cd9b16a 100644
--- a/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
+++ b/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
@@ -1256,9 +1256,11 @@ ToolsDaemonTcloReceiveVixCommand(RpcInData *data) // IN
     */
    additionalError = VixTools_GetAdditionalError(requestMsg->opCode, err);
    if (additionalError) {
-      g_message("%s: additionalError = %u\n", __FUNCTION__, additionalError);
+      g_message("%s: command %u, additionalError = %u\n",
+                __FUNCTION__, requestMsg->opCode, additionalError);
    } else {
-      g_debug("%s: additionalError = %u\n", __FUNCTION__, additionalError);
+      g_debug("%s: command %u, additionalError = %u\n",
+              __FUNCTION__, requestMsg->opCode, additionalError);
    }
 
 abort:
diff --git a/open-vm-tools/services/plugins/vmbackup/stateMachine.c b/open-vm-tools/services/plugins/vmbackup/stateMachine.c
index c040f5f4..e0f4e2c3 100644
--- a/open-vm-tools/services/plugins/vmbackup/stateMachine.c
+++ b/open-vm-tools/services/plugins/vmbackup/stateMachine.c
@@ -267,7 +267,8 @@ VmBackup_SendEvent(const char *event,
 #endif
 
    if (!success) {
-      g_warning("Failed to send vmbackup event: %s.\n", result);
+      g_warning("Failed to send vmbackup event: %s, result: %s.\n",
+                msg, result);
    }
    vm_free(result);
    g_free(msg);
-- 
2.11.0

>From 5ff0d19b462424aa2057b5eff256b55efe5267e8 Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Wed, 18 Jan 2017 17:28:16 -0800
Subject: [PATCH 4/8] Change VMware Tools ISO mapping for centos and
 oraclelinux effective with 10.1.1

No impact to open-vm-tools.
---
 open-vm-tools/lib/include/guest_os_tables.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/open-vm-tools/lib/include/guest_os_tables.h b/open-vm-tools/lib/include/guest_os_tables.h
index c4773732..8ec87307 100644
--- a/open-vm-tools/lib/include/guest_os_tables.h
+++ b/open-vm-tools/lib/include/guest_os_tables.h
@@ -118,8 +118,8 @@
    GOSL(STR_OS_ASIANUX_4 "-64",              GUEST_OS_OTHER26XLINUX_64,       "linuxPreGlibc25.iso")  \
    GOSL(STR_OS_ASIANUX_5 "-64",              GUEST_OS_OTHER3XLINUX_64,        "linux.iso")            \
    GOSL(STR_OS_ASIANUX_7 "-64",              GUEST_OS_OTHER3XLINUX_64,        "linux.iso")            \
-   GOSL(STR_OS_CENTOS,                       GUEST_OS_CENTOS,                 "linuxPreGlibc25.iso")  \
-   GOSL(STR_OS_CENTOS "-64",                 GUEST_OS_CENTOS_64,              "linuxPreGlibc25.iso")  \
+   GOSL(STR_OS_CENTOS,                       GUEST_OS_CENTOS,                 "linux.iso")            \
+   GOSL(STR_OS_CENTOS "-64",                 GUEST_OS_CENTOS_64,              "linux.iso")            \
    GOSL(STR_OS_CENTOS "6",                   GUEST_OS_CENTOS6,                "linux.iso")            \
    GOSL(STR_OS_CENTOS "6-64",                GUEST_OS_CENTOS6_64,             "linux.iso")            \
    GOSL(STR_OS_CENTOS "7-64",                GUEST_OS_CENTOS7_64,             "linux.iso")            \
@@ -173,8 +173,8 @@
    GOSL("openserver6",                       GUEST_OS_OPENSERVER_5_AND_6,     NULL)                   \
    GOSL(STR_OS_OPENSUSE,                     GUEST_OS_OTHER26XLINUX,          "linux.iso")            \
    GOSL(STR_OS_OPENSUSE "-64",               GUEST_OS_OTHER26XLINUX_64,       "linux.iso")            \
-   GOSL(STR_OS_ORACLE,                       GUEST_OS_ORACLE,                 "linuxPreGlibc25.iso")  \
-   GOSL(STR_OS_ORACLE "-64",                 GUEST_OS_ORACLE_64,              "linuxPreGlibc25.iso")  \
+   GOSL(STR_OS_ORACLE,                       GUEST_OS_ORACLE,                 "linux.iso")            \
+   GOSL(STR_OS_ORACLE "-64",                 GUEST_OS_ORACLE_64,              "linux.iso")            \
    GOSL(STR_OS_ORACLE "6",                   GUEST_OS_ORACLE6,                "linux.iso")            \
    GOSL(STR_OS_ORACLE "6-64",                GUEST_OS_ORACLE6_64,             "linux.iso")            \
    GOSL(STR_OS_ORACLE "7-64",                GUEST_OS_ORACLE7_64,             "linux.iso")            \
-- 
2.11.0

>From c67f0a807519adcba8b187788d7a1683067073e1 Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Fri, 17 Feb 2017 13:26:23 -0800
Subject: [PATCH 5/8] Map certain PAM errors to VGAUTH_E_AUTHENTICATION_DENIED.

---
 open-vm-tools/vgauth/lib/authPosix.c | 73 +++++++++++++++++++-----------------
 1 file changed, 39 insertions(+), 34 deletions(-)

diff --git a/open-vm-tools/vgauth/lib/authPosix.c b/open-vm-tools/vgauth/lib/authPosix.c
index c77c14f0..8de8b5a7 100644
--- a/open-vm-tools/vgauth/lib/authPosix.c
+++ b/open-vm-tools/vgauth/lib/authPosix.c
@@ -261,6 +261,7 @@ VGAuthValidateUsernamePasswordImpl(VGAuthContext *ctx,
    pam_handle_t *pamh;
    int pam_error;
    PamData pd;
+   VGAuthError err;
 #else
    struct passwd *pwd;
 #endif
@@ -270,34 +271,6 @@ VGAuthValidateUsernamePasswordImpl(VGAuthContext *ctx,
       return VGAUTH_E_FAIL;
    }
 
-#ifdef sun
-/* Solaris does not have PAM_MODULE_UNKNOWN. */
-#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \
-                    Warning("PAM error: %s (%d)\n", \
-                            dlpam_strerror(pamh, pam_error), pam_error);  \
-                    dlpam_end(pamh, pam_error); \
-                    if (PAM_AUTH_ERR == pam_error || \
-                        PAM_USER_UNKNOWN == pam_error) { \
-                       return VGAUTH_E_AUTHENTICATION_DENIED; \
-                    } else { \
-                       return VGAUTH_E_FAIL; \
-                    } \
-                 }
-#else
-#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \
-                    Warning("PAM error: %s (%d)\n", \
-                            dlpam_strerror(pamh, pam_error), pam_error);  \
-                    dlpam_end(pamh, pam_error); \
-                    if (PAM_AUTH_ERR == pam_error || \
-                        PAM_USER_UNKNOWN == pam_error || \
-                        PAM_MODULE_UNKNOWN == pam_error) {\
-                       return VGAUTH_E_AUTHENTICATION_DENIED; \
-                    } else { \
-                       return VGAUTH_E_FAIL; \
-                    } \
-                 }
-#endif
-
    pd.username = userName;
    pd.password = password;
    PAM_conversation.appdata_ptr = &pd;
@@ -310,12 +283,44 @@ VGAuthValidateUsernamePasswordImpl(VGAuthContext *ctx,
    }
 
    pam_error = dlpam_authenticate(pamh, 0);
-   PAM_BAIL;
-   pam_error = dlpam_acct_mgmt(pamh, 0);
-   PAM_BAIL;
-   pam_error = dlpam_setcred(pamh, PAM_ESTABLISH_CRED);
-   PAM_BAIL;
-   dlpam_end(pamh, PAM_SUCCESS);
+   if (pam_error == PAM_SUCCESS) {
+      pam_error = dlpam_acct_mgmt(pamh, 0);
+      if (pam_error == PAM_SUCCESS) {
+         pam_error = dlpam_setcred(pamh, PAM_ESTABLISH_CRED);
+      }
+   }
+   dlpam_end(pamh, pam_error);
+   if (pam_error != PAM_SUCCESS) {
+      switch (pam_error) {
+         /*
+          * Most PAM errors get mapped to VGAUTH_E_AUTHENTICATION_DENIED,
+          * but some are mapped into VGAUTH_E_FAIL.
+          */
+         case PAM_OPEN_ERR:
+         case PAM_SYMBOL_ERR:
+         case PAM_SERVICE_ERR:
+         case PAM_SYSTEM_ERR:
+         case PAM_BUF_ERR:
+         case PAM_NO_MODULE_DATA:
+         case PAM_CONV_ERR:
+         case PAM_ABORT:
+#ifndef sun   /* The following error codes are undefined on Solaris. */
+         case PAM_BAD_ITEM:
+         case PAM_CONV_AGAIN:
+         case PAM_INCOMPLETE:
+#endif
+            err = VGAUTH_E_FAIL;
+            break;
+
+         default:
+            err = VGAUTH_E_AUTHENTICATION_DENIED;
+            break;
+
+      }
+      Warning("PAM error: %s (%d), mapped to VGAuth error "VGAUTHERR_FMT64"\n",
+              dlpam_strerror(pamh, pam_error), pam_error, err);
+      return err;
+   }
 
 #else /* !USE_PAM */
 
-- 
2.11.0

>From 0274e9068e407b5b7c0c4593161843e7a5749ccc Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Fri, 17 Feb 2017 13:26:23 -0800
Subject: [PATCH 6/8] Exclude non-directory and non-existing paths during
 quiescing.

---
 open-vm-tools/lib/syncDriver/syncDriverLinux.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/open-vm-tools/lib/syncDriver/syncDriverLinux.c b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
index 80d937f8..2d25d078 100644
--- a/open-vm-tools/lib/syncDriver/syncDriverLinux.c
+++ b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
@@ -30,6 +30,8 @@
 #include <unistd.h>
 #include <linux/fs.h>
 #include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 #include "debug.h"
 #include "dynbuf.h"
 #include "syncDriverInt.h"
@@ -170,12 +172,21 @@ LinuxDriver_Freeze(const GSList *paths,
     */
    while (paths != NULL) {
       int fd;
+      struct stat sbuf;
       const char *path = paths->data;
       Debug(LGPFX "opening path '%s'.\n", path);
       paths = g_slist_next(paths);
       fd = open(path, O_RDONLY);
       if (fd == -1) {
          switch (errno) {
+         case ENOENT:
+            /*
+             * We sometimes get stale mountpoints or special mountpoints
+             * created by the docker engine.
+             */
+            Debug(LGPFX "cannot find the directory '%s'.\n", path);
+            continue;
+
          case EACCES:
             /*
              * We sometimes get access errors to virtual filesystems mounted
@@ -201,6 +212,20 @@ LinuxDriver_Freeze(const GSList *paths,
          }
       }
 
+      if (fstat(fd, &sbuf) == -1) {
+         close(fd);
+         Debug(LGPFX "failed to stat '%s': %d (%s)\n",
+               path, errno, strerror(errno));
+         err = SD_ERROR;
+         goto exit;
+      }
+
+      if (!S_ISDIR(sbuf.st_mode)) {
+         close(fd);
+         Debug(LGPFX "Skipping a non-directory path '%s'.\n", path);
+         continue;
+      }
+
       Debug(LGPFX "freezing path '%s' (fd=%d).\n", path, fd);
       if (ioctl(fd, FIFREEZE) == -1) {
          int ioctlerr = errno;
-- 
2.11.0

>From 01c99d4b3a809943146baccde558a2ecec746432 Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Wed, 18 Jan 2017 17:28:16 -0800
Subject: [PATCH 7/8] Set/update the VMware Tools version for the 10.1.5
 release

---
 open-vm-tools/ChangeLog                      | 62 ++++++++++++++++++++++++++++
 open-vm-tools/LICENSE                        |  4 +-
 open-vm-tools/configure.ac                   |  4 +-
 open-vm-tools/lib/include/buildNumber.h      | 12 +++---
 open-vm-tools/lib/include/vm_tools_version.h | 21 ++++++----
 open-vm-tools/modules/linux/dkms.conf        |  2 +-
 open-vm-tools/modules/linux/dkms.sh          |  4 +-
 7 files changed, 89 insertions(+), 20 deletions(-)

diff --git a/open-vm-tools/ChangeLog b/open-vm-tools/ChangeLog
index 74fb7292..bbae024d 100644
--- a/open-vm-tools/ChangeLog
+++ b/open-vm-tools/ChangeLog
@@ -1,3 +1,65 @@
+open-vm-tools-10.1.5
+
+commit 34ad652204df2bcde7d504a8a7deac3a0229c324
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:20 2017 -0800
+
+    Update copyright year
+
+commit 2cacd294dc67600c171ecff95799b6c4d9266fdb
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:20 2017 -0800
+
+    Bump the VMware Tools update release to version 10.1.5
+    
+    Change the "current" version for the VMware Tools update release to
+    be 10.1.5.   This bump is to allow versions numbers for hot patches
+    which have been or may yet be issued before the update is GA.
+
+commit 9a42959c4ae8e98f8f1e107cb580c187462efdc5
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:19 2017 -0800
+
+    Back-out previous Copyright update.
+
+commit 0066a3f7113c15f0513b1bb5cbaf2d495188d8b6
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:18 2017 -0800
+
+    Update copyright year to 2017.
+
+commit 5af13991b0db6f957fb5e27dba027eedc4f5ca5a
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Update tools copyright to 2017
+
+commit 492b8837995814b373a52e81199c7a25e66593f5
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Change VMware Tools ISO mapping for centos and oraclelinux effective with 10.1.1
+    
+    No impact to open-vm-tools.
+
+commit 4f1fa88b9e2ef125ea7411b95c00659e7053bbcd
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Add enhanced log messages and a few new log messages.
+
+commit 36171f6857afd94e15c2a5761683dcadebfafbd8
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Thaw filesystems if the snapshot commit message to VMX fails
+
+commit 6ff97ba183f80f91a269b980cb384a45c4fbbab2
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Set/update the VMware Tools version for the 10.1.1 release
+
 open-vm-tools-10.1.0 build 4449150
 
 *	Hgfs VMX: make the shares object use const strings
diff --git a/open-vm-tools/LICENSE b/open-vm-tools/LICENSE
index ea861852..fb77eb9c 100644
--- a/open-vm-tools/LICENSE
+++ b/open-vm-tools/LICENSE
@@ -1,6 +1,6 @@
 LICENSE
 
-Open-vm-tools v10.1.0
+Open-vm-tools v10.1.5
 
 The Linux kernel modules are released under the GPL v2, a majority of the user level components are released under the LGPL v2.1, and the SVGA and mouse drivers are released under the X11 license.
 
@@ -231,7 +231,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
 ========
 
-Open-vm-tools v10.1.0 includes a number of subcomponents with separate copyright notices and license terms.  Your use of the source code for these subcomponents is subject to the terms and conditions of the following licenses.
+Open-vm-tools v10.1.5 includes a number of subcomponents with separate copyright notices and license terms.  Your use of the source code for these subcomponents is subject to the terms and conditions of the following licenses.
 
 
 SECTION 1: BSD-STYLE, MIT-STYLE, OR SIMILAR STYLE LICENSES
diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
index 8d4604e8..7f2eb13e 100644
--- a/open-vm-tools/configure.ac
+++ b/open-vm-tools/configure.ac
@@ -39,10 +39,10 @@
 ### Initialization
 ###
 
-TOOLS_VERSION="10.1.0"
+TOOLS_VERSION="10.1.5"
 AC_INIT(
    [open-vm-tools],
-   [10.1.0],
+   [10.1.5],
    [open-vm-tools-devel@lists.sourceforge.net])
 
 # In order to make this configure script auto-detect situations where
diff --git a/open-vm-tools/lib/include/buildNumber.h b/open-vm-tools/lib/include/buildNumber.h
index 6c1816fd..08af403e 100644
--- a/open-vm-tools/lib/include/buildNumber.h
+++ b/open-vm-tools/lib/include/buildNumber.h
@@ -1,12 +1,12 @@
 #define BUILD_NUMBER \
-	"build-4449150"
+	"build-5055683"
 #define BUILD_NUMBER_NUMERIC \
-	4449150
+	5055683
 #define BUILD_NUMBER_NUMERIC_STRING \
-	"4449150"
+	"5055683"
 #define PRODUCT_BUILD_NUMBER \
-	"product-build-57774"
+	"product-build-59732"
 #define PRODUCT_BUILD_NUMBER_NUMERIC \
-	57774
+	59732
 #define PRODUCT_BUILD_NUMBER_NUMERIC_STRING \
-	"57774"
+	"59732"
diff --git a/open-vm-tools/lib/include/vm_tools_version.h b/open-vm-tools/lib/include/vm_tools_version.h
index 81aa3454..3bda7ee6 100644
--- a/open-vm-tools/lib/include/vm_tools_version.h
+++ b/open-vm-tools/lib/include/vm_tools_version.h
@@ -1389,15 +1389,22 @@ TOOLS_VERSION_UINT_TO_COMPONENTS(const ToolsVersion toolsVersion,   // IN
 #define   TOOLS_VERSION_TORQUE_WRENCH_FROZEN1_V_BASE 12
 
 #ifndef RC_INVOKED
-#define   TOOLS_VERSION_NEXT TOOLS_VERSION_TO_UINT(TOOLS_VERSION_NEXT_V)
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE TOOLS_VERSION_TO_UINT(TOOLS_VERSION_SCREW_DRIVER_RELEASE_V)
 #endif /* RC_INVOKED */
-#define   TOOLS_VERSION_NEXT_V_MJR  10
-#define   TOOLS_VERSION_NEXT_V_MNR  1
-#define   TOOLS_VERSION_NEXT_V_BASE 0
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE_V_MJR  10
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE_V_MNR  1
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE_V_BASE 0
 
-#define   TOOLS_VERSION_CURRENT        TOOLS_VERSION_NEXT
-#define   TOOLS_VERSION_CURRENT_STR    TOOLS_VERSION_TO_STR(TOOLS_VERSION_NEXT)
-#define   TOOLS_VERSION_CURRENT_CSV    TOOLS_VERSION_TO_CSV(TOOLS_VERSION_NEXT)
+#ifndef RC_INVOKED
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1 TOOLS_VERSION_TO_UINT(TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V)
+#endif /* RC_INVOKED */
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V_MJR  10
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V_MNR  1
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V_BASE 5
+
+#define   TOOLS_VERSION_CURRENT        TOOLS_VERSION_SCREW_DRIVER_UPDATE1
+#define   TOOLS_VERSION_CURRENT_STR    TOOLS_VERSION_TO_STR(TOOLS_VERSION_SCREW_DRIVER_UPDATE1)
+#define   TOOLS_VERSION_CURRENT_CSV    TOOLS_VERSION_TO_CSV(TOOLS_VERSION_SCREW_DRIVER_UPDATE1)
 
 /*
  * The extended Tools version is the current Tools version with the
diff --git a/open-vm-tools/modules/linux/dkms.conf b/open-vm-tools/modules/linux/dkms.conf
index 43c6c8a2..f507f221 100644
--- a/open-vm-tools/modules/linux/dkms.conf
+++ b/open-vm-tools/modules/linux/dkms.conf
@@ -1,5 +1,5 @@
 PACKAGE_NAME=open-vm-tools
-PACKAGE_VERSION=10.1.0
+PACKAGE_VERSION=10.1.5
 MAKE_CMD_TMPL="make VM_UNAME=\$kernelver \
                MODULEBUILDDIR=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build"
 
diff --git a/open-vm-tools/modules/linux/dkms.sh b/open-vm-tools/modules/linux/dkms.sh
index e4733ec4..15cc3cd1 100644
--- a/open-vm-tools/modules/linux/dkms.sh
+++ b/open-vm-tools/modules/linux/dkms.sh
@@ -28,12 +28,12 @@ then
    echo "   src:  root of unpacked open-vm-tools package"
    echo "   dst:  where to create the dkms tree"
    echo
-   echo "The script will create an 'open-vm-tools' module with version 10.1.0."
+   echo "The script will create an 'open-vm-tools' module with version 10.1.5."
    exit 1
 fi
 
 src=$1
-dst=$2/open-vm-tools-10.1.0
+dst=$2/open-vm-tools-10.1.5
 
 SHARED_HEADERS="backdoor_def.h"
 SHARED_HEADERS="$SHARED_HEADERS backdoor_types.h"
-- 
2.11.0

From 72e0b2f7fb15692c55d8745bed15f3ccf19b7854 Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Wed, 18 Jan 2017 17:28:20 -0800
Subject: [PATCH 8/8] Update documentation / copyright years.

---
 ReleaseNotes.md                      | 121 +++++++++++++++++------------------
 open-vm-tools/ChangeLog              |  20 +++++-
 open-vm-tools/NEWS                   |   8 +++
 open-vm-tools/README                 |   2 +-
 open-vm-tools/lib/include/vm_legal.h |   4 +-
 5 files changed, 88 insertions(+), 67 deletions(-)

diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index ac923066..d008ddd0 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,63 +1,60 @@
-#open-vm-tools 10.1.0 Release Notes 
-
-Updated on 26 OCT 2016
-##What's in the Release Notes
-The release notes cover the following topics: 
-
-- What's New
-- Internationalization
-- Compatibility
-- Installation and Upgrades for This Release
-- Known Issues
-
-##What's New 
-VMware Tools is a suite of utilities that enhances the performance of the virtual machine's guest operating system and improves management of the virtual machine. Read about the new and enhanced features in this release below:
-
-- **vmware-namespace-cmd**: Added vmware-namespace-cmd command line utility that exposes set/get commands for the namespace database in the VMX.
-- **gtk3 support**: open-vm-tools has been updated to use gtk3 libraries.
-- **Common Agent Framework (CAF)**: CAF provides the basic services necessary to simplify secure and efficient management of agents inside virtual machines.
-- **xmlsec1**: Changed guest authentication to xmlsec1.
-- **FreeBSD**: Changes to support open-vm-tools on FreeBSD.
-- **Automatic Linux Kernel Modules**: Automatic rebuilding of kernel modules is enabled by default.
-- **New sub-command**: Added a new sub-command to push updated network information to the host on demand.
-- **udev-rules**: Added udev rules for configuring SCSI timeout in the guest.
-- **Ubuntu 16.10**: Fixes for running on Ubuntu 16.10.
-- **Quiesced Snapshot**: Fix for quiesced snapshot failure leaving guest file system quiesced.
-
-## Internationalization 
-open-vm-tools 10.1.0 supports the following languages:
-
-- English 
-- French 
-- German 
-- Spanish 
-- Italian 
-- Japanese 
-- Korean 
-- Simplified Chinese 
-- Traditional Chinese
-
-## Compatibility 
-open-vm-tools 10.1.0 is compatible with all supported versions of VMware vSphere, VMware Workstation 12.5 and VMware Fusion 8.5.
-## Installation and Upgrades for This Release 
-The steps to install open-vm-tools vary depending on your VMware product and the guest operating system you have installed. For general steps to install open-vm-tools in most VMware products, see https://github.com/vmware/open-vm-tools/blob/master/README.md
-## Known Issues 
-The known issues are as follows:
-
-- **Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04.**
-
-    Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04 with rabbitmq-c version lower than 0.8.0
-
-    Workaround: Upgrade rabbitmq-c to version 0.8.0 or higher for TLS1.2 support in Common Agent Framework
-
-- **vmusr plug-ins do not load on Solaris 10 Update 11.**
-
-    While running VMware Tools 10.1 on Solaris 10 U11 guest operating systems, the following vmusr plug-ins are not loaded:
-        libdesktopEvents.so
-        libdndcp.so
-        libresolutionSet.so
-
-    This issue might also occur in Solaris version 11.2.
-
-    Workaround: Upgrade to Solaris 11.3. 
+# open-vm-tools 10.1.5 Release Notes
+
+## What's in the Release Notes
+
+The release notes cover the following topics:
+
+*   What's New
+*   Internationalization
+*   Compatibility Notes
+*   Resolved Issues
+*   Known Issues from Earlier Releases
+
+## What's New
+
+open-vm-tools is a suite of utilities that enhances the performance of the virtual machine's guest operating system and improves management of the virtual machine.
+
+*   **Resolved Issues**: This release of open-vm-tools 10.1.5 addresses issues that have been documented in the Resolved Issues section.
+
+## Internationalization
+
+open-vm-tools 10.1.5 is available in the following languages:
+
+*   English
+*   French
+*   German
+*   Spanish
+*   Italian
+*   Japanese
+*   Korean
+*   Simplified Chinese
+*   Traditional Chinese
+
+## Compatibility
+
+Please refer to [VMware Compatibility Guide](http://www.vmware.com/resources/compatibility/search.php) for compatibility related information.
+
+## Resolved Issues
+
+*   **Authentication failure is reported as unknown general system error.**  
+    Attempts to authenticate through <tt>VGAuth</tt> service might result in an authentication-specific error such as an expired account or password. The authentication-specific error might then be incorrectly reported as an unknown general system error, similar to the following:  
+
+    <tt>CommunicationException: Failed to create temp file on target <IP_ADDRESS>: A general system error occurred: Unknown error</tt>
+
+    This issue is resolved in this release.
+
+*   **Unable to backup virtual machines with active Docker containers**.  
+
+    Attempts to take quiesced snapshots may fail on RHEL 7 guest operating systems that are running Docker containers. Docker version 1.12.x and later create special mount points for containers. These mount points are recorded as 'net:[NUMBER]' instead of absolute paths in <tt>/proc/self/mounts</tt> on the system.
+
+    Note: To see the issue tracked by Red Hat, see [Red Hat Bugzilla.](https://bugzilla.redhat.com/show_bug.cgi?id=1418962)
+
+    This issue is resolved in this release.
+
+## Known Issues from Earlier Releases
+
+*   **Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04**  
+    Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04 with <tt>rabbitmq-c</tt> version lower than 0.8.0  
+
+    Workaround: Upgrade <tt>rabbitmq-c</tt> to version 0.8.0 or later for TLS1.2 support in Common Agent Framework.
 
diff --git a/open-vm-tools/ChangeLog b/open-vm-tools/ChangeLog
index bbae024d..fabd35b7 100644
--- a/open-vm-tools/ChangeLog
+++ b/open-vm-tools/ChangeLog
@@ -1,6 +1,22 @@
-open-vm-tools-10.1.5
+commit 6ffbf9d187613a911a3811f56667ba288c714e1f
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Fri Feb 17 13:26:23 2017 -0800
+
+    Exclude non-directory and non-existing paths during quiescing.
+
+commit 72a5cb442d7e61e33e5ca6fde37beeeb522a6ab9
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Fri Feb 17 13:26:23 2017 -0800
+
+    Map certain PAM errors to VGAUTH_E_AUTHENTICATION_DENIED.
+
+commit 31ba85f8ef06b01adf7f32b1cc0d2c54b3b233f3
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Thu Jan 19 19:22:59 2017 -0800
+
+    bump version to 10.1.5
 
-commit 34ad652204df2bcde7d504a8a7deac3a0229c324
+commit b414574f336664dad7f69e35a4b340c131f89fce
 Author: Oliver Kurth <okurth@vmware.com>
 Date:   Wed Jan 18 17:28:20 2017 -0800
 
diff --git a/open-vm-tools/NEWS b/open-vm-tools/NEWS
index bee74132..b6f85063 100644
--- a/open-vm-tools/NEWS
+++ b/open-vm-tools/NEWS
@@ -1,3 +1,11 @@
+open-vm-tools 2017.02.11 changes:
+	* Exclude non-directory and non-existing paths during quiescing.
+	* Map certain PAM errors to VGAUTH_E_AUTHENTICATION_DENIED.
+	* Bump the VMware Tools update release to version 10.1.5
+	* Update tools copyright to 2017
+	* Add enhanced log messages and a few new log messages.
+	* Thaw filesystems if the snapshot commit message to VMX fails
+
 open-vm-tools 2016.10.25 changes:
 	* Added vmware-namespace-cmd command line utility.
 	* Added gtk3 support.
diff --git a/open-vm-tools/README b/open-vm-tools/README
index 45723b71..f067f2b0 100644
--- a/open-vm-tools/README
+++ b/open-vm-tools/README
@@ -1,6 +1,6 @@
 Project information:
 
-open-vm-tools <http://open-vm-tools.sourceforge.net/>
+open-vm-tools <https://github.com/vmware/open-vm-tools>
 
 	These are the release notes for the open-vm-tools.  Read them carefully, as
 they explain how to build this project for different platforms and various 
diff --git a/open-vm-tools/lib/include/vm_legal.h b/open-vm-tools/lib/include/vm_legal.h
index 97debde8..777a8bbc 100644
--- a/open-vm-tools/lib/include/vm_legal.h
+++ b/open-vm-tools/lib/include/vm_legal.h
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2006-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2006-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -36,7 +36,7 @@
  * The following strings may be incorporated into MSGID strings.  Updating
  * them therefore may require updating translations and vmsg auditing files.
  */
-#define COPYRIGHT_YEARS    "1998-2016"
+#define COPYRIGHT_YEARS    "1998-2017"
 #define COPYRIGHT_STRING   "Copyright (C) " COPYRIGHT_YEARS " " COMPANY_NAME
 #define RIGHT_RESERVED     "All rights reserved."
 
-- 
2.11.0

diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index ac923066..d008ddd0 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,63 +1,60 @@
-#open-vm-tools 10.1.0 Release Notes 
-
-Updated on 26 OCT 2016
-##What's in the Release Notes
-The release notes cover the following topics: 
-
-- What's New
-- Internationalization
-- Compatibility
-- Installation and Upgrades for This Release
-- Known Issues
-
-##What's New 
-VMware Tools is a suite of utilities that enhances the performance of the virtual machine's guest operating system and improves management of the virtual machine. Read about the new and enhanced features in this release below:
-
-- **vmware-namespace-cmd**: Added vmware-namespace-cmd command line utility that exposes set/get commands for the namespace database in the VMX.
-- **gtk3 support**: open-vm-tools has been updated to use gtk3 libraries.
-- **Common Agent Framework (CAF)**: CAF provides the basic services necessary to simplify secure and efficient management of agents inside virtual machines.
-- **xmlsec1**: Changed guest authentication to xmlsec1.
-- **FreeBSD**: Changes to support open-vm-tools on FreeBSD.
-- **Automatic Linux Kernel Modules**: Automatic rebuilding of kernel modules is enabled by default.
-- **New sub-command**: Added a new sub-command to push updated network information to the host on demand.
-- **udev-rules**: Added udev rules for configuring SCSI timeout in the guest.
-- **Ubuntu 16.10**: Fixes for running on Ubuntu 16.10.
-- **Quiesced Snapshot**: Fix for quiesced snapshot failure leaving guest file system quiesced.
-
-## Internationalization 
-open-vm-tools 10.1.0 supports the following languages:
-
-- English 
-- French 
-- German 
-- Spanish 
-- Italian 
-- Japanese 
-- Korean 
-- Simplified Chinese 
-- Traditional Chinese
-
-## Compatibility 
-open-vm-tools 10.1.0 is compatible with all supported versions of VMware vSphere, VMware Workstation 12.5 and VMware Fusion 8.5.
-## Installation and Upgrades for This Release 
-The steps to install open-vm-tools vary depending on your VMware product and the guest operating system you have installed. For general steps to install open-vm-tools in most VMware products, see https://github.com/vmware/open-vm-tools/blob/master/README.md
-## Known Issues 
-The known issues are as follows:
-
-- **Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04.**
-
-    Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04 with rabbitmq-c version lower than 0.8.0
-
-    Workaround: Upgrade rabbitmq-c to version 0.8.0 or higher for TLS1.2 support in Common Agent Framework
-
-- **vmusr plug-ins do not load on Solaris 10 Update 11.**
-
-    While running VMware Tools 10.1 on Solaris 10 U11 guest operating systems, the following vmusr plug-ins are not loaded:
-        libdesktopEvents.so
-        libdndcp.so
-        libresolutionSet.so
-
-    This issue might also occur in Solaris version 11.2.
-
-    Workaround: Upgrade to Solaris 11.3. 
+# open-vm-tools 10.1.5 Release Notes
+
+## What's in the Release Notes
+
+The release notes cover the following topics:
+
+*   What's New
+*   Internationalization
+*   Compatibility Notes
+*   Resolved Issues
+*   Known Issues from Earlier Releases
+
+## What's New
+
+open-vm-tools is a suite of utilities that enhances the performance of the virtual machine's guest operating system and improves management of the virtual machine.
+
+*   **Resolved Issues**: This release of open-vm-tools 10.1.5 addresses issues that have been documented in the Resolved Issues section.
+
+## Internationalization
+
+open-vm-tools 10.1.5 is available in the following languages:
+
+*   English
+*   French
+*   German
+*   Spanish
+*   Italian
+*   Japanese
+*   Korean
+*   Simplified Chinese
+*   Traditional Chinese
+
+## Compatibility
+
+Please refer to [VMware Compatibility Guide](http://www.vmware.com/resources/compatibility/search.php) for compatibility related information.
+
+## Resolved Issues
+
+*   **Authentication failure is reported as unknown general system error.**  
+    Attempts to authenticate through <tt>VGAuth</tt> service might result in an authentication-specific error such as an expired account or password. The authentication-specific error might then be incorrectly reported as an unknown general system error, similar to the following:  
+
+    <tt>CommunicationException: Failed to create temp file on target <IP_ADDRESS>: A general system error occurred: Unknown error</tt>
+
+    This issue is resolved in this release.
+
+*   **Unable to backup virtual machines with active Docker containers**.  
+
+    Attempts to take quiesced snapshots may fail on RHEL 7 guest operating systems that are running Docker containers. Docker version 1.12.x and later create special mount points for containers. These mount points are recorded as 'net:[NUMBER]' instead of absolute paths in <tt>/proc/self/mounts</tt> on the system.
+
+    Note: To see the issue tracked by Red Hat, see [Red Hat Bugzilla.](https://bugzilla.redhat.com/show_bug.cgi?id=1418962)
+
+    This issue is resolved in this release.
+
+## Known Issues from Earlier Releases
+
+*   **Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04**  
+    Common Agent Framework in open-vm-tools fails to build in Ubuntu 14.04 with <tt>rabbitmq-c</tt> version lower than 0.8.0  
+
+    Workaround: Upgrade <tt>rabbitmq-c</tt> to version 0.8.0 or later for TLS1.2 support in Common Agent Framework.
 
diff --git a/debian/changelog b/debian/changelog
index a870e962..30de3806 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,51 @@
+open-vm-tools (2:10.1.5-5055683-1) unstable; urgency=medium
+
+  * [60d1417] Merge tag 'upstream/10.1.5-5055683'
+    Upstream version 10.1.5-5055683
+    Closes: #856330
+
+    10.1.5 is a point release fixing the following issues:
+    - Authentication failure is reported as unknown general system error.
+      Attempts to authenticate through VGAuth service might result
+      in an authentication-specific error such as an expired account or
+      password. The authentication-specific error might then be incorrectly
+      reported as an unknown general system error, similar to the following:
+      CommunicationException: Failed to create temp file on target
+      <IP_ADDRESS>: A general system error occurred: Unknown error
+
+    - Unable to backup virtual machines with active Docker containers.
+      This bug should not happen in Debian stretch at all, but might
+      be relevant for backports.
+
+    - Fix ISO mappings for CentOS/OracleLinux. Not relevant for Debian
+
+    - Thaw Filesystems if snapshot commit message to VMX fails.
+
+    - Add missing agent configuration files that were accidentally
+      ignored by .gitignore
+
+ -- Bernd Zeimetz <bzed@debian.org>  Tue, 28 Feb 2017 15:54:58 +0100
+
+open-vm-tools (2:10.1.0-4449150-4) unstable; urgency=medium
+
+  [ Chris Glass ]
+  * [d55b33f] Point the control file's homepage to the new one.
+    The upstream open-vm-tools switched from sourceforge to github. This
+    simply updates the link to reflect that.
+    Signed-off-by: Chris Glass <chris.glass@canonical.com>
+
+  [ Bernd Zeimetz ]
+  * [f44a9a8] Drop duplicate udev rules.
+    Timeouts are set in 99-vmware-scsi-udev.rules now,
+    shipped by upstream.
+    Thanks to Bernhard Schmidt (Closes: #851240)
+  * [21df3fa] Install vgauth.service.
+    vgauth is a service that allows authentication in the guest using SAML
+    tokens. Necessary for guest operations initiated from the vSphere
+    datacenter. (Closes: #855337)
+
+ -- Bernd Zeimetz <bzed@debian.org>  Tue, 21 Feb 2017 22:45:06 +0100
+
 open-vm-tools (2:10.1.0-4449150-3) unstable; urgency=medium
 
   * [17b04da] Override dh_md5sums for arch-dependent packages only.
diff --git a/debian/control b/debian/control
index 994d73c2..cab79610 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Build-Depends:
  libxinerama-dev, libxss-dev, libxtst-dev, dh-autoreconf, dh-systemd,
  libmspack-dev, libssl1.0-dev, libxerces-c-dev, libxml-security-c-dev
 Standards-Version: 3.9.6
-Homepage: http://open-vm-tools.sourceforge.net/
+Homepage: https://github.com/vmware/open-vm-tools
 Vcs-Git: https://github.com/bzed/pkg-open-vm-tools.git
 Vcs-Browser: https://github.com/bzed/pkg-open-vm-tools
 
diff --git a/debian/open-vm-tools.udev b/debian/open-vm-tools.udev
index 343100bd..b015a82f 100644
--- a/debian/open-vm-tools.udev
+++ b/debian/open-vm-tools.udev
@@ -1,12 +1,3 @@
-# VMware SCSI devices Timeout adjustment
-#
-# Modify the timeout value for VMware SCSI devices so that
-# in the event of a failover, we don't time out.
-# See Bug 271286 for more information.
-
-ACTION=="add|change", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware  " , ATTRS{model}=="Virtual disk    ",   RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'"
-
-
 # VMWare Virtual Sockets permissions
 #
 # after loading the vsock module, a block device /dev/vsock will be created with permission 0600
diff --git a/debian/open-vm-tools.vgauth.service b/debian/open-vm-tools.vgauth.service
new file mode 100644
index 00000000..94f7c89e
--- /dev/null
+++ b/debian/open-vm-tools.vgauth.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Authentication service for virtual machines hosted on VMware
+Documentation=http://github.com/vmware/open-vm-tools
+ConditionVirtualization=vmware
+PartOf=open-vm-tools.service
+
+[Service]
+ExecStart=/usr/bin/VGAuthService
+TimeoutStopSec=5
+
+[Install]
+RequiredBy=open-vm-tools.service
diff --git a/debian/rules b/debian/rules
index 2e4194e7..f63ec5c1 100755
--- a/debian/rules
+++ b/debian/rules
@@ -115,8 +115,13 @@ override_dh_fixperms:
 
 	dh_fixperms -Xvmware-user-suid-wrapper
 
+override_dh_systemd_enable:
+	dh_systemd_enable -popen-vm-tools
+	dh_systemd_enable -popen-vm-tools --name vgauth
+
 override_dh_systemd_start:
-	dh_systemd_start
+	dh_systemd_start -popen-vm-tools
+	dh_systemd_start -popen-vm-tools --name vgauth
 	sed -i 's,run-vmblock-fuse,run-vmblock\\\\x2dfuse,g' debian/*.debhelper
 
 override_dh_installchangelogs:
diff --git a/open-vm-tools/.gitignore b/open-vm-tools/.gitignore
index dfc1a5a6..0b46a8cb 100644
--- a/open-vm-tools/.gitignore
+++ b/open-vm-tools/.gitignore
@@ -12,6 +12,7 @@ Makefile
 Makefile.in
 aclocal.m4
 config
+!common-agent/etc/config
 config.log
 config.status
 configure
diff --git a/open-vm-tools/ChangeLog b/open-vm-tools/ChangeLog
index 40080c5e..fabd35b7 100644
--- a/open-vm-tools/ChangeLog
+++ b/open-vm-tools/ChangeLog
@@ -1,3 +1,81 @@
+commit 6ffbf9d187613a911a3811f56667ba288c714e1f
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Fri Feb 17 13:26:23 2017 -0800
+
+    Exclude non-directory and non-existing paths during quiescing.
+
+commit 72a5cb442d7e61e33e5ca6fde37beeeb522a6ab9
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Fri Feb 17 13:26:23 2017 -0800
+
+    Map certain PAM errors to VGAUTH_E_AUTHENTICATION_DENIED.
+
+commit 31ba85f8ef06b01adf7f32b1cc0d2c54b3b233f3
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Thu Jan 19 19:22:59 2017 -0800
+
+    bump version to 10.1.5
+
+commit b414574f336664dad7f69e35a4b340c131f89fce
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:20 2017 -0800
+
+    Update copyright year
+
+commit 2cacd294dc67600c171ecff95799b6c4d9266fdb
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:20 2017 -0800
+
+    Bump the VMware Tools update release to version 10.1.5
+    
+    Change the "current" version for the VMware Tools update release to
+    be 10.1.5.   This bump is to allow versions numbers for hot patches
+    which have been or may yet be issued before the update is GA.
+
+commit 9a42959c4ae8e98f8f1e107cb580c187462efdc5
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:19 2017 -0800
+
+    Back-out previous Copyright update.
+
+commit 0066a3f7113c15f0513b1bb5cbaf2d495188d8b6
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:18 2017 -0800
+
+    Update copyright year to 2017.
+
+commit 5af13991b0db6f957fb5e27dba027eedc4f5ca5a
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Update tools copyright to 2017
+
+commit 492b8837995814b373a52e81199c7a25e66593f5
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Change VMware Tools ISO mapping for centos and oraclelinux effective with 10.1.1
+    
+    No impact to open-vm-tools.
+
+commit 4f1fa88b9e2ef125ea7411b95c00659e7053bbcd
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Add enhanced log messages and a few new log messages.
+
+commit 36171f6857afd94e15c2a5761683dcadebfafbd8
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Thaw filesystems if the snapshot commit message to VMX fails
+
+commit 6ff97ba183f80f91a269b980cb384a45c4fbbab2
+Author: Oliver Kurth <okurth@vmware.com>
+Date:   Wed Jan 18 17:28:16 2017 -0800
+
+    Set/update the VMware Tools version for the 10.1.1 release
+
 open-vm-tools-10.1.0 build 4449150
 
 *	Hgfs VMX: make the shares object use const strings
@@ -1622,17 +1700,6 @@ open-vm-tools-10.1.0 build 4449150
 	leaking an rpc message response if the caller doesn't want it.
 	leaking username/password for every guestOp
 	
-*	/tmp symlink attacks fix
-	
-	"The current implementation is subject to symlink and TOCTTOU attacks which are
-	prevented by using 6-char random names. The change is backwards compatible,
-	since we simply substitute the old hardcoded path coming from the package
-	header with a new generated one. If any custom code needs to know it, it
-	should extract it from full path or path to any config file like Perl engine
-	does."
-	
-	The change also introduces StrUtil_ReplaceAll.
-	
 *	Correct the freeze and thaw ordering for mount points
 	
 	There were two issues with the way we were doing quiescing on Linux:
diff --git a/open-vm-tools/LICENSE b/open-vm-tools/LICENSE
index ea861852..fb77eb9c 100644
--- a/open-vm-tools/LICENSE
+++ b/open-vm-tools/LICENSE
@@ -1,6 +1,6 @@
 LICENSE
 
-Open-vm-tools v10.1.0
+Open-vm-tools v10.1.5
 
 The Linux kernel modules are released under the GPL v2, a majority of the user level components are released under the LGPL v2.1, and the SVGA and mouse drivers are released under the X11 license.
 
@@ -231,7 +231,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
 ========
 
-Open-vm-tools v10.1.0 includes a number of subcomponents with separate copyright notices and license terms.  Your use of the source code for these subcomponents is subject to the terms and conditions of the following licenses.
+Open-vm-tools v10.1.5 includes a number of subcomponents with separate copyright notices and license terms.  Your use of the source code for these subcomponents is subject to the terms and conditions of the following licenses.
 
 
 SECTION 1: BSD-STYLE, MIT-STYLE, OR SIMILAR STYLE LICENSES
diff --git a/open-vm-tools/NEWS b/open-vm-tools/NEWS
index bee74132..b6f85063 100644
--- a/open-vm-tools/NEWS
+++ b/open-vm-tools/NEWS
@@ -1,3 +1,11 @@
+open-vm-tools 2017.02.11 changes:
+	* Exclude non-directory and non-existing paths during quiescing.
+	* Map certain PAM errors to VGAUTH_E_AUTHENTICATION_DENIED.
+	* Bump the VMware Tools update release to version 10.1.5
+	* Update tools copyright to 2017
+	* Add enhanced log messages and a few new log messages.
+	* Thaw filesystems if the snapshot commit message to VMX fails
+
 open-vm-tools 2016.10.25 changes:
 	* Added vmware-namespace-cmd command line utility.
 	* Added gtk3 support.
diff --git a/open-vm-tools/README b/open-vm-tools/README
index 45723b71..f067f2b0 100644
--- a/open-vm-tools/README
+++ b/open-vm-tools/README
@@ -1,6 +1,6 @@
 Project information:
 
-open-vm-tools <http://open-vm-tools.sourceforge.net/>
+open-vm-tools <https://github.com/vmware/open-vm-tools>
 
 	These are the release notes for the open-vm-tools.  Read them carefully, as
 they explain how to build this project for different platforms and various 
diff --git a/open-vm-tools/autom4te.cache/output.0 b/open-vm-tools/autom4te.cache/output.0
index 8274b785..c0417193 100644
--- a/open-vm-tools/autom4te.cache/output.0
+++ b/open-vm-tools/autom4te.cache/output.0
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.61 for open-vm-tools 2016.09.29.
+@%:@ Generated by GNU Autoconf 2.61 for open-vm-tools 10.1.5.
 @%:@
 @%:@ Report bugs to <open-vm-tools-devel@lists.sourceforge.net>.
 @%:@ 
@@ -728,8 +728,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='open-vm-tools'
 PACKAGE_TARNAME='open-vm-tools'
-PACKAGE_VERSION='2016.09.29'
-PACKAGE_STRING='open-vm-tools 2016.09.29'
+PACKAGE_VERSION='10.1.5'
+PACKAGE_STRING='open-vm-tools 10.1.5'
 PACKAGE_BUGREPORT='open-vm-tools-devel@lists.sourceforge.net'
 
 ac_unique_file="checkvm/checkvm.c"
@@ -1543,7 +1543,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures open-vm-tools 2016.09.29 to adapt to many kinds of systems.
+\`configure' configures open-vm-tools 10.1.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1617,7 +1617,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of open-vm-tools 2016.09.29:";;
+     short | recursive ) echo "Configuration of open-vm-tools 10.1.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1763,7 +1763,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-open-vm-tools configure 2016.09.29
+open-vm-tools configure 10.1.5
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1777,7 +1777,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by open-vm-tools $as_me 2016.09.29, which was
+It was created by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2811,7 +2811,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='open-vm-tools'
- VERSION='2016.09.29'
+ VERSION='10.1.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -40455,7 +40455,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by open-vm-tools $as_me 2016.09.29, which was
+This file was extended by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -40502,7 +40502,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-open-vm-tools config.status 2016.09.29
+open-vm-tools config.status 10.1.5
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/open-vm-tools/autom4te.cache/output.1 b/open-vm-tools/autom4te.cache/output.1
index 79536196..2f576137 100644
--- a/open-vm-tools/autom4te.cache/output.1
+++ b/open-vm-tools/autom4te.cache/output.1
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.61 for open-vm-tools 2016.09.29.
+@%:@ Generated by GNU Autoconf 2.61 for open-vm-tools 10.1.5.
 @%:@
 @%:@ Report bugs to <open-vm-tools-devel@lists.sourceforge.net>.
 @%:@ 
@@ -723,8 +723,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='open-vm-tools'
 PACKAGE_TARNAME='open-vm-tools'
-PACKAGE_VERSION='2016.09.29'
-PACKAGE_STRING='open-vm-tools 2016.09.29'
+PACKAGE_VERSION='10.1.5'
+PACKAGE_STRING='open-vm-tools 10.1.5'
 PACKAGE_BUGREPORT='open-vm-tools-devel@lists.sourceforge.net'
 
 ac_unique_file="checkvm/checkvm.c"
@@ -1540,7 +1540,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures open-vm-tools 2016.09.29 to adapt to many kinds of systems.
+\`configure' configures open-vm-tools 10.1.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1614,7 +1614,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of open-vm-tools 2016.09.29:";;
+     short | recursive ) echo "Configuration of open-vm-tools 10.1.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1757,7 +1757,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-open-vm-tools configure 2016.09.29
+open-vm-tools configure 10.1.5
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1771,7 +1771,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by open-vm-tools $as_me 2016.09.29, which was
+It was created by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2805,7 +2805,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='open-vm-tools'
- VERSION='2016.09.29'
+ VERSION='10.1.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -35725,7 +35725,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by open-vm-tools $as_me 2016.09.29, which was
+This file was extended by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -35772,7 +35772,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-open-vm-tools config.status 2016.09.29
+open-vm-tools config.status 10.1.5
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/open-vm-tools/autom4te.cache/output.2 b/open-vm-tools/autom4te.cache/output.2
index 79536196..2f576137 100644
--- a/open-vm-tools/autom4te.cache/output.2
+++ b/open-vm-tools/autom4te.cache/output.2
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.61 for open-vm-tools 2016.09.29.
+@%:@ Generated by GNU Autoconf 2.61 for open-vm-tools 10.1.5.
 @%:@
 @%:@ Report bugs to <open-vm-tools-devel@lists.sourceforge.net>.
 @%:@ 
@@ -723,8 +723,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='open-vm-tools'
 PACKAGE_TARNAME='open-vm-tools'
-PACKAGE_VERSION='2016.09.29'
-PACKAGE_STRING='open-vm-tools 2016.09.29'
+PACKAGE_VERSION='10.1.5'
+PACKAGE_STRING='open-vm-tools 10.1.5'
 PACKAGE_BUGREPORT='open-vm-tools-devel@lists.sourceforge.net'
 
 ac_unique_file="checkvm/checkvm.c"
@@ -1540,7 +1540,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures open-vm-tools 2016.09.29 to adapt to many kinds of systems.
+\`configure' configures open-vm-tools 10.1.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1614,7 +1614,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of open-vm-tools 2016.09.29:";;
+     short | recursive ) echo "Configuration of open-vm-tools 10.1.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1757,7 +1757,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-open-vm-tools configure 2016.09.29
+open-vm-tools configure 10.1.5
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1771,7 +1771,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by open-vm-tools $as_me 2016.09.29, which was
+It was created by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2805,7 +2805,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='open-vm-tools'
- VERSION='2016.09.29'
+ VERSION='10.1.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -35725,7 +35725,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by open-vm-tools $as_me 2016.09.29, which was
+This file was extended by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -35772,7 +35772,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-open-vm-tools config.status 2016.09.29
+open-vm-tools config.status 10.1.5
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/open-vm-tools/autom4te.cache/traces.1 b/open-vm-tools/autom4te.cache/traces.1
index d59d78e9..473e9a7e 100644
--- a/open-vm-tools/autom4te.cache/traces.1
+++ b/open-vm-tools/autom4te.cache/traces.1
@@ -4,7 +4,7 @@ m4trace:aclocal.m4:899: -1- m4_include([m4/ltsugar.m4])
 m4trace:aclocal.m4:900: -1- m4_include([m4/ltversion.m4])
 m4trace:aclocal.m4:901: -1- m4_include([m4/lt~obsolete.m4])
 m4trace:aclocal.m4:902: -1- m4_include([m4/vmtools.m4])
-m4trace:configure.ac:43: -1- AC_INIT([open-vm-tools], [2016.09.29], [open-vm-tools-devel@lists.sourceforge.net])
+m4trace:configure.ac:43: -1- AC_INIT([open-vm-tools], [10.1.5], [open-vm-tools-devel@lists.sourceforge.net])
 m4trace:configure.ac:43: -1- m4_pattern_forbid([^_?A[CHUM]_])
 m4trace:configure.ac:43: -1- m4_pattern_forbid([_AC_])
 m4trace:configure.ac:43: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
diff --git a/open-vm-tools/configure b/open-vm-tools/configure
index 6881f814..30b82e02 100755
--- a/open-vm-tools/configure
+++ b/open-vm-tools/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for open-vm-tools 2016.09.29.
+# Generated by GNU Autoconf 2.61 for open-vm-tools 10.1.5.
 #
 # Report bugs to <open-vm-tools-devel@lists.sourceforge.net>.
 #
@@ -723,8 +723,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='open-vm-tools'
 PACKAGE_TARNAME='open-vm-tools'
-PACKAGE_VERSION='2016.09.29'
-PACKAGE_STRING='open-vm-tools 2016.09.29'
+PACKAGE_VERSION='10.1.5'
+PACKAGE_STRING='open-vm-tools 10.1.5'
 PACKAGE_BUGREPORT='open-vm-tools-devel@lists.sourceforge.net'
 
 ac_unique_file="checkvm/checkvm.c"
@@ -1540,7 +1540,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures open-vm-tools 2016.09.29 to adapt to many kinds of systems.
+\`configure' configures open-vm-tools 10.1.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1614,7 +1614,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of open-vm-tools 2016.09.29:";;
+     short | recursive ) echo "Configuration of open-vm-tools 10.1.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1757,7 +1757,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-open-vm-tools configure 2016.09.29
+open-vm-tools configure 10.1.5
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1771,7 +1771,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by open-vm-tools $as_me 2016.09.29, which was
+It was created by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2805,7 +2805,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='open-vm-tools'
- VERSION='2016.09.29'
+ VERSION='10.1.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -35725,7 +35725,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by open-vm-tools $as_me 2016.09.29, which was
+This file was extended by open-vm-tools $as_me 10.1.5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -35772,7 +35772,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-open-vm-tools config.status 2016.09.29
+open-vm-tools config.status 10.1.5
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
index 8d4604e8..20370aec 100644
--- a/open-vm-tools/configure.ac
+++ b/open-vm-tools/configure.ac
@@ -1,5 +1,5 @@
 ################################################################################
-### Copyright (C) 2007-2016 VMware, Inc.  All rights reserved.
+### Copyright (C) 2007-2017 VMware, Inc.  All rights reserved.
 ###
 ### Configure script for building the VMware OSS Tools.
 ###
@@ -39,10 +39,10 @@
 ### Initialization
 ###
 
-TOOLS_VERSION="10.1.0"
+TOOLS_VERSION="10.1.5"
 AC_INIT(
    [open-vm-tools],
-   [10.1.0],
+   [10.1.5],
    [open-vm-tools-devel@lists.sourceforge.net])
 
 # In order to make this configure script auto-detect situations where
diff --git a/open-vm-tools/lib/include/buildNumber.h b/open-vm-tools/lib/include/buildNumber.h
index 6c1816fd..08af403e 100644
--- a/open-vm-tools/lib/include/buildNumber.h
+++ b/open-vm-tools/lib/include/buildNumber.h
@@ -1,12 +1,12 @@
 #define BUILD_NUMBER \
-	"build-4449150"
+	"build-5055683"
 #define BUILD_NUMBER_NUMERIC \
-	4449150
+	5055683
 #define BUILD_NUMBER_NUMERIC_STRING \
-	"4449150"
+	"5055683"
 #define PRODUCT_BUILD_NUMBER \
-	"product-build-57774"
+	"product-build-59732"
 #define PRODUCT_BUILD_NUMBER_NUMERIC \
-	57774
+	59732
 #define PRODUCT_BUILD_NUMBER_NUMERIC_STRING \
-	"57774"
+	"59732"
diff --git a/open-vm-tools/lib/include/guest_os_tables.h b/open-vm-tools/lib/include/guest_os_tables.h
index c4773732..a421e0b4 100644
--- a/open-vm-tools/lib/include/guest_os_tables.h
+++ b/open-vm-tools/lib/include/guest_os_tables.h
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 1998-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 1998-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -118,8 +118,8 @@
    GOSL(STR_OS_ASIANUX_4 "-64",              GUEST_OS_OTHER26XLINUX_64,       "linuxPreGlibc25.iso")  \
    GOSL(STR_OS_ASIANUX_5 "-64",              GUEST_OS_OTHER3XLINUX_64,        "linux.iso")            \
    GOSL(STR_OS_ASIANUX_7 "-64",              GUEST_OS_OTHER3XLINUX_64,        "linux.iso")            \
-   GOSL(STR_OS_CENTOS,                       GUEST_OS_CENTOS,                 "linuxPreGlibc25.iso")  \
-   GOSL(STR_OS_CENTOS "-64",                 GUEST_OS_CENTOS_64,              "linuxPreGlibc25.iso")  \
+   GOSL(STR_OS_CENTOS,                       GUEST_OS_CENTOS,                 "linux.iso")            \
+   GOSL(STR_OS_CENTOS "-64",                 GUEST_OS_CENTOS_64,              "linux.iso")            \
    GOSL(STR_OS_CENTOS "6",                   GUEST_OS_CENTOS6,                "linux.iso")            \
    GOSL(STR_OS_CENTOS "6-64",                GUEST_OS_CENTOS6_64,             "linux.iso")            \
    GOSL(STR_OS_CENTOS "7-64",                GUEST_OS_CENTOS7_64,             "linux.iso")            \
@@ -173,8 +173,8 @@
    GOSL("openserver6",                       GUEST_OS_OPENSERVER_5_AND_6,     NULL)                   \
    GOSL(STR_OS_OPENSUSE,                     GUEST_OS_OTHER26XLINUX,          "linux.iso")            \
    GOSL(STR_OS_OPENSUSE "-64",               GUEST_OS_OTHER26XLINUX_64,       "linux.iso")            \
-   GOSL(STR_OS_ORACLE,                       GUEST_OS_ORACLE,                 "linuxPreGlibc25.iso")  \
-   GOSL(STR_OS_ORACLE "-64",                 GUEST_OS_ORACLE_64,              "linuxPreGlibc25.iso")  \
+   GOSL(STR_OS_ORACLE,                       GUEST_OS_ORACLE,                 "linux.iso")            \
+   GOSL(STR_OS_ORACLE "-64",                 GUEST_OS_ORACLE_64,              "linux.iso")            \
    GOSL(STR_OS_ORACLE "6",                   GUEST_OS_ORACLE6,                "linux.iso")            \
    GOSL(STR_OS_ORACLE "6-64",                GUEST_OS_ORACLE6_64,             "linux.iso")            \
    GOSL(STR_OS_ORACLE "7-64",                GUEST_OS_ORACLE7_64,             "linux.iso")            \
diff --git a/open-vm-tools/lib/include/vm_legal.h b/open-vm-tools/lib/include/vm_legal.h
index 97debde8..777a8bbc 100644
--- a/open-vm-tools/lib/include/vm_legal.h
+++ b/open-vm-tools/lib/include/vm_legal.h
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2006-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2006-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -36,7 +36,7 @@
  * The following strings may be incorporated into MSGID strings.  Updating
  * them therefore may require updating translations and vmsg auditing files.
  */
-#define COPYRIGHT_YEARS    "1998-2016"
+#define COPYRIGHT_YEARS    "1998-2017"
 #define COPYRIGHT_STRING   "Copyright (C) " COPYRIGHT_YEARS " " COMPANY_NAME
 #define RIGHT_RESERVED     "All rights reserved."
 
diff --git a/open-vm-tools/lib/include/vm_tools_version.h b/open-vm-tools/lib/include/vm_tools_version.h
index 81aa3454..4c45c70f 100644
--- a/open-vm-tools/lib/include/vm_tools_version.h
+++ b/open-vm-tools/lib/include/vm_tools_version.h
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 1998-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 1998-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -1389,15 +1389,22 @@ TOOLS_VERSION_UINT_TO_COMPONENTS(const ToolsVersion toolsVersion,   // IN
 #define   TOOLS_VERSION_TORQUE_WRENCH_FROZEN1_V_BASE 12
 
 #ifndef RC_INVOKED
-#define   TOOLS_VERSION_NEXT TOOLS_VERSION_TO_UINT(TOOLS_VERSION_NEXT_V)
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE TOOLS_VERSION_TO_UINT(TOOLS_VERSION_SCREW_DRIVER_RELEASE_V)
 #endif /* RC_INVOKED */
-#define   TOOLS_VERSION_NEXT_V_MJR  10
-#define   TOOLS_VERSION_NEXT_V_MNR  1
-#define   TOOLS_VERSION_NEXT_V_BASE 0
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE_V_MJR  10
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE_V_MNR  1
+#define   TOOLS_VERSION_SCREW_DRIVER_RELEASE_V_BASE 0
 
-#define   TOOLS_VERSION_CURRENT        TOOLS_VERSION_NEXT
-#define   TOOLS_VERSION_CURRENT_STR    TOOLS_VERSION_TO_STR(TOOLS_VERSION_NEXT)
-#define   TOOLS_VERSION_CURRENT_CSV    TOOLS_VERSION_TO_CSV(TOOLS_VERSION_NEXT)
+#ifndef RC_INVOKED
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1 TOOLS_VERSION_TO_UINT(TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V)
+#endif /* RC_INVOKED */
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V_MJR  10
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V_MNR  1
+#define   TOOLS_VERSION_SCREW_DRIVER_UPDATE1_V_BASE 5
+
+#define   TOOLS_VERSION_CURRENT        TOOLS_VERSION_SCREW_DRIVER_UPDATE1
+#define   TOOLS_VERSION_CURRENT_STR    TOOLS_VERSION_TO_STR(TOOLS_VERSION_SCREW_DRIVER_UPDATE1)
+#define   TOOLS_VERSION_CURRENT_CSV    TOOLS_VERSION_TO_CSV(TOOLS_VERSION_SCREW_DRIVER_UPDATE1)
 
 /*
  * The extended Tools version is the current Tools version with the
diff --git a/open-vm-tools/lib/syncDriver/syncDriverLinux.c b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
index 68d5f5f4..da0a8cb6 100644
--- a/open-vm-tools/lib/syncDriver/syncDriverLinux.c
+++ b/open-vm-tools/lib/syncDriver/syncDriverLinux.c
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2011-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2011-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -30,6 +30,8 @@
 #include <unistd.h>
 #include <linux/fs.h>
 #include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 #include "debug.h"
 #include "dynbuf.h"
 #include "syncDriverInt.h"
@@ -73,7 +75,9 @@ LinuxFiThaw(const SyncDriverHandle handle)
     * Thaw in the reverse order of freeze
     */
    for (i = sync->fdCnt; i > 0; i--) {
+      Debug(LGPFX "Thawing fd=%d.\n", sync->fds[i-1]);
       if (ioctl(sync->fds[i-1], FITHAW) == -1) {
+         Debug(LGPFX "Thaw failed for fd=%d.\n", sync->fds[i-1]);
          err = SD_ERROR;
       }
    }
@@ -104,6 +108,7 @@ LinuxFiClose(SyncDriverHandle handle)
     * Close in the reverse order of open
     */
    for (i = sync->fdCnt; i > 0; i--) {
+      Debug(LGPFX "Closing fd=%d.\n", sync->fds[i-1]);
       close(sync->fds[i-1]);
    }
    free(sync->fds);
@@ -167,12 +172,21 @@ LinuxDriver_Freeze(const GSList *paths,
     */
    while (paths != NULL) {
       int fd;
+      struct stat sbuf;
       const char *path = paths->data;
       Debug(LGPFX "opening path '%s'.\n", path);
       paths = g_slist_next(paths);
       fd = open(path, O_RDONLY);
       if (fd == -1) {
          switch (errno) {
+         case ENOENT:
+            /*
+             * We sometimes get stale mountpoints or special mountpoints
+             * created by the docker engine.
+             */
+            Debug(LGPFX "cannot find the directory '%s'.\n", path);
+            continue;
+
          case EACCES:
             /*
              * We sometimes get access errors to virtual filesystems mounted
@@ -198,7 +212,21 @@ LinuxDriver_Freeze(const GSList *paths,
          }
       }
 
-      Debug(LGPFX "freezing path '%s'.\n", path);
+      if (fstat(fd, &sbuf) == -1) {
+         close(fd);
+         Debug(LGPFX "failed to stat '%s': %d (%s)\n",
+               path, errno, strerror(errno));
+         err = SD_ERROR;
+         goto exit;
+      }
+
+      if (!S_ISDIR(sbuf.st_mode)) {
+         close(fd);
+         Debug(LGPFX "Skipping a non-directory path '%s'.\n", path);
+         continue;
+      }
+
+      Debug(LGPFX "freezing path '%s' (fd=%d).\n", path, fd);
       if (ioctl(fd, FIFREEZE) == -1) {
          int ioctlerr = errno;
          /*
@@ -221,7 +249,7 @@ LinuxDriver_Freeze(const GSList *paths,
             break;
          }
       } else {
-         Debug(LGPFX "successfully froze '%s'.\n", path);
+         Debug(LGPFX "successfully froze '%s' (fd=%d).\n", path, fd);
          if (!DynBuf_Append(&fds, &fd, sizeof fd)) {
             if (ioctl(fd, FITHAW) == -1) {
                Warning(LGPFX "failed to thaw '%s': %d (%s)\n",
diff --git a/open-vm-tools/modules/linux/dkms.conf b/open-vm-tools/modules/linux/dkms.conf
index 43c6c8a2..f507f221 100644
--- a/open-vm-tools/modules/linux/dkms.conf
+++ b/open-vm-tools/modules/linux/dkms.conf
@@ -1,5 +1,5 @@
 PACKAGE_NAME=open-vm-tools
-PACKAGE_VERSION=10.1.0
+PACKAGE_VERSION=10.1.5
 MAKE_CMD_TMPL="make VM_UNAME=\$kernelver \
                MODULEBUILDDIR=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build"
 
diff --git a/open-vm-tools/modules/linux/dkms.sh b/open-vm-tools/modules/linux/dkms.sh
index e4733ec4..14e25734 100644
--- a/open-vm-tools/modules/linux/dkms.sh
+++ b/open-vm-tools/modules/linux/dkms.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 ################################################################################
-### Copyright (C) 2009-2016 VMware, Inc.  All rights reserved.
+### Copyright (C) 2009-2017 VMware, Inc.  All rights reserved.
 ###
 ### Script for creating a dmks-compliant source tree from an open-vm-tools
 ### distribution.
@@ -28,12 +28,12 @@ then
    echo "   src:  root of unpacked open-vm-tools package"
    echo "   dst:  where to create the dkms tree"
    echo
-   echo "The script will create an 'open-vm-tools' module with version 10.1.0."
+   echo "The script will create an 'open-vm-tools' module with version 10.1.5."
    exit 1
 fi
 
 src=$1
-dst=$2/open-vm-tools-10.1.0
+dst=$2/open-vm-tools-10.1.5
 
 SHARED_HEADERS="backdoor_def.h"
 SHARED_HEADERS="$SHARED_HEADERS backdoor_types.h"
diff --git a/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c b/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
index 795dd118..61079dbf 100644
--- a/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
+++ b/open-vm-tools/services/plugins/vix/foundryToolsDaemon.c
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2003-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2003-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -1256,9 +1256,11 @@ ToolsDaemonTcloReceiveVixCommand(RpcInData *data) // IN
     */
    additionalError = VixTools_GetAdditionalError(requestMsg->opCode, err);
    if (additionalError) {
-      g_message("%s: additionalError = %u\n", __FUNCTION__, additionalError);
+      g_message("%s: command %u, additionalError = %u\n",
+                __FUNCTION__, requestMsg->opCode, additionalError);
    } else {
-      g_debug("%s: additionalError = %u\n", __FUNCTION__, additionalError);
+      g_debug("%s: command %u, additionalError = %u\n",
+              __FUNCTION__, requestMsg->opCode, additionalError);
    }
 
 abort:
diff --git a/open-vm-tools/services/plugins/vmbackup/stateMachine.c b/open-vm-tools/services/plugins/vmbackup/stateMachine.c
index c040f5f4..2a7b16df 100644
--- a/open-vm-tools/services/plugins/vmbackup/stateMachine.c
+++ b/open-vm-tools/services/plugins/vmbackup/stateMachine.c
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2007-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2007-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -267,7 +267,8 @@ VmBackup_SendEvent(const char *event,
 #endif
 
    if (!success) {
-      g_warning("Failed to send vmbackup event: %s.\n", result);
+      g_warning("Failed to send vmbackup event: %s, result: %s.\n",
+                msg, result);
    }
    vm_free(result);
    g_free(msg);
diff --git a/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c b/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
index 5559aa30..2c5c4fb5 100644
--- a/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
+++ b/open-vm-tools/services/plugins/vmbackup/syncDriverOps.c
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2007-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2007-2017 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -61,10 +61,10 @@ typedef struct VmBackupDriverOp {
  */
 
 static Bool
-VmBackupDriverThaw(VmBackupDriverOp *op)
+VmBackupDriverThaw(SyncDriverHandle *handle)
 {
-   Bool success = SyncDriver_Thaw(*op->syncHandle);
-   SyncDriver_CloseHandle(op->syncHandle);
+   Bool success = SyncDriver_Thaw(*handle);
+   SyncDriver_CloseHandle(handle);
    return success;
 }
 
@@ -106,7 +106,7 @@ VmBackupDriverOpQuery(VmBackupOp *_op) // IN
 
       case SYNCDRIVER_IDLE:
          if (op->canceled) {
-            VmBackupDriverThaw(op);
+            VmBackupDriverThaw(op->syncHandle);
          }
          /*
           * This prevents the release callback from freeing the handle, which
@@ -117,7 +117,7 @@ VmBackupDriverOpQuery(VmBackupOp *_op) // IN
          break;
 
       default:
-         VmBackupDriverThaw(op);
+         VmBackupDriverThaw(op->syncHandle);
          ret = VMBACKUP_STATUS_ERROR;
          break;
       }
@@ -231,7 +231,7 @@ VmBackupNewDriverOp(VmBackupState *state,       // IN
                                   state->enableNullDriver : FALSE,
                                   op->syncHandle);
    } else {
-      success = VmBackupDriverThaw(op);
+      success = VmBackupDriverThaw(op->syncHandle);
    }
    if (!success) {
       g_warning("Error %s filesystems.", freeze ? "freezing" : "thawing");
@@ -264,15 +264,24 @@ VmBackupNewDriverOp(VmBackupState *state,       // IN
 static Bool
 VmBackupSyncDriverReadyForSnapshot(VmBackupState *state)
 {
-   Bool success;
    SyncDriverHandle *handle = state->clientData;
 
    g_debug("*** %s\n", __FUNCTION__);
    if (handle != NULL && *handle != SYNCDRIVER_INVALID_HANDLE) {
+      Bool success;
       success = VmBackup_SendEvent(VMBACKUP_EVENT_SNAPSHOT_COMMIT, 0, "");
       if (success) {
          state->freezeStatus = VMBACKUP_FREEZE_FINISHED;
       } else {
+         /*
+          * If the vmx does not know this event (e.g. due to an RPC timeout),
+          * then filesystems need to be thawed here because snapshotDone
+          * will not be sent by the vmx.
+          */
+         g_debug("VMX state changed; thawing filesystems.\n");
+         if (!VmBackupDriverThaw(handle)) {
+            g_warning("Error thawing filesystems.\n");
+         }
          state->freezeStatus = VMBACKUP_FREEZE_ERROR;
       }
       return success;
diff --git a/open-vm-tools/vgauth/lib/authPosix.c b/open-vm-tools/vgauth/lib/authPosix.c
index c77c14f0..8de8b5a7 100644
--- a/open-vm-tools/vgauth/lib/authPosix.c
+++ b/open-vm-tools/vgauth/lib/authPosix.c
@@ -261,6 +261,7 @@ VGAuthValidateUsernamePasswordImpl(VGAuthContext *ctx,
    pam_handle_t *pamh;
    int pam_error;
    PamData pd;
+   VGAuthError err;
 #else
    struct passwd *pwd;
 #endif
@@ -270,34 +271,6 @@ VGAuthValidateUsernamePasswordImpl(VGAuthContext *ctx,
       return VGAUTH_E_FAIL;
    }
 
-#ifdef sun
-/* Solaris does not have PAM_MODULE_UNKNOWN. */
-#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \
-                    Warning("PAM error: %s (%d)\n", \
-                            dlpam_strerror(pamh, pam_error), pam_error);  \
-                    dlpam_end(pamh, pam_error); \
-                    if (PAM_AUTH_ERR == pam_error || \
-                        PAM_USER_UNKNOWN == pam_error) { \
-                       return VGAUTH_E_AUTHENTICATION_DENIED; \
-                    } else { \
-                       return VGAUTH_E_FAIL; \
-                    } \
-                 }
-#else
-#define PAM_BAIL if (pam_error != PAM_SUCCESS) { \
-                    Warning("PAM error: %s (%d)\n", \
-                            dlpam_strerror(pamh, pam_error), pam_error);  \
-                    dlpam_end(pamh, pam_error); \
-                    if (PAM_AUTH_ERR == pam_error || \
-                        PAM_USER_UNKNOWN == pam_error || \
-                        PAM_MODULE_UNKNOWN == pam_error) {\
-                       return VGAUTH_E_AUTHENTICATION_DENIED; \
-                    } else { \
-                       return VGAUTH_E_FAIL; \
-                    } \
-                 }
-#endif
-
    pd.username = userName;
    pd.password = password;
    PAM_conversation.appdata_ptr = &pd;
@@ -310,12 +283,44 @@ VGAuthValidateUsernamePasswordImpl(VGAuthContext *ctx,
    }
 
    pam_error = dlpam_authenticate(pamh, 0);
-   PAM_BAIL;
-   pam_error = dlpam_acct_mgmt(pamh, 0);
-   PAM_BAIL;
-   pam_error = dlpam_setcred(pamh, PAM_ESTABLISH_CRED);
-   PAM_BAIL;
-   dlpam_end(pamh, PAM_SUCCESS);
+   if (pam_error == PAM_SUCCESS) {
+      pam_error = dlpam_acct_mgmt(pamh, 0);
+      if (pam_error == PAM_SUCCESS) {
+         pam_error = dlpam_setcred(pamh, PAM_ESTABLISH_CRED);
+      }
+   }
+   dlpam_end(pamh, pam_error);
+   if (pam_error != PAM_SUCCESS) {
+      switch (pam_error) {
+         /*
+          * Most PAM errors get mapped to VGAUTH_E_AUTHENTICATION_DENIED,
+          * but some are mapped into VGAUTH_E_FAIL.
+          */
+         case PAM_OPEN_ERR:
+         case PAM_SYMBOL_ERR:
+         case PAM_SERVICE_ERR:
+         case PAM_SYSTEM_ERR:
+         case PAM_BUF_ERR:
+         case PAM_NO_MODULE_DATA:
+         case PAM_CONV_ERR:
+         case PAM_ABORT:
+#ifndef sun   /* The following error codes are undefined on Solaris. */
+         case PAM_BAD_ITEM:
+         case PAM_CONV_AGAIN:
+         case PAM_INCOMPLETE:
+#endif
+            err = VGAUTH_E_FAIL;
+            break;
+
+         default:
+            err = VGAUTH_E_AUTHENTICATION_DENIED;
+            break;
+
+      }
+      Warning("PAM error: %s (%d), mapped to VGAuth error "VGAUTHERR_FMT64"\n",
+              dlpam_strerror(pamh, pam_error), pam_error, err);
+      return err;
+   }
 
 #else /* !USE_PAM */
 

--- End Message ---
--- Begin Message ---
Bernd Zeimetz:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: unblock
> 
> Hi release team,
> 
> unfortunately I have to ask for an open-vm-tools unblock again.
> Upstream released a bugfix pointrelease.
> 
> To make it easier to review the changes I've attached the debdiff
> and a git format-patch patch series of the upstream changes.
> The debdiff is against the current version in testing,
> 2:10.1.0-4449150-4 was unblocked already in #855855.
> 
> [...] 
> 
> unblock open-vm-tools/2:10.1.5-5055683-1
> 
> 
> Thanks,
> 
> Bernd
> 

Unblocked, thanks.

~Niels

--- End Message ---

Reply to: