openafs.git
10 years agoKDFS-windows-optimizations-20090703 openafs-windows-kdfs-ifs-branch
Jeffrey Altman [Sat, 4 Jul 2009 04:46:12 +0000]
KDFS-windows-optimizations-20090703

LICENSE MIT

when performing offline volume checks, do so in most recently used order

if the system is entering suspend state, short circuit the background
daemon operations to avoid extra work that is going to fail when the
network is shutdown behind the back of the service.

(cherry picked from commit 46287f679023c8d1430c64d03e06933cf6121a24)

10 years agoKDFS-windows-fs-chown-chgrp-20090701
Jeffrey Altman [Wed, 1 Jul 2009 21:26:18 +0000]
KDFS-windows-fs-chown-chgrp-20090701

LICENSE MIT

On Windows there is no chown or chgrp command that can be used to
change the owner or group of an object in AFS.   Therefore we
add them to the fs command.

Usage: fs chown -owner <user name or id> [-path <dir/file path>+] [-literal] [-help]
Where: -literal  literal evaluation of mountpoints and symlinks

Usage: fs chgrp -group <user/group name or id> [-path <dir/file path>+] [-literal] [-help]
Where: -literal  literal evaluation of mountpoints and symlinks

(cherry picked from commit ffd065a69578ad26c860b0b3e54053d6432c4a21)

10 years agoKDFS-windows-cellconfig-20090630
Jeffrey Altman [Wed, 1 Jul 2009 02:45:19 +0000]
KDFS-windows-cellconfig-20090630

LICENSE MIT

nul terminate the correct variable

(cherry picked from commit ad6a8942db587b2c5b9aaee6a3e8e89b69e3918c)

10 years agoKDFS-windows-dfs-file-set-warning-20090630
Jeffrey Altman [Tue, 30 Jun 2009 19:11:58 +0000]
KDFS-windows-dfs-file-set-warning-20090630

LICENSE MIT

Add a debug log warning if the target volume is a DFS File Set.
If so, the client will not properly protect against information
leakage or properly deal with directory name caching, symlinks,
and other behavioral differences between AFS and DFS.

(cherry picked from commit efdf78ae086ba02cc3f6ffbd7b0a2ca31743ced7)

10 years agoKDFS-windows-smb-20090630
Jeffrey Altman [Tue, 30 Jun 2009 19:04:00 +0000]
KDFS-windows-smb-20090630

LICENSE MIT

Be sure to call smb_ReleaseVCNoLock before we drop the smb_rctLock.

(cherry picked from commit 49d6a0992c42a6bb1fba8245029f31ca916214e5)

10 years agoKDFS-installers-20090629
Jeffrey Altman [Tue, 30 Jun 2009 01:49:36 +0000]
KDFS-installers-20090629

LICENSE MIT

permit installers to build again.  this does not include all
of the changes for the new documentation.  that work was not
pulled to this branch.

10 years agoKDFS-cellconfig-20090629
Jeffrey Altman [Tue, 30 Jun 2009 01:48:19 +0000]
KDFS-cellconfig-20090629

LICENSE MIT

pullup from head

10 years agoKDFS-windows-rough-sync-with-head-20090629
Jeffrey Altman [Tue, 30 Jun 2009 00:53:54 +0000]
KDFS-windows-rough-sync-with-head-20090629

LICENSE MIT

pullup everything that matters to sync src/WINNT/afsd/ with
the cvs head.

10 years agoKDFS-windows-libafsconf-20090525
Jeffrey Altman [Mon, 29 Jun 2009 21:01:07 +0000]
KDFS-windows-libafsconf-20090525

LICENSE MIT

libafsconf.dll has been present since OpenAFS 1.0.  However,
for some unknown reason the components that it consists of
(cm_dns.obj, cm_config.obj, cm_nls.obj) have been staticly
linked into exes and dlls all over the code base.  This commit
removes all of the static references and replaces them with
libafsconf.lib.

libafsconf.dll is also moved from Client\Program to Common
because it is now linked to by server and utility components.

(cherry picked from commit c8ccb887882bc4affef02a8193e9b1ed01f885f5)

10 years agoKDFS-windows-dcache-prefer-xdata-error-20090629
Jeffrey Altman [Mon, 29 Jun 2009 20:38:55 +0000]
KDFS-windows-dcache-prefer-xdata-error-20090629

LICENSE MIT
FIXES 125018

Fix issue reported by Marc Dionne.  RXAFS_FetchData and RXAFS_StoreData
return access denied errors that are not reported by the subsequent
call to rx_EndCall which should be preferred.

(cherry picked from commit a50fa631cad6919d15721ac2c234ebbdda2b4031)

10 years agoKDFS-rename-residency-from-mrafs-to-osd-20090427
Steven Jenkins [Mon, 29 Jun 2009 20:00:50 +0000]
KDFS-rename-residency-from-mrafs-to-osd-20090427

LICENSE IPL10
FIXES 124130

rename mrafs commands into their equivalent osd versions; structures etc are the
 same.

(cherry picked from commit 8655541d1eb6ea7d935f50d9256e12bf90db5045)

10 years agoKDFS-xdr-free-20090401
Jeffrey Altman [Mon, 29 Jun 2009 19:59:51 +0000]
KDFS-xdr-free-20090401

LICENSE MIT

add xdr_free() and export it from afsrpc.dll.  This permits applications
to free memory allocated within the xdr routines with the same run time
library memory management routines as was used to allocate it.

This is necessary on Windows to prevent memory corruption.

VL_GetAddrsU() is an example where a xdr array is allocated in the
library and must be freed by the application.

(cherry picked from commit d7749751df230d919188546106b61bd2dbb8974c)

