<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3333505129375354922</id><updated>2011-12-01T13:29:14.127-05:00</updated><category term='openafs'/><category term='openafs ifs afsredir windows8'/><category term='network identity manager version 2'/><category term='bugs'/><title type='text'>OpenAFS, Kerberos, and Network Identity Manager</title><subtitle type='html'>Random thoughts, updates and comments about OpenAFS, Kerberos for Windows, Network Identity Manager and related topics.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1446709662850861886</id><published>2011-10-02T11:38:00.002-04:00</published><updated>2011-10-02T11:38:31.741-04:00</updated><title type='text'>Heimdal: Now Playing on Windows Near You</title><content type='html'>Today, &lt;a href="http://article.gmane.org/gmane.comp.encryption.kerberos.heimdal.announce/24"&gt;Heimdal 1.5.1 was announced&lt;/a&gt; including support for Microsoft Windows.&amp;nbsp; Asanka Herath gave an &lt;a href="http://workshop.openafs.org/afsbpw10/thu_3_2.html"&gt;excellent presentation&lt;/a&gt; on the design plans at the &lt;a href="http://workshop.openafs.org/afsbpw10/"&gt;2010 AFS and Kerberos Best Practices Workshop&lt;/a&gt;.&amp;nbsp; The Heimdal port began in December 2008 in response to several motivations:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Several large Secure Endpoints clients were experiencing significant upgrade problems with MIT Kerberos for Windows due to backward compatibility problems between versions 2.6.x and 3.x.&amp;nbsp; The problems were due to what is affectionately known as &lt;a href="http://en.wikipedia.org/wiki/DLL_Hell"&gt;DLL Hell&lt;/a&gt;.&amp;nbsp; Applications built against old versions of KFW do not work with newer versions and vice versa because the list of function exports and the ordinal bindings changed.&amp;nbsp; To make matters worse, it isn't possible to have more than one version of KFW installed on a system at any given time.&amp;nbsp; This is because KFW libraries must be installed in a directory listed in the system PATH environment variable.&amp;nbsp; To address this problem Secure Endpoints issued a &lt;a href="http://www.secure-endpoints.com/kfw/proposal-kfw-assemblies.html"&gt;proposal to MIT&lt;/a&gt; in July 2008 that KFW be converted to use Windows &lt;a href="http://en.wikipedia.org/wiki/Side-by-side_assembly"&gt;Side-by-side Assemblies&lt;/a&gt;.&amp;nbsp; This proposal along with others to improve Network Identity Manager went over like a lead balloon at the &lt;a href="http://www.kerberos.org/"&gt;Kerberos Consortium&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Secure Endpoints began work on incorporating Hardware Secure Modules such as &lt;a href="http://www.thales-esecurity.com/en/Products/Hardware%20Security%20Modules.aspx"&gt;Thales' nShield&lt;/a&gt; into a &lt;a href="http://www.secure-endpoints.com/kca/kca_service.html"&gt;Kerberized Certificate Authority&lt;/a&gt; that could be approved of by &lt;a href="http://www.tagpma.org/"&gt;The Americas Grid Policy Management Authority&lt;/a&gt;.&amp;nbsp; TAGPMA requires that all certificate authorities store their keys in hardware.&amp;nbsp; This naturally led us to wonder if we could do the same for a Kerberos &lt;a href="http://en.wikipedia.org/wiki/Key_distribution_center"&gt;Key Distribution Center (KDC)&lt;/a&gt;.&amp;nbsp; Heimdal already supported the &lt;a href="http://www.openssl.org/docs/crypto/crypto.html"&gt;OpenSSL crypto library &lt;/a&gt;which could be used with the nShield HSM.&amp;nbsp; Asanka presented &lt;a href="http://workshop.openafs.org/afsbpw09/wed_3_3.html"&gt;our ideas&lt;/a&gt; at the &lt;a href="http://workshop.openafs.org/afsbpw09"&gt;2009 AFS and Kerberos BPW&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Finally, OpenAFS needed a number of changes to Kerberos and GSS-API in order to be able to implement the rxgk security class.&amp;nbsp; There have been numerous presentations on the need for rxgk over the years. Lov&lt;span id="goog_177820618"&gt;&lt;/span&gt;&lt;span id="goog_177820619"&gt;&lt;/span&gt;e gave a talk in &lt;a href="http://workshop.openafs.org/afsbpw07/talks/lha.pdf"&gt;2007&lt;/a&gt;, Simon gave one in &lt;a href="http://workshop.openafs.org/afsbpw10/fri_1_1.html"&gt;2010&lt;/a&gt;, and another in 2011.&amp;nbsp; In fact, the rxgk work began back in 2004 at an AFS hackathon in Sweden.&amp;nbsp; Implementing rxgk requires that all supported platforms provide a &lt;a href="http://tools.ietf.org/html/rfc3961"&gt;Kerberos Crypto Framework (RFC 3961)&lt;/a&gt; and the &lt;a href="http://tools.ietf.org/html/rfc4401"&gt;GSS Pseudo-Random Function (RFC 4401)&lt;/a&gt;.&amp;nbsp; MIT Kerberos doesn't export a 3961 compatible crypto framework in any version and with the failure to put any resources behind the Windows product there was no GSS PRF support.&amp;nbsp; The OpenAFS development community has found the Kerberos Consortium quite difficult to work with whereas Heimdal welcomed the proposed changes with open arms.&amp;nbsp; Heimdal redesigned their repository layout to make it possible for OpenAFS to import core functionality such as the cross-platform compatibility library libroken, the hcrypto library, and the rfc3961 framework.&amp;nbsp; This in turn permits OpenAFS developers to focus on building a best of breed distributed file system and avoid the need to build and support a Kerberos v5 and GSS-API implementation.&amp;nbsp; Heimdal is more than just a Kerberos implementation which will permit OpenAFS to more easily support non-Kerberos authentication mechanisms once rxgk is deployed.&lt;/li&gt;&lt;/ol&gt;The Secure Endpoints distribution of Heimdal is more than just a port to Microsoft Windows.&amp;nbsp; In order to properly address the needs of existing KFW users and developers, the Heimdal distribution includes a set of KFW 3.x compatible DLLs that act as a shim layer that converts requests issued using the MIT API and forwards them to the Heimdal assembly for processing.&lt;br /&gt;&lt;br /&gt;For developers, Secure Endpoints is now distributing a &lt;a href="https://github.com/secure-endpoints/heimdal-krbcompat"&gt;Kerberos Compatibility SDK&lt;/a&gt; that will permit applications to be developed which can work seamlessly regardless of whether Heimdal or MIT Kerberos in installed on the system.&amp;nbsp; OpenAFS and all future Secure Endpoints applications such as Network Identity Manager and the Kerberized Certificate Authority will be built against this SDK.&amp;nbsp; Applications built against the SDK first search for a compatible Heimdal assembly.&amp;nbsp; If an assembly is not installed on the system, KFW DLLs are searched for in the PATH and manually loaded.&lt;br /&gt;&lt;br /&gt;One important difference between Heimdal and KFW related to how credential caches and keytabs are implemented.&amp;nbsp; Instead of compiling all supported cache and keytab types into the Heimdal libraries, Heimdal loads credential caches and keytabs as registered plug-ins.&amp;nbsp; This permits weak cache and keytab implementations to be removed on systems where they shouldn't be supported and permits new implementations to be developed independently of the Heimdal distributions.&amp;nbsp; This functionality is going to become very useful for OpenAFS users on Microsoft Windows now that OpenAFS 1.7.x includes &lt;a href="http://docs.openafs.org/ReleaseNotesWindows/ch03s54.html"&gt;native authentication groups&lt;/a&gt;.&amp;nbsp; For the first time it will be possible to develop secure Kerberos credentials cache and keytab implementations whose contents become accessible to processes that are impersonating other processes something that has only been possible with the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa377942%28v=vs.85%29.aspx"&gt;Microsoft Kerberos SSP&lt;/a&gt; up to this point.&lt;br /&gt;&lt;br /&gt;All in all, the release of Heimdal for Microsoft Windows is an important step forward.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1446709662850861886?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1446709662850861886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1446709662850861886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1446709662850861886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1446709662850861886'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2011/10/heimdal-now-playing-on-windows-near-you.html' title='Heimdal: Now Playing on Windows Near You'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-7557046917240954538</id><published>2011-09-18T03:03:00.000-04:00</published><updated>2011-09-18T03:04:01.438-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openafs ifs afsredir windows8'/><title type='text'>The OpenAFS IFS Edition is Finally Here</title><content type='html'>I first proposed the idea of a native redirector based OpenAFS client at the 2004 AFS Best Practice Workshop held at SLAC in March 2004 as part of my &lt;a href="http://www-conf.slac.stanford.edu/AFSBestPractices/Slides/jeffaltman.pdf"&gt;Future Directions for th AFS Client on Windows&lt;/a&gt; talk.&amp;nbsp;&amp;nbsp; The talk was my first public assessment of the OpenAFS client for Microsoft Windows.&amp;nbsp; In fact it was my first presentation as an OpenAFS gatekeeper having only been working with the code base for four months.&amp;nbsp; In that time a large amount of low hanging fruit was picked but there was so much more to be done.&amp;nbsp; I wonder how many of the attendees actually believed that even half of the known issues would be resolved in the years to come let alone an installable file system driver.&amp;nbsp; Prior to 1.3.60 it wasn't even possible to deploy OpenAFS clients on Microsoft Windows with a uniform name space.&amp;nbsp; Instead of accessing resources via the \\AFS\cellname UNC path, all paths were accessed via \\%HOSTNAME%-AFS\ALL\cellname where %HOSTNAME% was the local machines Netbios name.&lt;br /&gt;&lt;br /&gt;By September 2004, CITI at the University of Michigan agreed to fund a graduate student, Eric Williams, to develop an IFS interface for the OpenAFS cache manager.&amp;nbsp; Eric's implementation was delivered during the Summer of 2005.&amp;nbsp;&amp;nbsp; The &lt;a href="http://git.openafs.org/?p=openafs.git;a=commit;h=3cc3cedba03827ba3796740a40f2f75bba85a44e"&gt;first code&lt;/a&gt; dropped in mid-June and the &lt;a href="http://git.openafs.org/?p=openafs.git;a=commit;h=fc0ca363da52144628a35abae30315257bbf76a8"&gt;final code&lt;/a&gt; dropped in early August.&amp;nbsp; Eric's implementation was built using Microsoft's IFS Kit and implemented a mini-redirector interface.&amp;nbsp; It provided support for anonymous \\AFS access without the use of a loopback adapter but did so by mimicking the SMB message flows.&amp;nbsp; Eric was able to demonstrate 5x performance improvements over the SMB interface.&amp;nbsp; At the end of the Summer Eric moved onto other obligations and work on the redirector interface stalled.&lt;br /&gt;&lt;br /&gt;On August 28, 2006, I was introduced to Peter Scott of &lt;a href="http://www.kerneldrivers.com/"&gt;Kernel Drivers&lt;/a&gt;.&amp;nbsp; Peter is a Microsoft MVP and a world renowned Windows kernel specialist with a passion for file systems.&amp;nbsp; Peter volunteered to review the goals I had laid out for the OpenAFS client and the code that Eric Williams had developed. &amp;nbsp; Three major issues were identified during the review.&amp;nbsp; First, OpenAFS is a caching file system and the method used to deliver data to satisfy paging requests made it impossible to guarantee that data cached by Windows would be purged in response to a data version change produced by another machine.&amp;nbsp; Second, the mini-redirector interface underwent a significant change with the introduction of Microsoft Vista and maintaining a common code base across XP, Vista and beyond would have been impossible.&amp;nbsp; Third, the implemented functionality was sufficient to create, open, close, read from, write to, etc. but the OpenAFS client failed to support a large number of features required by Windows applications such as Unicode character sets, 64-bit file sizes, 64-bit kernels, the WNet API, volume information queries, security information queries, quotas, RPC services such as WRKSVC and SRVSVC, reparse points, and more.&lt;br /&gt;&lt;br /&gt;The long term goal for the OpenAFS client for Microsoft Windows was not simply a file system that did not rely on the Microsoft SMB redirector and a loopback adapter.&amp;nbsp; The goal was to produce a best in class file system that integrated AFS into the Microsoft Windows experience.&amp;nbsp; Peter and I concluded that we should start over and design an architecture that could support all of the functionality that I desired for OpenAFS and meet some very aggressive performance goals. &lt;br /&gt;&lt;br /&gt;Peter had developed a full redirector file system called KDFS which he used for the development of custom file systems for Kernel Drivers clients.&amp;nbsp; Peter agreed to license the code under a BSD style license to OpenAFS.&amp;nbsp; This permitted us to use KDFS as a starting point.&amp;nbsp; On April 21, 2007 we began coding.&lt;br /&gt;&lt;br /&gt;We designed an architecture that would not only permit use of a native redirector on Windows XP SP2 through current and future Windows releases but provide a low-risk transition strategy for individuals and organizations to use when migrating from SMB to redirector based interfaces.&amp;nbsp; One of the key decisions was to maintain both the SMB and IFS interfaces as peers and require that all application visible functionality be implemented in both.&amp;nbsp; This approach permitted all new functionality to be deployed to end users as updates to the existing 1.5 release series.&amp;nbsp; Major functional improvements that were shipped prior to the 1.7.1 included:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Unicode (UTF-8) encoded file names [1.5.50]&lt;/li&gt;&lt;li&gt;Interface independent Path Ioctl processing [1.5.50]&lt;/li&gt;&lt;li&gt;Pipe Service RPC emulation for wkssvc and srvsvc [1.5.62]&lt;/li&gt;&lt;/ul&gt;In addition, literally hundreds of bugs in the cache manager were uncovered and corrected as part of the isolation of the SMB server from the generic AFS cache management layer.&amp;nbsp; All of these improvements were released as the work was completed providing the end user community immediate benefits and a guarantee that when the IFS interface did ship the cache manager would be unchanged. &lt;br /&gt;&lt;br /&gt;The selected architecture permits a single afsd_service.exe to be used either in conjunction with an AFS Redirector driver (afsredir.sys) or with the AFS SMB Server that has been in use for the last fifteen years.&amp;nbsp; When the AFS Redirector driver is present and active on the system, the SMB Server is disabled.&amp;nbsp; If the driver is not active, the SMB Server is automatically started.&amp;nbsp; In addition to the afsredir.sys driver there is one other new component, the AFSRDFSProvider.dll which comes in both 64-bit and 32-bit flavors.&amp;nbsp; This Network Provider permits the Explorer Shell to browse\\AFS and its cells under the "Network" object as its own category "OpenAFS Network".&amp;nbsp; To switch back and forth between the SMB-mode and the AFS-Redirector-mode, all that needs to be done is to disable the AFSRedirector driver in the registry.&lt;br /&gt;&lt;br /&gt;In general the application behavior when using the AFS Redirector interface should be the same as the AFS SMB Server.&amp;nbsp; However, there are some differences:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The AFS Redirector interface publishes AFS mount points and symlinks as file system reparse points using a Microsoft assigned 	OpenAFS reparse tag.&amp;nbsp;	&lt;ul&gt;&lt;li&gt;Applications that are reparse point aware may no longer cross the 		reparse point without explicit direction.&lt;/li&gt;&lt;li&gt;Applications that are reparse point aware but not OpenAFS tag aware 		will not understand what to do with the reparse point data.&amp;nbsp; Ask 		vendors to contact &lt;a href="mailto:openafs-gatekeepers@openafs.org"&gt;		openafs-gatekeepers@openafs.org&lt;/a&gt; to learn how to make their 		applications OpenAFS aware.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Drive mappings to UNC paths that were made using the SMB interface will 	not be accessible via the AFS Redirector interface until they are removed 	and recreated.&amp;nbsp; This is because Windows assigns a drive mapping to a 	particular file system driver.&amp;nbsp; When the SMB interface was used, the network in use was "Microsoft Windows Network".&amp;nbsp; When the AFS Redirector interface is active, the network is "OpenAFS Network".&lt;/li&gt;&lt;li&gt;Drive mappings made with the SMB Redirector were not considered to be 	available when the target path could not be resolved due to either no 	network access or lack of appropriate authentication credentials.&amp;nbsp; The 	AFS Redirector does not disable a drive mapping due to lack of network access or necessary permissions.&lt;/li&gt;&lt;li&gt;The AFS Redirector does not require the presence of the Microsoft 	Loopback Adapter.&amp;nbsp; When the AFS Redirector is in use, the loopback 	adapter is ignored.&amp;nbsp; There are no delays in accessing the	\\AFS name space after a suspend or reboot.&lt;/li&gt;&lt;li&gt;Applications that report the speed of file copies will report the speed 	of writing to the Windows cache, not the time writing to the AFS file server.&amp;nbsp;&amp;nbsp; 	This is because the AFS Redirector does not require synchronous writes to 	the file server for each write by the application.&amp;nbsp; The behavior is 	closer to that of the Unix cache manager where data is written to the file 	server only when the Windows cache manager (not to be confused with the AFS 	cache manager on Windows) flushes dirty extents to the backing store.&lt;/li&gt;&lt;li&gt;Due to the existence of the new Network Provider DLL, it is extremely 	important that the 64-bit WOW MSI be installed on 64-bit systems.&amp;nbsp; 	Otherwise, 32-bit applications will not be able to open files in	\\AFS when using UNC paths.&lt;/li&gt;&lt;li&gt;There is no support for Offline Folders when using the AFS redirector interface.&amp;nbsp; This is because Offline Folders is a feature of the SMB redirector and not a generic capability layered above arbitrary network file systems. &lt;/li&gt;&lt;li&gt;Drive letter substitutions (SUBST D: \\UNC\path) to \\AFS paths will appear as a disconnected network file system when SMB is used but will be connected when the AFS redirector is active.&lt;/li&gt;&lt;li&gt;&amp;nbsp;When the \\AFS name space is viewed via the SMB redirector the directory pointed to by the share name is assumed to be the root directory of the entire name space regardless of how many AFS mount points are crossed.&amp;nbsp; When the AFS redirector is used, every AFS volume is recognized by Windows as a separate file system.&lt;/li&gt;&lt;/ul&gt;On the whole, the behavioral changes when switching from SMB to AFS redirector favor the new implementation.&amp;nbsp; This is especially true when the performance improvements are taken into account.&lt;br /&gt;&lt;br /&gt;There are a number of subtle design decisions that are worth discussing.&lt;br /&gt;&lt;br /&gt;One of the benefits of the SMB only OpenAFS service is that it ran entirely as a user-space service that could be stopped at any time, be replaced with new binaries, and restarted.&amp;nbsp; Microsoft Windows file system drivers once loaded cannot be unloaded.&amp;nbsp; In order to permit upgrades to the afsd_service.exe and kernel driver to be applied without a reboot Peter and I decided to implement the afsredir.sys driver as a framework only driver which in turn loads a kernel library driver, afsredirlib.sys that contains the vast majority of the AFS specific implementation details.&amp;nbsp; When the OpenAFS Service is stopped, the afsredirlib.sys library is unloaded by afsredir.sys and all operations on \\AFS file objects are suspended until the OpenAFS Service is restarted.&amp;nbsp; This permits upgrades to be performed on live systems with active applications.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-evR6pgfSDDs/TnWKmX2HHzI/AAAAAAAAACg/-KSKcIxe8sY/s1600/afsredir-arch.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="175" src="http://1.bp.blogspot.com/-evR6pgfSDDs/TnWKmX2HHzI/AAAAAAAAACg/-KSKcIxe8sY/s320/afsredir-arch.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The major benefit of AFS redirector architecture is an improvement in data throughput between the OpenAFS Service and the AFS redirector.&amp;nbsp; Both the service and the kernel driver share access to the memory mapped AFS cache file.&amp;nbsp; As a result, instead of sending data in-band within a FetchData or StoreData ioctl, the service and redirector simply exchange ownership over file extents within the cache.&amp;nbsp; This avoids a large number of data copies and reduces the cpu cost of each ioctl.&amp;nbsp; With this model in place reads from AFS cache of nearly 800MB/second have been observed.&amp;nbsp; This is approximately 12 times the best performance ever observed with the SMB interface.&lt;br /&gt;&lt;br /&gt;The AFS redirector has a sophisticated Authentication Group implementation.&amp;nbsp; For those that are unaware, the UNIX AFS client implements Process Authentication Groups (PAGs).&amp;nbsp; A PAG is a collection of processes that share a common set of network credentials.&amp;nbsp; A process inherits PAG membership from its parent process but can choose to remove itself from the PAG or create itself a unique PAG.&amp;nbsp; This permits different processes running as local root to execute with different sets of network credentials.&lt;br /&gt;&lt;br /&gt;For Microsoft Windows where a Thread object is just as prime as a Process object the Authentication Group model has been extended to permit processes to belong to more than one authentication group at a time.&amp;nbsp; Each process has one default authentication group active at a given time and each thread can select its own active group or use the process default group.&amp;nbsp; This approach permits applications such as IIS to create a unique authentication group for each remote identity and activate that authentication group for each thread handling a request on behalf of that identity.&amp;nbsp; When a new process is created it only inherits the one authentication group that was active.&lt;br /&gt;&lt;br /&gt;Authentication groups are tracked as part of the Windows DACL in the Process or Thread Token.&amp;nbsp; When a process or thread performs a Local Procedure Call to a background service these tokens permit the background service to impersonate the caller.&amp;nbsp; When impersonation is active, the background service inherits not only the Windows SID of the calling process but also the active authentication group.&amp;nbsp; This ensures that LPCs execute with exactly the AFS permissions of the calling process.&lt;br /&gt;&lt;br /&gt;Microsoft Windows supports multiple subsystems.&amp;nbsp; The most well known is the Win32 subsystem.&amp;nbsp; When NT was originally shipped there were also OS/2 and Posix subsystems.&amp;nbsp; On 64-bit Windows in addition to Win32 is the Wow64 subsystem which provides the 32-bit application compatibility layer.&amp;nbsp; The AFS redirector tracks which subsystem is in use and can use the active subsystem to select which @sys search list should be used.&amp;nbsp; A separate list is maintained for each subsystem.&lt;br /&gt;&lt;br /&gt;The first official OpenAFS.org release to include the new AFS redirector was 1.7.1 published on September 15, 2011.&amp;nbsp; Seven and a half years after the initial proposal and 1608 days after Peter and I began the current implementation.&amp;nbsp; The &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/COCOMO"&gt;Basic COCOMO&lt;/a&gt; model (with coeffcients a=2.4 and b=105) estimates the cost of implementing the AFS redirector and the changes to the OpenAFS Service at approximately US$1.2 million.&amp;nbsp; It can be honestly said that this project would never have been completed if it weren't for the fact that Peter Scott and I were willing to work unpaid for long stretches of time while we searched for additional funding to bring the project to completion.&lt;br /&gt;&lt;br /&gt;The release of 1.7.1 does not mean that the project is complete.&amp;nbsp; There are still many features that I want to see implemented.&amp;nbsp; Here is a partial list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The Windows File System Volume Query Quota Interface is not implemented. As a result, AFS quota information is not available to application processes or end users via Windows dialogs.&lt;/li&gt;&lt;li&gt;The Windows Volume Shadow Copy Service is not implemented. As a result, AFS backup volumes are not accessible via the Explorer Shell.&lt;/li&gt;&lt;li&gt;There is no support for storing DOS attributes such as&amp;nbsp; Hidden, System, or Archive.&lt;/li&gt;&lt;li&gt;There is no support for Alternate Data Streams as required by Windows User Account Control to store Zone Identity data.&lt;/li&gt;&lt;li&gt;There is no support for Extended Attributes.&lt;/li&gt;&lt;li&gt;There is no support for Access Based Enumeration.&lt;/li&gt;&lt;li&gt;There is no support for Windows Management Instrumentation.&lt;/li&gt;&lt;li&gt;There is no support for Distributed Link Tracking and Object Identifiers.&lt;/li&gt;&lt;li&gt;There is no support for storing Windows Access Control Lists. Only the AFS ACLs are enforced.&lt;/li&gt;&lt;li&gt;There is no support for offline folders or disconnected operations.&lt;/li&gt;&lt;li&gt;There is no Management Console for the OpenAFS Service &lt;/li&gt;&lt;/ul&gt;The funding for the AFS redirector came a handful of organizations.&amp;nbsp; Now that OpenAFS 1.7.1 is available I request that any organization that relies on the use of the OpenAFS client on Microsoft Windows contribute US$20 per copy to cover unfunded expenses and future development.&lt;br /&gt;&lt;br /&gt;To end on another positive note, the OpenAFS 1.7.1 release has been tested on the Microsoft Windows 8 Developer Preview and it runs flawlessly.&amp;nbsp; Now all we need&amp;nbsp; are some nice Metro applications to take advantage of \\AFS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-7557046917240954538?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/7557046917240954538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=7557046917240954538' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/7557046917240954538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/7557046917240954538'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2011/09/openafs-ifs-edition-is-finally-here.html' title='The OpenAFS IFS Edition is Finally Here'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-evR6pgfSDDs/TnWKmX2HHzI/AAAAAAAAACg/-KSKcIxe8sY/s72-c/afsredir-arch.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-935732912098505098</id><published>2009-09-06T22:23:00.003-04:00</published><updated>2009-09-07T00:20:44.946-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='openafs'/><title type='text'>When the impossible happens, reconsider the assumptions of what is possible</title><content type='html'>Ever since Secure Endpoints started receiving OpenAFS for Windows crash reports from Microsoft there have been a small number of reports each month in applications that load libafsauthent.dll (afscreds.exe, netidmgr.exe, ...) and others that perform afs pioctls.  It has been the rare case that a mindump has been available.  The dumps that have been provided have made no sense.  Its been clear that the stack or heap has been overwritten but other than that there has not been enough data to provide a clue where to start looking. &lt;br /&gt;&lt;br /&gt;Last week OpenAFS 1.5.62 was released.  It was an important release that fixed a long standing data corruption error.  Something I have been trying to find for more than a year.  Combine it with the support for WKSSVC and SRVSVC services providing vastly improved share name enumeration and Windows 7 compatibility and 1.5.62 was a release that I wanted everyone to upgrade to.  Unfortunately, the release proved to have two downsides that did not come out during testing.  First, Cygwin applications could not access /afs.  Second, roaming profiles in some environments failed to work.  The Cygwin compatibility problem was traced to the addition of (supposedly mandatory) extended responses to NTCreateAndX requests.  The roaming profiles issue was caused by previously unseen requests to open directories as "Directory::$DATA" instead of "Directory".&lt;br /&gt;&lt;br /&gt;Given the importance of the 1.5.62 release and the show stopper nature of the two issues that had been introduced with it, I spent a good portion of this Labor Day weekend testing it.  Lo and behold, during testing Network Identity Manager crashed in the Visual Studio 8 CRT memcpy().  The crash signature looked similar to many I have seen in the past but this time I had access to not just the stack trace but the entire memory image to examine in a live debugger.  Not surprisingly, the state of the process made no sense.  It was unclear if the stack had been damaged.  Could the data be real?  The memcpy() was attempting to read data out of a buffer populated by a pioctl().  The buffer size is 16KB.  The data that should have be returned should not have been more than a few hundred bytes.  Yet, the memcpy() was attempting to read beyond the end of the buffer.  Examining the contents of the buffer closely showed that the data in the buffer did not match the request.  Instead of the buffer containing a GetToken response it contained a WhichCell response.  Parse the string "Freelance.Local.Root" as if it were a marshalled token and all hell breaks loose.&lt;br /&gt;&lt;br /&gt;Two questions came to mind.  First, why is there no data validation of the data received via the pioctl()?  Second, how in the world did the wrong response end up being received in the first place?   The lack of data validation although completely wrong is not all that surprising.  This source code has not been modified since the original IBM contribution.  It wasn't causing any problems and therefore didn't attract attention.   The response confusion was surprising.&lt;br /&gt;&lt;br /&gt;The OpenAFS pioctl() interface on Microsoft Windows works by implementing a &lt;span style="font-weight: bold;"&gt;transceive&lt;/span&gt; (an atomic write request / read response) operation using CreateFile(), WriteFile(), ReadFile(), CloseFile().  The OpenAFS SMB server treats a NTCreateAndX operation on the magic file name "_._AFS_IOCTL_._" as the trigger to indicate that a pioctl() is being performed.  Each time the file is opened a new smb file identifier is allocated.  The caller writes the pioctl request to the file and then when the first read is issued, the requested operation is performed and the response data is queued up and sent in response.  The caller issues ReadFile calls until end of file is reached and then the file is closed.  Given this model, how is it that the response could possibly get confused?&lt;br /&gt;&lt;br /&gt;My first theory was that a bug in the OpenAFS SMB server was issuing the same file id to two requestors.  After close examination of the code it turns out that due to a thread safety issue there was a race that could result in that scenario.  After fixing the race, I attempted to prove that the race was the cause of the problem.  I kicked off five scripts executing a different pioctl operation 100,000 times.  The client side bug was obviously being triggered but there was no evidence that the race I discovered had anything to do with it.  Especially considering the fact that the problem continued to occur after the fix to prevent the race was installed.&lt;br /&gt;&lt;br /&gt;The next step was to examine the behavior of the five scripts using Sysinternal's Process Monitor while filtering on all access to paths beginning with "\\afs".  The output was quite revealing.  It showed that requests and their responses based solely upon the length of the response were mismatched.  Some ReadFile() operations failed with end of file errors on the first read.  &lt;br /&gt;&lt;br /&gt;At this point it was time to start examining the trace output of afsd_service.  What I discovered was that the smb_IoctlPrepareWrite() and smb_IoctlPrepareRead() functions were being called multiple times on the same smb file id.  The theory that the same pioctl instance was being used for requests from multiple processes proved to be correct.  The question remained, why was it happening?   Further examination of the trace output showed something even more curious.  A large number of NTCreateAndX calls were missing from the output.  I expected to see one NTCreateAndX operation for each pioctl request.  In fact, that was a basic assumption that the original author of the pioctl interface must have assumed was true.  Too bad for all of us that it isn't.&lt;br /&gt;&lt;br /&gt;As it turns out the Microsoft SMB redirector chooses to avoid multiple NTCreateAndX calls for a file if all of the active requests have the same security privileges and request the same access modes.  Instead, the SMB redirector manages the various open/close operations locally and only closes the file after it has been idle.  The CreateFile operations were issued with FILE_SHARE_READ|FILE_SHARE_WRITE share mode.  This permitted multiple apps to open the file simultaneously and perform writes and reads.  If two processes open the file and write a request before the first process reads its response, the first process will receive the response meant for the second process and the second process will receive an end of file error.   One solution is to remove the FILE_SHARE_WRITE in order to ensure that only one process can open the pioctl file at a time.&lt;br /&gt;&lt;br /&gt;It is now possible to run the five simultaneous pioctl performing scripts without a single error.  Even so, data validation checks have been added to libafsauthent.dll to prevent invalid input from crashing applications in the future.  I'm now looking forward to the 1.5.63 release and examining the Windows Error Reporting logs in a couple of months to confirm that the random crashes are no longer being reported.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-935732912098505098?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/935732912098505098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=935732912098505098' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/935732912098505098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/935732912098505098'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2009/09/when-impossible-happens-reconsider.html' title='When the impossible happens, reconsider the assumptions of what is possible'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-7163272068444579874</id><published>2009-02-23T14:17:00.004-05:00</published><updated>2009-02-23T14:53:59.088-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network identity manager version 2'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_r5qE1HPAWUo/SaL3zCh14KI/AAAAAAAAAAw/gjqt7qn4GCE/s1600-h/nim-v2-custom-icons.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 313px;" src="http://2.bp.blogspot.com/_r5qE1HPAWUo/SaL3zCh14KI/AAAAAAAAAAw/gjqt7qn4GCE/s320/nim-v2-custom-icons.png" alt="" id="BLOGGER_PHOTO_ID_5306075767220068514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Its been nearly two years since the release of Network Identity Manager 1.3 as part of MIT Kerberos for Windows.  Network Identity Manager is preparing to breakout on its own with version 2.0.&lt;br /&gt;&lt;br /&gt;With version 2.0 the door is opened for identities based upon authentication technologies other than Kerberos v5.  Whereas version 1.x is limited to providing a single sign-on experience when the initial authentication is performed with a Kerberos v5 principal name and password, version 2 permits KeyStore and Certificate initial authentication identities to be implemented.  A KeyStore authentication can be used to automatically obtain Kerberos v5 ticket granting tickets for multiple Kerberos v5 identities.  Each identity in turn can be used to obtain its own derived credentials such as AFS tokens, Kerberized Certificate Authority issued short lifetime X.509 client certificates, or various forms of web authentication credentials.  Certificate based identites might be used with Public Key Initial Authentication for Kerberos (PKINIT) or the Globus Global Security Infrastructure. &lt;br /&gt;&lt;br /&gt;Version 2 also improves the end user experience with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; a new identity creation wizard&lt;/li&gt;&lt;li&gt;progress dialogs&lt;/li&gt;&lt;li&gt;a streamlined and less error prone mechanism for obtaining new credentials&lt;/li&gt;&lt;li&gt;an updated credential display that is cleaner, less confusing, and more informative&lt;/li&gt;&lt;/ul&gt;For additional information on the upcoming Network Identity Manager version 2 see:&lt;br /&gt;   &lt;a href="http://www.secure-endpoints.com/netidmgr/roadmap.html"&gt;http://www.secure-endpoints.com/netidmgr/roadmap.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-7163272068444579874?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/7163272068444579874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=7163272068444579874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/7163272068444579874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/7163272068444579874'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2009/02/its-been-nearly-two-years-since-release.html' title=''/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_r5qE1HPAWUo/SaL3zCh14KI/AAAAAAAAAAw/gjqt7qn4GCE/s72-c/nim-v2-custom-icons.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-2660141032329301521</id><published>2008-08-02T17:38:00.000-04:00</published><updated>2008-10-08T20:43:57.741-04:00</updated><title type='text'>OpenAFS for Windows with Unicode is Available</title><content type='html'>A couple of weeks ago OpenAFS for Windows with Unicode path name support was released.&amp;nbsp; I thought this was going to be a big deal.&amp;nbsp; Due to the lack of Unicode support there were all sorts of problems for organizations that wanted to use roaming profiles and redirected folders.&amp;nbsp; Even more important is the fact that the vast majority of the world does not limit their writing to the characters represented in Windows OEM Code Pages 437 and 850.&amp;nbsp;&amp;nbsp; For years these individuals could not save their data into AFS using the language of their choice.&amp;nbsp;&amp;nbsp; &lt;br/&gt;&lt;br/&gt;Up to this point, 1.5.5x has had one of the slowest adoption rates of any OpenAFS for Windows release over the last five years.&amp;nbsp; Is this because it is Summer?&amp;nbsp; Is it because most users are Americans and they do not require Unicode?&amp;nbsp; Is it because everyone has given up on AFS?&amp;nbsp; I don't know. &lt;br/&gt;&lt;br/&gt;What I do know is that the Unicode version has been downloaded (in small numbers) by a broad range of top-level domains other than the United States including Malaysia, Russia, Canada, Germany, Taiwan, Brazil, Hong Kong, Poland, Yugoslavia, Croatia, Japan, and Indonesia.&amp;nbsp; Hopefully, users from these countries will write in to describe how Unicode support has made their lives easier.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="tags" id="tagsLocation"&gt;&lt;br/&gt;Tags:                           &lt;a rel="tag" target="_blank" href="http://technorati.com/tag/openafs+unicode"&gt;openafs unicode&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-2660141032329301521?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/2660141032329301521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=2660141032329301521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/2660141032329301521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/2660141032329301521'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2008/08/openafs-for-windows-with-unicode-is.html' title='OpenAFS for Windows with Unicode is Available'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-6749281681455278172</id><published>2008-05-14T12:21:00.000-04:00</published><updated>2008-10-08T20:43:57.741-04:00</updated><title type='text'>File System Internationalization sucks</title><content type='html'>Internationalization in file systems really sucks.&amp;nbsp; There are two perspectives in the world.&amp;nbsp; First, there are the POSIX proponents who believe that names are simply nul terminated octet sequences that have no meaning except to the application that created them.&amp;nbsp; Second, there are those who believe that names are should be portable between systems and therefore should all be encoded in a common character set.&amp;nbsp; Lets call these second group of folks the UNICODE camp.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;I fall into the UNICODE camp.&amp;nbsp; This is most likely a side effect of having spent nearly fifteen years of my life working on Kermit, an application and file transfer protocol designed specifically to move files (by name) between computer systems using different architectures and locales.&amp;nbsp; I learned very early on that if you followed the POSIX approach the end result when a file is copied from an EBCDIC system to an ASCII system or a Latin-1 system to a CP437 system is gibberish.&amp;nbsp; Not only for human beings but for the applications as well.&lt;br/&gt;&lt;br/&gt;A globally accessible file system such as AFS is in many regards similar to Kermit except that instead of copying files into a local file system from a remote system, the AFS client makes the entire remote file system accessible to the local machine.&amp;nbsp;&amp;nbsp;&amp;nbsp; The exact same character set conversion issues occur.&amp;nbsp; As long as all of the file names are in the same character set all is dandy and applications on one machine can access files created on another machine.&lt;br/&gt;&lt;br/&gt;But what happens when the character sets are different?&amp;nbsp; In that circumstance, the names become gibberish to humans and applications.&amp;nbsp; In a worst case scenario, the file name as stored in the directory cannot even be represented on the local machine because the file name contains illegal code points according to the rules of the local environment. &lt;br/&gt;&lt;br/&gt;This situation doesn't happen as frequently as it could because still most of the world is only storing US-ASCII or ISO-Latin-1 into the file system.&amp;nbsp; However, even with those restrictions there are still problems.&amp;nbsp; For example, the following characters are illegal on Windows systems&lt;br/&gt;&lt;br/&gt;&amp;nbsp; " / \ * ? &amp;lt; &amp;gt; | : &lt;br/&gt;&lt;br/&gt;It doesn't matter what the underlying file system is.&amp;nbsp; If those characters are in the name, the name is illegal.&amp;nbsp; Any name with those characters will not be included in the directory listing.&lt;br/&gt;This in turn means it is impossible to see the file, access the file, rename the file, delete the file, or delete the directory the file is located in.&amp;nbsp; File systems that include objects with such names must perform name translation in order for the Windows users or applications to be able to manipulate them.&lt;br/&gt;&lt;br/&gt;With the introduction of Unicode another set of complications are introduced.&amp;nbsp; Unicode provides for multiple semantically equivalent encodings of the same string based upon whether composed or decomposed sequences are used.&amp;nbsp; For historical reasons, MacOS X stores its file names using UTF-8 encoding of decomposed Unicode sequences, Microsoft Windows stores composed Unicode sequences, Linux also stores composed sequences, and all of the sequences for a given string can be different.&amp;nbsp; That means that a user who types the same string on all three platforms will obtain a different octet sequence for each platform.&amp;nbsp; So much for interoperability.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;The POSIX supporters make the claim that names must be treated as octet strings because the locale between two different processes on the same machine can be different.&amp;nbsp; All that tells me is that POSIX allows users to shoot themselves in the foot.&amp;nbsp; It doesn't mean it is right.&amp;nbsp; Of course, the POSIX folks do have a point.&amp;nbsp; If a UNIX system is incapable of communicating the character set that is being used to the file system, how is the file system supposed to do something sane with it to provide for interoperability between heterogeneous environments.&lt;br/&gt;&lt;br/&gt;Microsoft Windows has an advantage here in that there is a standard character set for the entire operating system and all file systems: Unicode.&amp;nbsp; As a result a file system client on Windows can at least ensure that Unicode names are normalized on output, that directory entry names are normalized for display and lookup, that all illegal characters are mapped to something legal, and ensure that all strings communicated with the file server are the original directory entry names and not the normalized names used locally.&amp;nbsp; This is the approach that will be taken as Unicode is added to the OpenAFS for Windows client.&lt;br/&gt;&lt;br/&gt; &lt;div class="tags" id="tagsLocation"&gt;&lt;br/&gt;Tags:                                                                                                                                                                               &lt;a rel="tag" target="_blank" href="http://technorati.com/tag/afs"&gt;afs&lt;/a&gt;, &lt;a rel="tag" target="_blank" href="http://technorati.com/tag/unicode"&gt;unicode&lt;/a&gt;, &lt;a rel="tag" target="_blank" href="http://technorati.com/tag/internationalization"&gt;internationalization&lt;/a&gt;, &lt;a rel="tag" target="_blank" href="http://technorati.com/tag/i18n"&gt;i18n&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-6749281681455278172?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/6749281681455278172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=6749281681455278172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/6749281681455278172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/6749281681455278172'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2008/05/file-system-internationalization-sucks.html' title='File System Internationalization sucks'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-5663395100218506041</id><published>2008-03-12T20:39:00.000-04:00</published><updated>2008-10-08T20:43:57.742-04:00</updated><title type='text'>OpenAFS joins Google Summer of Code 2008</title><content type='html'>Today OpenAFS submitted an application to take part in the 2008 Google Summer of Code.&amp;nbsp; OpenAFS project ideas are listed at &lt;a href="http://www.openafs.org/gsoc.html"&gt;http://www.openafs.org/gsoc.html&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Thanks to Asanka Herath, Matt Benjamin, Simon Wilkinson and Derrick Brashear for volunteering to be mentors to the next generation of OpenAFS developers.&lt;br/&gt;&lt;br/&gt;Update: Monday 17 March 2008, OpenAFS was accepted.&lt;br/&gt;&lt;br/&gt;&lt;div class="tags" id="tagsLocation"&gt;&lt;br/&gt;Tags:                                            &lt;a rel="tag" target="_blank" href="http://technorati.com/tag/openafs+google+summer+of+code+gsoc"&gt;openafs google summer of code gsoc&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-5663395100218506041?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/5663395100218506041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=5663395100218506041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/5663395100218506041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/5663395100218506041'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2008/03/openafs-joins-google-summer-of-code.html' title='OpenAFS joins Google Summer of Code 2008'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1385944031181642012</id><published>2008-03-04T22:59:00.000-05:00</published><updated>2008-10-08T20:43:57.742-04:00</updated><title type='text'>OpenAFS vs Norton Internet Security 2008</title><content type='html'>OpenAFS requires several rules to be set in order to work with Norton Internet Security 2008.&lt;br/&gt;&lt;br/&gt;1. Under "Personal Firewall-&amp;gt;Program Control" add a "Allow" rule for "C:\Program Files\OpenAFS\Client\Program\afsd_service.exe" &lt;br/&gt;2. Do the same for "fs.exe", "aklog.exe", and other command line utilities if so desired.&lt;br/&gt;3. Under "Personal-&amp;gt;Firewall-&amp;gt;Trust Control, Trusted tab", add a "Trusted" rule for "02-00-4C-4F-4F-50".&lt;br/&gt;4. Under the "Personal Filewall-&amp;gt;Advanced Settings" press the "Configure" button.&lt;br/&gt;5. Add a new rule:&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Allow", "Inbound", "Any computer", "Protocol: UDP", "Port 7001", and describe it as "AFS Callback Port".&amp;nbsp; Make it the first rule in the list.&lt;br/&gt;6. Add a new rule:&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Allow", "Outbound", "Any computer", "Protocol: UDP", "Port range: 7001-7008" and describe it as "AFS Server Ports".&amp;nbsp; Make it the second rule in the list.&lt;br/&gt;&lt;br/&gt;Finally, double check the configuration of the "Microsoft Loopback Adapter" labeled "AFS" in the Network Control Panel.&amp;nbsp;&amp;nbsp; Make sure that "TCP/IP is checked", that "Client for Microsoft Networking" is checked, and that "File and Printer Sharing" is not checked.&lt;br/&gt;&lt;br/&gt;You should now be able to access "\\afs\all" in the Explorer Shell.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1385944031181642012?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1385944031181642012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1385944031181642012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1385944031181642012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1385944031181642012'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2008/03/openafs-vs-norton-internet-security.html' title='OpenAFS vs Norton Internet Security 2008'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-3099413734790263612</id><published>2008-03-02T10:46:00.000-05:00</published><updated>2008-10-08T20:43:57.742-04:00</updated><title type='text'>I want my OpenAFS Windows client to be fast</title><content type='html'>There are a number of configuration knobs available to tune the OpenAFS for Windows client.&amp;nbsp; The most important related to throughput fall into two categories: &lt;br/&gt;&lt;br/&gt;&lt;u&gt;How much data can I cache?&lt;/u&gt;&lt;br/&gt;CacheSize&lt;br/&gt;Stats&lt;br/&gt;&lt;br/&gt;&lt;u&gt;How Fast Can I Read and Write?&lt;/u&gt;&lt;br/&gt;BlockSize&lt;br/&gt;ChunkSize&lt;br/&gt;EnableSMBAsyncStore&lt;br/&gt;SMBAsyncStoreSize&lt;br/&gt;RxMaxMTU&lt;br/&gt;SecurityLevel&lt;br/&gt;TraceOption&lt;br/&gt;&lt;br/&gt;All of these options are described in Appendix A of the &lt;a href="http://www.secure-endpoints.com/oafw/"&gt;Release Notes&lt;/a&gt;.&amp;nbsp; Here are the values I use:&lt;br/&gt;&lt;br/&gt;CacheSize = 60GB (64-bit)&amp;nbsp; 1GB (32-bit)&lt;br/&gt;Stats = 120,000 (64-bit)&amp;nbsp; 30,000 (32-bit)&lt;br/&gt;&lt;br/&gt;BlockSize = 4&lt;br/&gt;ChunkSize = 21 (2MB)&lt;br/&gt;EnableSMBAsyncStore = 1&lt;br/&gt;SMBAsyncStoreSize = 262144 (but would use 1MB if I didn't use cellular networks as often)&lt;br/&gt;RxMaxMTU = 9000&lt;br/&gt;SecurityLevel = 1 (when I need speed I use "fs setcrypt" to adjust on the fly)&lt;br/&gt;TraceOption = 0 (no logging)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-3099413734790263612?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/3099413734790263612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=3099413734790263612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/3099413734790263612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/3099413734790263612'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2008/03/i-want-my-openafs-windows-client-to-be.html' title='I want my OpenAFS Windows client to be fast'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-862339196111272326</id><published>2008-03-01T17:09:00.002-05:00</published><updated>2009-02-23T15:20:12.830-05:00</updated><title type='text'>Problems Discovered when Profiling the OpenAFS Windows client</title><content type='html'>I have spent the last month analyzing the performance of the &lt;a href="http://www.secure-endpoints.com/openafs-windows.html"&gt;OpenAFS for Windows&lt;/a&gt; cache manager using the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;Sysinternal's Process Monitor'&lt;/a&gt;s Profiling toolset.  The results were quite eye opening.  What I had believed was a highly parallelized code set instead was filled with bottlenecks that seriously hampered the ability to process data at high rates.  What follows are some of the most significant issues that were uncovered.  Some of the issues are specific to AFS, others are likely to be problems found in many other applications.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Reference Counts&lt;/u&gt;&lt;br /&gt;Each of the objects maintained by the cache manager (data buffers, vnodes, cells, smb file handles, directory searches, users, etc) are reference counted in order to determine when they should be garbage collected or can be recycled.  Reference counts must be incremented and decremented in a thread safe manner.  Otherwise races between the threads when they update the reference count will result in the count becoming inconsistent.  Objects will either be freed prematurely (undercounts) or never become available for recycling (overcount).  Reference counts were therefore protected by the same read/write locks that protect the hash tables used to find enumerate the objects.  The problem is that although a read lock can be used to safely traverse a hash table's link list, a write lock is required to safely update the reference count of the desired object once it is located.  As a result, only one thread can be searching for objects or releasing them at a time.&lt;br /&gt;&lt;br /&gt;If it were possible to adjust the reference count values in an atomic operation most of the hash table transactions that required write locks could use read locks instead.  As it turns out, Windows supports Interlocked increment and decrement operations for aligned 32-bit and 64-bit values.  By making use of the Interlocked operations reference counts are safely adjusted and parallel access hash table contents is permitted.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Network Reads&lt;/u&gt;&lt;br /&gt;The AFS servers support Rx hot threads.  As soon as a message is received by the listener thread, another thread is woken to listen for the next incoming message while the current thread becomes a worker to process the message.  The AFS clients did not support Rx hot threads and therefore could only process a single incoming message at a time.  By activating Rx hot threads in the AFS client the latency between received messages was significantly reduced.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Lock Churn&lt;/u&gt;&lt;br /&gt;Throughout many code paths the same lock or mutex would often be released and re-obtained.  Doing so increases the possibility that the current thread will be swapped out and an alternate thread activated.  These context switches between threads are expensive and increase the overall clock time required to respond to a request.  By refactoring the code it was possible to avoid many such transitions thereby improving overall performance.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Write-to-Read and Read-to-Write Lock Transitions&lt;/u&gt;&lt;br /&gt;Similar to the previous case, there are many situations in when it is desirable to either downgrade or upgrade a read-write lock.  Write-to-Read transitions are always safe to perform and can be done without forcing a context switch between threads in all cases.  Read-to-Write transitions can be done without a context switch whenever the requesting thread is the only reader.  Regardless of how often it is the case, a read-to-write transition will be cheaper than dropping the read lock and requesting a write-lock.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Equality comparisons must be cheap&lt;/u&gt;&lt;br /&gt;The function used to determine if two File Identifiers are the same is one of the most frequently called functions.  It is used every time a vnode or buffer must be located.  As a result it must be fast.  Instead of comparing each of the elements of a FID, the structure was extended with a hash value that can eliminate the vast majority of false matches with a single comparison.  In addition, the function was inlined to avoid the function call overhead.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Do Not Perform Unnecessary Work&lt;/u&gt;&lt;br /&gt;The AFS client has an extensive logging infrastructure which is disabled by default.  However, it turns out that although the actual logging was disabled a majority of the work that is required to construct the log messages continued to be performed.  This unnecessary work was a significant drain on resources and increased clock time for all operations.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Do Not Perform Unnecessary Work - Part II&lt;/u&gt;&lt;br /&gt;When copying a file on top of an existing file, the first operation that is performed is to truncate the file.  This results in the invalidation of all the cached data buffers associated with the file.  The actual truncation is not sent to the file server until the first write completes which is not attempted until the first chunk size of data is ready to be sent.  As a result, when the initial data buffers are being written to in the cache the cache manager believed that it must read their contents from the file server.  If the pre-fetch criteria are met, additional data buffers would be queued as well.  Performing these reads is useless work given the fact that the client will overwrite them or discard them once the truncation is sent to the file server.  The answer of course was to check for the outstanding truncation when getting data buffers.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Do Not Perform Unnecessary Work - Part III&lt;/u&gt;&lt;br /&gt;Acquiring mutexes and locks are expensive because they often result in the active thread giving up the rest of its allocated time slice and being forced to be rescheduled at a later time.  Therefore, if there are locks that are not required to perform the current operation, they should not be acquired.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Do Not Sleep if it is Not Required&lt;/u&gt;&lt;br /&gt;If the file server responds EAGAIN to an RPC, the cache manager will under most circumstances put the current thread to sleep and try again in a few seconds provided that the SMB redirector timeout limit has not been reached.  There are several operations for which retries are not permitted which include background writes, lock acquisition, etc.  Due to an architectural design flaw, the cache manager was putting threads to sleep even if retries were not permitted.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Setting Max MTU Size hurts&lt;br /&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;Back in 2003 it was discovered that the IPSec VPN products did a very poor job on interacting with AFS due to the reduction in the actual data payload in a UDP packet caused by the addition of the IPSec headers.   Due to an ever increasing number of complaints to Help Desks and to OpenAFS stating that AFS didn't work it was decided that the OpenAFS installation packages on Windows would ship with the RxMaxMTU value set to 1260.  At the time the performance of the cache manager was so bad that it was not possible to notice the difference.  Unfortunately, now that the cache manager is better performing, setting RxMaxMTU to 1260 can result in a reduction in StoreData throughput of 50%&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Avoid Modifying Objects Whenever Possible&lt;/u&gt;&lt;br /&gt;Every vnode and every data buffer object contains a version number.  Every time the vnode changes the file server increments the version number.  Doing so automatically invalidates the contents of all caches forcing the clients to re-read the data from the file server.  Reading from the file server is an expensive operation so we try to avoid it when we know that the current contents of the cache are already valid.  We know that to be true when the cache manager performed the most recent change to the vnode and the version delta is one.  Over the summer code was added that would bump the version number on all of the data buffers in this circumstance.  However, this had the side effect that writes became slower as the file got larger.  By maintaining a range of valid data versions instead of just the current data version, it is possible to maintain the benefits of the existing cached data at a cost that is independent of the file size.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Hash Algorithms Matter&lt;/u&gt;&lt;br /&gt;The lock package uses an array of critical section objects to protect the internals of the mutex and read/write locks.  Which critical section was used for which lock object was determined by hashing the memory address at which the lock was located.  Unfortunately, the distribution of the objects was poor and some critical sections were used much more frequently than others.  Worse was the fact that several highly used global locks shared the same critical sections.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-862339196111272326?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/862339196111272326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=862339196111272326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/862339196111272326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/862339196111272326'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2008/03/problems-discovered-when-profiling.html' title='Problems Discovered when Profiling the OpenAFS Windows client'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1654268175848018024</id><published>2007-09-26T09:44:00.000-04:00</published><updated>2008-10-08T20:43:57.743-04:00</updated><title type='text'>Windows Error Reporting versus Open Source Development</title><content type='html'>&lt;a href="http://https://winqual.microsoft.com/wer/"&gt;Windows Error Reporting&lt;/a&gt; is one of the greatest services that Microsoft has ever provided to developers of applications and device drivers for Microsoft Windows operating systems.&amp;nbsp; It provides a registered and verified software developer with access to crash report data that for that developer's applications.&lt;br/&gt;&lt;br/&gt;&lt;u&gt;How does it work?&lt;/u&gt;&lt;br/&gt;When an application terminates unexpectedly or a user terminates an application&amp;nbsp; due to a lack of responsiveness, Windows will capture a mini-dump of the application, the version information of all loaded modules, and the version information for the Windows operating system on which it is being run.&amp;nbsp; The user is then presented a dialog requesting permission to deliver this information to Microsoft.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;Registered application developers provide Microsoft with a mapping file that describes each binary in a product release including version info, link times, and other traits that can be used to uniquely identity the module.&amp;nbsp; When crash reports are received by Microsoft, the WER servers compare each report against the mapped modules.&amp;nbsp; When a match occurs, a WER event is generated and the application developer is notified.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;One of the really nice benefits of WER is that it can sort the events into buckets based upon the type of crash, hang, and process state at the time of the crash.&amp;nbsp; If the same type of crash occurs 50 times, all of the matching events will be placed into the same event bucket.&amp;nbsp; Application developers can easily compare the state of all of the crash reports to assist in tracking down the cause.&lt;br/&gt;&lt;br/&gt;When a fix is available, the application developer can register a response which will be delivered to subsequent users that experience the same type of crash with the same version of the module or application.&amp;nbsp; These responses can indicate that the software is not supported on the OS version that it is installed on, or that a new version is available, or that a workaround can be found be reading a provided web page.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;This mechanism benefits both the developers and the end users because as soon as a bug is found it can be fixed without requiring that the end users go through a long process of reporting a crash to the developers directly and being unable to provide enough technical detail for the developers to fix it.&amp;nbsp; Once the fix is available, end users are automatically notified.&amp;nbsp; Less frustration for end users and for developers.&amp;nbsp; Everyone wins.&lt;br/&gt;&lt;br/&gt;Unless you are an open source developer or end user....&lt;br/&gt;&lt;u&gt;&lt;br/&gt;What is the problem with Open Source?&lt;/u&gt;&lt;br/&gt;Secure Endpoints is an open source vendor.&amp;nbsp; We distribute pre-built installers for Kerberos for Windows and OpenAFS for Windows.&amp;nbsp; For each of these distributions we have binaries and matching symbol data.&amp;nbsp; When a crash report arrives from WER, the mini-dump is loaded into a debugger along with the matching binaries and symbol data.&amp;nbsp; Without the binaries or the symbols, the mini-dump information is much less useful before the stack addresses cannot be matched up with specific functions in the application modules.&lt;br/&gt;As long as the version of the application that is installed is the one Secure Endpoints built, we can make use of the crash reports to identify problems, fix them and notify end users via the WER response mechanism.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;What happens when an organization decides to build the product from the published source code instead of using the pre-built binaries?&amp;nbsp; In that case, WER matches the module names and file version information and places an event into a crash bucket.&amp;nbsp; Secure Endpoints downloads the crash report, loads it into the debugger only to find that we have neither matching binaries nor matching symbols.&amp;nbsp; The end result is that the WER report is useless.&amp;nbsp; The best I can do is file a response to the end user recommending the use of the pre-built binaries.&lt;br/&gt;&lt;br/&gt;I can certainly understand why organizations wish to build their own binaries.&amp;nbsp; In most cases its because they want to be able to debug problems they experience in-house.&amp;nbsp; For that they need matching symbols files.&amp;nbsp; This is exactly the reason why both the Kerberos for Windows and OpenAFS for Windows distributions include the symbol files from the official build.&amp;nbsp; This way organizations have all the necessary pieces: binaries, symbols files and source code.&amp;nbsp; Organizations that identify problems internally should file bug reports to the open source maintainers so that fixes can be developed and incorporated into future releases.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="tags" id="tagsLocation"&gt;&lt;br/&gt;Tags:                                                                                                                                    &lt;a rel="tag" target="_blank" href="http://technorati.com/tag/WER+openafs+oafw+kfw+windows+error+reporting"&gt;WER openafs oafw kfw windows error reporting&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1654268175848018024?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1654268175848018024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1654268175848018024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1654268175848018024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1654268175848018024'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2007/09/windows-error-reporting-versus-open.html' title='Windows Error Reporting versus Open Source Development'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-8828900243663232613</id><published>2007-02-24T10:21:00.001-05:00</published><updated>2009-02-23T15:21:37.685-05:00</updated><title type='text'>Squeaky wheels receive attention (both good and bad)</title><content type='html'>I spent the past few weeks traveling the country meeting with organizations that use OpenAFS and Kerberos for Windows.&amp;nbsp; I heard a number of really wonderful things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"We haven't had a show stopper event in more than a year"&lt;/li&gt;&lt;li&gt;"The performance is so much better than it used to be.&amp;nbsp; We no longer receive complaints about how slow it is instead our users send us messages like this one, 'OH My gosh, afs is so fast now since i got my upgrade :)'"&lt;/li&gt;&lt;/ul&gt;At the same time the amount of funding spent on support and new development has been decreasing.&amp;nbsp; Budgets are always tight and management wants to spend its money on addressing the issues that cause on-going problems.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Just a couple of years ago, the OpenAFS Windows client was so bad that not only were organizations sending money but individuals would send personal paypal payments and bottles of tequila as a "thank you for improving my life".&amp;nbsp;&amp;nbsp; These days expectations have changed.&amp;nbsp; The assumption is that the OpenAFS Windows client just works.&lt;br /&gt;&lt;br /&gt;In the 1.5.15 release of OpenAFS for Windows, a serious data corruption bug was fixed.&amp;nbsp; As it turns out this bug had been reported to IBM within the last year by an organization that was still using the IBM AFS Windows client.&amp;nbsp; When the organization switched to OpenAFS it never occurred to them that OpenAFS would have the same problem given their common heritage.&amp;nbsp; OpenAFS is so much better in so many ways that they "just assumed it had already been fixed."&lt;br /&gt;&lt;br /&gt;The truth is that all of the low hanging fruit has already been picked.&amp;nbsp; Its not that there is no more work to be done but that all of the remaining work is big.&amp;nbsp; So big in fact that it cannot be paid for out of support budgets.&amp;nbsp; Instead strategic planning funds must be used and those are much harder to come by especially when the scope of the projects is in developer years and hundreds of thousands of U.S. dollars.&amp;nbsp; Its no longer possible for someone to ask "how much would it cost to fix xyz?" and receive a response indicating that the work could be done in a few hours or a day or two.&lt;br /&gt;&lt;br /&gt;Instead, much of the longer term strategic work that was done to support the Windows Vista platform was unsupported.&amp;nbsp; Secure Endpoints contributed hundreds of hours of developer time to ensure that there would be an OpenAFS client for the new operating system.&amp;nbsp; This was done on the assumption that the costs would be re-couped in the future through interest in support contracts.&amp;nbsp; What a surprise it was to hear this week that existing support contract customers are questioning the need for the support.&amp;nbsp; The long hours spent improving the product have taken OpenAFS off the radar of senior management and as a result the funding is disappearing.&lt;br /&gt;&lt;br /&gt;One large user described how there have been so few reported issues with the 1.4.2 client that he can't justify upgrading to 1.5.15 even though he is aware of all of the significant improvements in performance and stability.&amp;nbsp; Performance improvements just aren't a reason to upgrade when there are thousands of clients involved.&amp;nbsp; Stability doesn't matter if the end users are not being adversely affected.&amp;nbsp;&amp;nbsp; Sure there are bugs and annoyances but the help desk knows how to address them and the users move on with life.&amp;nbsp;&amp;nbsp; Management simply is not going to spend money on something that is faster or prettier.&amp;nbsp; If there isn't a critical show stopper issue, it won't be detected by their radar.&lt;br /&gt;&lt;br /&gt;Our philosophy is that software is built to address the needs of its users with the goal of making their lives happier and more productive.&amp;nbsp; Good software doesn't attract unwanted attention.&amp;nbsp; In the case of a file system or other infrastructure, the end user should be able to take it for granted.&amp;nbsp; If it receives attention from the user, that is a bad thing.&lt;br /&gt;&lt;br /&gt;A good support contract vendor is one that addresses issues promptly when they occur, but more importantly works to ensure that you do not have issues in the first place.&amp;nbsp; The question is, if support dollars are used to fund development that pro actively addresses issues before they are noticed by the customer, how does the customer know that the support dollars were well spent?&amp;nbsp; This is especially true when management does not believe that incremental improvements in performance and stability are worth paying for.&lt;br /&gt;&lt;br /&gt;I am now beginning to understand the behaviors of large corporations providing support to Federal agencies.&amp;nbsp; I find them extremely frustrating to deal with because the apparent goal is to deploy software with just the right amount of bugs such that there are never issues that bring the entire system to a halt but that ensure that there is a constant stream of small issues that will keep them on the phone with the agency's help desk.&amp;nbsp; Every week a report is sent to the customer detailing the number of issues categorized by severity and whether or not the user's problem could be addressed.&amp;nbsp; Large numbers of low severity issues is encouraged whereas even a single Priority One issue is to be avoided.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Fortunately for the clients of Secure Endpoints Inc, I believe that our role is to help prevent problems regardless of the severity.&amp;nbsp; Unfortunately, it is then harder to make the case for additional financial investment in products that are already deemed to be "good enough".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-8828900243663232613?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/8828900243663232613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=8828900243663232613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8828900243663232613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8828900243663232613'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2007/02/squeaky-wheels-receive-attention-both.html' title='Squeaky wheels receive attention (both good and bad)'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-8351003630799556721</id><published>2007-01-08T12:19:00.000-05:00</published><updated>2008-10-08T20:43:57.744-04:00</updated><title type='text'>Happy New Year!</title><content type='html'>It has been many months since this blog has been updated and many wonderful things occurred during the final three months of 2006.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;On the Kerberos front:&lt;br/&gt;&lt;br/&gt;On Nov 9th, MIT announced that they want to provide a full-time developer to support Windows development.&amp;nbsp; As a result, Secure Endpoints Inc. has become a development and support partner.&amp;nbsp; Secure Endpoints Inc. will continue to enhance Kerberos for Windows and Network Identity Manager as well as issue new releases in conjunction with MIT's Kerberos team.&amp;nbsp; The primary change is that MIT will no longer be funding Secure Endpoints' efforts.&amp;nbsp; As a result, Secure Endpoints is reaching out to the broader Kerberos for Windows user community to help support on-going development.&amp;nbsp; &lt;br/&gt;&lt;a target="_top" href="http://www.secure-endpoints.com/kfw/New%20Direction%20for%20Kerberos%20for%20Windows.eml"&gt;http://www.secure-endpoints.com/kfw/New%20Direction%20for%20Kerberos%20for%20Windows.eml&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;On Nov 30th, MIT Kerberos for Windows 3.1 including Network Identity Manager 1.1.8 was finally released. &lt;a target="_top" href="http://www.secure-endpoints.com/kfw/Kerberos%20for%20Windows%20version%203.1%20is%20released.eml"&gt;http://www.secure-endpoints.com/kfw/Kerberos%20for%20Windows%20version%203.1%20is%20released.eml&lt;/a&gt;&lt;br/&gt;Although Network Identity Manager has not changed much on the outside since the KFW 3.0 release, on the inside the changes were dramatic.&amp;nbsp; A large number of usability issues were addressed and the plug-in interface was improved to support a wider range of functionlity.&amp;nbsp;&amp;nbsp; KFW 3.1 can be downloaded from MIT: &lt;a target="_top" href="http://web.mit.edu/kerberos/dist/index.html#kfw-3.1"&gt;http://web.mit.edu/kerberos/dist/index.html#kfw-3.1&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Development on KFW 3.2 and NIM 1.2 is underway.&amp;nbsp; Secure Endpoints has posted a development road map including 64-bit Windows support, Vista support, and a wide range ofenhancements to the Network Identity Manager user interface.&amp;nbsp; Financial support from the community is required to sustain the on-going improvements that KFW has received over the last several years.&lt;br/&gt;&lt;a target="_top" href="http://www.secure-endpoints.com/netidmgr/roadmap.html"&gt;http://www.secure-endpoints.com/netidmgr/roadmap.html&lt;/a&gt; &lt;br/&gt;&lt;br/&gt;For OpenAFS for Windows, 2006 was a banner year.&amp;nbsp; It started off with the 1.4.1 release candidates and ended with the release of 1.5.13.&amp;nbsp; Throughout those releasesthere were more than 150 improvements to the product.&amp;nbsp; The most important changes include:&lt;br/&gt;* No more resource leaks within the SMB Server&lt;br/&gt;* Locally managed byte range locks backed by full file locks on the file server&lt;br/&gt;* Improved performance when disconnected from the network&lt;br/&gt;* Improved performance for directory listing&lt;br/&gt;* Improved performance when storing temporary files within AFS&lt;br/&gt;* Improved power management event handling&lt;br/&gt;* Support for file sizes greater than 2GB&lt;br/&gt;* Over quota and disk full errors are now reported&lt;br/&gt;* Significantly improved handling of dirty buffers results in decreased cpu utilization and faster writes&lt;br/&gt;* A Network Identity Manager AFS credential plug-in is provided&lt;br/&gt;* Support for 64-bit Windows&lt;br/&gt;* Support for Microsoft Vista&lt;br/&gt;A summary of the current state of OpenAFS for Windows can be found at &lt;a target="_top" href="http://www.secure-endpoints.com/openafs-windows.html"&gt;http://www.secure-endpoints.com/openafs-windows.html&lt;/a&gt; as well as the most recent Status Report &lt;a target="_top" href="http://www.secure-endpoints.com/talks/OpenAFS-Windows-Dec-2006-Status-Report.pdf"&gt;http://www.secure-endpoints.com/talks/OpenAFS-Windows-Dec-2006-Status-Report.pdf&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Secure Endpoints has published a development road map for OpenAFS for Windows which includes a number of performance improvements to the AFS Client Service as well as a complete set of re-writes of the Explorer Shell integration, the OpenAFS Control Panel, and the development of a Microsoft Management Console for configuring the AFS Client Service.&amp;nbsp; &lt;a target="_top" href="http://www.secure-endpoints.com/openafs-windows-roadmap.html"&gt;http://www.secure-endpoints.com/openafs-windows-roadmap.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Finally, perhaps the best surprise for last.&amp;nbsp; Just before the end of the year the AFS Servers (file, protection, volume, volume database, bos) were made functional once again.&amp;nbsp; The install wizard has been removed because it made assumptions that no longer hold true, but by manually installing the servers as is done on UNIX, it is now possible to run a cell from a Windows Server.&amp;nbsp; See the road map for a summary of what still remains to be done.&lt;br/&gt;&lt;a target="_top" href="http://www.secure-endpoints.com/openafs-windows-roadmap.html#afs%20servers"&gt;http://www.secure-endpoints.com/openafs-windows-roadmap.html#afs%20servers&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;In 2007, there is much to look forward to.&amp;nbsp; During the first quarter Secure Endpoints will release a new Network Identity Manager plug-in for obtaining KX509/KCA certificates; and with community support there will be significant releases of both KFW and OpenAFS.&amp;nbsp; &lt;br/&gt;&lt;br/&gt;Mark on your calendar that the next AFS &amp;amp; Kerberos Best Practice Workshop will be held at Stanford during the week of May 7 to 11.&amp;nbsp; As always full day tutorials will be provided on AFS and Kerberos installation, administration, and maintenance.&amp;nbsp; This year Secure Endpoints will be providing the Kerberos tutorial.&amp;nbsp; New this year will be discussion of Kerberos and GSS-API programming practices.&lt;br/&gt;&lt;br/&gt;Here's a toast to the accomplishments of 2006 and those that are to come in 2007.&amp;nbsp; &lt;br/&gt;Happy New Year!!!!&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-8351003630799556721?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/8351003630799556721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=8351003630799556721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8351003630799556721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8351003630799556721'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2007/01/happy-new-year.html' title='Happy New Year!'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-7347151876105634003</id><published>2006-10-18T09:09:00.001-04:00</published><updated>2009-02-23T15:23:18.564-05:00</updated><title type='text'>The need to avoid release labeling and choice for end users</title><content type='html'>Developers have a tendancy to focus on source code management.  We maintain source code repositories to help us manage the development process.  Within the repository we construct release branches.  Each branch allows a set of sources to be shaped for a specific purpose.  Typical branching strategies include separate branches for the maintenance of a public release, for development of the next release, and experimental branches for risky development that might not work out or may have an adverse impact on other developers.   Developers often give somewhat arbitrary names to these branches "stable", "unstable", "maintenance", "development", "project foo", etc. that only have meaning to the developers.&lt;br /&gt;&lt;br /&gt;As is often the case, the names assigned to the branches have no relationship with the quality of the code on a particular branch.  This is especially true for a software project which supports large numbers of operating system platforms.  Given the rate of development it may often be true that different branches might be a better choice than others for a given platform.&lt;br /&gt;&lt;br /&gt;OpenAFS has traditionally labeled its branches as "stable" and "unstable".&amp;nbsp;&amp;nbsp; The even numbered branches are "stable" and the odd numbered branches are "unstable".&amp;nbsp; This has resulted in significant amounts of confusion and frustration for end users.&amp;nbsp; At any given time end users have been presented with up to three current releases:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the last &lt;i&gt;final&lt;/i&gt; release off of the "stable" branch&lt;/li&gt;&lt;li&gt;the most recent &lt;i&gt;test&lt;/i&gt; release off of the "stable" branch&lt;/li&gt;&lt;li&gt;the most recent release off of the "unstable" or "development" branch&lt;/li&gt;&lt;/ul&gt;What's an end user to do?&amp;nbsp; More importantly, what's an administrator responsible for choosing the release to distribute throughout their organization to do?&lt;br /&gt;&lt;br /&gt;When presented with the choice of selecting among "stable", "beta", or "unstable" which do you think the majority of individuals will choose?&amp;nbsp; End users don't want to install software that is going to cause them to lose data and they don't want to be guinea pigs so more often than not they are going to choose the "stable" release.&amp;nbsp; Even if this release has a list of known bugs a milelong and is years old.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The distinction between the various source code branches is of meaning only to the developers.&amp;nbsp; End users do not think of software as source code.&amp;nbsp; They think of it as a product and the labels associated with different versions of a product will signfiicantly influence the end user's decisions especially when faced with complex choices they are not qualified distinguish between.&amp;nbsp; It is unrealistic to assume that an end user is going to understand the importance of file locking or the meaning of a 64-bit file size or the terminology surrounding deadlocks and reference count leaks.&amp;nbsp; When a typical end user is presented with a choice among two or three complex options without a strong recommendation specifying which should be used, simplistic labels such as "unstable", "stable", "final", "development", "test", "beta", "candidate", etc. are much more influential than they are intended to be.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The reputation of OpenAFS on the Microsoft Windows and MacOS X platforms is suffering in part because of the choices given to end users and the terminology used to describe them.&amp;nbsp; End users want something that works.&amp;nbsp; They want to visit a web site and see that version X.Y.Z is the best version available for their platform and this is what they should be using.&amp;nbsp; When they experience a problem and see that they are not currently running the recommended version, then they will upgrade.&amp;nbsp; If they experience a problem and are presented with choices that they can't make heads nor tails of, they are going to take the path that appears to have the least risk.&amp;nbsp; End users will choose the "stable" or "final" release over something labeled "test", "beta", "unstable", or "development" 9 out of 10 times.&amp;nbsp; Even though the problem they are experiencing might very well be fixed in one of these apparently riskier releases.&lt;br /&gt;&lt;br /&gt;For Windows users the availability of multiple releases has been a serious problem.&amp;nbsp; The 1.4 series does not contain significant functionality that is meant to protect end users from data loss.&amp;nbsp; This functionality is only available in the 1.5 series.&amp;nbsp; Unfortunately, due to the fact that end users are presented with &lt;b&gt;new&lt;/b&gt; releases from both the 1.4 and 1.5 branches as they are released it is truly impossible for end users to know which to use without a very clear recommendation from the gatekeepers and perhaps the broader user community.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;One of the other significant problems facing OpenAFS versioning is the length of time it takes in order to get through a test cycle.&amp;nbsp; It is often the case that a small number of problems on specific operating system versions or hardware architectures can prevent a test cycle from being completed.&amp;nbsp; In the meantime, the release that should be considered the best choice on all of the other operating system versions and hardware architectures is stuck with a label of "test", "beta", or "candidate" which results in organizations and end users from being willing to install it.&lt;br /&gt;&lt;br /&gt;As a result I am recommending that OpenAFS (and all other cross-platform open source projects) avoid the use of the one version is best for all platforms mentality.&amp;nbsp; Instead of labeling releases as "stable-1-4-2", "stable-1-4-2-beta-1", "stable-1-4-2-rc3", or "unstable-1-5-9", just use numbers such as"1-4-41", "1-4-42", "1-4-43", "1-5-9". This removes the negative connotations associated with the labels.&amp;nbsp; For each platform a recommended release number can be provided.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;This new approach provides a number of side benefits.&amp;nbsp; No longer do the developers need to guess at what version numbers to assign to test builds.&amp;nbsp; When preparing for a new release we want the final version number to be X.Y.Z.00.&amp;nbsp; Therefore, the developers typically try to assign numbers starting with X.Y.(Z-1).90 in order to ensure that version numbers always increase but to avoid the confusion that might arise if end users thought the test release was in fact the final release.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Another benefit is that it will be much easier for administrators to convince management to deploy fixes.&amp;nbsp; Management is always reluctant to deploy a "beta" or "candidate" release because such a release must have bugs.&amp;nbsp; The reality is that all software has bugs.&amp;nbsp; Even if there are no known bugs in a given release at the time the release is announced it is guarranteed that over time bugs will be discovered and they will be fixed in later releases.&amp;nbsp; A "final" release is simply one that is believed to build and run on all supported platforms without known faults.&lt;br /&gt;&lt;br /&gt;The requirement that a "final" release build and run on all supported platforms including all new Linux kernels often results in significant delays before important bug fixes can make it out to the user community.&amp;nbsp; For example, at the AFS &amp;amp; Kerberos Best Practice Workshop a demonstration was given of a bug fix to a problem in the 1.4.1 file serverthat adversely affects client mobility.&amp;nbsp; The bug fix was committed on June 3rd and yet it has taken until October 17th before a 1.4.2 final release to be issued.&amp;nbsp; In the meantime, more than four months of end user frustration has accumulated and many sites have deployed 1.4.1 on their file servers instead of one of the "beta" or "candidate" releases that contained the fix.&lt;br /&gt;&lt;br /&gt;In speaking with end users, as long as the version label does not contain negative terminology they can push out any build that is recommended.&amp;nbsp; However, once doubt is raised regarding the quality of the release in the minds of management all bets are off.&lt;br /&gt;&lt;br /&gt;It is my hope that OpenAFS and other open source projects will abandon the traditional release labeling and replace it with incremental build numbers and platform specific recommendations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-7347151876105634003?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/7347151876105634003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=7347151876105634003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/7347151876105634003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/7347151876105634003'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/10/need-to-avoid-release-labeling-and.html' title='The need to avoid release labeling and choice for end users'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1124098106039627379</id><published>2006-09-08T12:42:00.001-04:00</published><updated>2009-02-23T15:24:48.564-05:00</updated><title type='text'>OpenAFS for Windows September 2006 Status Report is now available</title><content type='html'>The OpenAFS for Windows September 2006 Status Report is now available:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.secure-endpoints.com/talks/OpenAFS-Windows-Sep-2006-Status-Report.pdf"&gt;http://www.secure-endpoints.com/talks/OpenAFS-Windows-Sep-2006-Status-Report.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For the complete list of changes since the 1.2 release see:  &lt;a href="http://www.openafs.org/dl/openafs/1.5.8/winnt/afs-changes-since-1.2.txt"&gt;http://www.openafs.org/dl/openafs/1.5.8/winnt/afs-changes-since-1.2.txt&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;and of course be sure to read the Release Notes:&lt;br /&gt;&amp;nbsp;&lt;a href="http://www.openafs.org/dl/openafs/1.5.8/winnt/relnotes-frames.htm"&gt;http://www.openafs.org/dl/openafs/1.5.8/winnt/relnotes-frames.htm&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;As always I encourage all organizations and individuals who wish to support the development of OpenAFS for Windows to contact me.  Financial contributions as well as in kind assistance are seriously appreciated.Tax deductible donations may be made via the OpenAFS account operated by Usenix (a 501c3 not for profit corporation.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1124098106039627379?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1124098106039627379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1124098106039627379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1124098106039627379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1124098106039627379'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/09/openafs-for-windows-september-2006.html' title='OpenAFS for Windows September 2006 Status Report is now available'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-4311755081421631779</id><published>2006-07-25T17:22:00.001-04:00</published><updated>2009-02-23T15:25:08.128-05:00</updated><title type='text'>Kerberos for Windows 3.1 Beta update</title><content type='html'>KFW 3.1 Beta 1 has been tagged and installers have been built.   &lt;br /&gt;&lt;br /&gt;An official announcement is soon to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-4311755081421631779?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/4311755081421631779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=4311755081421631779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4311755081421631779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4311755081421631779'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/07/kerberos-for-windows-31-beta-update.html' title='Kerberos for Windows 3.1 Beta update'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-8706762485788045812</id><published>2006-07-20T08:57:00.000-04:00</published><updated>2008-10-08T20:43:57.746-04:00</updated><title type='text'>OpenAFS for Windows Large File Support is now available</title><content type='html'>Several weeks ago, OpenAFS.org &lt;a href="http://lists.openafs.org/pipermail/openafs-announce/2006/000155.html"&gt;announced the release of OpenAFS for Windows 1.5.3&lt;/a&gt;.&amp;nbsp; For Windows this release contains three major changes:&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;First, there are significant changes in the CIFS server compatibility with the Windows CIFS client.&amp;nbsp;&amp;nbsp; The result should be a major improvement in the interaction with the Explorer Shell. &lt;/li&gt;&lt;li&gt;Second, this is the first AFS client on Windows to support the &lt;b&gt;Inline Bulk Status RPCs&lt;/b&gt;.&amp;nbsp; The reason that this is a big deal is that instead of performing one RPC per directory entry the Windows client now performs one RPC for every 50 directory entries.&amp;nbsp; In addition, directory entries that are unreadable due to access permissions are temporarily cached as expired callbacks.&amp;nbsp; This significantly reduces the time required to obtain a directory listing or create/open/delete files.&lt;/li&gt;&lt;li&gt;Third, for the first time the Windows AFS client is capable of supporting &lt;b&gt;64-bit Large Files&lt;/b&gt;.&amp;nbsp; You can now use AFS to store DVD images.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;With all of these changes I bet you can't wait to get your hands on &lt;a href="http://www.openafs.org/release/openafs-1.5.3.html"&gt;this release&lt;/a&gt;.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-8706762485788045812?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/8706762485788045812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=8706762485788045812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8706762485788045812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8706762485788045812'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/07/openafs-for-windows-large-file-support.html' title='OpenAFS for Windows Large File Support is now available'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-4771955969582474585</id><published>2006-07-20T08:23:00.001-04:00</published><updated>2009-02-23T15:25:51.564-05:00</updated><title type='text'>At long last, Kerberos for Windows 3.1 is nearing release</title><content type='html'>After more than seven months of waiting MIT Kerberos for Windows 3.1 is finally going to begin beta testing.  This release will fix all of the bugs that plagued KFW 3.0 Network Identity Manager 1.0.  The memory leaks, the principal name rejections, the non-en_US locale problems.  They are all gone.&lt;br /&gt;&lt;br /&gt;In addition, KFW 3.1 will not crash on Windows XP64 WOW64 simply because Microsoft failed to actually export tickets from the LSA even though the functions succeed.   (This problem is fixed in Vista Beta 2.)&lt;br /&gt;&lt;br /&gt;Along with KFW 3.1 will be a new version of the AFS plug-in installer.  Now that the NetIDMgr APIs are truly stable the AFS plug-in can be integrated into an OpenAFS release.  That said, the KFW 3.1 release will install on 64-bit Windows systems but there will not be 64-bit native support until KFW 3.2.&lt;br /&gt;&lt;br /&gt;The most dramatic changes in KFW 3.1 are in the NetIDMgr.&amp;nbsp; The user interface is much more fleshed out.&amp;nbsp; In the main window tickets can be sorted in arbitrary ways by clicking the column headers.&amp;nbsp;&amp;nbsp; The View-&amp;gt;Columns menu allows the user to select which ticket properties should be displayed.&amp;nbsp;&amp;nbsp; The properties include everything from principal names to lifetimes to enc-types to key version numbers.&amp;nbsp; Tool Tips are supported for the toolbar.&amp;nbsp;&amp;nbsp; The font used to display tickets is user selectable.&amp;nbsp;&amp;nbsp; Identities can be added without obtaining credentials via the Global Identity Settings.&amp;nbsp;&amp;nbsp; The Kerberos 5 Realm configuration editor is complete.&amp;nbsp;&amp;nbsp; Kerberos 5 credentials can now be obtained from FILE: ccaches.&amp;nbsp; In general, the overall look and feel of the tool is significantly improved.&lt;br /&gt;&lt;br /&gt;I look forward to being able to announce on Tuesday July 25th that the installers are available for &lt;a href="http://web.mit.edu/kerberos/"&gt;download&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-4771955969582474585?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/4771955969582474585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=4771955969582474585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4771955969582474585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4771955969582474585'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/07/at-long-last-kerberos-for-windows-31-is.html' title='At long last, Kerberos for Windows 3.1 is nearing release'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-8395281037495348464</id><published>2006-06-12T23:08:00.001-04:00</published><updated>2009-02-23T15:26:38.392-05:00</updated><title type='text'>AFS &amp; Kerberos Best Practice Workshop 2006</title><content type='html'>AFS &amp;amp; Kerberos Best Practice Workshop this week &lt;br /&gt;&lt;br /&gt;&lt;a href="http://workshop.openafs.org/afsbpw06/"&gt;http://workshop.openafs.org/afsbpw06/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-8395281037495348464?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/8395281037495348464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=8395281037495348464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8395281037495348464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8395281037495348464'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/06/afs-kerberos-best-practice-workshop.html' title='AFS &amp;amp; Kerberos Best Practice Workshop 2006'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-8518312859037894032</id><published>2006-03-21T01:22:00.001-05:00</published><updated>2009-02-23T15:27:10.987-05:00</updated><title type='text'>MIT Kerberos for Windows 3.1 has been delayed</title><content type='html'>MIT Kerberos for Windows 3.1 has been delayed.  The original anticipated delivery date was late January.  Unfortunately things have taken a bit longer than expected.  On the plus side the Network Identity Manager is feature complete.   The next edition will include a wide variety of new tools for viewing the acquired credentials.  In addition, all of the known bugs have been fixed.  KFW 3.1 will be a significant release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-8518312859037894032?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/8518312859037894032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=8518312859037894032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8518312859037894032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8518312859037894032'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/03/mit-kerberos-for-windows-31-has-been.html' title='MIT Kerberos for Windows 3.1 has been delayed'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1494989307946057650</id><published>2006-03-21T01:18:00.001-05:00</published><updated>2009-02-23T15:28:20.947-05:00</updated><title type='text'>OpenAFS 1.4.1 release candidate 10 is available</title><content type='html'>OpenAFS 1.4.1 release candidate 10 is available.   See &lt;a href="http://lists.openafs.org/pipermail/openafs-announce/2006/000145.html"&gt;http://lists.openafs.org/pipermail/openafs-announce/2006/000145.html&lt;/a&gt; for the announcement letter.&lt;br /&gt;&lt;br /&gt;    The dates and location for the AFS &amp;amp; Kerberos Best Practices Workshop have been announced.  The workshop will be held at the University of Michigan during the week of June 12th to 16th.  The program will be similar to last year.  Monday there will be a full day tutorial on AFS installation and administration.  On Tuesday there will be a full day tutorial on Kerberos installation and administration.  Wednesday through Friday there will be a series of talks on AFS and Kerberos given by key developers and members of the user community.  Registration fees are $100 per person for the talks and $100 per person for each of the tutorials.&lt;br /&gt;&lt;br /&gt;Jeffrey Altman of Secure Endpoints Inc. will be giving a talk at this years NIST PKI R&amp;amp;D Workshop which is being held April 4-6 in Washington D.C.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1494989307946057650?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1494989307946057650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1494989307946057650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1494989307946057650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1494989307946057650'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/03/openafs-141-release-candidate-10-is.html' title='OpenAFS 1.4.1 release candidate 10 is available'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-4342105658718780787</id><published>2006-01-24T22:47:00.001-05:00</published><updated>2009-02-23T15:29:53.722-05:00</updated><title type='text'>Thread Safety is hard to maintain</title><content type='html'>I am constantly amazed by how hard it is to write thread safe code and have it stay thread safe.   This week I had the pleasure of debugging two very different thread safety problems with very different origins on the theme.&lt;br /&gt;&lt;br /&gt;Actually as I think about it, the origin of the problems are fairly similar.  In both cases, the root cause was a failure of the thread safe architecture to be appropriately documented. In the first case, the degradation was gradual.  The bugs were introduced slowly over time as multiple developers who did not understand the architectural requirements added or modified functionality.  The worst part about thread safety problems is that problems that result in reference counting errors in which references are not released are nearly impossible to find.  The same holds true for race conditions due to a failure to apply read/write locks or mutexes in a consistent manner.&lt;br /&gt;&lt;br /&gt;These errors are extremely easy to introduce and unless there is very thorough auditing of the code it is quite likely that even a well written test suite is not going to trigger the errors.  Deadlock conditions and under counting of references are much easier to identify because they typically result in a hard error.&lt;br /&gt;&lt;br /&gt;The second problem was even more hideous.  The architect made an assumption about the order in which threads would be allocated in an application.  It never occurred to her/him that the libraries that are linked into the application might one day be multi-threaded themselves.  The end result was that a data structure that was meant to allow thread safe access to objects by allocating a single bit in a table to each thread ended up due to math truncation associating multiple threads with the same bits.  The end result is that while not a single line in the program changed, the thread safety of the application went out the window.&lt;br /&gt;&lt;br /&gt;I don't know if better documentation would have helped in this second instance but it is clear that heavily used production servers started to bounce because of an undocumented assumption.   &lt;br /&gt;&lt;br /&gt;My advice to anyone that is developing and maintaining multi-threaded systems is to be careful.  What looks on the surface like a trivial change may very well disrupt a a delicately balanced system.  Whenever possible find someone else who understands the architecture of the system to review each and every line being very careful to pain attention to the expansion of macros and the side-effects that function calls might have.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-4342105658718780787?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/4342105658718780787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=4342105658718780787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4342105658718780787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4342105658718780787'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2006/01/thread-safety-is-hard-to-maintain.html' title='Thread Safety is hard to maintain'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-5452185158252263349</id><published>2005-12-20T12:24:00.001-05:00</published><updated>2009-02-23T15:30:26.626-05:00</updated><title type='text'>Kerberos for Windows 3.0 update</title><content type='html'>Release Candidate 1 of the OpenAFS plug-in for KFW 3.0's Network Identity Manager is now available from the Secure Endpoints web site.   &lt;a href="https://www.secure-endpoints.com"&gt;https://www.secure-endpoints.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This release provides the full set of functionality necessary to manage token acquisition for multiple cells from a single Kerberos 5 principal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-5452185158252263349?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/5452185158252263349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=5452185158252263349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/5452185158252263349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/5452185158252263349'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/12/kerberos-for-windows-30-update.html' title='Kerberos for Windows 3.0 update'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-790843741138536924</id><published>2005-12-19T20:37:00.001-05:00</published><updated>2009-02-23T15:31:10.988-05:00</updated><title type='text'>New Daily Builds of OpenAFS for Windows</title><content type='html'>Today there are new daily builds of OpenAFS for Windows in both 32-bit and 64-bit versions available from &lt;A href="http://web.mit.edu/jaltman/Public/OpenAFS/"&gt;http://web.mit.edu/jaltman/Public/OpenAFS/&lt;/A&gt;.   The builds are dated 20051219.  &lt;br /&gt;&lt;br /&gt;They include performance improvements when fcrypt is in use and better logging of messages to the Windows Event Log.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-790843741138536924?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/790843741138536924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=790843741138536924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/790843741138536924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/790843741138536924'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/12/today-there-are-new-daily-builds-of.html' title='New Daily Builds of OpenAFS for Windows'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1537987397739138378</id><published>2005-12-05T23:17:00.001-05:00</published><updated>2009-02-23T15:31:51.962-05:00</updated><title type='text'>MIT Kerberos for Windows 3.0 and Network Identity Manager 1.0 finally ship</title><content type='html'>Its been a long week but MIT's Kerberos for Windows 3.0 and the &lt;b&gt;NEW&lt;/b&gt; Network Identity Manager has finally been shipped.  I cannot give enough praise to Asanka for all of his hard work on this project.  It would not have happened without him.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1537987397739138378?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1537987397739138378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1537987397739138378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1537987397739138378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1537987397739138378'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/12/its-been-long-week-but-mits-kerberos.html' title='MIT Kerberos for Windows 3.0 and Network Identity Manager 1.0 finally ship'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-8365916509540560206</id><published>2005-12-01T14:02:00.001-05:00</published><updated>2009-02-23T15:32:52.848-05:00</updated><title type='text'>OpenAFS for Windows 1.4.1 RC2 and MIT Kerberos for Windows 3.0 Beta 2</title><content type='html'>Yesterday was a busy day.   OpenAFS for Windows version 1.4.1 RC2 has been announced as well as MIT Kerberos for Windows beta 2.   &lt;br /&gt;&lt;br /&gt;The OpenAFS release can be downloaded from &lt;A href="http://dl.openafs.org/dl/openafs/candidate/1.4.1-rc2/winnt/"&gt;http://dl.openafs.org/dl/openafs/candidate/1.4.1-rc2/winnt/&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;The MIT Kerberos release can be downloaded from &lt;A href="http://web.mit.edu/kerberos/"&gt;http://web.mit.edu/kerberos/&lt;/A&gt;.&lt;br /&gt;&lt;br /&gt;MIT Kerberos for Windows 3.0 marks a turning point in the products history.   For the first time, KFW will allow, through the use of the new Network Identity Manager, the ability to manage multiple Kerberos 5 identities at once.   The NetIdMgr is based on the Khimaira Identity Management Framework which was described in a talk at the 2005 AFS &amp; Kerberos Best Practices Conference at CMU.  A copy of the presentation can be found at: &lt;A href="http://www.secure-endpoints.com/talks/AFS-BPW-2005-Khimaira.pdf"&gt;http://www.secure-endpoints.com/talks/AFS-BPW-2005-Khimaira.pdf&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;The Khimaira framework enables the concepts of "identity" and "credentials" to be managed separately.   In the modules shipped with MIT KFW 3.0, a single Kerberos 5 identity manager is included that allows users to maintain identities based upon Kerberos 5 principal names represented by Kerberos 5 Ticket Granting Tickets.  Credential Managers are then provided to manage policy and perform intial credential acquisition and renewals for each specific credential type.  In KFW 3.0, two Credential Managers are provided, one for Kerberos 5 and one for Kerberos 4.  The Kerberos 5 Credential Manager maintains policy such as whether or not TGTs obtained should be forwardable, renewable, with what lifetimes, and whether or not they should be renewed before expiration.  The Kerberos 4 credential manager receives notifications whenever a Kerberos 5 TGT is obtained and based upon its policy determines whether or not to generate a Kerberos 4 TGT via krb524d.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Secure Endpoints is providing an AFS Credential Manager that can be used to obtain tokens for an arbitrary number of cells in response to a Kerberos 5 identity being updated with a new TGT.  &lt;br /&gt;    It is hoped that other organizations will take advantage of this new framework to add support for automated X.509 Certificate Acquisition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-8365916509540560206?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/8365916509540560206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=8365916509540560206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8365916509540560206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/8365916509540560206'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/12/yesterday-was-busy-day.html' title='OpenAFS for Windows 1.4.1 RC2 and MIT Kerberos for Windows 3.0 Beta 2'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-2865995219943603373</id><published>2005-11-01T20:49:00.001-05:00</published><updated>2009-02-23T15:33:28.503-05:00</updated><title type='text'>Happy Fifth Birthday OpenAFS!!!</title><content type='html'>OpenAFS 1.4.0 has been released on the 5th birthday of OpenAFS.org.  &lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://lists.openafs.org/pipermail/openafs-announce/2005/000129.html"&gt;http://lists.openafs.org/pipermail/openafs-announce/2005/000129.html&lt;/A&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-2865995219943603373?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/2865995219943603373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=2865995219943603373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/2865995219943603373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/2865995219943603373'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/11/openafs-1.html' title='Happy Fifth Birthday OpenAFS!!!'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-6794106463774159807</id><published>2005-10-14T14:24:00.001-04:00</published><updated>2009-02-23T15:34:08.171-05:00</updated><title type='text'>OpenAFS vs ntvdm.exe wildcard searches</title><content type='html'>In the OpenAFS RT there has been a ticket open for over a year because 16-bit applications when executed out of AFS were crashing.&amp;nbsp; It turns out that ntvdm.exe will perform wildcard searches for files as FOO?????.C?? instead of FOO*.C*. &amp;nbsp;OpenAFS for Windows was failing to match this pattern to FOO.C as it implemented a semantic of '?' must match a single character other than (dot).&amp;nbsp; The real rule is that (dot) is the component separator and '?' matches a single character and may match no characters if it is at the end of a component and the input string is empty. &lt;br /&gt;    With this fix all of those people who wish to execute the DOS versions of Quatro or Microsoft Word out of AFS (you know who you are) can rejoice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-6794106463774159807?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/6794106463774159807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=6794106463774159807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/6794106463774159807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/6794106463774159807'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/10/in-openafs-rt-there-has-been-ticket.html' title='OpenAFS vs ntvdm.exe wildcard searches'/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1767942822041087704</id><published>2005-10-08T23:42:00.000-04:00</published><updated>2008-10-08T20:43:57.751-04:00</updated><title type='text'> </title><content type='html'>Today we setup a read/write volume that is moved between two servers every 30 minutes.&amp;nbsp; The MIT Stress Test was then run against this volume.&amp;nbsp;&amp;nbsp; While the test fails (because the volume becomes busy for six minutes during the move), the OpenAFS client cleanly fails over from one server to the next.&amp;nbsp; Good job!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1767942822041087704?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1767942822041087704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1767942822041087704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1767942822041087704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1767942822041087704'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/10/today-we-setup-readwrite-volume-that-is.html' title=' '/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-1420599154585628</id><published>2005-10-08T00:23:00.000-04:00</published><updated>2008-10-08T20:43:57.751-04:00</updated><title type='text'> </title><content type='html'>We have been tracking what appeared to be a weird but in the rx library for the last several weeks.&amp;nbsp;&amp;nbsp; After some period of time a server would respond to a client with a last packet in a call.&amp;nbsp; The client would respond by sending an ACK and then terminating the call.&amp;nbsp;&amp;nbsp; The client would create a new call and issue a request to the server.&amp;nbsp; The server would appear to have ignored the previous ACK and begin resending the last message of the previous call.&amp;nbsp;&amp;nbsp; The client no longer believing the previous calls exists would ignore the duplicate messages but it would also *never* resend the first packet of the new call.&amp;nbsp; This deadlock situation would remain essentially forever.&amp;nbsp; &lt;BR&gt;&lt;BR&gt;After pulling our hair out for several weeks we discovered that the hardware clock on the machine was set to the year 2015.&amp;nbsp; ntpupdate was reseting the clock to the correct time.&amp;nbsp; The reason the client wasn't resending the new call packet was because the resend timer was set to expire ten years from now.&amp;nbsp;&amp;nbsp; I wonder if the server will still be there by the time the resend takes place.&amp;nbsp;&amp;nbsp;:-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-1420599154585628?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/1420599154585628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=1420599154585628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1420599154585628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/1420599154585628'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/10/we-have-been-tracking-what-appeared-to.html' title=' '/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-4742783658547589537</id><published>2005-10-07T13:22:00.000-04:00</published><updated>2008-10-08T20:43:57.751-04:00</updated><title type='text'> </title><content type='html'>Tested executing Microsoft Office 2003 out of AFS with OAFW Byte Range Locking support and it works when the 'k' privilege is provided as part of the ACLs for the directories containing the executables.&amp;nbsp;&amp;nbsp; It would be useful to compile a list of applications that do and do not work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-4742783658547589537?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/4742783658547589537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=4742783658547589537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4742783658547589537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4742783658547589537'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/10/tested-executing-microsoft-office-2003.html' title=' '/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-5952577609579484636</id><published>2005-10-07T09:07:00.000-04:00</published><updated>2008-10-08T20:43:57.752-04:00</updated><title type='text'> </title><content type='html'>We have discovered another instance in which a Windows client might be unable to access volume data.&amp;nbsp; If the volume was cached by the client and then moved, salvaged or otherwise taken offline, the Windows client would never move the volume from the "offline" state to the "not busy" state.&amp;nbsp;&amp;nbsp; In this case, being "offline" is distinct from all of the known servers being "down".&amp;nbsp;&amp;nbsp; In the "down" case, the Windows client has a background thread to periodically test the reachability of the server.&amp;nbsp;&amp;nbsp; In this case, there was no code in place to attempt to find a new source for the volume data.&lt;br/&gt;    A correction for this problem has been developed and was committed to the OpenAFS repository.&amp;nbsp; The fix will be available in the final 1.4.0 release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-5952577609579484636?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/5952577609579484636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=5952577609579484636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/5952577609579484636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/5952577609579484636'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/10/we-have-discovered-another-instance-in.html' title=' '/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3333505129375354922.post-4982717399496247206</id><published>2005-10-06T14:50:00.000-04:00</published><updated>2008-10-08T20:43:57.752-04:00</updated><title type='text'> </title><content type='html'>New installers for OpenAFS for Windows pre-1.4.1 with Byte Range Lock support have been uploaded to &lt;A href="http://web.mit.edu/jaltman/Public/OpenAFS/ByteRangeLocks/"&gt;http://web.mit.edu/jaltman/Public/OpenAFS/ByteRangeLocks/&lt;/A&gt;.&amp;nbsp;&amp;nbsp; The latest builds are dated 20051006.&amp;nbsp;&amp;nbsp; These builds fix two issues related to lock management.&amp;nbsp; I am now confident that I can use this version on a daily basis.&amp;nbsp; Perhaps we should skip the 1.4.0 release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3333505129375354922-4982717399496247206?l=blog.secure-endpoints.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.secure-endpoints.com/feeds/4982717399496247206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3333505129375354922&amp;postID=4982717399496247206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4982717399496247206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3333505129375354922/posts/default/4982717399496247206'/><link rel='alternate' type='text/html' href='http://blog.secure-endpoints.com/2005/10/new-installers-for-openafs-for-windows.html' title=' '/><author><name>Secure Endpoints</name><uri>http://www.blogger.com/profile/16282062715438996079</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-FyWvDw8TBTI/Tnecee4i4aI/AAAAAAAAAEY/jQB50irOyGo/s220/SEIcon.png'/></author><thr:total>0</thr:total></entry></feed>
