This is the first part of a change to switch to the upstreamed Linux
API. This change just flips the API names to match the upstreamed
versions. A subsequent change will take care of fixing up the
parameters (we removed/changed some for upstreaming).
This change updates: VMCI, vSockets, the VMCI kernel lib on Windows,
the VMCI test driver, HGFS, dvFilter and vPageChannel.
It does NOT affect the user-mode VMCI API: there's no point, and it'd
be a waste of time changing all the tests.
HGFS: fix up the Hgfs header flags and information fields
Currently, the Hgfs server just blindly sets the header information
field to the host platform's internal error value. This isn't very
handy as it will involve determining whether it is Posix or Win32. Then
mapping accordingly to the Windows client or Linux client internal
kernel error values.
It would be more suited to being used in conjunction with a flag to
state what the field contains, so that it can be used for multiple
things if required - albeit not simultaneously. This would also allow
the client to know that the field is really valid, and not some host
specific error value which is currently set. Also, since the clients
only require one or two host error extended information, it probably is
simpler to define a crossplatform value for that new error value and
have the clients map it as they already do for the existing
crossplatform errors.
Also there was a flag for the flags field defined but never used. So it
is being thrown away and redefined. The flag was previously defined to
be a notification bug was intended to be more generic meaning host
server initiated request and not a reply to a client initiated request.
Fixed this.
The platform scandir allocates a directory name but did not free before
exit. Hgfs search open fails to free the directory baseDir created from
the remote name. Hgfs create directory fails to free the directory
baseDir created from the remote name.
HGFS: Cleanup of server request packets handlers, part II
Propagate the treatment of the input request data as constant. This means
finish off the cpName usage to use const. Remove casts and make the open
and directory info data structures use const too.
Corrected the name of HgfsServerGetShareInfo to be more meaningful to what
it really is doing, since the input name argument type to be const which
is how it was used. Made the function static and removed the declaration
from the header file.
Revalidation of a file's attributes occurs way too often.
Unfortunately the fix revolves around the host ID for the file in
question which is incorrectly retrieved from Windows HGFS server. This
results in the file ID for the file always being zero. Hence, it is
repeatedly revalidated by getting the file attributes from the server.
The file ID is never updated and set due to the wrong flag being tested.
The file ID is always retrieved using the same common utility routine
and so all the places that get a file or folders attributes use it.
Hence, checking in the one place fixes about 4 different call sites -
root dirent, regular dirent and files.
HGFS: start cleanup of packet handlers and add oplock break acknowledge
When the client receives a oplock break request from the HGFS server it
must reply to the Hgfs server with an oplock break acknowledge or close
the handle.
The oplock break acknowlege reply is now defined more completely and it
now has a packet handler.
The packet handlers now stop overriding the input packet const and really
do treat it as read only. This involved adding const to the request packet
handlers for the unpacking of client requests. This is only the first part
of dealing with this issue. There was some minor spillage into the HgfsServer
mainline code, which will be additionally cleaned up later. Further changes
will also include the platform specific request handlers too.
This now means that the server will not modify the incoming request data and
should be less prone to accidental overwrites, and also better document the
fact that the file names returned are in fact, just pointers into the incoming
packet and not duplicated strings. Hence, the mainline code does not attempt
to free any of the cross-platform names that are extracted from incoming
requests.
It looks like we have multiple copies of errNumTable but only one
errStrTable. Each new copy of errNumTable comes for each library that
includes lib/err. Since errStrTable is not declared static, only one
exists between all shared libraries.
This change makes both errNumTable and errPtrTable non-static as
well. The intention is that we'll have only one copy of the errno
accounting across the entire binary.
Generally sharing globals across a bunch of libraries sounds
dangerous, but in this case it's an atomic hashtable so it works.
On 32bits windows with PAE, the PPN_2_PA macro could overflow
since a PPN is represented by a 32bits integer. This could lead
to memory corruption since the ballooned page would be truncated
ones.
HGFS: Split out the hgfs parameters stuff into a separate header file
Cleaning out the hgfsServerInt.h so we can modularize the stuff and reduce
the dependency to be all on a single header file.
This change simply moves the packing and unpacking of the HGFS request and
reply exports into a separate header matching the code file.
Added the vmx configuration setting for enabling or disabling the oplock
feature in the HGFS server. I have currently set this to default to disabled.
When the code gets to a sufficiently implemented and well tested point it
will default to enabled.
As of kernel 3.8 the vmtruncate call was removed. Also it should be noted
that tools for kernels prior to 2.6.9 have been frozen. Therefore, the
compat_vmtruncate macro is now only defined for tools for kernels 2.6.9
and upto and including kernel 3.7.
It is not expected to be used by any tools on kernel 3.8 and newer and if
so they should use the memory manager calls directly that vmtruncate called.
HGFS: add the oplock break protocol request packet handler in the server
When the HGFS server receives an oplock break from the file system callback
it will send the HGFS protocol oplock break request on to the client to handle
and send back an acknowledge.
This code just adds the packet handling for the protocol oplock break request
to the HGFS server. Since oplocks are not yet enabled this code is not yet
used but will be with subsequent changes.
Soft suspend will let tools run /etc/vmware-tools/scripts/vmware/network,
if NetworkManager is down, the script will error out and fail the suspend
operation.
The current implementation of the HGFS server directory read handling is
not efficient and results in lots of system calls for each entry returned
in the list. This will result in poor performance and in particular breaking
open oplocks. Both of these are unnecessary if we use the Windows native API.
So first instead of using the DirectoryEntry structure that makes no sense for
Windows and only filling in the name from each Win32 FindFirst, FindNext call,
we now use the same structure as the native API. Secondly, using the native API
we make one call with a sufficiently large buffer to read a large number of entries
per system call not just one at a time. Finally, the native API returns all the
required information for any record returned to the client so we don't have to
iterate through the entire list and do a GetFileAttributes on each. (Hence, no
open and query, close - which will break any open oplocks.)
Also now we get the directory entry record filled at the search open call when
we scan the folder and get all the entries. Previously, this was only the name
and the GetFileAttributes was returned for each at the search read time.
This change is also done for the virtual folders e.g. the shares under
"\\vmware-host\Shared Folders" and for any share where the host path is set to
empty thus showing the UNC and DRIVE virtual folders.
GregKH recently pulled __devblah() from 3.8-rc3, which means our
drivers are now breaking. Since it's useless anyway, and always has
been, just yank it completely.
If an error occurs in VmBackupStartCommon, the keepAlive timer is not
stopped. This can lead to a crash when the timer callback runs after
gBackupState is NULL.
It looks like previous change has broken the C_locale friendly print
function, namely it changes things back to using the localeconv() table.
This seems to have been done in the name of making android work,
however, it breaks our ability to correctly generate shaders on systems
when the locale uses "," to denote a decimal point. This change reverts
that bit of behaviour so that the bsd_vsnprintf function uses the
provided decimal point unless we're on android.
Intel has released a new SDM. The shadow VMCS is no longer a secret.
Family 6 Model 3E has been declared an Ivy Bridge. FCS/FDS deprecation
has been revealed. Virtualization exceptions have been introduced.
Move the oplock code into its own header files and out from the general
dumping ground of usual headers.
Split the public and private oplock functions into public oplock API header
and a private API header file.
Move the private oplock defines and data structures into the private header
file.
HGFS: session creation server cleanup for channel characteristics
The HGFS server now returns the correct packet size for the session
protocol reply for the transport in use. This previously was always
the VMCI setting. Now we need to allow the clients to differentiate
the setting is valid for the transport and is not hardcoded to VMCI.
In order to achieve this, the 64 bit reserved field is split into
two 32 bit fields: flags and reserved.
New clients will be able to detect if the server is using just a hard
coded value or has indeed set it per transport characteristics.
Older existing clients just ignore the packet size field.
Made the session bool for change notification into a flag which is
also returned to the client. This is an additional check that can be
made that the server supports change notification other
than are the individual HGFS opcode requests being supported.
Fixed an issue that prevents an errant client sending remove watch opcodes to the server from being processed
when notification is not active.
. add utility function to retrieve IOPL on Linux and Windows
. disambiguate HashTable types so GDB is less confused
. DnD - don't use Hostinfo_GetTimeOfDay for timeouts
HGFS: Fix server channel characteristics for HGFS sessions
Currently the HGFS session had hardcoded constants specific to VMCI
set in the HGFS session object and which is returned to the client on a
HGFS create session protocol request. The constant was not used by any
client that was released but will be in the future releases.
The HGFS session also can be used with the backdoor channel too, so
this first change is to move the constant (maximum packet size) from
the HGFS server into the channel specific code which passes it to the
HGFS server on a connect call. The HGFS server connect call will create
the HGFS server transport session object which will be used when creating
the HGFS session object.
Later changes will deal with the backward compatibility issues by updating
the HGFS session protocol request to allow newer clients that use the session
field for maximum packet size to determine the version of the server and
correctness of the session reply field.
Merge the monitor and userland tracking of in-panic state.
We should not have a separate state for being "in panic" between
monitor and userland. Let's make MX be the authoritative source.
MXUser still needs a static variable to track whether we are in
panic before MX state is initialized.
VMware, Inc [Thu, 27 Dec 2012 19:51:12 +0000 (11:51 -0800)]
OVT: do not build vmblock on Linux kernels 3.0+
The driver fails to build on newer kernels and we recommend using
the FUSE-based solution (Vmware Tools use vmblock-fuse on kernels
starting with 2.6.32), so let's stop building it.
VMware, Inc [Wed, 26 Dec 2012 21:26:12 +0000 (13:26 -0800)]
HGFS: Cleanup the directory entry code to be really platform specific - part V
Moving the platform dependent definitions to the platform specific files.
They should be private types to each platform so each can define and use
them as efficiently as makes sense for that platform.
Now moving the structure types to the platform only code. Only a forward
declaration is now public.
VMware, Inc [Wed, 26 Dec 2012 21:26:06 +0000 (13:26 -0800)]
HGFS: Posix server fix an incorrect size passed for name conversion
The directory read records may contain directory entries with names
that are of UTF8 form D and are converted to form C which the clients
will expect (e.g. Windows).
The name and size passed was assumed to be the whole name field of the
directory entry structure. However, the record length is the value of
the valid data in that record which can be a lot less than the total
size of the name field. The copied records only have the requisite
record valid data size allocated and not the whole complete structure.
This should at least optimize that call and stop any possibility of the
conversion routine going beyond the valid record.
VMware, Inc [Wed, 26 Dec 2012 21:25:33 +0000 (13:25 -0800)]
HGFS: Cleanup the directory entry code to be really platform specific - part IV
Migrate over the remainining directory entry usage in the platform independent
code over to the platform specific code. The remaining use is the debug only
dump dents function.
VMware, Inc [Wed, 26 Dec 2012 21:25:20 +0000 (13:25 -0800)]
HGFS: Improve efficiency of volume queries on a virtual folder
For some virtual folders like the one that contains all the shares,
volume query size information necessitates an enumeration of all the
shares. This allows the query to determine which particular volume
information to return, since the shares can reside on many different
volumes on the host. The algorithm will pick that largest or the
smallest volume size to return depending on the configuration settings.
When enumerating the logic currently gets and removes the first entry
from shares list. This results in the table of shares being shuffled up
for each removal. If there are a lot of shares this results in a lot of
memmove calls and the larger the table the more memory is moved each
time. Since the list of entries are stored in an array, it would be
simpler to just remove the last entry each time not the first. The order
of the enumeration is irrelevant.
VMware, Inc [Wed, 26 Dec 2012 21:25:05 +0000 (13:25 -0800)]
Bump up the tools version for OP beta 1.
Its time to bump up the tools version for OP Beta. Bumped up the
tools version in vm_tools_version.h file.
In the past, we have done this process for every milestone in the
ESX Release cycle.
Current plan:
- Tools Version for OP Beta 1 : 9.3.1
- Tools Version for OP RC 1 : 9.3.2
- Tools Version for OP RTM : 9.4.0
VMware, Inc [Wed, 26 Dec 2012 21:24:44 +0000 (13:24 -0800)]
Get rid of ALLOS_EXCEPTDARWINANDVMKERNEL
Petr noted that maintaining ALLOS_EXCEPTDARWINANDVMKERNEL
is a bug waiting to happen. Since it's only used in one place,
we can set the value for ALLOS and then reset it to the default
for DARWIN and VMKERNEL.
VMware, Inc [Wed, 26 Dec 2012 21:24:23 +0000 (13:24 -0800)]
lib/string: remove nasty old stack peeking
There is nasty old stack peeking code in lib/string. Remove it.
The Panic code will capture the stack and parameters for debugging
so simply removing the code looks fine.
VMware, Inc [Wed, 26 Dec 2012 21:23:58 +0000 (13:23 -0800)]
Add guest OS definitions for Linux 3.X
Originally I thought we could do this by aliasing Linux 3.x to Linux
2.6.x, but that only works inbound. Once the guest is identified and
aliased to 2.6.x, outbound messages and buttons will incorrectly
identify the guest as 2.6.x instead of 3.x, which is sloppy and will be
confusing to customers. Instead, this change adds gos table entries for
Linux 3.x, which uses the last two (of 64 max) entries in the table.
VMware, Inc [Wed, 26 Dec 2012 21:23:50 +0000 (13:23 -0800)]
HGFS: Cleanup the directory entry code to be really platform specific - part III
Hgfs query volume handler code for iterating through the virtual folders to
determine the correct volume size and space information to return to the client
was moved to platform specific functions.
VMware, Inc [Wed, 26 Dec 2012 21:23:23 +0000 (13:23 -0800)]
HGFS: Move server vmx configurable settings to the vmx
Read the configurable settings for the HGFS server to the vmx only code
and push them across to the HGFS server at init.
This removes the needless ifdefs for tools builds which will just push
the default values at init.
VMware, Inc [Wed, 26 Dec 2012 21:23:01 +0000 (13:23 -0800)]
HGFS: Cleanup the directory entry code to be really platform specific - part II
The directory entry work is very inefficient and will cause oplock issues.
For Windows platforms the directory reads will change and thus the assumptions
about the platform specific DirectoryEntry structure will not hold true.
Therefore, the DirectoryEntry code is moving to the platform specific files
and will allow the code to have complete control over the structure and contents.
Initially, there will be some duplication of code but that will change in later
work.
There is already bugs with this code and places where ifdefs are added for
platform specific cases not handled by some platforms. These should not be
in platform independent code.
The volume query is also broken and misses some of the Windows platform specific
cases completely which should be handled and will be in the Windows only code.
(Again, later change sets.)
For now, this just simply moves two routines out of the common code into the platform
specific code. The routines have some minimal cleanup to remove the ifdefs or remove
the ifdefs and code not required for each of the platforms.
More changes to follow for moving the volume query handler code and adding the
missing virtual folder cases in Windows.
VMware, Inc [Wed, 26 Dec 2012 21:22:47 +0000 (13:22 -0800)]
Ignore preceding and trailing double quotes from log file path.
A log file path could be specified within double quotes. As double
quotes are handled in different ways by different file systems, we
ignore all the preceding and trailing double quotes to simplify the
specification for the log file path value.
VMware, Inc [Wed, 26 Dec 2012 21:21:41 +0000 (13:21 -0800)]
HGFS: Fix server directory notification stubs
The stubs file is compiled for multiple platforms and should be
crossplatform. Therefore using EINVAL as an error return is not
correct. It should use the HGFS crossplatform error values explicitly.
VMware, Inc [Wed, 26 Dec 2012 21:21:22 +0000 (13:21 -0800)]
HGFS: Cleanup the directory entry code to be really platform specific - part I
The directory entry work is very inefficient and will cause oplock issues.
For Windows platforms the directory reads will change and thus the assumptions
about the platform specific DirectoryEntry structure will not hold true.
Therefore, the DirectoryEntry code is moving to the platform specific files
and will allow the code to have complete control over the structure and contents.
Initially, there will be some duplication of code but that will change in later
work.
There is already bugs with this code and places where ifdefs are added for
platform specific cases not handled by some platforms. These should not be
in platform independent code.
The volume query is also broken and misses some of the Windows platform specific
cases completely which should be handled and will be in the Windows only code.
(Again, later change sets.)
For now, this just simply moves a routine out of the common code into the platform
specific code. More changes to follow.
VMware, Inc [Wed, 26 Dec 2012 21:20:54 +0000 (13:20 -0800)]
Internal branch sync. Included in this change:
. fix crash in File_GetVMFSMountInfo()
. fix crash in File_GetMountInfo with NFS4.1
. lib/file: restore atomic file updates on ESX NFS for descriptor writes
. VMCI/VSOCK: find the context ID of a running VM given a UUID
VMware, Inc [Wed, 26 Dec 2012 21:20:31 +0000 (13:20 -0800)]
HGFS: Fix Windows server virtual folders
For the UNC or DRIVE virtual folders enabled by setting the share's host
path to an empty string, currently are not quite handled correctly.
The shares with empty host names are listed in their Shared Folders virtual
folder but have incorrect attriubtes. This is because the shares host paths
are passed to the real get attributes function which fails when the path
is an empty string. These entries should be defaulted to the HGFS virtual
folder attributes.
VMware, Inc [Wed, 26 Dec 2012 21:19:28 +0000 (13:19 -0800)]
Fix Solaris image copy-paste
Link vmtoolsd w/ -shared-libgcc, reenable plugin code.
So, even though we had wrapped calls with proper try/catch blocks, exceptions
thrown from gdkmm weren't being caught. This caused vmtoolsd crashes whenever
a user entered a VM with image data on the clipboard. We worked around this in
WS 9.0.1 by disabling image copy-paste in Solaris guests.
Here's the problem w/ exceptions:
• We're compiling using the GCC runtime. GNU libstdc++ relies on
_Unwind_RaiseException and friends from libgcc_s.so.1.
• When run on Solaris 11, the runtime linker is binding
_Unwind_RaiseException to the version in /lib/64/libc.so.1.
0xfffffd7fff3b0e82 in elf_rtbndr () from /lib/amd64/ld.so.1
0xfffffd7fff28a250 in _Unwind_RaiseException () from /lib/64/libc.so.1
That looks startlingly similar to http://gcc.gnu.org/ml/gcc-patches/2012-01/msg00791.html.
Recompiling the host application using -shared-libgcc makes this go away.
One last thing:
So, the above change lets us catch exceptions from libgdkmm. Cool.
Problem then is that the exception's type wouldn't match any of our
exception handlers, because with all type declarations being hidden,
libdndcp.so and libgdkmm-2.4.so had two different type definitions for
Gdk::PixbufLoaderError. Lame. This is fixed by using GCC visibility
pragmas when including gtkmm headers. (See
http://gcc.gnu.org/wiki/Visibility#Problems_with_C.2B-.2B-_exceptions_.28please_read.21.29
for details.)
Bonus:
dndcp.make includes a directive to explicitly link against libgcc_s,
but only on Linux. This _may_ already be implied by linking against
libstdc++, but to play it safe, we'll instead use the '-shared-libgcc'
link option here, too.
VMware, Inc [Wed, 26 Dec 2012 21:19:21 +0000 (13:19 -0800)]
Fix the HGFS server handle lookup failure cases
When the HGFS server was passed a stale handle which caused an error, the
wrong error code was returned. An internal error was previously returned
to the client, which makes no sense, when instead the server could and should
have returned invalid handle error.
VMware, Inc [Wed, 26 Dec 2012 21:19:07 +0000 (13:19 -0800)]
OVT: stop building vmsync driver on kernels above 3.0.0
On newer kernels vmbackup plugin will use FIFREEZE/FITHAW ioctls to
quiesce filesystems so vmsync is not needed and given that it does
not even build on 3.6 it is easier to simply disable it.
VMware, Inc [Wed, 26 Dec 2012 21:18:49 +0000 (13:18 -0800)]
HGFS: Fix server directory read hack for the virtual shares folder
For some uncommented reason, the HGFS virtual shares folder was always
refreshed on the first search read even if this was the first search read
since the search open. This means that the initial scan of shares on the
search open was always thrown away - making it a total waste of time even
constructing the list of dents. Secondly, the was an incorrect assumption
that the search type was always the shares folder if there was not a share
path. This maybe true for Posix (Linux/OS X) hosts but certainly not true
for Windows.
Replace this crap.
Fixed the function to call into the server platform specific function to
handle refreshing directory listings and handle the search type
appropriately according to what is supported on the platform.
Track whether the directory listing has been already returned completely to
the client and use that to determine whether a restart (and rescan of the
contents) is required. This means we don't scan the virtual directory
contents twice for the first read request from the client.
Renamed HgfsServerGetDents to match more closely what it really does and
make it consistent with the equivalent function name for operating on real
folders.
VMware, Inc [Wed, 26 Dec 2012 21:18:30 +0000 (13:18 -0800)]
auth: fix crashed in Posix backend
Now that Auth_CloseToken is no longer a no-op on Posix, it crashes if
called with the results of Posix_Getpwnam and Posix_Getpwuid, which
return static buffers. Create and use wrappers.
VMware, Inc [Wed, 26 Dec 2012 21:17:39 +0000 (13:17 -0800)]
HGFS: Cleanup of server platform specific functions to follow convention
The HgfsServerScandir function does not follow the naming convention of the
HGFS server and platform specific code. Therefore, to prevent confusion
about the implementation of the function being platform specific it is
renamed to be HgfsPlatformScandir.
Also the platform initialization and destruction names did not follow the
convention so modified those too.
VMware, Inc [Wed, 26 Dec 2012 21:17:28 +0000 (13:17 -0800)]
HGFS: extract out the oplock specific code into their own files
The main HGFS server code and file is cluttered and has been used as a
general dumping ground for abosultely everything to do with the HGFS
server. This has resulted in files that have become way too large and hard
to navigate. This change is to help reduce that by moving the oplock code
into their own set of files. This helps platforms that do not have support
for this feature from having to code contain too much extra logic. Also for
those platforms that do support this complex feature, they can hide all
that complexity away.
VMware, Inc [Wed, 26 Dec 2012 21:16:03 +0000 (13:16 -0800)]
Update the guest balloon target after each LOCK and UNLOCK.
Currently, the guest driver won't update the target, until the
next GET_TARGET command, thus at maximum, the guest can try to
reclaim 16k pages before updating the balloon target. Those 16k
pages will be considered unneeded by the monitor, and so will
be rejected.
For every command, the monitor put the balloon target in %ebx.
Use that value to dynamically update the balloon target after
each LOCK and UNLOCK commands, that way, the guest driver can
react much faster to change than before.
As a consequence, there will be less "unneeded bpn" message in
the vmware.log file. Only one per second in the unbatched path,
and a maximum of 512 in the batched one.
VMware, Inc [Wed, 26 Dec 2012 21:15:39 +0000 (13:15 -0800)]
HGFS: Clean up Oplock redundant type - part II
Duplication of types is not a good thing. This redundant type for Oplocks is
already defined and so just ammend what is already there and to be used instead
of redefining a second type to do the same thing.
VMware, Inc [Wed, 26 Dec 2012 21:15:31 +0000 (13:15 -0800)]
Disable image copy-paste in Tools for Solaris.
There's a combination of problems w/ Tools on Solaris 11:
• Image copy-paste triggers Gdk::PixbufLoader to throw an
exception.
• We're unable to catch exceptions(!). It's as if the catch
blocks aren't even there.
With WS 9.0.1 due for imminent release, I'm just going to "ifndef
sun" it out.
VMware, Inc [Wed, 26 Dec 2012 21:15:15 +0000 (13:15 -0800)]
Remove the limit of 64 operating systems in the guest OS table
The guest OS table is currently limited to 64 entries because each
guest OS is stored as a bit in a uint64 and bitmask operations are
used to determine whether a guest belongs to a particular set.
This change moves to a list of OS ID's, so there is no limit on the
total number of guest operating systems. There is still a limit of
64 on the total number of guests that can be a member of a set, such
as ALLLINUX or ALLDARWIN, because the implementation requires a fixed
size array for the list of guests in a set, but the limit is arbitrary.
To get this all to work, the vmmovhds scheme script needed to change
from bit checking to list processing, and the perl script that
generates the scheme include file needed some help.
VMware, Inc [Wed, 26 Dec 2012 21:15:09 +0000 (13:15 -0800)]
HGFS: clean up HGFS lock type
The HGFS protocol has duplicated the lock types from previous versions
with later implementations. This is the first of a couple of changes to tidy
this part of the code up and later remove unncessary duplication of types.
This change renames the previous one to better reflect what it represents.
The previous type name indicated a lock not really its type.
No HGFS server has shipped with the locking protocol implemented and so
to maintain correctness for backwards compatibility there are two issues:
- all lock fields should remain the same size
- the default value indicating no lock retains its value of zero
VMware, Inc [Wed, 26 Dec 2012 21:14:49 +0000 (13:14 -0800)]
VSOCK: Remove SOCK_SEQPACKET from Linux
This was a poor implementation of SOCK_SEQPACKET, let's rip it out.
This mirrors the work done for the upstream Linux driver. A follow-up
change will remove it from the other platforms.
VMware, Inc [Mon, 15 Oct 2012 04:58:03 +0000 (21:58 -0700)]
Fix directory listing of stale information in OS X guests
The directory readdir uses the existing handle of the directory continually
even if restarting the listing of entries. This leads to stale data and if the
handle is kept open for long periods due to open handles of files within that
folder (parental references) the user will never see uptodate information.
This fix is the simplest fix for now. We simply refresh the folder handle on
any new readdir query. This closes the existing handle and issues a new handle
open.