10 years agoKDFS-windows-pioctl-subst-unc-20090407
Jeffrey Altman [Mon, 29 Jun 2009 19:58:25 +0000]
KDFS-windows-pioctl-subst-unc-20090407

LICENSE MIT

Add code to support determining if a drive substitution refers to
a UNC path.

(cherry picked from commit 9a0b3da255032f177dfedb650c7a0b65cff24fba)

10 years agoKDFS-windows-hard-link-count-20090628
Jeffrey Altman [Mon, 29 Jun 2009 04:26:19 +0000]
KDFS-windows-hard-link-count-20090628

LICENSE MIT

cm_Link() is used to create hard links.  It did not apply the updated
link target status info to the target cm_scache_t object.  As a result
the linkCount would be incorrect.

cm_Unlink() did not take linkCount into account.  It did not reduce the
locally known linkCount, nor did it invalidate any currently known
callback.  As a result the linkCount would be incorrect.

(cherry picked from commit b8a1dba29367c9786a5f43c90b0a000ff4d4315d)

11 years agoKDFS-windows-fs-path-in-afs-20090507
Jeffrey Altman [Thu, 7 May 2009 16:03:21 +0000]
KDFS-windows-fs-path-in-afs-20090507

LICENSE MIT

Switch the PathInAfs test to use VIOCGETFID instead of VIOC_GET_CELL_NAME
so that the literal option can be used.

(cherry picked from commit fd0f1f49f27b5f92547a0d15e23efd3b2e46376d)

11 years agoKDFS-windows-shellext-path-in-afs-20090507
Jeffrey Altman [Thu, 7 May 2009 15:58:07 +0000]
KDFS-windows-shellext-path-in-afs-20090507

LICENSE MIT
FIXES 124742

Change the PathInAfs test to use VIOCGETFID instead of VIOC_GET_CELL_NAME.
VIOCGETFID permits a literal test of the specified object.   This is needed
for testing the validity of a symlink to a msdfs: or non-existent path.
Otherwise, the AFS Shell Extension context menu will not be displayed.

(cherry picked from commit 621719905806a5883be5a17ca1af0d1929b874e3)

11 years agoKDFS-windows-afsrdr-user-ioctl-20090322
Jeffrey Altman [Sun, 22 Mar 2009 10:47:38 +0000]
KDFS-windows-afsrdr-user-ioctl-20090322

LICENSE BSD

use parent fid instead of root fid as the starting point for
evaluating the remaining path.

11 years agoKDFS-afsrdr-user-symlink-20090321
Jeffrey Altman [Sat, 21 Mar 2009 21:27:12 +0000]
KDFS-afsrdr-user-symlink-20090321

LICENSE BSD

Fix handling of absolute symlinks.

11 years agoKDFS-windows-afsrdr-user-20090313
Jeffrey Altman [Sat, 14 Mar 2009 05:41:22 +0000]
KDFS-windows-afsrdr-user-20090313

LICENSE BSD

Specify the AFS Fid of the global root.afs volume.

Do not return errors from PopulateCurrentEntry when evaluating targets.

symlink target processing is now performed within the file system
due to the ".." symlink issue.

Fix byte range lock deallocation.

11 years agoKDFS-windows-afsrdr-npdll-20090313
Jeffrey Altman [Sat, 14 Mar 2009 05:38:44 +0000]
KDFS-windows-afsrdr-npdll-20090313

LICENSE BSD

update copyrights

11 years agoKDFS-windows-afsrdr-kernel-20090313
Peter Scott [Sat, 14 Mar 2009 05:37:32 +0000]
KDFS-windows-afsrdr-kernel-20090313

LICENSE BSD

with assistance from jaltman@secure-endpoints.com

Add GlobalFileId to the file system initialization arguments.  The file
system needs to be able to identify which volume is the global root
by fid in case the volume is mounted in multiple locations.

Reimplement all of the path parsing logic in order to be able to handle
symlinks that contain a ".." entry that crosses above a volume root.
The full starting path is now recorded in the Ccb as an array of component
names.  This is used as a stack pushing and popping components while
evaluating the contents of a symlink.

Permit directory enumeration to be performed asynchronously.

Correct spelling errors in comments.

Correct @sys processing.

When evaluating the target type for a symlink, do not evaluate the target
of the final component if that component is a mount point.

Initialize sysname resources.

Ensure that buffers are nul terminated before passing them to RtlRegQuery.

When processing the invalidation of a file deletion, delete the direntry
but not the fcb.  No longer assume that Fcb->DirEntry is always non-NULL
except during cleanup.

11 years agoKDFS-windows-afsrdr-common-20090313
Jeffrey Altman [Sat, 14 Mar 2009 05:27:47 +0000]
KDFS-windows-afsrdr-common-20090313

LICENSE BSD

add HOLD_FID / RELEASE_FID interfaces.  Used by the file system to obtain
a reference count on a cm_scache_t object to ensure that it is not recycled.

Add GlobalFileId to the file system initialization arguments.  The file
system needs to be able to identify which volume is the global root
by fid in case the volume is mounted in multiple locations.

11 years agoKDFS-windows-afsd-buf-20090313
Jeffrey Altman [Sat, 14 Mar 2009 05:19:12 +0000]
KDFS-windows-afsd-buf-20090313

LICENSE MIT

Do not add a buffer to the free list if it is held by the file system.

Define buf_RDRBuffersExist()

11 years agoKDFS-windows-dnlc-20081015
Jeffrey Altman [Sat, 14 Mar 2009 05:16:28 +0000]
KDFS-windows-dnlc-20081015

LICENSE MIT
FIXES 116641

