3.40. Delayed Write Errors with Microsoft Office Applications

This section does not apply unless the OpenAFS Service is manually configured as an SMB Gateway.

Microsoft Office makes heavy use of asynchronous input/output methods for reading and writing to file streams. This can result in hundreds of requests being simultaneously queued for service by the CIFS client with a fixed timeout period. As the AFS CIFS server is local to the machine the Windows CIFS client believes that it can respond almost instantaneously to write requests as the actual writing to the AFS file server is performed by a background daemon thread. When the actual network bandwidth to the AFS file server is slow and the file size is large it is possible for the CIFS client to time out the connection. When this happens a "delayed write error" will be reported to the user and the application may crash. The only workaround at the current time is to save first to a local disk and subsequently copy the file to AFS as copying a file with the explorer shell does not use asynchronous i/o.

The CIFS session timeout defaults to 45 seconds and can be increased by modifying the ConnDeadTimeout registry value.

Beginning with the 1.5.33 release, the performance characteristics of SMB Write Data operations can be adjusted. In prior releases all writes were performed using a restricted asynchronous store model in which only one asynchronous store operation per file can be performed at a time. The reason for this restriction is limit the amount of data the cache manager will accept without it having been written to the file server. If too much unwritten data is accepted, the file close operation will block until all of the unwritten data is output and this could trigger a CIFS client disconnect.

Prior to 1.5.33 the size of the asynchronous store was always equal to the chunk size which was often too large for low bandwidth connections. The asynchronous store size now defaults to 32KB and is configurable using the SMBAsyncStoreSize registry value. Asynchronous store operations can also be disabled using the EnableSMBAsyncStore registry value in which case all writes received by the cache manager block until the Rx StoreData operation completes.

During the first quarter of 2009 Microsoft added new functionality to the SMB Redirector which permits an extended timeout period to be used for an enumerated list of Netbios server names. This functionality was distributed in Service Pack 2 for Vista and 2008 and is incorporated into the RTM releases of Windows 7 and Server 2008 R2. Updates to Windows XP (KB916204), XP64 (KB969289), and Server 2003 (KB969289) were made available as hot fixes. When this support is available, the OpenAFS for Windows client 1.5.61 and above will raise the timeout period from 45 seconds to 10 minutes.