windows-notes-20060214
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 14 Feb 2006 13:25:10 +0000 (13:25 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 14 Feb 2006 13:25:10 +0000 (13:25 +0000)
updates

doc/txt/winnotes/afs-changes-since-1.2.txt
doc/txt/winnotes/afs-integration.txt
doc/txt/winnotes/afs-issues.txt

index ba004f4..7468b12 100644 (file)
@@ -1,4 +1,94 @@
-Since 1.4.1 rc4: 1.4.1 rc5 released (20 Jan 2006)
+Changes not present in 1.4.1-RC4
+
+ * Add EventLog messages for transitions in fs crypt state.
+
+ * Byte range locking (when locks will be obtained from the
+   is still under discussion)
+
+ * 64-bit Windows operating systems now supported 
+   (XP SP2 64-bit, 2003 SP1 64-bit, 2003 R2 64-bit)
+   This is a native 64-bit implementation of OpenAFS for Windows.
+   There is currently no 64-bit version of KFW and therefore 
+   there is no (easy) method for obtaining AFS credentials.  
+   32-bit KFW 3.0 can be used with 32-bit OAFW libraries
+   to obtain AFS tokens but there is not for the feint of 
+   heart.
+
+ * A faster implementation of the fcrypt algorithms improves 
+   performance.
+
+ * The afsd_service.exe now supplies Event Log Message Text.
+   The event log no longer generates warning text due to lack
+   of message configuration.
+
+ * When afs servers are unreachable and network stack returns
+   a WSAEHOSTUNREACHABLE error, the AFS client will immediately 
+   mark the attempted server as being down.   This allows for
+   very fast response to the calling application.  This change
+   has a pronounced improvement when the Windows Explorer is
+   used on disconnected mobile computers.
+
+ * Added DebugOutputString debugging of the RX library
+
+Since 1.4.1 rc6: 1.4.1 rc7 released (14 Feb 2006)
+
+ * The client manager maintains a least recently used list of
+   all the ACLs.  If an ACL is already the most recently used
+   do not bother to remove it from the list and place it on the
+   front.
+
+ * As part of the process of adding a new server, set the 
+   server is down flag and then perform a ping.  If the server
+   is up, the flag will be reset.  If the server is down, the
+   client will not timeout unnecessarily while attempting to
+   perform real work.
+
+ * If a Mountpoint String is the empty string, return PATH NOT 
+   FOUND.
+
+ * Modify behavior of the Network Provider to avoid querying the
+   profile location if integrated logon is known to be disabled.
+
+ * Correct behavior of 'LogoffPreserveTokens'.  When set, tokens
+   will always be preserved regardless of whether or not integrated
+   logon was used to obtain tokens.  When unset, tokens will be 
+   destroyed regardless of whether integrated logon was used to 
+   obtain the tokens unless the profile is stored in AFS.
+
+ * Disable LogoffTransferToken functionality.  The SMB V3 Logoff
+   message is being delivered even when the user is not logging
+   off of the computer.  
+
+ * Fix a deadlock condition introduced in rc6.
+
+ * Cell names are case-insensitive.  Since the founding of OpenAFS
+   there has been a bug that treated "cell", "Cell", and "CELL" as
+   different cells.  This would result in what appeared to be 
+   random disappearance of user tokens or a failure to authenticate
+   even when tokens were listed by the "tokens" command.
+
+Since 1.4.1 rc5: 1.4.1 rc6 released (2 Feb 2006)
+
+ * Additional auditing of the smb code revealed that smb ioctl
+   operations were failing to free smb_fid_t objects
+
+ * The File Identifiers assigned to smb_fid_t objects could be
+   given the value 65535 which is 0xFFFF which is also the 
+   INVALID_HANDLE value.  Both 0 and 65535 are now treated as
+   reserved values.
+
+ * Audited all assignments to fields and ensured that they are
+   protected by obtaining the relevant mutex object.
+
+ * Re-wrote the VNOVNODE handling to avoid a potential deadlock
+   if both the current cm_scache_t object and its parent are
+   both returning VNOVNODE.
+
+ * Removed all the logic associated with the 'dead_vcp' variable
+   which must have been added for debugging because its used 
+   was never thread safe and it truly served no purpose.
+
+Since 1.4.1 rc4: 1.4.1 rc5 released (18 Jan 2006)
 
  * Check access permissions to the file before the file is 
    truncated.
@@ -18,7 +108,7 @@ Since 1.4.1 rc3: 1.4.1 rc4 released (11 Jan 2006)
  * smb_username_t and smb_user_t objects are now properly reference
    counted and freed as appropriate.
 
- * disable to use of AFS file locks.  Byte range locking is still
+ * disable to use of AFS file locks.  byte range locking is still
    implemented but all locks are managed locally.  This prevents
    multiple processes from editing the same file on the same 
    machine but it does prevent multiple processes on separate 
@@ -56,7 +146,7 @@ Since 1.4.1 rc1: 1.4.1 RC2 released (30 Nov 2005)
 
  * A down server should be marked up as long as it responds to the client.
    It doesn't matter if the server returned an error as long as the error
-   is something other than VRESTARTING.         If there is such an error, all
+   is something other than VRESTARTING.  If there is such an error, all
    connections on that server should be marked for replacement.
 
  * Change the check "up" servers period from once per hour to once every
@@ -64,7 +154,7 @@ Since 1.4.1 rc1: 1.4.1 RC2 released (30 Nov 2005)
 
 Post 1.4.0 revisions: 1.4.1 RC1 released (21 Oct 2005)
  * Byte Range Locking support has been added.  Architectural documentation
-   is located within src/WINNT/afsd/cm_vnodeops.c.   Best efforts are 
+   is located within src/WINNT/afsd/cm_vnodeops.c.   Best efforts are
    made to enforce Windows mandatory locking model using locally managed
    byte range locks with full file locks obtained from the file server.
    Read-only volumes provide the user with an implied locking privilege.
@@ -75,7 +165,7 @@ Post 1.4.0 revisions: 1.4.1 RC1 released (21 Oct 2005)
 
  * Implement error translation functions to convert Universal Error Codes
    output by modern servers to local errno and winsock error values.
-   This fixes the error message problems using pioctl() calls from fs.exe 
+   This fixes the error message problems using pioctl() calls from fs.exe
    and the AFS Shell Extension.
 
 Since 1.4.0 rc8: 1.4.0 final tagged (20 Oct 2005); released (31 Oct 2005)
index 86d4dda..0d024b6 100644 (file)
@@ -1,4 +1,4 @@
-(This document is current as of release 1.5.000)
+...(This document is current as of release 1.5.000)
 
 How to determine if OpenAFS is installed?
 
@@ -200,3 +200,219 @@ the user via the OpenAFS provided command line tools: fs.exe and symlink.exe.
 
 These operations are performed via pioctl calls. 
 
+
+
+BOOL WhichCell(const char *strPath, char *cell, int len)
+{
+    struct ViceIoctl blob;
+    int code;
+
+    blob.in_size = 0;
+    blob.out_size = len
+    blob.out = cell;
+
+    code = pioctl((LPTSTR)((LPCTSTR)strPath), VIOC_FILE_CELL_NAME, &blob, 1);
+    if (code)
+        return FALSE;
+    return TRUE;
+}
+
+
+BOOL WorkstationCell(char *cell, int len)
+{
+    struct ViceIoctl blob;
+    int code;
+
+    blob.in_size = 0;
+    blob.out_size = len
+    blob.out = cell;
+
+    code = pioctl(NULL, VIOC_GET_WS_CELL, &blob, 1);
+    if (code)
+        return FALSE;
+    return TRUE;
+}
+
+/* from afs/afsint.h */
+struct VolumeStatus {
+        afs_int32 Vid;
+        afs_int32 ParentId;
+        char Online;
+        char InService;
+        char Blessed;
+        char NeedsSalvage;
+        afs_int32 Type;
+        afs_int32 MinQuota;
+        afs_int32 MaxQuota;
+        afs_int32 BlocksInUse;
+        afs_int32 PartBlocksAvail;
+        afs_int32 PartMaxBlocks;
+};
+typedef struct VolumeStatus VolumeStatus;
+
+BOOL WhichVolume(const char *strPath, DWORD * volID, char *volname, int len)
+{
+    struct ViceIoctl blob;
+    char space[2048];
+    struct VolumeStatus *status;
+    char *name, *offmsg, *motd;
+
+    int code;
+
+    blob.in_size = 0;
+    blob.out_size = sizeof(space);
+    blob.out = space;
+
+    code = pioctl(strPath, VIOCGETVOLSTAT, &blob, 1);
+    if (code)
+        return FALSE;
+
+    status = (VolumeStatus *)space;
+    name = (char *)status + sizeof(*status);
+    offmsg = name + strlen(name) + 1;
+    motd = offmsg + strlen(offmsg) + 1;
+
+    if (volID)
+       *volID = status->Vid;
+
+    if (volname) {
+       strncpy(volname, name, len);
+        volname[len-1] = '\0';
+    }
+
+    /* Other items you could grab if you wanted 
+     *    if (*offmsg) 
+     *    then there is a message explaining why the volume is offline
+     *
+     *    if (*motd) 
+     *    then there is a message of the day.  (very rarely used)
+     *
+     *    status->MaxQuota: 0 is unlimited; otherwise 32-bit number of Blocks
+     *    status->BlocksInUse: 32-bit number of blocks
+     *    status->PartBlocksAvail: 32-bit number of blocks available in
+     *         the partition the volume is located on
+     *    status->PartMaxBlocks: 32-bit number representing the actual size
+     *         of the partition.
+     *
+     * These can be used to compute Quota Used, Partition Used, Space Avail, 
+     * etc.   A block is 1K.
+     *
+     *    status->Type         0=ReadOnly; 1=ReadWrite
+     *    status->Online       (boolean)
+     *    status->InService    (boolean)
+     *    status->Blessed      (boolean)
+     *    status->NeedsSalvage (boolean)
+     *    status->ParentId     Volume ID of the parent volume.  (for readonly)
+     */
+    return TRUE;
+}
+
+BOOL IsSymlink(const char * dir, const char * entry) 
+{
+    struct ViceIoctl blob;
+    char space[2048];
+    int code;
+
+    blob.in_size = strlen(entry);
+    blob.in = entry;
+    blob.out_size = sizeof(space);
+    blob.out = space;
+
+    memset(space, 0, sizeof(space));
+
+    code = pioctl(dir, VIOC_LISTSYMLINK, &blob, 1);
+    if (code)
+       return FALSE;
+
+    return TRUE;
+}
+
+BOOL GetSymlink(const char * dir, const char * entry, char * dest, int len) 
+{
+    struct ViceIoctl blob;
+    char space[2048];
+    int code;
+
+    blob.in_size = strlen(entry);
+    blob.in = entry;
+    blob.out_size = sizeof(space);
+    blob.out = space;
+
+    memset(space, 0, sizeof(space));
+
+    code = pioctl(dir, VIOC_LISTSYMLINK, &blob, 1);
+    if (code)
+       return FALSE;
+
+    strncpy(dest, space, len);
+    dest[len-1] = '\0';
+    return TRUE;
+}
+
+BOOL IsMountPoint(const char * dir, const char * entry)
+{
+    struct ViceIoctl blob;
+    char space[2048];
+    int code;
+
+    blob.in_size = strlen(entry);
+    blob.in = entry;
+    blob.out_size = sizeof(space);
+    blob.out = space;
+
+    memset(space, 0, sizeof(space));
+
+    code = pioctl(dir, VIOC_AFS_STAT_MT_PT, &blob, 1);
+    if (code)
+       return FALSE;
+
+    return TRUE;
+}
+
+BOOL GetMountPoint(const char * dir, const char * entry, char * dest, int len)
+{
+    struct ViceIoctl blob;
+    char space[2048];
+    int code;
+
+    blob.in_size = strlen(entry);
+    blob.in = entry;
+    blob.out_size = sizeof(space);
+    blob.out = space;
+
+    memset(space, 0, sizeof(space));
+
+    code = pioctl(dir, VIOC_AFS_STAT_MT_PT, &blob, 1);
+    if (code)
+       return FALSE;
+
+    strncpy(dest, space, len);
+    dest[len-1] = '\0';
+    return TRUE;
+}
+
+BOOL IsOnline(const char *strPath)
+{
+    struct ViceIoctl blob;
+    char space[2048];
+    struct VolumeStatus *status;
+    int code;
+
+    blob.in_size = 0;
+    blob.out_size = sizeof(space);
+    blob.out = space;
+
+    code = pioctl(strPath, VIOCGETVOLSTAT, &blob, 1);
+    if (code)
+        return FALSE;
+
+    status = (VolumeStatus *)space;
+
+    if (!status->Online ||
+        !status->InService ||
+        !status->Blessed ||
+        status->NeedsSalvage)
+       return FALSE;
+
+    return TRUE;
+}
index bc92fc4..c5d4e1b 100644 (file)
@@ -167,3 +167,9 @@ List of unfunded projects:
   22. Add support for storing Windows ACLs on files
   23. Remove submount creation as a side effect of drive creation
   24. Finish conversion from string.h to strsafe.h for VS.NET 2005
+  25. Implement RX Statistics gathering interfaces and reporting tools
+      (necessary to obtain profiling data)
+  26. Implement RX Connection Pools in the Cache Manager allowing more than
+      four simultaneous requests to a single server to be processed at a time 
+      for a single user
+  
\ No newline at end of file