Do not use the DNLC if the name when converted from Unicode is NULL.

(cherry picked from commit e0298d5f09d7e791aeb0f98438e299ad1faf186a)

11 years agoKDFS-windows-afsd-have-callback-20090313
Jeffrey Altman [Sat, 14 Mar 2009 05:15:13 +0000]
KDFS-windows-afsd-have-callback-20090313

LICENSE MIT

only call RDR_Invalidate if we have a valid callback

11 years agoKDFS-windows-afsd-btree-20090313
Jeffrey Altman [Sat, 14 Mar 2009 05:12:44 +0000]
KDFS-windows-afsd-btree-20090313

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)

11 years agoKDFS-windows-afsd-reset-acl-cache-20090312
Jeffrey Altman [Sat, 14 Mar 2009 05:11:22 +0000]
KDFS-windows-afsd-reset-acl-cache-20090312

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)

11 years agoKDFS-windows-afsd-unlock-20090312
Jeffrey Altman [Sat, 14 Mar 2009 04:55:23 +0000]
KDFS-windows-afsd-unlock-20090312

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)

11 years agoKDFS-windows-freelance-20090312
Jeffrey Altman [Sat, 14 Mar 2009 04:51:30 +0000]
KDFS-windows-freelance-20090312

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)

11 years agoKDFS-windows-afsd-callback-20090312
Jeffrey Altman [Sat, 14 Mar 2009 04:49:28 +0000]
KDFS-windows-afsd-callback-20090312

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)

11 years agoKDFS-windows-afsd-btree-20090228
Jeffrey Altman [Sat, 14 Mar 2009 04:46:17 +0000]
KDFS-windows-afsd-btree-20090228

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)

11 years agoKDFS-windows-afsd-server-uuid-20090301
Jeffrey Altman [Mon, 2 Mar 2009 04:45:49 +0000]
KDFS-windows-afsd-server-uuid-20090301

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)

11 years agoKDFS-window-afsd-bad-version-20090228
Jeffrey Altman [Sat, 28 Feb 2009 16:19:55 +0000]
KDFS-window-afsd-bad-version-20090228

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)

11 years agoKDFS-windows-afsd-error-map-20090227
Jeffrey Altman [Fri, 27 Feb 2009 07:27:17 +0000]
KDFS-windows-afsd-error-map-20090227

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)

11 years agoKDFS-windows-afsd-findserverbyip-refcount-20081223
Matt Benjamin [Wed, 25 Feb 2009 06:20:10 +0000]
KDFS-windows-afsd-findserverbyip-refcount-20081223

LICENSE BSD
FIXES 124054

reference count the server object returned by cm_FindServerByIP

(cherry picked from commit 411a63fb063cf24d6b9aedeb83df2eb58716e239)

11 years agoKDFS-sync-rx-with-1_5-20090225
Jeffrey Altman [Wed, 25 Feb 2009 06:17:32 +0000]
KDFS-sync-rx-with-1_5-20090225

LICENSE IPL10

pullup all rx changes from 1_5 branch since the last sync.

11 years agoKDFS-windows-freelance-20090223
Jeffrey Altman [Tue, 24 Feb 2009 05:07:22 +0000]
KDFS-windows-freelance-20090223

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)

11 years agoKDFS-windows-vmoved-vnovol-failover-20090212
Jeffrey Altman [Thu, 12 Feb 2009 21:35:06 +0000]
KDFS-windows-vmoved-vnovol-failover-20090212

LICENSE MIT
FIXES 124276

A readonly volume with multiple instances was being marked alldown
when one of the instances resulted in VNOVOL because the vldb and
the indicated file server were out of sync. The cache manager would
then attempt to re-obtain the volume location info from the vldb
for the entire timeout period.

This patch:

adds trace logging to cm_Analyze indicating which server references
are being deleted and which remain in response to a VNOVOL/VMOVED error.

adds trace logging to cm_UpdateVolumeStatusInt showing how the
new volume status value is determined.

corrects cm_Analyze() so that it doesn't corrupt the server reference
list during cm_FreeServerList() calls; doesn't orphan the server reference
list by setting *serverpp to NULL; and only re-obtains the volume info
list once per request.

(cherry picked from commit 8bb35234aa8469ba93a2171fced503a875c2f1f6)

11 years agoKDFS-windows-freelance-20090204
Jeffrey Altman [Thu, 5 Feb 2009 00:25:03 +0000]
KDFS-windows-freelance-20090204

LICENSE MIT

set the correct fid vnode/unique values when adding new symlnks and
mount points.

(cherry picked from commit ffdc7c70889386dca37e207a91791d5d0728d2d7)

11 years agoKDFS-windows-btree-dir-enum-20090126
Jeffrey Altman [Mon, 26 Jan 2009 15:51:22 +0000]
KDFS-windows-btree-dir-enum-20090126

LICENSE MIT

Modify the cm_BPlusDirEnum interface:

* add the cm_scache_t * of the directory being enumerated to the
  cm_direnum_t object

* remove the cm_scache_t * from the cm_BPlusDirEnumBulkStat call
  now that it is part of the cm_direnum_t object

* maintain a reference to the cm_scache_t for the life of the
  cm_direnum_t object.  This ensures that the object cannot be
  recycled while the enumeration is in use.

(cherry picked from commit e42a066da153750077b154e27249b5b4862724db)

11 years agoKDFS-windows-afsrdr-user-symlink-target-20090109
Jeffrey Altman [Fri, 9 Jan 2009 22:17:51 +0000]
KDFS-windows-afsrdr-user-symlink-target-20090109

LICENSE MIT

When populating the symlink, copy the target name after evaluation
not before.

