LICENSE IPL10
FIXES 124397
optimize CopyOnWrite to avoid rewriting data if possible
(cherry picked from commit 0c39a855a2da7b3e82970c65f835eed38b650215)
LICENSE IPL10
FIXES 124407
hold GLOCK appropriately when dealing with the proc file
(cherry picked from commit 6308037dec22d5a141fc64a11472b1a36585deb2)
LICENSE IPL10
FIXES 124447
hash based on host byte order so intel machines aren't sad
(cherry picked from commit 5102d56f080f1284eecb94dbc7c06cb966c27f5b)
LICENSE IPL10
we'll want to fix this differently later; since 524 is dying perhaps we need
to just ship heimdal's version of this code
(cherry picked from commit fd9e5ffb4653b87f92438574083185a55086b661)
LICENSE MIT
Modify the cm_ResetACLCache interface to accept an optional cm_cell_t *.
At the moment every time a token is set or cleared all of the acl info
for all cm_scache_t objects regardless of cell is reset. This is both
a performance hit and unnecessary. If we know the cell, only reset
the acl info for cm_scache_t objects in that cell.
If cell is not specified, reset for all cells.
(cherry picked from commit d0e4044cfeef3ce1c5d435251de9b584343225f5)
LICENSE MIT
Modify the cm_Unlock() interface to support the ability to unlock all
locks within a range. This is required for the redirector.
(cherry picked from commit 8e01e5a4dbcaaea03fc3af59bec5ef211d5b4684)
LICENSE MIT
correct error in windows-freelance-20090223. use cpath not filename
since that is why we allocated cpath in the first place.
(cherry picked from commit 7ca2785f53d391afa5e7200f2b4d40c79a857443)
LICENSE MIT
use cm_HaveCallback() to check for a call back instead of explicit
checks on cbExpires and cbServerp. cm_HaveCallback takes into account
Freelance mode and offline status.
(cherry picked from commit ef81e9395c171f9dcb8df120991ba65ec1ca5610)
LICENSE MIT
Change cm_BPlusDirEnumerate interface to include a 'FetchStatus'
parameter. When set to 0, we do not fetch status for fids for
which we do not already have status info. This avoids unnecessary
recycling of cm_scache_t objects.
(cherry picked from commit 15d4dd0f70925eaf2af333f2215235cb90637457)
LICENSE IPL10
FIXES 124451
on 64 bit platforms, 64 bit time_t means returning into afs_int32 is bad
(cherry picked from commit 77452db304abfc6ad0139769034986dc8bf172d9)
LICENSE BSD
instead of potentially blocking waiting for a call lock, assume if the call is
locked, the conn is still busy. also, don't even try to get the conn data lock
if we don't need to
(cherry picked from commit 581fd18bd9c3fe8e07169c60a7cde9e72e8af89c)
LICENSE MIT
Unlike the unix cache manager, on Windows the server uuid was not
recorded as part of the cm_server object. This commit adds the uuid
and a flag to indicate if it is set or not.
A check is made in cm_UpdateVolumeLocation it confirm that the uuid
known to the CM is the same as the one being reported by the vl server.
If they differ, this is logged but no action is taken.
The contents of the cm_allServers list is now dumped in response to
"fs memdump" or a crash. This includes the uuid, addr, type, flags,
downtime, caps, etc.
The server uuid is not useful at the moment because there is nothing
that the CM can use it for. However, it might be useful for debugging
and it will be needed for extended callback support.
(cherry picked from commit 19ffc146fac828cd32b90c4d43d617de6c574556)
LICENSE MIT
create a new cpp symbol CM_SCACHE_VERSION_BAD to represent data version
values in cm_scache objects that are known to be invalid.
then consistently apply this value throughout the code. Previously
some invalid values were set to 0 and others to -1 (0xFFFFFFFF:FFFFFFFF).
Also fix at least one location where CM_BUF_VERSION_BAD was not used.
(cherry picked from commit 5d147351263be2636ef547f22acb24c7816348c1)
LICENSE MIT
Change how BPlusDir enumerations behave with regards to bulk stat
operations. If the number of entries in the enumeration is larger
than the number of cm_scache objects, then using the previous model
of cm_BPlusDirEnumBulkStat being called for the entire enumeration
list results in the early objects being recycled and the status
info discarded before the caller of cm_BPlusDirNextEnumEntry()
receives the name.
The revised model triggers bulk stat operations from within
NextEnumEntry() as objects requiring status fetching are about
to be returned to the caller. This reduces the thrashing of the
stat cache.
We should consider adding a flag field to cm_BPlusDirEnumerate()
or cm_BPlusDirNextEnumEntry() to permit enumeration without
status fetching.
(cherry picked from commit a32971251670acc7944dcd4b1eade1ab161e587f)
LICENSE MIT
do not permit VNOSERVICE or VOFFLINE or VSALVAGE to leak and
be returned as an error code. The resulting NTSTATUS is not valid.
(cherry picked from commit fbfaaf26890102dbe34315128183c27ce67f77a3)
LICENSE MIT
Fix another set of edge cases where adding a mountpoint or symlink
to the Freelance volume would result in the wrong fid being returned
to the request that made the addition.
When the Freelance directory is updated, invalidate the cm_scache_t object.
that is associated with it.
Actually use the data version when checking callback status.
The return value from Add Mount/Symlink is not negative on failure.
Its an actual error code. Treat it that way.
(cherry picked from commit 3c1f85820853e9143cab076d735f7d7c27aeaf62)
LICENSE MIT
do not mix and match CELL_MAXNAMELEN and MAXCELLCHARS. They are
not the same.
(cherry picked from commit 80faa5e93ddc95ca676aa31f5d3522ad6b67f67e)
LICENSE IPL10
Add clean and distclean targets to the libafs_tree Makefile, based on
suggestions by jhutz.
(cherry picked from commit f83cfcafcbec8a953161fad300073b85a4215a03)
LICENSE MIT
Fix smb_FindFIDByScache() to avoid obtaining the smb_fid_t.mx and
smb_rctLock out of order. Doing so requires obtaining references
on each smb_fid_t belonging to the smb_vc_t in order to prevent them
from being removed from the list while the list is being walked.
Reorder tests for CM_SCACHEFLAG_DELETED and smb_fid_t.scp to make
them more efficient and consistent.
When processing Tran2SetPathInfo do not fail because an smb_fid_t
cannot be found for the path object. The PathInfo function is
being used because we do not have a file descriptor. Most importantly
do not fail by returning success.
(cherry picked from commit 8382f8ccb1c14f32318b3d1c587b417cce4c721c)
LICENSE MIT
Problems with the cm_Rename() functions:
* when a rename occurs across directories, the file server allocates
a new vnode which in turn alters the FID. Since the new FID and
potentially version number is unknown to the client, it is not
possible to update the target directory with the new name and
FID thereby avoiding reading the directory from the file server.
* when the old vnode is removed, the callback is broken but the
client did not discard the cm_scache_t object
In order to optimize the client cache AFS requires a RXAFS_RenameEx
rpc that is equivalent to the current RPC but returns the new FID
and status. This would permit the cache manager to relabel the
data buffers and cm_scache_t that are known to contain valid data.
(cherry picked from commit 54a3c85ae44aaaac9dd933893d975199b3cdca70)
LICENSE MIT
When processing SMB_SESSION_SETUP_ANDX in smb_ReceiveV3SessionSetupX
it is possible that the smb client might indicate that it requires an
Mpx Count greater than we are configured to support. If so, log it
to the Windows Event Log as a warning.
It is also possible that the client might specify that its maximum
receive buffer is smaller than the SMB_PACKETSIZE. If so, log it
to the Windows Event Log as a warning.
Finally, if the client specifies a virtual circuit number of zero,
the client thinks this is its first time communicating with us.
In which case we should invalidate all prior virtual circuits.
We also log this request to the Windows Event Log as informational.
(cherry picked from commit 4eb808d26b1d417189d363924c4e2e32ed832690)
LICENSE IPL10
unfussy compilers treat this as a shadow declare; others thankfully as an error
(cherry picked from commit da8df5ea2c9311c4e4b263fbdba3aea3141ef075)
LICENSE IPL10
FIXES 124359
don't leak ihandles on close. this isn't a complete fix for the issue
(cherry picked from commit b9816e12f7ed8213c9c4eaea09e992e69ce4ee05)
LICENSE IPL10
FIXES 124338
use krb5_524_conv_principal instead of doing it potentially wrong ourselves
(cherry picked from commit b1f9b4cb5dd295162ae51704310e9d6058008f0a)