[OpenAFS] Data Loss in Pre-1.5.62 OpenAFS for Windows Releases

Jeffrey Altman openafs <openafs-info@openafs.org>
Fri, 28 Aug 2009 14:42:57 -0400


This is a cryptographically signed message in MIME format.

--------------ms040805010106030403010100
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

General Information
===================

Releases of OpenAFS for Windows prior 1.5.62 may fail to store data
to file servers.  There are two issues that are addressed in the
1.5.62 release.

Problem 1.  Failure to Store Portions of Unaligned Writes
---------------------------------------------------------
By default, OpenAFS for Windows caches data in 4KB buffers.  If the
data being written starts at an offset from the beginning of the file
that is not a multiple of the 4KB block size, then the cache manager
will fail to store (offset % blocksize) bytes to the file server
while at the same time marking the affected buffer as fully stored.

Problem 2.  Failure to Store Data to File Servers Lacking Large File Support
----------------------------------------------------------------------------
The AFS protocol as defined and implemented by Transarc/IBM did not
include support for files with lengths greater than 2GB (2^31).  OpenAFS
extended the AFS protocol to support files up to (2^64) by adding two
new RPCs (StoreData64 and FetchData64).  The cache manager determines
if a file server supports 64-bit file operations by attempting to perform
the RPC and then falling back to the older 31-bit file operations if
they are not supported.  The result of this test is saved until the next
time the file server sends an InitCallBackState RPC to the cache manager.

If the first 64-bit file operation after the receipt of an
InitCallBackState
RPC is a StoreData64 RPC, the Windows cache manager would mark the server
as having no 64-bit file support and would retry using the 31-bit StoreData
RPC.  However, it would fail to reset the number of bytes to be written to
the file server prior to the StoreData RPC being issued.  As a result, up
to one StoreData64 RPC worth of data (aka one chunk) would not be stored to
the file server even though the affected buffers are marked fully stored.


Affected and Non-Affected Software
==================================
Problem 1 affects all releases of OpenAFS for Windows since the original
IBM contribution.  This problem is independent of the capabilities of the
file server.

Problem 2 affects releases of OpenAFS for Windows from 1.5.3 to 1.5.61.
The problem can only occur in conjunction with file servers that do not
support 64-bit file operations.  These include all IBM AFS file servers
and OpenAFS file servers prior to 1.3.70 (and those which were explicitly
built without large file support).


Additional Factors
==================
The chances of data loss as a result of Problem 2 are exacerbated by
firewalls and network address translators that have short lifetimes
for UDP port mappings.  When a port mapping is dropped the cache
manager is forced to establish a new Rx connection to the file server.
In response the file server may issue an InitCallBackState RPC forcing
any knowledge of the file server's 64-bit file support to be forgotten.

The InitCallBackState RPC received by the cache manager does not have
to originate with a file server lacking 64-bit file support in order
for it the result in the loss of file server capability knowledge.
As the callback channel is unauthenticated, any user with the ability
to issue InitCallBackState RPCs to the client can attempt to force
data loss to occur.


Workarounds
===========
There are no workarounds to these problems other than upgrading:

 * the Windows client to the OpenAFS 1.5.62 or later release, or

 * upgrading all file servers to the OpenAFS 1.3.70 or later release