11 years agoKDFS-windows-afsrdr-kernel-server-name-20090109
Jeffrey Altman [Fri, 9 Jan 2009 22:15:53 +0000]
KDFS-windows-afsrdr-kernel-server-name-20090109

LICENSE BSD

When validating that a path is ours to process, make sure
that we do not treat the AFSServerName as a prefix.
A full match is required.

11 years agoKDFS-windows-afsrdr-kernel-build-symlink-target-20090109
Jeffrey Altman [Fri, 9 Jan 2009 22:14:08 +0000]
KDFS-windows-afsrdr-kernel-build-symlink-target-20090109

LICENSE BSD

When the target of a symlink is a volume root, we must return
the control block of the volume root and not the current fcb
which is still referring to the last symlink in the chain.

Be sure to hold the TreeLock while we perform the is volume
test in order to prevent the volume control block from being
torn down.

11 years agoKDFS-windows-afsrdr-kernel-symlink-target-20090107
Jeffrey Altman [Thu, 8 Jan 2009 07:18:57 +0000]
KDFS-windows-afsrdr-kernel-symlink-target-20090107

LICENSE BSD

When evaluating the file type of a symlink target, use the fast evaluation
which does not follow mount points.   We need to know that the target
is a mount point so that the reparse attribute can be set.

11 years agoKDFS-windows-afsrdr-kernel-generic-20090107
Jeffrey Altman [Thu, 8 Jan 2009 07:16:26 +0000]
KDFS-windows-afsrdr-kernel-generic-20090107

LICENSE BSD

Remember to increment the Fcb OpenReferenceCount.  Otherwise,
an assertion will be triggered at shutdown due to the undercount.

11 years agoKDFS-windows-afsd-freelance-20090105
Jeffrey Altman [Mon, 5 Jan 2009 16:15:31 +0000]
KDFS-windows-afsd-freelance-20090105

LICENSE MIT

Bring a bit more sanity to the Freelance code:

1. Add functions cm_FreelanceFetchMountPointString and
   cm_FreelanceFetchFileType to cm_freelance.c.  These functions
   permit the MountPointString and FileType to be obtained within
   cm_GetSCache without requiring knowledge of data structures
   that should be private to cm_freelance.c

2. Enforce the rule that odd vnode values are directory objects.
   The root directory is 1 and everything else must be a multiple
   of two.

3. Use the unique field as an index into the localMountPoints
   array.

4. Fix cm_GetCallback to process freelance data refreshes on
   all objects in the freelance volume not just the root directory.
   If this is not done, an access to \\afs\foo prior to \\afs\all
   being evaluated will cause an unnecessary attempt to send a
   fetch status request to a file server and produce an alldown
   error.

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
LICENSE MIT

remove unnecessary conditional

(cherry picked from commit 8c4b06a5b62a07d4d6733b313ad404e1cb6abe8d)

11 years agoKDFS-windows-afsd-virtual-cache-20090105
Jeffrey Altman [Mon, 5 Jan 2009 16:00:02 +0000]
KDFS-windows-afsd-virtual-cache-20090105

LICENSE MIT

If the NonPersistentCache option is activated there is no "AFSCache"
file to share with the file system.  Refuse to start the redirector
interface.

11 years agoKDFS-windows-afsrdr-user-virtual-cache-20090105
Jeffrey Altman [Mon, 5 Jan 2009 15:53:30 +0000]
KDFS-windows-afsrdr-user-virtual-cache-20090105

LICENSE MIT

If the NonPersistentCache option is activated there is no "AFSCache"
file to share with the file system.  Refuse to start the redirector
interface.

Instead of testing in RDRInit the service will not attempt to
initialize if the redirector cannot be used.

11 years agoKDFS-windows-afsrdr-kernel-20090104
Jeffrey Altman [Mon, 5 Jan 2009 05:24:44 +0000]
KDFS-windows-afsrdr-kernel-20090104

LICENSE BSD

In order to evaluate the file attributes the fcb of the parent
is required.  For volume roots, the parent is the current fcb.

11 years agoKDFS-windows-afsrdr-user-virtual-cache-20090104
Jeffrey Altman [Sun, 4 Jan 2009 16:57:24 +0000]
KDFS-windows-afsrdr-user-virtual-cache-20090104

LICENSE MIT

If the NonPersistentCache option is activated there is no "AFSCache"
file to share with the file system.  Refuse to start the redirector
interface.

11 years agoKDFS-src-makefile-20081230
Jeffrey Altman [Wed, 31 Dec 2008 01:32:52 +0000]
KDFS-src-makefile-20081230

LICENSE MIT

fix extra

11 years agoKDFS-windows-afsrdr-makefile-20081230
Jeffrey Altman [Wed, 31 Dec 2008 01:27:30 +0000]
KDFS-windows-afsrdr-makefile-20081230

LICENSE MIT

terminate the build on error

copy the built files to $(DESTDIR)\root.client\usr\vice\etc

11 years agoKDFS-windows-afsrdr-npdll-net-error-20081230
Jeffrey Altman [Tue, 30 Dec 2008 23:02:28 +0000]
KDFS-windows-afsrdr-npdll-net-error-20081230

LICENSE BSD

when the redirector driver is not available or not ready, do not
return WN_NO_NETWORK as an error from the network provider.  doing
so results in the enumeration of all network providers to be halted
since what is the point if there is no network.

Instead return WN_NET_ERROR which indicates that something went
wrong for this provider.

11 years agoKDFS-afsrdr-build-20081230
Jeffrey Altman [Tue, 30 Dec 2008 22:01:36 +0000]
KDFS-afsrdr-build-20081230

LICENSE BSD

if CODESIGN_KERNEL is not defined, do not output a signing command
to the cmd file.

11 years agoKDFS-windows-install-wix-20081229
Asanka Herath [Mon, 29 Dec 2008 18:29:08 +0000]
KDFS-windows-install-wix-20081229

LICENSE MIT

Replace the default install with an IFS install and a SMB install.
The IFS install does not include the loopback adapter, afscreds, or
afs_config.

The SMB install does not include the file system driver or the
matching network provider.

Create new properties to permit a transform to easily select which
should be the default.  IFS is the default.

When generating the 32-bit tools installer, do not register the
network provider.   The configuration from the 64-bit install will
suffice for both versions.

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
LICENSE MIT

remove references to IBM AFS release notes.

11 years agoKDFS-windows-release-notes-msi-deployment-20081229
Asanka Herath [Mon, 29 Dec 2008 09:45:51 +0000]
KDFS-windows-release-notes-msi-deployment-20081229

LICENSE MIT

update the msi deployment section to describe the use of IFS vs SMB
installation.

11 years agoKDFS-windows-release-notes-afsrdr-20081229
Jeffrey Altman [Mon, 29 Dec 2008 06:31:05 +0000]
KDFS-windows-release-notes-afsrdr-20081229

LICENSE MIT

additional notes on the differences between the smb vs native
interfaces.

11 years agoKDFS-windows-release-notes-native-file-system-20081228
Jeffrey Altman [Sun, 28 Dec 2008 13:50:09 +0000]
KDFS-windows-release-notes-native-file-system-20081228

LICENSE MIT

Update the release notes to include references to the native file system.
Add new registry values to Appendix A.  Annotate as appropriate which
registry values and options are SMB only.

11 years agoKDFS-windows-release-notes-1_5_55-20081227
Jeffrey Altman [Sun, 28 Dec 2008 04:34:30 +0000]
KDFS-windows-release-notes-1_5_55-20081227

LICENSE MIT

copy release notes from 1.5.55

11 years agoKDFS-windows-release-notes-remove-ibm-20081227
Jeffrey Altman [Sun, 28 Dec 2008 02:14:56 +0000]
KDFS-windows-release-notes-remove-ibm-20081227

LICENSE MIT

remove the ibm release notes from the kdfs branch

11 years agoKDFS-windows-pioctl-drive-subst-20081226
Jeffrey Altman [Fri, 26 Dec 2008 21:20:09 +0000]
KDFS-windows-pioctl-drive-subst-20081226

LICENSE MIT

GetDriveType() will return "REMOTE" for drive letters that are mapped
to network devices via the SUBST command.  Recursively check drive letters
for the final substitution before checking to see if the drive letter
is in fact an AFS device.

(cherry picked from commit 238ad07e13a85366bcf49a309e3735d26ff51ff2)

11 years agoKDFS-windows-doc-20081222
Jeffrey Altman [Tue, 23 Dec 2008 07:23:07 +0000]
KDFS-windows-doc-20081222

LICENSE BSD

Oct 9th revision of windows architecture document

11 years agoKDFS-windows-afsrdr-kernel-mp-target-verify-20081222
Jeffrey Altman [Tue, 23 Dec 2008 07:08:55 +0000]
KDFS-windows-afsrdr-kernel-mp-target-verify-20081222

LICENSE BSD

check to see if the target of a mount point requires verfication
and if so, verify it.

11 years agoKDFS-windows-afsrdr-npdll-20081222
Jeffrey Altman [Tue, 23 Dec 2008 07:07:33 +0000]
KDFS-windows-afsrdr-npdll-20081222

LICENSE BSD

Add ..\AFSRedirector\NetworkProvider "Debug" registry value to
control the use of OutputDebugString debugging messages.

11 years agoKDFS-windows-pioctl-20081222
Jeffrey Altman [Tue, 23 Dec 2008 07:04:27 +0000]
KDFS-windows-pioctl-20081222

LICENSE MIT

if the redirector device cannot be opened, return a failure from
GetIoctlHandle().

Add more debug output for the redirector when the IoctlDebug
registry value is enabled.

11 years agoKDFS-windows-afsrdr-kernel-extents-20081221
Jeffrey Altman [Mon, 22 Dec 2008 15:42:26 +0000]
KDFS-windows-afsrdr-kernel-extents-20081221

LICENSE BSD

If a read request is received that is larger than the afs cache
manager's maximum rpc length, break the request up into chunks
of maximimum rpc length before contacting the service.  This
permits the file system to begin using the received chunks while
the rest are being fetched.

Add logic to AFSMarkDirty to validate that all of the extents that
we are trying to mark dirty have actually been found.

11 years agoKDFS-windows-afsd-buf-log-20081221
Jeffrey Altman [Mon, 22 Dec 2008 15:27:11 +0000]
KDFS-windows-afsd-buf-log-20081221

LICENSE MIT

replace OutputDebugString statements with osi_Log

reverse the logic when clearing the CM_BUF_REDIR flag in buf_Truncate.
if the request is from the file system, clear the flag and log it.
If it is not, invalidate the object.

11 years agoKDFS-windows-afsrdr-user-20082021
Jeffrey Altman [Mon, 22 Dec 2008 14:59:12 +0000]
KDFS-windows-afsrdr-user-20082021

LICENSE MIT

Pass error codes through cm_MapRPCError() before translating
with smb_MapNTError() in order to translate CRT and AFS error
codes to CM_ERROR_ values before translating to NTSTATUS values
for the file system.