--------------ms040805010106030403010100
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJeTCC
AxcwggKAoAMCAQICEAMF9RTCGOz151fTpHLih+cwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT
I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA5MDgyODA0MDExOVoX
DTEwMDgyODA0MDExOVowczEPMA0GA1UEBBMGQWx0bWFuMRUwEwYDVQQqEwxKZWZmcmV5IEVy
aWMxHDAaBgNVBAMTE0plZmZyZXkgRXJpYyBBbHRtYW4xKzApBgkqhkiG9w0BCQEWHGphbHRt
YW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQDZNscYIvF6xzGSAfa/QUIqiElyn0EUxL2b86eKiYqe91bj0gLr/MJoErLnb+OmokxqSAH6
y0zlFqSbiFwgNM8m69K6m/6YO+x3+5zBc+u6snwTWMEWygnhx3rQ/lMhoQOgArraL+/k9aWL
kNdaXQKk6EZVW9pfV2A4Lk4DoZGFjY8tJRWWDLlFkYnxDuIEpLYwJpwakv3QHOaq/G8KW0iE
jVhVzPobuZzwD2tuepY/bsClwqxz/gfAEpUvAn/lYTqnoT7RYljZlCIdbrgcG/HSYMxAy1Zp
Yh8Fx+9cqsG8O4nqo26SVfYZvrYhh8m6OqW8Vakdt7vBLCTa/QhIdJ4hAgMBAAGjOTA3MCcG
A1UdEQQgMB6BHGphbHRtYW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wDAYDVR0TAQH/BAIwADAN
BgkqhkiG9w0BAQUFAAOBgQBvbvJNXUJ4atv1CExIe0J38jZqoEUTttkXOfCDT9e3mSmVboOK
ifHDyLZQC4qSsCUfP7vdwAXjKtjak22HbfX2sEKCUgtnOkxRqXMM2V/NW/ESNVQZF0TO7L/Z
cW3icObO9FIZCSmgFMt2Al7VPfMQmaJNlqu9SLmXSwbRFJ5b4zCCAxcwggKAoAMCAQICEAMF
9RTCGOz151fTpHLih+cwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA5MDgyODA0MDExOVoXDTEwMDgyODA0MDExOVow
czEPMA0GA1UEBBMGQWx0bWFuMRUwEwYDVQQqEwxKZWZmcmV5IEVyaWMxHDAaBgNVBAMTE0pl
ZmZyZXkgRXJpYyBBbHRtYW4xKzApBgkqhkiG9w0BCQEWHGphbHRtYW5Ac2VjdXJlLWVuZHBv
aW50cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZNscYIvF6xzGSAfa/
QUIqiElyn0EUxL2b86eKiYqe91bj0gLr/MJoErLnb+OmokxqSAH6y0zlFqSbiFwgNM8m69K6
m/6YO+x3+5zBc+u6snwTWMEWygnhx3rQ/lMhoQOgArraL+/k9aWLkNdaXQKk6EZVW9pfV2A4
Lk4DoZGFjY8tJRWWDLlFkYnxDuIEpLYwJpwakv3QHOaq/G8KW0iEjVhVzPobuZzwD2tuepY/
bsClwqxz/gfAEpUvAn/lYTqnoT7RYljZlCIdbrgcG/HSYMxAy1ZpYh8Fx+9cqsG8O4nqo26S
VfYZvrYhh8m6OqW8Vakdt7vBLCTa/QhIdJ4hAgMBAAGjOTA3MCcGA1UdEQQgMB6BHGphbHRt
YW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOB
gQBvbvJNXUJ4atv1CExIe0J38jZqoEUTttkXOfCDT9e3mSmVboOKifHDyLZQC4qSsCUfP7vd
wAXjKtjak22HbfX2sEKCUgtnOkxRqXMM2V/NW/ESNVQZF0TO7L/ZcW3icObO9FIZCSmgFMt2
Al7VPfMQmaJNlqu9SLmXSwbRFJ5b4zCCAz8wggKooAMCAQICAQ0wDQYJKoZIhvcNAQEFBQAw
gdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUg
VG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp
b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFp
bCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTAeFw0w
MzA3MTcwMDAwMDBaFw0xMzA3MTYyMzU5NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxU
aGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwg
RnJlZW1haWwgSXNzdWluZyBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV
+065yplaHmjAdQRwnd/p/6Me7L3N9VvyGna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfAr
hVqqP3FWy688Cwfn8R+RNiQqE88r1fOCdz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/
p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8
MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWls
Q0EuY3JsMAsGA1UdDwQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxh
YmVsMi0xMzgwDQYJKoZIhvcNAQEFBQADgYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/
TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFiw9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amc
OY6MIE9lX5Xa9/eH1sYITq726jTlEBpbNU1341YheILcIRk13iSx0x1G/11fZU8xggNxMIID
bQIBATB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5
KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQ
AwX1FMIY7PXnV9OkcuKH5zAJBgUrDgMCGgUAoIIB0DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcN
AQcBMBwGCSqGSIb3DQEJBTEPFw0wOTA4MjgxODQyNTdaMCMGCSqGSIb3DQEJBDEWBBTvA5Dq
a7mD21pt98K+FlCZFikQhTBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG
9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN
AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0
ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl
bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs
9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBAE32S9FQzSpmZV2HVLynl/z2ucfTkI7dEKA8
ydlbONZjs8D+Yf2YfMyAMODyKh+1Y1fivTx/IGSrA0HDQnzXPQ53XpTTbhk218K4ers+iP0S
R1FC4t2upKP8jvrdVU+gX1QQ8hQ/CWPnslfEGb7J0OdMdi6uZoBxuqEjBJ1T4MSPfOiB7Uxx
OVzy0kjXVn6sR+sWXAbimCWjPiZct4qUydh4al2HcByZuk10x5Jiyv+fa/Qu4L6489tCbDSj
tLegp5wdyMGXN8KHSlFsPJZnsR5riJmZhi2NDsYMv24OlX3DoPYDPmmym3b9ck5lDuYp0xa2
OQAKvrRsNzLbVKZmNnQAAAAAAAA=
--------------ms040805010106030403010100--