Add RDR_GetLocalSystemUser() which returns the cm_user_t belonging
to the local system account, S-1-5-18.  If an open request is received
from this account, do not perform the open checks.   The account has
no tokens and unless the object being accessed is world readable an
attempt to open will fail.  Unfortunately, requests initiated by
csrss.exe must succeed in order for executable files to be memory
mapped and csrss.exe is a local system account process.  The open
check is advisory, it does not provide any real access to the data
so there is no information leak.

In the release extents functions, add additional trace logging for
extents that are released by the file system but which are not owned
by the file system.

11 years agoKDFS-windows-afsrdr-kernel-file-type-invalid-20081220
Jeffrey Altman [Sun, 21 Dec 2008 07:21:14 +0000]
KDFS-windows-afsrdr-kernel-file-type-invalid-20081220

LICENSE BSD

add support for objects assigned the invalid file type by
afsd_service

11 years agoKDFS-windows-afsrdr-kernel-deadlock-20081220
Jeffrey Altman [Sun, 21 Dec 2008 07:19:22 +0000]
KDFS-windows-afsrdr-kernel-deadlock-20081220

LICENSE BSD

avoid a deadlock.

11 years agoKDFS-rxgen-cpp-definition-20081221
Jeffrey Altman [Sun, 21 Dec 2008 06:08:09 +0000]
KDFS-rxgen-cpp-definition-20081221

LICENSE MIT
FIXES 124011

avoid "ologo" compilation error messages due to buffer overflow in rxgen
on Windows.  research performed by mlane@sinenomine.net.

(cherry picked from commit 992ec096332c31f64e8cff66e20d2ab87708485f)

11 years agoKDFS-windows-afsrdr-npdll-debug-20081220
Jeffrey Altman [Sat, 20 Dec 2008 20:51:58 +0000]
KDFS-windows-afsrdr-npdll-debug-20081220

LICENSE BSD

disable debug output until compiled with AFS_DEBUG_TRACE defined

11 years agoKDFS-windows-afsrdr-npdll-tests-20081220
Jeffrey Altman [Sat, 20 Dec 2008 19:57:03 +0000]
KDFS-windows-afsrdr-npdll-tests-20081220

LICENSE BSD

enumresources.c is a test application that can be used to query
most of the network provider enumeration interfaces.

11 years agoKDFS-windows-afsrdr-kernel-file-attributes-20081220
Jeffrey Altman [Sat, 20 Dec 2008 18:00:00 +0000]
KDFS-windows-afsrdr-kernel-file-attributes-20081220

LICENSE BSD

New function AFSGetFileAttributes() is now used to obtain or
compute the FileAttributes that should be used in responses
to directory enumerations and information queries.

To improve readability replace FileType 0 with the descriptive
AFS_FILE_TYPE_UNKNOWN preprocessor symbol.

The DirEntry.DirectoryEntry.FileAttributes field is now
strictly the FileAttributes value reported by the service.
The file system should not modify this value.

11 years agoKDFS-windows-afsrdr-kernel-release-20081219
Jeffrey Altman [Sat, 20 Dec 2008 01:22:22 +0000]
KDFS-windows-afsrdr-kernel-release-20081219

LICENSE BSD

Be sure to release the correct resources.  AFSBuildSymLinkTarget
releases the input and holds the output.

11 years agoKDFS-windows-afsrdr-kernel-querydir-lock-leak-20081219
Jeffrey Altman [Fri, 19 Dec 2008 23:16:21 +0000]
KDFS-windows-afsrdr-kernel-querydir-lock-leak-20081219

LICENSE BSD

Avoid a Dcb resource leak in AFSQueryDirectory

11 years agoKDFS-windows-afsrdr-kernel-20081219
Jeffrey Altman [Fri, 19 Dec 2008 18:48:46 +0000]
KDFS-windows-afsrdr-kernel-20081219

LICENSE BSD

in collaboration with pscott@kerneldrivers.com

rename and repurpose AFSBuildTargetDirectory() to
AFSBuildMountPointTarget().  The function is now only
called to build the the target Fcb of a mount point.

AFSBuildSymLinkTarget() is called to evaluate the target
Fcb of a SymLink.  The target Fcb can be any type of
object.  Mount Point Fcbs are not automatically evaluated.

The SymbolicLink.TargetFcb field has been removed.
SymLink targets must be evaluated on each access in order
to ensure proper target resolution as intermediary path
objects can be altered at any time.

Restructure AFSParseName and AFSLocateName to improve
readability.

11 years agoKDFS-windows-afsrdr-kernel-walk-target-chain-20081217
Jeffrey Altman [Thu, 18 Dec 2008 05:27:49 +0000]
KDFS-windows-afsrdr-kernel-walk-target-chain-20081217

LICENSE BSD

if the targetFcb of a symlink or mount point has yet to be created
while walking the target chain, do so.

11 years agoKDFS-windows-afsrdr-kernel-spelling-20081217
Jeffrey Altman [Thu, 18 Dec 2008 02:36:37 +0000]
KDFS-windows-afsrdr-kernel-spelling-20081217

LICENSE BSD

correct typos in comments

11 years agoKDFS-windows-afsrdr-kernel-np-support-20081217
Jeffrey Altman [Thu, 18 Dec 2008 02:29:29 +0000]
KDFS-windows-afsrdr-kernel-np-support-20081217

LICENSE BSD

Modify the reported connection scope, type, usage values to make
them consistent with what is actually reported for dfs shares.

Validate requests for connection info for \\afs\cell#volume\
share names and create connection entries for those that exist.

With \\afs\cell#volume\ entries it is no longer a valid assumption
that only symlinks and mount points will be found as children of
the root.  (Actually this was never true.)

Do not attempt to remove an entry from the short name tree if
the tree is NULL.

11 years agoKDFS-windows-afsrdr-kernel-np-server-name-verify-20081217
Jeffrey Altman [Wed, 17 Dec 2008 18:31:46 +0000]
KDFS-windows-afsrdr-kernel-np-server-name-verify-20081217

LICENSE BSD

do not accept server names whose prefix matches the
afs server name but is in fact longer.

11 years agoKDFS-windows-afsd-smb-error-mapping-20081217
Jeffrey Altman [Wed, 17 Dec 2008 16:20:12 +0000]
KDFS-windows-afsd-smb-error-mapping-20081217

LICENSE MIT

map ENOMEM to STATUS_OUT_OF_MEMORY

(cherry picked from commit dc4429487fbfc7a41f266b36d0f86ab32eb24e75)

11 years agoKDFS-windows-afsrdr-kernel-20081216
Peter Scott [Wed, 17 Dec 2008 06:43:41 +0000]
KDFS-windows-afsrdr-kernel-20081216

LICENSE BSD

when evaluating a relative path where the last component does not
exist, do not release the parent resource twice.

when enumerating directories, evaluate the symlink to determine the
type of the final target in the chain.  however, if the next to final
target is a mount point, do not evaluate the mount point as that is
an unnecessary expense.

11 years agoKDFS-windows-afsrdr-kernel-symlink-eval-20081216
Peter Scott [Tue, 16 Dec 2008 18:54:38 +0000]
KDFS-windows-afsrdr-kernel-symlink-eval-20081216

LICENSE BSD

During directory enumeration evaluate symlink targets to
determine their type for inclusion in the directory results.

11 years agoKDFS-windows-afsrdr-npdll-20081215
Jeffrey Altman [Mon, 15 Dec 2008 20:24:47 +0000]
KDFS-windows-afsrdr-npdll-20081215

LICENSE BSD

Add missing export for GetConnection3

Replace the dynamically allocated with szProviderName with a static
buffer in order to avoid memory leaks. The DllMain() is not being
called by the C RTL.

In GetResourceInformation, the output strings must be NUL terminated
and the input buffer size must be preserved so it can be used to
determine if there is sufficient room or not.  Bad things happen
if we always return a "more data" error.

11 years agoKDFS-windows-afsrdr-kernel-20081215
Jeffrey Altman [Mon, 15 Dec 2008 16:15:13 +0000]
KDFS-windows-afsrdr-kernel-20081215

LICENSE BSD

Add FID to all trace messages that include a DirEntry

Fix spelling errors in comments

Make sure that the PrivateCacheMap, created with
CcInitializeCacheMap(), is still in place prior to issuing
calls to Cc API functions.  If the PrivateCacheMap was
released, reconstruct it.

In AFSVolumeWorkerThread, do not block when attempting to
voluntarily release extents.  Doing so can result in a
multiple resource chain deadlock and severely hampers
performance.

11 years agoKDFS-windows-afsrdr-user-20081213
Jeffrey Altman [Sat, 13 Dec 2008 19:31:25 +0000]
KDFS-windows-afsrdr-user-20081213

LICENSE MIT

In order to permit executables to be executed from AFS directories
that are not world readable, the open check will be skipped for
requests issued under the LOCAL SYSTEM account.  This change does
not permit reads/writes/lookups to be performed that the file
server would reject.

11 years agoKDFS-windows-install-wix-rdr-20081213
Asanka Herath [Sat, 13 Dec 2008 06:32:41 +0000]
KDFS-windows-install-wix-rdr-20081213

LICENSE MIT

Separate out afscreds.exe and afs_config.exe into new components
that can be separately configured.

Add a redirector component for the network provider and file system
driver that can optionally be installed.

Make the loopback adapter optional.

11 years agoKDFS-windows-afsrdr-npdll-20081212
Jeffrey Altman [Fri, 12 Dec 2008 19:02:57 +0000]
KDFS-windows-afsrdr-npdll-20081212

LICENSE BSD

Obtain network provider name from the registry.  This ensures
consistency and permits site specific configuration.

Upper case local names for consistency.

When enumerating only return the number of entries requested
by the caller.

In NPGetResourceInformation make sure the lpComment and lpProvider
are initialized.  Do not return the comment but be sure to return
the provider.

11 years agoKDFS-windows-afsrdr-kernel-20081212
Peter Scott [Fri, 12 Dec 2008 18:52:59 +0000]
KDFS-windows-afsrdr-kernel-20081212

LICENSE BSD

Enumerate the global root immediately after afsd_service initializes
the file system.  Do not wait for the first request to be received.

The pioctl interface queries the ready state of the file system before
issuing a request.  If the global root has not been enumerated, the
file system will report a not ready status and the pioctl will fallback
to the smb interface.

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
LICENSE BSD

change the network provider comment for the "AFS" server
entry to "AFS Root".

return success if the invalidation cannot find the object

11 years agoKDFS-windows-afsrdr-user-casts-20081212
Jeffrey Altman [Fri, 12 Dec 2008 18:49:57 +0000]
KDFS-windows-afsrdr-user-casts-20081212

LICENSE MIT

cast away some unnecessary warnings

11 years agoKDFS-windows-install-wix-20081212
Jeffrey Altman [Fri, 12 Dec 2008 15:16:21 +0000]
KDFS-windows-install-wix-20081212

LICENSE MIT

The NetworkProvider "Name" must match the one the DLL exports as
part of the enumeration structure for each container, share, etc.
Change to "OpenAFS Network" to match.

11 years agoKDFS-windows-afsrdr-kernel-build-tree-20081211
Jeffrey Altman [Thu, 11 Dec 2008 16:39:17 +0000]
KDFS-windows-afsrdr-kernel-build-tree-20081211

LICENSE BSD

when building a volume root for the first time be sure
to set ntStatus to success if we succeed.

11 years agoKDFS-windows-afsd-utils-20081210
Jeffrey Altman [Thu, 11 Dec 2008 07:35:46 +0000]
KDFS-windows-afsd-utils-20081210

LICENSE MIT

Fix prototype for cm_Gen8Dot3VolNameW

11 years agoKDFS-windows-afsrdr-user-20081210
Jeffrey Altman [Thu, 11 Dec 2008 04:43:34 +0000]
KDFS-windows-afsrdr-user-20081210

LICENSE MIT

do not walk the entire list of extents during a release call
trying to find dirty ones to flush if we have already flushed
them all.

Always call cm_CheckNTOpenDone on success or failure of
cm_CheckNTOpen.

Cleanup logging statements.

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
LICENSE MIT

Permit _WIN32_WINNT to be defined by the build system.  Default to 0x0500
if it is unspecified.

In RDR_EnumerateDirectory(), if the ResultBufferLength is 0 there is
no room to respond with a AFSDirEnumResp structure.   Therefore,
conditionalize all assignments to that structure based upon the
ResultBufferLength.

Fix the call to cm_Gen8Dot3VolNameW which takes four arguments
not three.

11 years agoKDFS-windows-afsrdr-kernel-20081210
Peter Scott [Thu, 11 Dec 2008 04:36:46 +0000]
KDFS-windows-afsrdr-kernel-20081210

LICENSE BSD

During a rename operation if the target name is in use
and the replace on rename flag is set, replace the previous
target instead of failing the operation.

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
LICENSE BSD

(assisted by pscott@kerneldrivers.com)

Release extents when they have been idle for 6 minutes.

Do not permit AFSLocateNameEntry to return
STATUS_OBJECT_NOT_FOUND from called function.  This
error has special meaning when returned from this
function.

In AFSBuildTargetDirectory, do not treat non-MountPoints
as if they are MountPoints

Cleanup and addition of comments.

====================
LICENSE BSD

AFSInitRootForMountPoint was originally intended to be called
only to evaluate mount point targets.  However, it is now being
called to evaluate SymbolicLink targets as well.  As a result
we cannot count on the vnode being equal to 1 (indicating a
volume root) instead we must set the vode to be 1.  This permits
us to construct an Fcb for the target of a SymbolicLink that
might be in a volume the file system has never encountered before.

11 years agoKDFS-windows-afs-rdr-kernel-20081208
Peter Scott [Mon, 8 Dec 2008 17:03:12 +0000]
KDFS-windows-afs-rdr-kernel-20081208

LICENSE BSD

(jaltman@secure-endpoints.com contributed
to these changes.)

Add QueueCount to the AFSCommRequestBlock.
This number is an estimate of the number of
outstanding requests the file system has
to send to the afs cache manager.  This
value can be used in the future to dynamically
adjust the worker thread pool size based upon
the observed need.

Add debugging to AFSEnumerateDirectory.

Add assertions to ensure that VolumeInformation
is only accessed for Fcbs that are root volume
objects (vnode = 1, unique = 1).

The AFS Global Root Fcb is a root volume.  Set
the vnode,unique pair to indicate that.

If an AFSEnumerateDirectory call is interrupted,
reset the directory contents.

Do not initialize the DirtyEntentsList without
holding the lock resource.

When waiting for an extent, periodically timeout
the wait and re-issue the request to the cache
manager.  There is a potential race in low extent
count scenarios where an extent can be assigned
to the file system and released back to the AFS
cache manager before the requesting thread has
a chance to use the required extent.

Use IsListEmpty() instead of relying on the
return value to RemoveHeadList() to indicate
that the list is empty.

Reorder the acquisition of the NPDirNode and Fcb
locks in AFSValidateEntry to avoid a deadlock.

11 years agoKDFS-windows-afs-rdr-common-20081208
Peter Scott [Mon, 8 Dec 2008 16:53:37 +0000]
KDFS-windows-afs-rdr-common-20081208

LICENSE BSD

Add QueueCount to the AFSCommRequestBlock.
This number is an estimate of the number of
outstanding requests the file system has
to send to the afs cache manager.  This
value can be used in the future to dynamically
adjust the worker thread pool size based upon
the observed need.

11 years agoKDFS-windows-rdr-user-request-file-extents-20081208
Jeffrey Altman [Mon, 8 Dec 2008 16:47:51 +0000]
KDFS-windows-rdr-user-request-file-extents-20081208

LICENSE MIT

Change RDR_RequestFileExtentsAsync to return a BOOL
which indicates whether or not the request should
be retried.  When a wouldblock condition is reached
instead of simply returning the extents that have
been obtained so far and ignoring the rest, return
what we have obtained and retry the remaining extents.
This will avoid the file system from being forced to
reissue the request.

If we subsequently receive a duplicate request for
an extent that has already been given to the file
system that is ok.  It will be ignored.

11 years agoKDFS-windows-afsd-redir-20081208
Jeffrey Altman [Mon, 8 Dec 2008 16:34:28 +0000]
KDFS-windows-afsd-redir-20081208

LICENSE MIT

Conditionalize all calls to RDR_InvalidateObject with
an RDR_Initialized test.  This is done to reduce the
performance hit when running with the SMB interface.

Add BUF_ERROR_TRUNC (-2) to cm_buf which is used for
debugging purposes to indicate that a cm_buf_t's
dataVersion field was set to CM_BUF_VERSION_BAD due
to a truncation as opposed to an actual error code.

in cm_dcache do not attempt to release a cm_buf_t
when buf_Get() fails.

Do not issued RDR_InvalidateObject(DELETED) if the
source of the deletion was the file system.