From scs@umich.edu Mon May 3 16:29:47 2010 From: scs@umich.edu (Steve Simmons) Date: Mon, 3 May 2010 11:29:47 -0400 Subject: [OpenAFS-devel] Patch for XML switch for vos examine In-Reply-To: References: Message-ID: --Apple-Mail-3-388127569 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On Apr 19, 2010, at 9:17 AM, Sanket Agarwal wrote: > Here's the gerrit change id: http://gerrit.openafs.org/#change,1777 >=20 > Here's the output from my machine: I've been looking this change over as a guideline to doing a csv version = of it, and wonder if we're headed a bit down the wrong implementation = path. With this patch vos.c now has a series of if-then-elsif sections that = call a pair of functions DisplayFormatFOO and EnumberateEntryFOO for the = various FOO output formats. If we ever change/add data, we'll have to go = into each of these output function types individually and add the = appropriate changes. To me it makes more sense to call a single pair of = functions, eg, DisplayByFormat and EnumerateEntryByFormat and hand them = a flag indicating the desired output format. This will simplify the = upper levels of vos.c, isolate it from any future format = changes/additions, and ensures that if any fix/update is made to = DisplayByFormat or EnumeratreEntryByFormat, all the formats are going to = be corrected at the same time. I'm going ahead with a csv patch that mirrors the way Sanket did the xml = one, but if both are accepted I'll take on the work of refactoring it = into what is in above paragraph. Steve= --Apple-Mail-3-388127569 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii
Here's the gerrit change id: http://gerrit.openafs.org/= #change,1777

Here's the output from my = machine:

I've been = looking this change over as a guideline to doing a csv version of it, = and wonder if we're headed a bit down the wrong implementation = path.

With this patch vos.c now has a series of = if-then-elsif sections that call a pair of functions DisplayFormatFOO = and EnumberateEntryFOO for the various FOO output formats. If we ever = change/add data, we'll have to go into each of these output function = types individually and add the appropriate changes. To me it makes more = sense to call a single pair of functions, eg, DisplayByFormat and = EnumerateEntryByFormat and hand them a flag indicating the desired = output format. This will simplify the upper levels of vos.c, isolate it = from any future format changes/additions, and ensures that if any = fix/update is made to DisplayByFormat or EnumeratreEntryByFormat, all = the formats are going to be corrected at the same = time.

I'm going ahead with a csv patch that = mirrors the way Sanket did the xml one, but if both are accepted I'll = take on the work of refactoring it into what is in above = paragraph.

Steve
= --Apple-Mail-3-388127569-- From jaltman@secure-endpoints.com Mon May 3 16:34:19 2010 From: jaltman@secure-endpoints.com (Jeffrey Altman) Date: Mon, 03 May 2010 11:34:19 -0400 Subject: [OpenAFS-devel] Patch for XML switch for vos examine In-Reply-To: References: Message-ID: <4BDEECFB.5060705@secure-endpoints.com> This is a cryptographically signed message in MIME format. --------------ms030905060606080601010001 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 5/3/2010 11:29 AM, Steve Simmons wrote: >=20 > On Apr 19, 2010, at 9:17 AM, Sanket Agarwal wrote: >=20 >> Here's the gerrit change id: http://gerrit.openafs.org/#change,1777 >> >> Here's the output from my machine: >=20 > I've been looking this change over as a guideline to doing a csv versio= n > of it, and wonder if we're headed a bit down the wrong implementation p= ath. >=20 > With this patch vos.c now has a series of if-then-elsif sections that > call a pair of functions DisplayFormatFOO and EnumberateEntryFOO for th= e > various FOO output formats. If we ever change/add data, we'll have to g= o > into each of these output function types individually and add the > appropriate changes. To me it makes more sense to call a single pair of= > functions, eg, DisplayByFormat and EnumerateEntryByFormat and hand them= > a flag indicating the desired output format. This will simplify the > upper levels of vos.c, isolate it from any future format > changes/additions, and ensures that if any fix/update is made to > DisplayByFormat or EnumeratreEntryByFormat, all the formats are going t= o > be corrected at the same time. >=20 > I'm going ahead with a csv patch that mirrors the way Sanket did the xm= l > one, but if both are accepted I'll take on the work of refactoring it > into what is in above paragraph. >=20 > Steve Steve: I think you are correct. If you don't mind, please refactor first and then start to fill in format options. Along that line of thinking it would probably be best to have a global "-format " option instead of -xml, -csv, etc. Jeffrey Altman --------------ms030905060606080601010001 Content-Type: application/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 AQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA1MDMxNTM0MTlaMCMGCSqGSIb3DQEJBDEWBBTJb+pa wU/sNCWg4GJ7k10XDlA2KjBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0 ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs 9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBAJ9pt0HSmZRcwCvTLLaFlutVKIS3Kot5sXGh v8Z1y4oe+NJDlmu5mAHaycy96/bIhDICEoAkS72IflLmjrSlSDROOF9DxioFnA5/TrThANqJ YKnb+UiQnbn9zereB35RC9Fo4JpTem29qXwQ2rZOvzpEh5ALxvFLSFOJxXyS1qmxQ7mqCYQ3 tk2daBhkU3X+Av2i4Rw04CeApAm+JGE+cSVTJX0fXfJ1EJai7AFzpIj9xn5bRz43FVf3LPZZ defB2asTgHaoHZvkBH9gTfaVX5fy1mtEIdXwb1MxtN1G6NndYM6k0NIcljgVzEAmdF7J1xPd +uwMBlxR3KZ21YBF71MAAAAAAAA= --------------ms030905060606080601010001-- From kelli.ireland@gmail.com Mon May 3 19:12:00 2010 From: kelli.ireland@gmail.com (Kelli Ireland) Date: Mon, 3 May 2010 14:12:00 -0400 Subject: [OpenAFS-devel] GSoC Intro - Kelli Ireland - AppleDouble File Support Message-ID: Hello, all! My name is Kelli Ireland, and I'm a second year grad student at the University of Pittsburgh. My application to OpenAFS for the Google Summer of Code 2010 has been accepted, and I will be working to add Unix support for AppleDouble files in OpenAFS. My project proposal: http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/openafs/t127230760848 I'm a moderately heavy user of the OpenAFS client, having 2 tokens most of the time myself. Also, I have had the opportunity to teach a few Intro to CS courses at Pitt. As an instructor, I have encouraged my students to install and use OpenAFS to access their university drive space instead of carrying around USB thumb drives or even (gasp!) emailing files to themselves (which I admit does work in a pinch, but shouldn't be standard procedure). Thanks to the OpenAFS team for accepting my project, and I look forward to working with all of you. Kelli Ireland From haba@kth.se Thu May 6 10:30:16 2010 From: haba@kth.se (Harald Barth) Date: Thu, 06 May 2010 11:30:16 +0200 (CEST) Subject: [OpenAFS-devel] vos status: Strange creation times In-Reply-To: <20100506.111621.211341155.haba@habanero.pdc.kth.se> References: <20100506010949.7DC3D115FD0@surgeon.pdc.kth.se> <20100506.111621.211341155.haba@habanero.pdc.kth.se> Message-ID: <20100506.113016.141207335.haba@habanero.pdc.kth.se> Look at the following creation times reported by vos status for transaction 3097758: > afstemp1# /usr/openafs/sbin/vos status localhost -local > Total transactions: 1 > -------------------------------------- > transaction: 3097758 created: Thu May 6 10:51:57 2010 > attachFlags: busy > volume: 537084461 partition: /vicepe procedure: Dump > packetRead: 2 lastReceiveTime: 1273135986 packetSend: 830417 lastSendTime: 1273135986 > -------------------------------------- Some minutes later: > afstemp1# /usr/openafs/sbin/vos status localhost -local > Total transactions: 2 > -------------------------------------- > transaction: 3097767 created: Thu May 6 10:54:01 2010 > attachFlags: busy > volume: 537086849 partition: /vicepe procedure: Dump > packetRead: 2 lastReceiveTime: 1273136979 packetSend: 5097452 lastSendTime: 1273136979 > -------------------------------------- > > -------------------------------------- > transaction: 3097758 created: Thu May 6 11:01:17 2010 > attachFlags: busy > volume: 537084461 partition: /vicepe procedure: Dump > -------------------------------------- The transaction 3097758 changes creation date to a date after the transaction 3097767 which obviously is younger. As this is all 1.4.7 (yes, long uptime) it may be known and/or a fixed bug. Does this ring a bell somewhere? Harald. From sanket@sanketagarwal.com Thu May 6 14:01:45 2010 From: sanket@sanketagarwal.com (Sanket Agarwal) Date: Thu, 6 May 2010 15:01:45 +0200 Subject: [OpenAFS-devel] Patch for XML switch for vos examine In-Reply-To: <62C84C16-5D54-4FE1-8527-A5900C7FB65A@umich.edu> References: <62C84C16-5D54-4FE1-8527-A5900C7FB65A@umich.edu> Message-ID: --00148502ae9b7f29ae0485ec8b31 Content-Type: text/plain; charset=ISO-8859-1 ( sorry for getting off the list ) I would say that fixing a bug would be a lot of trouble in case we have separate functions because we are doing a lot of code copying and hence bug copying. I now think having a single function with all the switches in place is OK w.r.t having separate functions for each. IMHO both techniques have their trade-offs. On Wed, May 5, 2010 at 5:15 PM, Steve Simmons wrote: > > On May 5, 2010, at 5:26 AM, Sanket Agarwal wrote: > > > Actually I have been thinking on the same lines for some time. The patch > was very hacky I agree. And there needs to be definite change to the patch > to a function which takes in the input as type of format. For example you > can have something lilke DisplayByFormat(..., int type) etc. > > > > But I think that's not going to save any redundancy. What I believe you > might end up with is something like, > > > > In function DisplayByFormat you'll have if/switch-case or some other > means of branching for each of the functionality of XML or RAW output. This > puts all the stuff in one place but if you want to still update it I'll have > to do it at each of the places. For example: > > > > if(type==RAW) > > fprintf(STDOUT, "RAW") > > else if(type==XML) > > fprintf(STDOUT, "XML") > > > > this would change to something like: > > > > if(type==XML) > > fprintf(STDOUT, "XML") > > else if(type==RAW) > > fprintf(STDOUT, "raw") > > > > In terms of modularity we don't gain much ? Besides if we dump all of > them in one place it becomes tougher for a new format to be supported. IMHO > it's not the most brilliant idea ? > > Yeah, and it actually starts getting uglier than that for repeating data. > SubEnumerateFOO is fine for stock -format and -format with xml, but breaks > down horribly for comma-separated version. csv is intended for input into > things like spreadsheets. As such, the number of fields has to be > predictable. The way I had intended to handle things like RO copies of a RW > volume was by multiple outputs, one per copy: > > root.afs,536872193,server,partition,......,RW > root.afs,536872193,server,partition,......,RO > root.afs,536872193,server2,partitiona,......,RO > root.afs,536872193,server3,partitionb,......,RO > > That doesn't fit well at all into the the current code where an Enumerate > function is called after all the fixed data is printed. I have some ideas > for how to do it better, but need to think them through at bit more. > > > Stepping back to the original issue - > > We've had a number of serious bugs in AFS which were exacerbated by what I > call "copy-and-pasteware". If you look over time at the code that does vos > move and vos copy, you'll see that they clearly do very similar functions. > But rather than isolating those similarities into smaller functions, > somebody did a lot of copy and paste of code. Later, bugs were found in the > locking code. Sometimes the bug was found in the move function, but the fix not applied to > the copy code. Sometimes it was the opposite. Sometimes different fixes were > applied to the two sections, and either fix was right - but not both > together. This was a nightmare to fix. > > I was concerned that we might be introducing the same problem into > XML/CSV/vanilla output from vos examine. We're running with an experimental > patch for shadow volumes, a RO copy of a volume that doesn't appear in the > vldb (sounds odd, I know, but just assume it's a good idea for the moment). > We take over the spare3 field for that. As part of the implementation, we > modified the output of 'vos e -format' to change the name of the field and > print 'Y' or 'N' to indicate if the volume is a shadow or not. In the 'one > subroutine per output format' world, one has to change all the output > functions to reflect the changed meaning of spare3. I' > > /* Print value of spare3 field as integer */ > if ( type == RAW ) > fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value ); > else if ( type == XML ) > fprintf( STDOUT, "\t\t%d\n", value ); > else if ( type == CSV ) > fprintf( STDOUT, "%,%d", value ); > > gets changed to > > /* Print value of shadow bit */ > > else if ( type == CSV ) { > fprintf( STDOUT, ",%s", TagYorN( value ) ); > } > > if ( type == RAW ) > fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value ); > else if ( type == XML ) > fprintf( STDOUT, "\t\t%d\n", value ); > else if ( type == CSV ) > fprintf( STDOUT, ",%s", TagYorN( value ); > > The last line assumes the existence of a helping function something like > > static char static *TagYorN( int val ) { > if ( val ) return "Y"; > return "N" > } > > In this case, all the changed needed to handle a changed data field are > closely connected in the code rather than being scattered all over the > place. But I think the problems with enumeration are going to force us into > separate printing functions with just the scattering I'm trying to avoid. > > Comments and thoughts welcomed. > > Best, > > Steve --00148502ae9b7f29ae0485ec8b31 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable ( sorry for getting off the list )
I would say that fixing a bug would b= e a lot of trouble in case we have separate functions because we are doing = a lot of code copying and hence bug copying. I now think having a single fu= nction with all the switches in place is OK w.r.t having separate functions= for each. IMHO both techniques have their trade-offs.

On Wed, May 5, 2010 at 5:15 PM, Steve Simmon= s <scs@umich.edu&= gt; wrote:

On May 5, 2010, at 5:26 AM, Sanket Agarwal wrote:

> Actually I have been thinking on the same lines for some time. The pat= ch was very hacky I agree. And there needs to be definite change to the pat= ch to a function which takes in the input as type of format. For example yo= u can have something lilke DisplayByFormat(..., int type) etc.
>
> But I think that's not going to save any redundancy. What I believ= e you might end up with is something like,
>
> In function DisplayByFormat you'll have if/switch-case or some oth= er means of branching for each of the functionality of XML or RAW output. T= his puts all the stuff in one place but if you want to still update it I= 9;ll have to do it at each of the places. For example:
>
> if(type=3D=3DRAW)
> =A0 =A0 fprintf(STDOUT, "RAW")
> else if(type=3D=3DXML)
> =A0 =A0 fprintf(STDOUT, "<xml>XML</xml>")
>
> this would change to something like:
>
> if(type=3D=3DXML)
> =A0 =A0 fprintf(STDOUT, "XML")
> else if(type=3D=3DRAW)
> =A0 =A0 fprintf(STDOUT, "<raw>raw</raw>")
>
> In terms of modularity we don't gain much ? Besides if we dump all= of them in one place it becomes tougher for a new format to be supported. = IMHO it's not the most brilliant idea ?

Yeah, and it actually starts getting uglier than that for repeating d= ata. SubEnumerateFOO is fine for stock -format and -format with xml, but br= eaks down horribly for comma-separated version. csv is intended for input i= nto things like spreadsheets. As such, the number of fields has to be predi= ctable. The way I had intended to handle things like RO copies of a RW volu= me was by multiple outputs, one per copy:

root.afs,536872193,server,partition,......,RW
root.afs,536872193,server,partition,......,RO
root.afs,536872193,server2,partitiona,......,RO
root.afs,536872193,server3,partitionb,......,RO

That doesn't fit well at all into the the current code where an Enumera= te function is called after all the fixed data is printed. I have some idea= s for how to do it better, but need to think them through at bit more.


Stepping back to the original issue -

We've had a number of serious bugs in AFS which were exacerbated by wha= t I call "copy-and-pasteware". If you look over time at the code = that does vos move and vos copy, you'll see that they clearly do very s= imilar functions. But rather than isolating those similarities into smaller= functions, somebody did a lot of copy and paste of code. Later, bugs were = found in the locking code.=A0=A0
Sometimes the bug= was found in the move function, but the fix not applied to the copy code. = Sometimes it was the opposite. Sometimes different fixes were applied to th= e two sections, and either fix was right - but not both together. This was = a nightmare to fix.

I was concerned that we might be introducing the same problem into XML/CSV/= vanilla output from vos examine. We're running with an experimental pat= ch for shadow volumes, a RO copy of a volume that doesn't appear in the= vldb (sounds odd, I know, but just assume it's a good idea for the mom= ent). We take over the spare3 field for that. As part of the implementation= , we modified the output of 'vos e -format' to change the name of t= he field and print 'Y' or 'N' to indicate if the volume is = a shadow or not. In the 'one subroutine per output format' world, o= ne has to change all the output functions to reflect the changed meaning of= spare3. I'

/* Print value of spare3 field as integer */
if ( type =3D=3D RAW )
=A0 =A0fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value );<= br> else if ( type =3D=3D XML )
=A0 =A0fprintf( STDOUT, "\t\t<spare3>%d</spare3>\n",= value );
else if ( type =3D=3D CSV )
=A0 =A0fprintf( STDOUT, "%,%d", value );

gets changed to

/* Print value of shadow bit */

else if ( type =3D=3D CSV ) {
=A0 =A0fprintf( STDOUT, ",%s", TagYorN( value ) );
}

if ( type =3D=3D RAW )
=A0 =A0fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value );<= br> else if ( type =3D=3D XML )
=A0 =A0fprintf( STDOUT, "\t\t<spare3>%d</spare3>\n",= value );
else if ( type =3D=3D CSV )
=A0 =A0fprintf( STDOUT, ",%s", TagYorN( value );

The last line assumes the existence of a helping function something like
static char static *TagYorN( int val ) {
=A0 =A0if ( val ) return "Y";
=A0 =A0return "N"
}

In this case, all the changed needed to handle a changed data field are clo= sely connected in the code rather than being scattered all over the place. = But I think the problems with enumeration are going to force us into separa= te printing functions with just the scattering I'm trying to avoid.

Comments and thoughts welcomed.

Best,

Steve

--00148502ae9b7f29ae0485ec8b31-- From adeason@sinenomine.net Thu May 6 15:37:32 2010 From: adeason@sinenomine.net (Andrew Deason) Date: Thu, 6 May 2010 09:37:32 -0500 Subject: [OpenAFS-devel] Re: Patch for XML switch for vos examine References: <62C84C16-5D54-4FE1-8527-A5900C7FB65A@umich.edu> Message-ID: <20100506093732.7350cc16.adeason@sinenomine.net> Just one thing... On Thu, 6 May 2010 15:01:45 +0200 Sanket Agarwal wrote: > On Wed, May 5, 2010 at 5:15 PM, Steve Simmons wrote: > > /* Print value of spare3 field as integer */ > > if ( type == RAW ) > > fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value ); > > else if ( type == XML ) > > fprintf( STDOUT, "\t\t%d\n", value ); > > else if ( type == CSV ) > > fprintf( STDOUT, "%,%d", value ); Once we get to multiple output formats, I'd have thought this to turn into arrays of function pointers, instead of several if/else ladders (a la the cache types in the client code). So you'd have something like output_type->print_spare3("spare3", value); And you'd define static struct vos_output raw_output = { /* ... */ .print_spare3 = print_raw_int_optional, /* ... */ }; static struct vos_output xml_output = { /* ... */ .print_spare3 = print_xml_int, /* ... */ }; static void print_raw_optional(const char *name, int value) { fprintf(STDOUT, "%s\t\t %d (Optional)\n", name, value); } /* ... etc */ Or whatever. And use one of those structs depending on the -format argument. So, you don't have entirely separate enumeration functions, etc. What values you print and in what order are the same for all; the only difference is how they are output. In theory I think the problems in e.g. SubEnumerate that Steve mentions are surmountable if you just give each callback function enough context. But I don't know, a lot of the logic is still scattered, so I don't know how much better that would be. Just a thought. -- Andrew Deason adeason@sinenomine.net From adeason@sinenomine.net Fri May 7 00:06:07 2010 From: adeason@sinenomine.net (Andrew Deason) Date: Thu, 6 May 2010 18:06:07 -0500 Subject: [OpenAFS-devel] Autoconf 2.60 requirement Message-ID: <20100506180607.6303ef13.adeason@sinenomine.net> A little while ago while implementing some positional I/O enhancements for the volume package, the non-Windows build system started using AC_USE_SYSTEM_EXTENSIONS. (In the specific case of the positional I/O stuff, it was for pread/pwrite prototypes, but it does other things.) AC_USE_SYSTEM_EXTENSIONS only exists in autoconf 2.60 and newer. For me, and the few people discussing this at the time, this isn't much of a problem; usually we run regen.sh on systems with newish autoconf's. But doing this means that running regen.sh will not work (by default) on, for example, RHEL5. Debian Lenny is fine, as is at least OS X 10.6, and Solaris with OpenCSW. I assume modern Fedora, OpenSuSE (not SLES), OpenSolaris, etc are fine, too. Running regen.sh can occur on any machine before you build, but it can get a bit annoying if you're used to just pulling from git and building on systems with older autoconf's. This email serves to publicly notify people that this has happened, and to welcome any objections people may have. This probably should have been sent out before we made the move to require 2.60, but when AC_USE_SYSTEM_EXTENSIONS was first added, I didn't realize it was a new autoconf addition. 'Oops' Although right now git master requires autoconf 2.60 to regen, it's still pretty easy to switch it back. If nobody objects, we're going to keep using more autoconf features that require 2.60, so it will become more difficult to switch it back over time. So, if you build on non-Windows directly from git often, and this bothers you, it would be best to speak up now before we can't change it back. -- Andrew Deason adeason@sinenomine.net From rra@stanford.edu Fri May 7 00:11:36 2010 From: rra@stanford.edu (Russ Allbery) Date: Thu, 06 May 2010 16:11:36 -0700 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: <20100506180607.6303ef13.adeason@sinenomine.net> (Andrew Deason's message of "Thu, 6 May 2010 18:06:07 -0500") References: <20100506180607.6303ef13.adeason@sinenomine.net> Message-ID: <877hnglj6f.fsf@windlord.stanford.edu> Andrew Deason writes: > Running regen.sh can occur on any machine before you build, but it can > get a bit annoying if you're used to just pulling from git and building > on systems with older autoconf's. This email serves to publicly notify > people that this has happened, and to welcome any objections people may > have. This probably should have been sent out before we made the move to > require 2.60, but when AC_USE_SYSTEM_EXTENSIONS was first added, I > didn't realize it was a new autoconf addition. 'Oops' I did. I strongly support requiring newer versions of Autoconf rather than using inferior probes or reinventing the wheel, particularly when they're already nearly four years old. Autoconf is improving significantly in ways that require one to maintain far less code in each package. If one absolutely must do development on a very slow-releasing platform with outdated software, Autoconf is trivial to install (assuming that M4 isn't so ancient that it can't run Autoconf). -- Russ Allbery (rra@stanford.edu) From jason@rampaginggeek.com Fri May 7 02:30:08 2010 From: jason@rampaginggeek.com (Jason Edgecombe) Date: Thu, 06 May 2010 21:30:08 -0400 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: <20100506180607.6303ef13.adeason@sinenomine.net> References: <20100506180607.6303ef13.adeason@sinenomine.net> Message-ID: <4BE36D20.2080101@rampaginggeek.com> Andrew Deason wrote: > A little while ago while implementing some positional I/O enhancements > for the volume package, the non-Windows build system started using > AC_USE_SYSTEM_EXTENSIONS. (In the specific case of the positional I/O > stuff, it was for pread/pwrite prototypes, but it does other things.) > AC_USE_SYSTEM_EXTENSIONS only exists in autoconf 2.60 and newer. > > For me, and the few people discussing this at the time, this isn't much > of a problem; usually we run regen.sh on systems with newish autoconf's. > But doing this means that running regen.sh will not work (by default) > on, for example, RHEL5. Debian Lenny is fine, as is at least OS X 10.6, > and Solaris with OpenCSW. I assume modern Fedora, OpenSuSE (not SLES), > OpenSolaris, etc are fine, too. > > Running regen.sh can occur on any machine before you build, but it can > get a bit annoying if you're used to just pulling from git and building > on systems with older autoconf's. This email serves to publicly notify > people that this has happened, and to welcome any objections people may > have. This probably should have been sent out before we made the move to > require 2.60, but when AC_USE_SYSTEM_EXTENSIONS was first added, I > didn't realize it was a new autoconf addition. 'Oops' > > Although right now git master requires autoconf 2.60 to regen, it's > still pretty easy to switch it back. If nobody objects, we're going to > keep using more autoconf features that require 2.60, so it will become > more difficult to switch it back over time. So, if you build on > non-Windows directly from git often, and this bothers you, it would be > best to speak up now before we can't change it back. > Will this change the ability to compile production releases from source on older platforms? Thanks, Jason From rra@stanford.edu Fri May 7 02:30:52 2010 From: rra@stanford.edu (Russ Allbery) Date: Thu, 06 May 2010 18:30:52 -0700 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: <4BE36D20.2080101@rampaginggeek.com> (Jason Edgecombe's message of "Thu, 06 May 2010 21:30:08 -0400") References: <20100506180607.6303ef13.adeason@sinenomine.net> <4BE36D20.2080101@rampaginggeek.com> Message-ID: <87ljbwjy5v.fsf@windlord.stanford.edu> Jason Edgecombe writes: > Will this change the ability to compile production releases from source > on older platforms? No, production releases will always have all those files pre-generated. -- Russ Allbery (rra@stanford.edu) From shadow@gmail.com Fri May 7 03:26:01 2010 From: shadow@gmail.com (Derrick Brashear) Date: Thu, 6 May 2010 22:26:01 -0400 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: <877hnglj6f.fsf@windlord.stanford.edu> References: <20100506180607.6303ef13.adeason@sinenomine.net> <877hnglj6f.fsf@windlord.stanford.edu> Message-ID: On Thu, May 6, 2010 at 7:11 PM, Russ Allbery wrote: > Andrew Deason writes: > >> Running regen.sh can occur on any machine before you build, but it can >> get a bit annoying if you're used to just pulling from git and building >> on systems with older autoconf's. This email serves to publicly notify >> people that this has happened, and to welcome any objections people may >> have. This probably should have been sent out before we made the move to >> require 2.60, but when AC_USE_SYSTEM_EXTENSIONS was first added, I >> didn't realize it was a new autoconf addition. 'Oops' > > I did. > > I strongly support requiring newer versions of Autoconf rather than using > inferior probes or reinventing the wheel, particularly when they're > already nearly four years old. =A0Autoconf is improving significantly in > ways that require one to maintain far less code in each package. =A0If on= e > absolutely must do development on a very slow-releasing platform with > outdated software, Autoconf is trivial to install (assuming that M4 isn't > so ancient that it can't run Autoconf). 2.60 requires newer than just "not ancient", apparently. I don't care, but it's worth noting. --=20 Derrick From rdw@steadingsoftware.com Fri May 7 09:21:08 2010 From: rdw@steadingsoftware.com (Rod Widdowson) Date: Fri, 7 May 2010 09:21:08 +0100 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: References: <20100506180607.6303ef13.adeason@sinenomine.net> <877hnglj6f.fsf@windlord.stanford.edu> Message-ID: <004201caedbe$40a959d0$c1fc0d70$@com> > > I strongly support requiring newer versions of Autoconf rather than using > > inferior probes or reinventing the wheel, particularly when they're > > already nearly four years old. =A0Autoconf is improving = significantly in > > ways that require one to maintain far less code in each package. = =A0If one > > absolutely must do development on a very slow-releasing platform = with > > outdated software, Autoconf is trivial to install (assuming that M4 isn't > > so ancient that it can't run Autoconf). >=20 > 2.60 requires newer than just "not ancient", apparently. Not sure I buy that: RHEL/Centos5 is the most recent enterprise = offering, so it's going to be around for a _long_ time and it is currently pegged at 1.59. I'd be the first to admit that I don't understand these things, = but we probably need to make sure that people _deploying on_ enterprise operating systems are not disenfranchised. =20 > I don't care, but it's worth noting. I guess I care personally only in that I wasted a day in an ultimately fruitless attempt to get a recent autoconf/m4 onto my Centos 5 build environment. If anyone has a proven working recipe they'd like to share (no, the fc srpms don't 'just work') I'd be grateful (like I say, I = don't do a lot of this). I'll even put it into the wiki if people think that = would help. /Rod From christof.hanke@rzg.mpg.de Fri May 7 11:33:38 2010 From: christof.hanke@rzg.mpg.de (Christof Hanke) Date: Fri, 7 May 2010 12:33:38 +0200 Subject: [OpenAFS-devel] Re: Patch for XML switch for vos examine In-Reply-To: <20100506093732.7350cc16.adeason@sinenomine.net> References: <20100506093732.7350cc16.adeason@sinenomine.net> Message-ID: <201005071233.44210.christof.hanke@rzg.mpg.de> --Boundary-00=_Ey+4L7SKlWXaNkd Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit One more thing, I have implemented something similar for the osd-command, but only csv , ASCII and HTML (simple table). I did this by adding a complex struct table to libcmd.a, so that it is available to all commands linking to it. ATM, it can only output simple tables (with one Header- and one Footer-line if given). You can also sort by one column. E.g. # ./vos partinfo afs14.rzg.mpg.de -ttype 1 Partition,FreeSpace,TotalSpace /vicepa,120201568,1928200192 /vicepg,170753232,1702836224 /viceps,211810376,1597898752 /vicepw,27915468,235865600 # ./vos partinfo afs14.rzg.mpg.de -ttype 1 -tsort 2 Partition,FreeSpace,TotalSpace /vicepw,27914820,235865600 /vicepa,120201568,1928200192 /vicepg,170753232,1702836224 /viceps,211810376,1597898752 Unfortunately, there is a problem ATM with my Yahoo-OpenID and gerrit, so I can't push it up there, but you can find the patches against master here: /afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output.patch /afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output_example.patch Maybe we can integrate the xml output there ? I guess it should be possible. Christof Am Donnerstag, 6. Mai 2010 16:37:32 schrieb Andrew Deason: > Just one thing... > > On Thu, 6 May 2010 15:01:45 +0200 > > Sanket Agarwal wrote: > > On Wed, May 5, 2010 at 5:15 PM, Steve Simmons wrote: > > > /* Print value of spare3 field as integer */ > > > if ( type == RAW ) > > > fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value ); > > > else if ( type == XML ) > > > fprintf( STDOUT, "\t\t%d\n", value ); > > > else if ( type == CSV ) > > > fprintf( STDOUT, "%,%d", value ); > > Once we get to multiple output formats, I'd have thought this to turn > into arrays of function pointers, instead of several if/else ladders (a > la the cache types in the client code). So you'd have something like > > output_type->print_spare3("spare3", value); > > And you'd define > > static struct vos_output raw_output = { > /* ... */ > .print_spare3 = print_raw_int_optional, > /* ... */ > }; > > static struct vos_output xml_output = { > /* ... */ > .print_spare3 = print_xml_int, > /* ... */ > }; > > static void > print_raw_optional(const char *name, int value) > { > fprintf(STDOUT, "%s\t\t %d (Optional)\n", name, value); > } > > /* ... etc */ > > Or whatever. And use one of those structs depending on the -format > argument. > > So, you don't have entirely separate enumeration functions, etc. What > values you print and in what order are the same for all; the only > difference is how they are output. In theory I think the problems in > e.g. SubEnumerate that Steve mentions are surmountable if you just give > each callback function enough context. > > But I don't know, a lot of the logic is still scattered, so I don't know > how much better that would be. Just a thought. --Boundary-00=_Ey+4L7SKlWXaNkd Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit

One more thing,

I have implemented something similar for the osd-command, but only csv , ASCII and HTML (simple table).

I did this by adding a complex struct table to libcmd.a, so that it is available to all commands linking to it.

ATM, it can only output simple tables (with one Header- and one Footer-line if given).

You can also sort by one column.

E.g.

# ./vos partinfo afs14.rzg.mpg.de -ttype 1

Partition,FreeSpace,TotalSpace

/vicepa,120201568,1928200192

/vicepg,170753232,1702836224

/viceps,211810376,1597898752

/vicepw,27915468,235865600

# ./vos partinfo afs14.rzg.mpg.de -ttype 1 -tsort 2

Partition,FreeSpace,TotalSpace

/vicepw,27914820,235865600

/vicepa,120201568,1928200192

/vicepg,170753232,1702836224

/viceps,211810376,1597898752

Unfortunately, there is a problem ATM with my Yahoo-OpenID and gerrit, so I can't push it up there, but you can find the patches against master here:

/afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output.patch

/afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output_example.patch

Maybe we can integrate the xml output there ? I guess it should be possible.

Christof

Am Donnerstag, 6. Mai 2010 16:37:32 schrieb Andrew Deason:

> Just one thing...

>

> On Thu, 6 May 2010 15:01:45 +0200

>

> Sanket Agarwal <sanket@sanketagarwal.com> wrote:

> > On Wed, May 5, 2010 at 5:15 PM, Steve Simmons <scs@umich.edu> wrote:

> > > /* Print value of spare3 field as integer */

> > > if ( type == RAW )

> > > fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value );

> > > else if ( type == XML )

> > > fprintf( STDOUT, "\t\t<spare3>%d</spare3>\n", value );

> > > else if ( type == CSV )

> > > fprintf( STDOUT, "%,%d", value );

>

> Once we get to multiple output formats, I'd have thought this to turn

> into arrays of function pointers, instead of several if/else ladders (a

> la the cache types in the client code). So you'd have something like

>

> output_type->print_spare3("spare3", value);

>

> And you'd define

>

> static struct vos_output raw_output = {

> /* ... */

> .print_spare3 = print_raw_int_optional,

> /* ... */

> };

>

> static struct vos_output xml_output = {

> /* ... */

> .print_spare3 = print_xml_int,

> /* ... */

> };

>

> static void

> print_raw_optional(const char *name, int value)

> {

> fprintf(STDOUT, "%s\t\t %d (Optional)\n", name, value);

> }

>

> /* ... etc */

>

> Or whatever. And use one of those structs depending on the -format

> argument.

>

> So, you don't have entirely separate enumeration functions, etc. What

> values you print and in what order are the same for all; the only

> difference is how they are output. In theory I think the problems in

> e.g. SubEnumerate that Steve mentions are surmountable if you just give

> each callback function enough context.

>

> But I don't know, a lot of the logic is still scattered, so I don't know

> how much better that would be. Just a thought.

--Boundary-00=_Ey+4L7SKlWXaNkd-- From steven.jenkins@gmail.com Fri May 7 14:26:36 2010 From: steven.jenkins@gmail.com (Steven Jenkins) Date: Fri, 7 May 2010 09:26:36 -0400 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: <004201caedbe$40a959d0$c1fc0d70$@com> References: <20100506180607.6303ef13.adeason@sinenomine.net> <877hnglj6f.fsf@windlord.stanford.edu> <004201caedbe$40a959d0$c1fc0d70$@com> Message-ID: On Fri, May 7, 2010 at 4:21 AM, Rod Widdowson wr= ote: ... > I guess I care personally only in that I wasted a day in an ultimately > fruitless attempt to get a recent autoconf/m4 onto my Centos 5 build > environment. =A0If anyone has a proven working recipe they'd like to shar= e > (no, the fc srpms don't 'just work') I'd be grateful (like I say, I don't= do > a lot of this). =A0I'll even put it into the wiki if people think that wo= uld > help. > My suggestion is that someone package autoconf rpms for rhel5/fc family and post them on the OpenAFS repo. In that way, people doing development on RH-based systems can do a simply rpm upgrade and be off and running. Steven From warlord@MIT.EDU Fri May 7 14:50:23 2010 From: warlord@MIT.EDU (Derek Atkins) Date: Fri, 07 May 2010 09:50:23 -0400 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: <004201caedbe$40a959d0$c1fc0d70$@com> (Rod Widdowson's message of "Fri, 7 May 2010 09:21:08 +0100") References: <20100506180607.6303ef13.adeason@sinenomine.net> <877hnglj6f.fsf@windlord.stanford.edu> <004201caedbe$40a959d0$c1fc0d70$@com> Message-ID: "Rod Widdowson" writes: >> > I strongly support requiring newer versions of Autoconf rather than > using >> > inferior probes or reinventing the wheel, particularly when they're >> > already nearly four years old. =C2=A0Autoconf is improving significant= ly in >> > ways that require one to maintain far less code in each package. =C2= =A0If one >> > absolutely must do development on a very slow-releasing platform with >> > outdated software, Autoconf is trivial to install (assuming that M4 > isn't >> > so ancient that it can't run Autoconf). >>=20 >> 2.60 requires newer than just "not ancient", apparently. > > Not sure I buy that: RHEL/Centos5 is the most recent enterprise offering,= so > it's going to be around for a _long_ time and it is currently pegged at > 1.59. I'd be the first to admit that I don't understand these things, but > we probably need to make sure that people _deploying on_ enterprise > operating systems are not disenfranchised. RHEL6 is in beta right now. I'd not worry about it personally because while EL5 will still be in use for a while I certainly wouldn't want to be sitting on it doing active development, only testing (for which I can run regen on another system and then use the results on EL5). -derek --=20 Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory Member, MIT Student Information Processing Board (SIPB) URL: http://web.mit.edu/warlord/ PP-ASEL-IA N1NWH warlord@MIT.EDU PGP key available From botsch@cnf.cornell.edu Fri May 7 14:51:38 2010 From: botsch@cnf.cornell.edu (Dave B) Date: Fri, 07 May 2010 09:51:38 -0400 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: References: <20100506180607.6303ef13.adeason@sinenomine.net> <877hnglj6f.fsf@windlord.stanford.edu> <004201caedbe$40a959d0$c1fc0d70$@com> Message-ID: <1273240298.31755.5.camel@water.cnf.cornell.edu> I would be afraid of this breaking something someplace else (altho, with these two tools, prolly not. That said, we use RHEL4 here. For some software requiring newer autoconf versions than what came with RHEL4, I was able to easily compile autoconf (and the required m4) from source and install into /usr/local/ . For m4 1.4.14, I simply did: ./configure --prefix=/usr/local/m4 make && make install For autoconf 2.65, I then did: export PATH=/usr/local/m4/bin:$PATH ./configure --prefix=/usr/local/autoconf make && make install On Fri, 2010-05-07 at 09:26 -0400, Steven Jenkins wrote: > On Fri, May 7, 2010 at 4:21 AM, Rod Widdowson wrote: > ... > > I guess I care personally only in that I wasted a day in an ultimately > > fruitless attempt to get a recent autoconf/m4 onto my Centos 5 build > > environment. If anyone has a proven working recipe they'd like to share > > (no, the fc srpms don't 'just work') I'd be grateful (like I say, I don't do > > a lot of this). I'll even put it into the wiki if people think that would > > help. > > > > My suggestion is that someone package autoconf rpms for rhel5/fc > family and post them on the OpenAFS repo. In that way, people doing > development on RH-based systems can do a simply rpm upgrade and be off > and running. > > Steven > _______________________________________________ > OpenAFS-devel mailing list > OpenAFS-devel@openafs.org > https://lists.openafs.org/mailman/listinfo/openafs-devel -- ******************************** David William Botsch Programmer/Analyst CNF Computing botsch@cnf.cornell.edu ******************************** From jason@rampaginggeek.com Sat May 8 00:22:27 2010 From: jason@rampaginggeek.com (Jason Edgecombe) Date: Fri, 07 May 2010 19:22:27 -0400 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: References: <20100506180607.6303ef13.adeason@sinenomine.net> <877hnglj6f.fsf@windlord.stanford.edu> <004201caedbe$40a959d0$c1fc0d70$@com> Message-ID: <4BE4A0B3.2090202@rampaginggeek.com> Steven Jenkins wrote: > On Fri, May 7, 2010 at 4:21 AM, Rod Widdowson wrote: > ... > >> I guess I care personally only in that I wasted a day in an ultimately >> fruitless attempt to get a recent autoconf/m4 onto my Centos 5 build >> environment. If anyone has a proven working recipe they'd like to share >> (no, the fc srpms don't 'just work') I'd be grateful (like I say, I don't do >> a lot of this). I'll even put it into the wiki if people think that would >> help. >> >> > > My suggestion is that someone package autoconf rpms for rhel5/fc > family and post them on the OpenAFS repo. In that way, people doing > development on RH-based systems can do a simply rpm upgrade and be off > and running. > If you provide autoconf RPMs, please put them in a different repo from the openafs RPMs. Some people may get a a surprise if they connect to the openafs yum repo and upgrade Redhat-supplied RPMs by accident. Jason From sxw@inf.ed.ac.uk Sat May 8 13:18:34 2010 From: sxw@inf.ed.ac.uk (Simon Wilkinson) Date: Sat, 8 May 2010 13:18:34 +0100 Subject: [OpenAFS-devel] Autoconf 2.60 requirement In-Reply-To: References: <20100506180607.6303ef13.adeason@sinenomine.net> <877hnglj6f.fsf@windlord.stanford.edu> <004201caedbe$40a959d0$c1fc0d70$@com> Message-ID: On 7 May 2010, at 14:26, Steven Jenkins wrote: >=20 > My suggestion is that someone package autoconf rpms for rhel5/fc > family and post them on the OpenAFS repo. In that way, people doing > development on RH-based systems can do a simply rpm upgrade and be off > and running. I have builds of the Fedora version of autoconf 2.65 (and the necessary = m4 version) for RHEL5, which I'll look into making available. For the = reasons others have noted, I don't think these should go in the OpenAFS = yum repository. Cheers, Simon. From adeason@sinenomine.net Sun May 9 19:00:52 2010 From: adeason@sinenomine.net (Andrew Deason) Date: Sun, 9 May 2010 13:00:52 -0500 Subject: [OpenAFS-devel] Re: vos status: Strange creation times References: <20100506010949.7DC3D115FD0@surgeon.pdc.kth.se> <20100506.111621.211341155.haba@habanero.pdc.kth.se> <20100506.113016.141207335.haba@habanero.pdc.kth.se> Message-ID: <20100509130052.d1278eb7.adeason@sinenomine.net> On Thu, 06 May 2010 11:30:16 +0200 (CEST) Harald Barth wrote: > The transaction 3097758 changes creation date to a date after the > transaction 3097767 which obviously is younger. That 'created' field doesn't actually track the creation time of the transaction. It tracks the last time something touched the transaction, which usually does correspond to when it was created, but not always. That is, creating a transaction sets that time, but so does issuing an AFSVolDump rpc. The time is also set when the volserver releases a reference on the transaction, which is what I think you're seeing there. Since your second 'vos status' output doesn't contain the RX call information, I'm assuming 'vos status' was called after AFSVolDumpV2() returned, but before the transaction was deleted. The last thing AFSVolDumpV2() does is release the transaction reference, which updates the transaction time. Normally 'vos' would delete the transaction right after that, so I'm assuming either you got this output right before it did, or the 'vos' command that issued the dump is either hanging or it crashed or something. I realize the documented meaning of that field does not agree with the documented meaning for it. I assume the documentation should just be updated, unless there is demand for tracking the transaction creation time? I assume the 'vos status' field name shouldn't change so as to not break output-scraping scripts, though the name is misleading. I don't think the semantics of the internal field can change easily, since the volserver may depend on it.... could just add a new transaction field to track the creation time, though. -- Andrew Deason adeason@sinenomine.net From haba@kth.se Mon May 10 11:01:16 2010 From: haba@kth.se (Harald Barth) Date: Mon, 10 May 2010 12:01:16 +0200 (CEST) Subject: [OpenAFS-devel] Re: vos status: Strange creation times In-Reply-To: <20100509130052.d1278eb7.adeason@sinenomine.net> References: <20100506.111621.211341155.haba@habanero.pdc.kth.se> <20100506.113016.141207335.haba@habanero.pdc.kth.se> <20100509130052.d1278eb7.adeason@sinenomine.net> Message-ID: <20100510.120116.166454377.haba@habanero.pdc.kth.se> To leave it "as is" seems broken. So either change the name in the 'vos status' output or the calculation of the field. The question is which one is less troublesome. I don't think this should be solved by the "but we documented it over there" solution. Harald. From shadow@gmail.com Mon May 10 11:36:43 2010 From: shadow@gmail.com (Derrick Brashear) Date: Mon, 10 May 2010 06:36:43 -0400 Subject: [OpenAFS-devel] Re: vos status: Strange creation times In-Reply-To: <20100510.120116.166454377.haba@habanero.pdc.kth.se> References: <20100506.111621.211341155.haba@habanero.pdc.kth.se> <20100506.113016.141207335.haba@habanero.pdc.kth.se> <20100509130052.d1278eb7.adeason@sinenomine.net> <20100510.120116.166454377.haba@habanero.pdc.kth.se> Message-ID: On Mon, May 10, 2010 at 6:01 AM, Harald Barth wrote: > > > To leave it "as is" seems broken. So either change the name in the > 'vos status' output or the calculation of the field. The question is > which one is less troublesome. I don't think this should be solved > by the "but we documented it over there" solution. Who knows what parses vos status output that we'd break, though. -- Derrick From reuter@rzg.mpg.de Tue May 11 18:01:30 2010 From: reuter@rzg.mpg.de (Hartmut Reuter) Date: Tue, 11 May 2010 19:01:30 +0200 Subject: [OpenAFS-devel] read performance 1.5.74 Linux Message-ID: <4BE98D6A.6040307@rzg.mpg.de> I have now ported AFS/RXOSD to 1.5.74. I am testing the client against servers running 1.4.12-osd. My client configuration is memcache with chunksize 18 (256K). Writing to the fileserver and also to the rxosd is as fast as with the 1.4.12 client (I am testing on my laptop with the whole test-cell in the laptop, so 30 MB/s is already an acceptable value). But reading large files is terribly slow (~ 1 MB/s). With the 1.4.12 client read and write have about the same speed. with rxdebug -peer -long I can also see that some times in the rtt the fileserver or rxosd see is growing up to several seconds and then again going down to a ms. So there seems to be something strange in the rx-layer. It also shows a lot of resends (about 1 %). Any idea? Hartmut ----------------------------------------------------------------- Hartmut Reuter e-mail reuter@rzg.mpg.de phone +49-89-3299-1328 fax +49-89-3299-1301 RZG (Rechenzentrum Garching) web http://www.rzg.mpg.de/~hwr Computing Center of the Max-Planck-Gesellschaft (MPG) and the Institut fuer Plasmaphysik (IPP) ----------------------------------------------------------------- From jonas.sundberg@gmail.com Wed May 12 12:47:02 2010 From: jonas.sundberg@gmail.com (Jonas Sundberg) Date: Wed, 12 May 2010 13:47:02 +0200 Subject: [OpenAFS-devel] GSoC 2010 Introduction - Jonas Sundberg - StrSafe.h project Message-ID: Hello! My name is Jonas Sundberg, and I will implement the StrSafe.h functionality for OpenAFS during the summer as a Google Summer of Code project. For those of you interested in myself or the project, you can find a short biography in my previous introduction to the list [1] and more information on the project in the project page [2]. One question that I have before the coding starts is how to manage the code. Should I use the OpenAFS git repository for the project? If so, where in the repository should the code be added and should it be put in any specific branch? If you have any questions or comments about the project, feel free to contact me by e-mail or in the #openafs IRC channel where I have the nickname JSund. Jonas [1] http://www.mail-archive.com/openafs-devel@openafs.org/msg11962.html [2] http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/openafs/t127230761041 From jaltman@secure-endpoints.com Wed May 12 15:48:51 2010 From: jaltman@secure-endpoints.com (Jeffrey Altman) Date: Wed, 12 May 2010 10:48:51 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BE98D6A.6040307@rzg.mpg.de> References: <4BE98D6A.6040307@rzg.mpg.de> Message-ID: <4BEABFD3.2050800@secure-endpoints.com> This is a cryptographically signed message in MIME format. --------------ms020109050507040800030404 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 5/11/2010 1:01 PM, Hartmut Reuter wrote: >=20 > I have now ported AFS/RXOSD to 1.5.74. > I am testing the client against servers running 1.4.12-osd. >=20 > My client configuration is memcache with chunksize 18 (256K). > Writing to the fileserver and also to the rxosd is as fast as with the = 1.4.12 > client (I am testing on my laptop with the whole test-cell in the lapto= p, so 30 > MB/s is already an acceptable value). >=20 > But reading large files is terribly slow (~ 1 MB/s). With the 1.4.12 cl= ient read > and write have about the same speed. >=20 > with rxdebug -peer -long I can also see that some times in the rtt the > fileserver or rxosd see is growing up to several seconds and then again= going > down to a ms. So there seems to be something strange in the rx-layer. > It also shows a lot of resends (about 1 %). >=20 > Any idea? >=20 > Hartmut The first thing that comes to mind is that we found the rx library was dropping packets on the floor under high load. This was fixed in the 1.5.74 release but has not been fixed in the 1.4.12 release. The 1.5.74 client should be able to put more load on the file server as it does a much better job of efficiently reading from the page cache. Jeffrey Altman --------------ms020109050507040800030404 Content-Type: application/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 AQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA1MTIxNDQ4NTFaMCMGCSqGSIb3DQEJBDEWBBQKIA9W 4a/tE6fZ+nQnzt4tSOF4NzBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0 ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs 9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBAGcPEJhjpZ/rAFs/6KLCsquYgj5oFmjxX/EP egI9i4BVzHduUswH+VQUKfcYqC6GDFGVjOXwpdJF6Ik8CWYi0N2Slsz+XRtxj/lMDxZIfLy9 hHusRQRpH7bJxjQp/3XaA7eYgZbCO99lFz4R7qtYYKsSHmjpPAmzZlIj40Lc3G6DOoHT0vx8 QdYpwsPQcrh/Cw+pb6UILTmtz7lsRK6IAY5calDQlBGGnOhScuJH50ITVkF/vuGRtmLvfzH7 RU4k9l8vgf1ynvdfNqT+IoBc+ppI+gHxUjCZ2TTIfNsnFYgMM3x/eTdkOQCn/EoE5ZJKNci8 KDhCqqvaBZNsHoMX17EAAAAAAAA= --------------ms020109050507040800030404-- From scs@umich.edu Thu May 13 18:34:41 2010 From: scs@umich.edu (Steve Simmons) Date: Thu, 13 May 2010 13:34:41 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BEABFD3.2050800@secure-endpoints.com> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> Message-ID: <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> On May 12, 2010, at 10:48 AM, Jeffrey Altman wrote: > On 5/11/2010 1:01 PM, Hartmut Reuter wrote: >>=20 >> I have now ported AFS/RXOSD to 1.5.74. >> I am testing the client against servers running 1.4.12-osd. >>=20 >> My client configuration is memcache with chunksize 18 (256K). >> Writing to the fileserver and also to the rxosd is as fast as with = the 1.4.12 >> client (I am testing on my laptop with the whole test-cell in the = laptop, so 30 >> MB/s is already an acceptable value). >>=20 >> But reading large files is terribly slow (~ 1 MB/s). With the 1.4.12 = client read >> and write have about the same speed. >>=20 >> with rxdebug -peer -long I can also see that some times in the rtt = the >> fileserver or rxosd see is growing up to several seconds and then = again going >> down to a ms. So there seems to be something strange in the rx-layer. >> It also shows a lot of resends (about 1 %). >>=20 >> Any idea? >>=20 >> Hartmut >=20 > The first thing that comes to mind is that we found the rx library was > dropping packets on the floor under high load. This was fixed in the > 1.5.74 release but has not been fixed in the 1.4.12 release. Any feel for the net effect on throughput? Is the improvement = significant enough to consider backporting to 1.4.13? > The 1.5.74 client should be able to put more load on the file server > as it does a much better job of efficiently reading from the page > cache. I don't understand the connection here. Hartmut seems to be saying that = a 1.4.12osd client reading from a 1.4.12osd server runs 30x faster than = a 1.5.74osd client reading from a 1.4.12osd server. Improvements in = 1.5.74 client-side reading of the page cache shouldn't have any affect - = presumably one is only reading the file because it isn't in page or disk = cache. 30-fold is a pretty big number, too. Steve From jaltman@secure-endpoints.com Thu May 13 18:50:07 2010 From: jaltman@secure-endpoints.com (Jeffrey Altman) Date: Thu, 13 May 2010 13:50:07 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> Message-ID: <4BEC3BCF.2010308@secure-endpoints.com> This is a cryptographically signed message in MIME format. --------------ms060207090908040105030805 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 5/13/2010 1:34 PM, Steve Simmons wrote: >=20 > On May 12, 2010, at 10:48 AM, Jeffrey Altman wrote: >=20 >> On 5/11/2010 1:01 PM, Hartmut Reuter wrote: >>> >>> I have now ported AFS/RXOSD to 1.5.74. >>> I am testing the client against servers running 1.4.12-osd. >>> >>> My client configuration is memcache with chunksize 18 (256K). >>> Writing to the fileserver and also to the rxosd is as fast as with th= e 1.4.12 >>> client (I am testing on my laptop with the whole test-cell in the lap= top, so 30 >>> MB/s is already an acceptable value). >>> >>> But reading large files is terribly slow (~ 1 MB/s). With the 1.4.12 = client read >>> and write have about the same speed. >>> >>> with rxdebug -peer -long I can also see that some times in the rtt th= e >>> fileserver or rxosd see is growing up to several seconds and then aga= in going >>> down to a ms. So there seems to be something strange in the rx-layer.= >>> It also shows a lot of resends (about 1 %). >>> >>> Any idea? >>> >>> Hartmut >> >> The first thing that comes to mind is that we found the rx library was= >> dropping packets on the floor under high load. This was fixed in the >> 1.5.74 release but has not been fixed in the 1.4.12 release. >=20 > Any feel for the net effect on throughput? Is the improvement significa= nt enough to consider backporting to 1.4.13? Its a serious bug. It causes the Windows client stress test to have an average SMB request RTT of 51 seconds instead of under 5 seconds due to repeated RPC failures. The problem is that the Rx when under load drops packets on the floor by clearing the transmit queue before the packets have been sent and acknowledged. Since the queue is empty, the sender things there is no more work to do and will never retry. The receiver can only timeout. Regardless of which side of the connection the packets are dropped the RPC issuer must perform a retry of the request. These fixes do need to be back ported to 1.4. It has not been done yet. Before a 1.4.13 it will be done. >> The 1.5.74 client should be able to put more load on the file server >> as it does a much better job of efficiently reading from the page >> cache. >=20 > I don't understand the connection here. Hartmut seems to be saying that= a 1.4.12osd client reading from a 1.4.12osd server runs 30x faster than = a 1.5.74osd client reading from a 1.4.12osd server. Improvements in 1.5.7= 4 client-side reading of the page cache shouldn't have any affect - presu= mably one is only reading the file because it isn't in page or disk cache= =2E 30-fold is a pretty big number, too. The connection is this. If the client is able to issue more RPCs to the server in a shorter period of time, that puts stress on Rx and the likelihood of packets being discarded increases. As soon as packets are discarded, the transfer rate hits the floor. There are additional bottlenecks in Rx that have recently been removed as well. 1.5.74 no longer contains a bottleneck that prevented calls from ending while a request to allocate a new call was in flight. Allocations of new calls can block on outstanding packet processing so this reduced the ability of Rx to process calls in parallel. That in turn prevented multiple threads in the calling application to process multiple calls in parallel effectively. Another problem that has been fixed on master. The rx_rpc_stats mutex is supposed to be a fined grained lock. Unfortunately, the way it was used the mutex would halt all rx processing whenever a ReapConnections operation was performed. At some point of course, backporting the changes gets silly. We need to cut the 1.6 branch and begin to get off the 1.4 series. Its been nearly five years since 1.4.0 was released. Jeffrey Altman --------------ms060207090908040105030805 Content-Type: application/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 AQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA1MTMxNzUwMDdaMCMGCSqGSIb3DQEJBDEWBBQK4vRn dVAoY51CyNn3EVq+uYAPxjBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0 ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs 9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBACccpLj/DACrGWZ+kWHFExucaeofwu1cJXNa y7NiyqHTVXATm/W3HFTv77FLr8kjfMVT2CMKNK54QwBAx3iYdVrmKA3zPgtxGKxz8XN9lQXP TAuoiiL0t+qhaKwhMMZ32D3jY+nAZ8GbtztKGzvr/xSPNKkNWcrrRz1COsGz6PFw38GlnX5s wxSmUfVs/fK8JrPr1LTUASLISPu0L8Fe7zEwyQ4fV1jSHdPp5LInjrEDWJGNqXnGQNtSlVlh ND+4aNiy0CmeqXln/C3yoPAKNjhSncIB+lJwiMDFB5ocbRPJ4y7zzqV0gYmAw8oW9P35xF23 fImKrOuuWfc2X/Iwf3EAAAAAAAA= --------------ms060207090908040105030805-- From reuter@rzg.mpg.de Fri May 14 10:25:18 2010 From: reuter@rzg.mpg.de (Hartmut Reuter) Date: Fri, 14 May 2010 11:25:18 +0200 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BEC3BCF.2010308@secure-endpoints.com> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> Message-ID: <4BED16FE.7020802@rzg.mpg.de> To be sure it's not one of my modifications I built today a client from the original 1.5.74 source. The 1st thing that happens with memory cache is an oops because afs_linux_storeproc doesn't handle memcache corectly. But fixed that (using afs_GenericStoreProc instead for memcache) the performance looks as bad as with the 1.5.74-osd client: /afs/.notebook/u/hwr: write_test 100mb 0 100000000 write of 100000000 bytes took 1.434 sec. close took 0.126 sec. Total data rate = 62593 Kbytes/sec. for write /afs/.notebook/u/hwr: fs flush 100mb /afs/.notebook/u/hwr: read_test 100mb open of 100mb bytes took 0.000 sec. read of 100000000 bytes took 327.955 sec. Total data rate = 298 Kbytes/sec. for read /afs/.notebook/u/hwr: Then I applied patch I1a11798f to rx.c and built 1.5.74-osd again. There is a little improvement, but it's still very slow: ~/a/n: read_test 100mb open of 100mb bytes took 0.067 sec. read of 100000000 bytes took 29.154 sec. Total data rate = 3342 Kbytes/sec. for read ~/a/n: I think before giving this source to the users as 1.6 this problem has to be understood and solved! Hartmut Jeffrey Altman schrieb: > On 5/13/2010 1:34 PM, Steve Simmons wrote: >>> The first thing that comes to mind is that we found the rx library was >>> dropping packets on the floor under high load. This was fixed in the >>> 1.5.74 release but has not been fixed in the 1.4.12 release. >> Any feel for the net effect on throughput? Is the improvement significant enough to consider backporting to 1.4.13? > > Its a serious bug. It causes the Windows client stress test to have an > average SMB request RTT of 51 seconds instead of under 5 seconds due to > repeated RPC failures. The problem is that the Rx when under load drops > packets on the floor by clearing the transmit queue before the packets > have been sent and acknowledged. Since the queue is empty, the sender > things there is no more work to do and will never retry. The receiver > can only timeout. Regardless of which side of the connection the > packets are dropped the RPC issuer must perform a retry of the request. > > These fixes do need to be back ported to 1.4. It has not been done yet. > Before a 1.4.13 it will be done. > >>> The 1.5.74 client should be able to put more load on the file server >>> as it does a much better job of efficiently reading from the page >>> cache. >> I don't understand the connection here. Hartmut seems to be saying that a 1.4.12osd client reading from a 1.4.12osd server runs 30x faster than a 1.5.74osd client reading from a 1.4.12osd server. Improvements in 1.5.74 client-side reading of the page cache shouldn't have any affect - presumably one is only reading the file because it isn't in page or disk cache. 30-fold is a pretty big number, too. > > The connection is this. If the client is able to issue more RPCs to the > server in a shorter period of time, that puts stress on Rx and the > likelihood of packets being discarded increases. As soon as packets > are discarded, the transfer rate hits the floor. > > There are additional bottlenecks in Rx that have recently been removed > as well. 1.5.74 no longer contains a bottleneck that prevented calls > from ending while a request to allocate a new call was in flight. > Allocations of new calls can block on outstanding packet processing so > this reduced the ability of Rx to process calls in parallel. That in > turn prevented multiple threads in the calling application to process > multiple calls in parallel effectively. > > Another problem that has been fixed on master. The rx_rpc_stats mutex > is supposed to be a fined grained lock. Unfortunately, the way it was > used the mutex would halt all rx processing whenever a ReapConnections > operation was performed. > > At some point of course, backporting the changes gets silly. We need to > cut the 1.6 branch and begin to get off the 1.4 series. Its been nearly > five years since 1.4.0 was released. > > Jeffrey Altman > -- ----------------------------------------------------------------- Hartmut Reuter e-mail reuter@rzg.mpg.de phone +49-89-3299-1328 fax +49-89-3299-1301 RZG (Rechenzentrum Garching) web http://www.rzg.mpg.de/~hwr Computing Center of the Max-Planck-Gesellschaft (MPG) and the Institut fuer Plasmaphysik (IPP) ----------------------------------------------------------------- From sxw@inf.ed.ac.uk Sat May 15 15:40:47 2010 From: sxw@inf.ed.ac.uk (Simon Wilkinson) Date: Sat, 15 May 2010 15:40:47 +0100 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BED16FE.7020802@rzg.mpg.de> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> Message-ID: On 14 May 2010, at 10:25, Hartmut Reuter wrote: > /afs/.notebook/u/hwr: read_test 100mb > open of 100mb bytes took 0.000 sec. > read of 100000000 bytes took 327.955 sec. > Total data rate =3D 298 Kbytes/sec. for read > /afs/.notebook/u/hwr: >=20 > Then I applied patch I1a11798f to rx.c and built 1.5.74-osd again. > There is a little improvement, but it's still very slow: >=20 > ~/a/n: read_test 100mb > open of 100mb bytes took 0.067 sec. > read of 100000000 bytes took 29.154 sec. > Total data rate =3D 3342 Kbytes/sec. for read > ~/a/n: Maybe I'm misunderstanding you here, but the data rate above looks like = it's more than 10 times faster than that in your earlier test, which = seems like more than a little improvement. 3Mbytes/sec still seems slow, = though - the tests I've done show data rates (with 1.5) of the order of = 40Mbytes/sec. What figure do you see if you test using an unpatched = 1.4.x cache manager? > I think before giving this source to the users as 1.6 this problem has = to be > understood and solved! If you can reproduce this using a command line tool such as afsio, then = we could trying and track this down using git bisect - that's probably = going to be the best route. Testing with afsio would also let us = implicate the RX library, rather than the cache manager, as being the = source of the problem. Cheers, Simon. From reuter@rzg.mpg.de Sat May 15 18:58:09 2010 From: reuter@rzg.mpg.de (Hartmut Reuter) Date: Sat, 15 May 2010 19:58:09 +0200 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> Message-ID: <4BEEE0B1.4090101@rzg.mpg.de> Simon Wilkinson schrieb: > If you can reproduce this using a command line tool such as afsio, then we > could trying and track this down using git bisect - that's probably going to > be the best route. Testing with afsio would also let us implicate the RX > library, rather than the cache manager, as being the source of the problem. afsio seems to be visibly faster in the 1.4.12-osd version than in the 1.5.74-osd version. You are right, they differ nearly only in the rx-library. However, the difference is not a factor 10 but a factor 1.5, only. I reach 18 MB/s for read with the 1.5.74 afsio and 27 MB/s with that of 1.4.12. In both cases I read an 1gb file on my external usb-drive used as disk for the rxosd. When I read the same file through the 1.5.74-osd client with vicep-access enabled I reach 35 MB/s. But then most of the rx-traffic is avoided. So these 35 MB/s are about the speed of the disk. The rx-layer of userland programs is not identical with that in the kernel. So the lots of packet reclaims we see with the 1.5.74 client and subsequent packet losses which cause timeouts and resends seem to be the main bottleneck in the kernel client. Obviously they do not appear with afsio whatever version of rx it was linked against (seen with rxdebug -peer -long to the rxosd). Hartmut > > Cheers, > > Simon. > > _______________________________________________ OpenAFS-devel mailing list > OpenAFS-devel@openafs.org > https://lists.openafs.org/mailman/listinfo/openafs-devel -- ----------------------------------------------------------------- Hartmut Reuter e-mail reuter@rzg.mpg.de phone +49-89-3299-1328 fax +49-89-3299-1301 RZG (Rechenzentrum Garching) web http://www.rzg.mpg.de/~hwr Computing Center of the Max-Planck-Gesellschaft (MPG) and the Institut fuer Plasmaphysik (IPP) ----------------------------------------------------------------- From sxw@inf.ed.ac.uk Sun May 16 16:57:58 2010 From: sxw@inf.ed.ac.uk (Simon Wilkinson) Date: Sun, 16 May 2010 16:57:58 +0100 Subject: [OpenAFS-devel] Trivial rebase detection enabled on gerrit Message-ID: I've just enabled trivial rebase detection on gerrit. =46rom now on, if a change is made that can be identified as being a = pure rebase (ie, the git patch-id doesn't change, and the commit message = remains identical), gerrit will automatically reapply all of the review = scores from the previous version of the patch. Hopefully this will mean = that our commit messages better reflect the review status of changes = which require rebasing before submission. This is also our first application of gerrit's commit hook feature, = which I'm planning great things for... Cheers, Simon. From jaltman@secure-endpoints.com Mon May 17 04:26:07 2010 From: jaltman@secure-endpoints.com (Jeffrey Altman) Date: Sun, 16 May 2010 23:26:07 -0400 Subject: [OpenAFS-devel] Last day of pre-registration for the 2010 AFS and Kerberos Best Practices Workshop Message-ID: <4BF0B74F.2050109@secure-endpoints.com> This is a cryptographically signed message in MIME format. --------------ms000605010201020007030104 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable As a reminder, Monday May 17th is the last day to pre-register for the 2010 AFS and Kerberos Best Practices Workshop which is being held at the University of Illinois in Urbana-Champain, Illinois, USA the week of May 24 to 28. The workshop consists of a full day tutorial on using and administering AFS on Monday; a full day tutorial on Kerberos and related tools on Tuesday; and two and half days of talks, panels and status reports on AFS and Kerberos. A social event will be held on Thursday May 27th. On-site registration will be available at an increased cost. Jeffrey Altman for the AFS & Kerberos Best Practices Workshop Organizers http://workshop.openafs.org/ --------------ms000605010201020007030104 Content-Type: application/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 AQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA1MTcwMzI2MDdaMCMGCSqGSIb3DQEJBDEWBBTzA62O UTba45N8VFUSo9W+Y7RX/jBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0 ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs 9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBAEsvnQGCJThcQJjONZ6/uXq3V1AqoPJGD3se /izn9KvpIIq/mmByJx50EBFx12gk2UkJljmQfKw+ANT1Y/H6TuhmdDO+Dg81u6CmlJT25HxN /WG6zbmlAK7WdfmDV9NGVEfL0LSGE/0TBu+xu3iw4mTaPqnJ0Qjqo+HSfwMgkTE2lU1qMEdV Q1MO8zulTd4bBHwkAgWjfaV3h/G1jZD/fZEBpJ7vJeA+l5giaHt8aIARmdoVLzkBptxqLsHz XZNGKtEZ5/wcTjN3J1LzBH+5n88+IVx1zYI8VRtqCA6Wr/CYeVpx9ARb5Wu+f+INg+gtZ3EF JNU9QN7sBdMb9MnsZ9cAAAAAAAA= --------------ms000605010201020007030104-- From christof.hanke@rzg.mpg.de Mon May 17 11:18:42 2010 From: christof.hanke@rzg.mpg.de (Christof Hanke) Date: Mon, 17 May 2010 12:18:42 +0200 Subject: [OpenAFS-devel] Re: Patch for XML switch for vos examine In-Reply-To: <201005071233.44210.christof.hanke@rzg.mpg.de> References: <20100506093732.7350cc16.adeason@sinenomine.net> <201005071233.44210.christof.hanke@rzg.mpg.de> Message-ID: <201005171218.44692.christof.hanke@rzg.mpg.de> --Boundary-00=_EgR8LsL6zN6mvyU Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Am Freitag, 7. Mai 2010 12:33:38 schrieb Christof Hanke: > One more thing, > > I have implemented something similar for the osd-command, but only csv , > ASCII and HTML (simple table). > > I did this by adding a complex struct table to libcmd.a, so that it is > available to all commands linking to it. > > ATM, it can only output simple tables (with one Header- and one Footer-line > if given). > > You can also sort by one column. > E.g. > # ./vos partinfo afs14.rzg.mpg.de -ttype 1 > > Partition,FreeSpace,TotalSpace > /vicepa,120201568,1928200192 > /vicepg,170753232,1702836224 > /viceps,211810376,1597898752 > /vicepw,27915468,235865600 > > > # ./vos partinfo afs14.rzg.mpg.de -ttype 1 -tsort 2 > Partition,FreeSpace,TotalSpace > /vicepw,27914820,235865600 > /vicepa,120201568,1928200192 > /vicepg,170753232,1702836224 > /viceps,211810376,1597898752 > > Unfortunately, there is a problem ATM with my Yahoo-OpenID and gerrit, so I > can't push it up there, but you can find the patches against master here: > > /afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output.patch > /afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output_example.patc >h > > Maybe we can integrate the xml output there ? I guess it should be > possible. > > Christof I could now thanks to Simon push this to gerrit. See Change-IDs Id0a00d996a94fee08538226317c60e5bf5082051 and Ic433cf56337879251105d2de4aca9fd2ddd1477b > > Am Donnerstag, 6. Mai 2010 16:37:32 schrieb Andrew Deason: > > Just one thing... > > > > On Thu, 6 May 2010 15:01:45 +0200 > > > > Sanket Agarwal wrote: > > > On Wed, May 5, 2010 at 5:15 PM, Steve Simmons wrote: > > > > /* Print value of spare3 field as integer */ > > > > if ( type == RAW ) > > > > fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value ); > > > > else if ( type == XML ) > > > > fprintf( STDOUT, "\t\t%d\n", value ); > > > > else if ( type == CSV ) > > > > fprintf( STDOUT, "%,%d", value ); > > > > Once we get to multiple output formats, I'd have thought this to turn > > into arrays of function pointers, instead of several if/else ladders (a > > la the cache types in the client code). So you'd have something like > > > > output_type->print_spare3("spare3", value); > > > > And you'd define > > > > static struct vos_output raw_output = { > > /* ... */ > > .print_spare3 = print_raw_int_optional, > > /* ... */ > > }; > > > > static struct vos_output xml_output = { > > /* ... */ > > .print_spare3 = print_xml_int, > > /* ... */ > > }; > > > > static void > > print_raw_optional(const char *name, int value) > > { > > fprintf(STDOUT, "%s\t\t %d (Optional)\n", name, value); > > } > > > > /* ... etc */ > > > > Or whatever. And use one of those structs depending on the -format > > argument. > > > > So, you don't have entirely separate enumeration functions, etc. What > > values you print and in what order are the same for all; the only > > difference is how they are output. In theory I think the problems in > > e.g. SubEnumerate that Steve mentions are surmountable if you just give > > each callback function enough context. > > > > But I don't know, a lot of the logic is still scattered, so I don't know > > how much better that would be. Just a thought. --Boundary-00=_EgR8LsL6zN6mvyU Content-Type: text/html; charset="iso-8859-15" Content-Transfer-Encoding: 7bit

Am Freitag, 7. Mai 2010 12:33:38 schrieb Christof Hanke:

> One more thing,

>

> I have implemented something similar for the osd-command, but only csv ,

> ASCII and HTML (simple table).

>

> I did this by adding a complex struct table to libcmd.a, so that it is

> available to all commands linking to it.

>

> ATM, it can only output simple tables (with one Header- and one Footer-line

> if given).

>

> You can also sort by one column.

> E.g.

> # ./vos partinfo afs14.rzg.mpg.de -ttype 1

>

> Partition,FreeSpace,TotalSpace

> /vicepa,120201568,1928200192

> /vicepg,170753232,1702836224

> /viceps,211810376,1597898752

> /vicepw,27915468,235865600

>

>

> # ./vos partinfo afs14.rzg.mpg.de -ttype 1 -tsort 2

> Partition,FreeSpace,TotalSpace

> /vicepw,27914820,235865600

> /vicepa,120201568,1928200192

> /vicepg,170753232,1702836224

> /viceps,211810376,1597898752

>

> Unfortunately, there is a problem ATM with my Yahoo-OpenID and gerrit, so I

> can't push it up there, but you can find the patches against master here:

>

> /afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output.patch

> /afs/ipp-garching.mpg.de/u/hanke/public/openafs/tabular_output_example.patc

>h

>

> Maybe we can integrate the xml output there ? I guess it should be

> possible.

>

> Christof

I could now thanks to Simon push this to gerrit.

See Change-IDs Id0a00d996a94fee08538226317c60e5bf5082051

and

Ic433cf56337879251105d2de4aca9fd2ddd1477b

>

> Am Donnerstag, 6. Mai 2010 16:37:32 schrieb Andrew Deason:

> > Just one thing...

> >

> > On Thu, 6 May 2010 15:01:45 +0200

> >

> > Sanket Agarwal <sanket@sanketagarwal.com> wrote:

> > > On Wed, May 5, 2010 at 5:15 PM, Steve Simmons <scs@umich.edu> wrote:

> > > > /* Print value of spare3 field as integer */

> > > > if ( type == RAW )

> > > > fprintf( STDOUT, "%spare3\t\t %d (Optional)\n", value );

> > > > else if ( type == XML )

> > > > fprintf( STDOUT, "\t\t<spare3>%d</spare3>\n", value );

> > > > else if ( type == CSV )

> > > > fprintf( STDOUT, "%,%d", value );

> >

> > Once we get to multiple output formats, I'd have thought this to turn

> > into arrays of function pointers, instead of several if/else ladders (a

> > la the cache types in the client code). So you'd have something like

> >

> > output_type->print_spare3("spare3", value);

> >

> > And you'd define

> >

> > static struct vos_output raw_output = {

> > /* ... */

> > .print_spare3 = print_raw_int_optional,

> > /* ... */

> > };

> >

> > static struct vos_output xml_output = {

> > /* ... */

> > .print_spare3 = print_xml_int,

> > /* ... */

> > };

> >

> > static void

> > print_raw_optional(const char *name, int value)

> > {

> > fprintf(STDOUT, "%s\t\t %d (Optional)\n", name, value);

> > }

> >

> > /* ... etc */

> >

> > Or whatever. And use one of those structs depending on the -format

> > argument.

> >

> > So, you don't have entirely separate enumeration functions, etc. What

> > values you print and in what order are the same for all; the only

> > difference is how they are output. In theory I think the problems in

> > e.g. SubEnumerate that Steve mentions are surmountable if you just give

> > each callback function enough context.

> >

> > But I don't know, a lot of the logic is still scattered, so I don't know

> > how much better that would be. Just a thought.

--Boundary-00=_EgR8LsL6zN6mvyU-- From reuter@rzg.mpg.de Mon May 17 16:21:26 2010 From: reuter@rzg.mpg.de (Hartmut Reuter) Date: Mon, 17 May 2010 17:21:26 +0200 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BF0086E.9010706@your-file-system.com> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> <4BED8036.8070404@secure-endpoints.com> <4BED8813.2050202@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> Message-ID: <4BF15EF6.50606@rzg.mpg.de> Finally it works. The following changes were necessary: in afsconfog.h (or elsewhere in a header included in rx) #define RX_TRIMDATABUFS 1 This frees many of the 11 data buffers allocated in each rxi_readPacket in rx_kcommon.c. The other changes are the patch proposed by Jaffrey Altman to correct counting of rx_nPackets and the drastic increasement of AFS_NRXPACKETS described below. The mail below I had tried to send Jeffrey yesterday evening, but the mail server at secure endpoints rejected it as spam. Jeffrey Altman schrieb: > The good news is that the actual packet counts are now being reported > and that additional packets are being allocated but extremely slowly. > There is also evidence that rx_extraPackets is being ignored since the > initial value is 256 in rx_globals.h and after the client starts there > are only 147. That's because in any case in afs_call.c it's overwritten either by the value entered as -rxpck or bei the constant AFS_NRXPACKETS which used to be 80. I drastically increased it to 1024. > > Could you revert the change in rx_globals.h of rx_maxReceiveWindow and > rx_maxSendWindow and set them back to 64 from 128? > > Could you also change rx_CheckPackets() so that it allocates > rx_maxSendWindow instead of rx_initSendWindow? for debugging I had a printf in AllocPacketBufs which showed me rx_nFreePackets and the number of packets allocated at a time. It were always 11 packets. Before I had increased AFS_NRXPACKETS so much I had set it to 256. With this run rx_nFreePackets was mostly around 380 but sometimes came down to 27 causing then packet reclaims (I had also a printf in TooLow(). However, the problem is not solved: even with the high number of rx_nFreePackets we get to TooLow several times even reading moderate sized files. Presently rxdebug shows 1239/1251 free/total packets. That means someone allocates more than 1000 packets and frees them later or they get freed by the reclaim. Hartmut > > I think the real problem is that rx_CheckPackets() is never called from > a place where it is safe to allocate more packets. I need to look into > that when I get home later. > > Now to volleyball .... > > Jeffrey Altman > > > > On 5/16/2010 4:27 AM, Hartmut Reuter wrote: >> Jeffrey Altman schrieb: >>> Please send new rxdebug output. >> Directly after the client started >> >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: ./rxdebug reuter 7001 -rxstat >> Trying 130.183.2.117 (port 7001): >> Free packets: 135/147, packet reclaims: 0, calls: 0, used FDs: 64 >> not waiting for packets. >> 0 calls waiting for a thread >> 1 threads are idle >> 0 calls have waited for a thread >> rx stats: free packets 135, allocs 1, alloc-failures(rcv 0/0,send 0/0,ack 0) >> greedy 0, bogusReads 0 (last from host 0), noPackets 0, noBuffers 0, selects >> 0, sendSelects 0 >> packets read: data 0 ack 0 busy 0 abort 0 ackall 0 challenge 0 response 0 >> debug 2 params 0 unused 0 unused 0 unused 0 version 0 >> other read counters: data 0, ack 0, dup 0 spurious 0 dally 0 >> packets sent: data 0 ack 0 busy 0 abort 0 ackall 0 challenge 0 response 0 >> debug 0 params 0 unused 0 unused 0 unused 0 version 0 >> other send counters: ack 0, data 0 (not resends), resends 0, pushed 0, >> acked&ignored 0 >> (these should be small) sendFailed 0, fatalErrors 0 >> 0 server connections, 0 client connections, 0 peer structs, 0 call structs, 0 >> freecall structs >> Done. >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: >> >> >> ~/a/n: read_test 12mb >> open of 12mb took 0.011 sec. >> read of 12000000 bytes took 88.792 sec. >> close took 0.001 sec. >> Total data rate = 132 Kbytes/sec. for read >> ~/a/n: >> >> >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: ./rxdebug reuter 7001 -rxstat >> -peer -long -onlyport 7000 -onlyhost reuter2 >> >> Trying 130.183.2.117 (port 7001): >> >> Free packets: 237/243, packet reclaims: 7171, calls: 8, used FDs: 64 >> >> not waiting for packets. >> >> 0 calls waiting for a thread >> >> 1 threads are idle >> >> 0 calls have waited for a thread >> >> rx stats: free packets 237, allocs 31575, alloc-failures(rcv 0/0,send 0/0,ack 0) >> >> greedy 0, bogusReads 0 (last from host 0), noPackets 0, noBuffers 262, >> selects 0, sendSelects 0 >> >> packets read: data 16562 ack 10 busy 0 abort 0 ackall 0 challenge 2 response >> 0 debug 18 params 0 unused 0 unused 0 unused 0 version 0 >> >> other read counters: data 16562, ack 10, dup 0 spurious 0 dally 0 >> >> packets sent: data 87 ack 15187 busy 0 abort 0 ackall 0 challenge 0 response >> 2 debug 0 params 0 unused 0 unused 0 unused 0 version 0 >> >> other send counters: ack 15187, data 87 (not resends), resends 0, pushed 0, >> acked&ignored 2 >> >> (these should be small) sendFailed 0, fatalErrors 0 >> >> Average rtt is 0.000, with 2 samples >> >> Minimum rtt is 0.000, maximum is 0.000 >> >> 4 server connections, 4 client connections, 3 peer structs, 10 call structs, >> 7 free call structs >> >> Showing only connections from host 130.183.2.114 >> >> Showing only connections on port 7000 >> >> Connection from host 130.183.2.114, port 7000, Cuid b3aecd24/2f905844 >> >> serial 2, natMTU 1444, flags DESTROYED, security index 0, client conn >> >> call 0: # 1, state dally, mode: receiving, flags: receive_done >> >> call 1: # 0, state not initialized >> call 2: # 0, state not initialized >> call 3: # 0, state not initialized >> Connection from host 130.183.2.114, port 7000, Cuid b3aecd24/8a90da68 >> serial 14327, natMTU 1444, flags pktCksum, security index 2, client conn >> rxkad: level clear, flags pktCksum >> Received 12010472 bytes in 8520 packets >> Sent 1552 bytes in 50 packets >> call 0: # 50, state dally, mode: receiving, flags: receive_done >> call 1: # 0, state not initialized >> call 2: # 0, state not initialized >> call 3: # 0, state not initialized >> Done. >> Peer at host 130.183.2.114, port 7000 >> ifMTU 1444 natMTU 1444 maxMTU 1444 >> packets sent 55 packet resends 0 >> bytes sent high 0 low 877037 >> bytes received high 0 low 0 >> rtt 1 msec, rtt_dev 0 msec >> timeout 0.350 sec >> in/out packet skew: 0/0 >> congestion window 2, MTU 1444 >> current/if/max jumbogram size: 1/4/1 >> Done. >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: >> >> This was without -rxpck 500. >> Now the same with -rxpck 500 : >> >> >> >> Directly after the client started: >> >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: ./rxdebug reuter 7001 >> -rxstatTrying 130.183.2.117 (port 7001): >> Free packets: 135/147, packet reclaims: 0, calls: 0, used FDs: 64 >> not waiting for packets. >> 0 calls waiting for a thread >> 1 threads are idle >> 0 calls have waited for a thread >> rx stats: free packets 135, allocs 1, alloc-failures(rcv 0/0,send 0/0,ack 0) >> greedy 0, bogusReads 0 (last from host 0), noPackets 0, noBuffers 0, selects >> 0, sendSelects 0 >> packets read: data 0 ack 0 busy 0 abort 0 ackall 0 challenge 0 response 0 >> debug 2 params 0 unused 0 unused 0 unused 0 version 0 >> other read counters: data 0, ack 0, dup 0 spurious 0 dally 0 >> packets sent: data 0 ack 0 busy 0 abort 0 ackall 0 challenge 0 response 0 >> debug 0 params 0 unused 0 unused 0 unused 0 version 0 >> other send counters: ack 0, data 0 (not resends), resends 0, pushed 0, >> acked&ignored 0 >> (these should be small) sendFailed 0, fatalErrors 0 >> 0 server connections, 0 client connections, 0 peer structs, 0 call structs, 0 >> freecall structs >> Done. >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: >> >> >> >> ~/a/n: read_test 12mb >> open of 12mb took 0.025 sec. >> read of 12000000 bytes took 98.830 sec. >> close took 0.001 sec. >> Total data rate = 119 Kbytes/sec. for read >> ~/a/n: >> >> >> >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: ./rxdebug reuter 7001 -rxstat >> -peer -long -onlyport 7000 -onlyhost reuter2 >> >> Trying 130.183.2.117 (port 7001): >> >> Free packets: 253/259, packet reclaims: 6827, calls: 8, used FDs: 64 >> >> not waiting for packets. >> >> 0 calls waiting for a thread >> >> 1 threads are idle >> >> 0 calls have waited for a thread >> >> rx stats: free packets 253, allocs 30819, alloc-failures(rcv 0/0,send 0/0,ack 0) >> >> greedy 0, bogusReads 0 (last from host 0), noPackets 0, noBuffers 254, >> selects 0, sendSelects 0 >> >> packets read: data 16210 ack 10 busy 0 abort 0 ackall 0 challenge 2 response >> 0 debug 5 params 0 unused 0 unused 0 unused 0 version 0 >> >> other read counters: data 16210, ack 10, dup 0 spurious 0 dally 0 >> >> packets sent: data 87 ack 14775 busy 0 abort 0 ackall 0 challenge 0 response >> 2 debug 0 params 0 unused 0 unused 0 unused 0 version 0 >> >> other send counters: ack 14775, data 87 (not resends), resends 0, pushed 0, >> acked&ignored 2 >> >> (these should be small) sendFailed 0, fatalErrors 0 >> >> Average rtt is 0.000, with 2 samples >> >> Minimum rtt is 0.000, maximum is 0.000 >> >> 4 server connections, 3 client connections, 3 peer structs, 10 call structs, >> 9 free call structs >> Showing only connections from host 130.183.2.114 >> Showing only connections on port 7000 >> Connection from host 130.183.2.114, port 7000, Cuid 990a5587/b5c51428 >> serial 13707, natMTU 1444, flags pktCksum, security index 2, client conn >> rxkad: level clear, flags pktCksum >> Received 12010472 bytes in 8520 packets >> Sent 1552 bytes in 50 packets >> call 0: # 50, state dally, mode: receiving, flags: receive_done >> call 1: # 0, state not initialized >> call 2: # 0, state not initialized >> call 3: # 0, state not initialized >> Done. >> Peer at host 130.183.2.114, port 7000 >> ifMTU 1444 natMTU 1444 maxMTU 1444 >> packets sent 55 packet resends 0 >> bytes sent high 0 low 830411 >> bytes received high 0 low 0 >> rtt 1 msec, rtt_dev 0 msec >> timeout 0.350 sec >> in/out packet skew: 0/0 >> congestion window 2, MTU 1444 >> current/if/max jumbogram size: 1/4/1 >> Done. >> /afs/notebook/.cs/openafs-1.5/@sys/src/rxdebug: >> >> >> Looks like -rxpck 500 would not have any effect. >> >> Thank you and good luck, >> Hartmut >> ----------------------------------------------------------------- >> Hartmut Reuter e-mail reuter@rzg.mpg.de >> phone +49-89-3299-1328 >> fax +49-89-3299-1301 >> RZG (Rechenzentrum Garching) web http://www.rzg.mpg.de/~hwr >> Computing Center of the Max-Planck-Gesellschaft (MPG) and the >> Institut fuer Plasmaphysik (IPP) >> ----------------------------------------------------------------- > -- ----------------------------------------------------------------- Hartmut Reuter e-mail reuter@rzg.mpg.de phone +49-89-3299-1328 fax +49-89-3299-1301 RZG (Rechenzentrum Garching) web http://www.rzg.mpg.de/~hwr Computing Center of the Max-Planck-Gesellschaft (MPG) and the Institut fuer Plasmaphysik (IPP) ----------------------------------------------------------------- From christof.hanke@rzg.mpg.de Mon May 17 19:14:40 2010 From: christof.hanke@rzg.mpg.de (Christof Hanke) Date: Mon, 17 May 2010 20:14:40 +0200 Subject: [OpenAFS-devel] Fwd: [master] Change Id0a00d99: (openafs) Add output-table to libcmd Message-ID: <201005172014.41828.christof.hanke@rzg.mpg.de> Hi all, Andrew commented my patch for extending libcmd.a like : "This is nontrivially extending the scope of what libcmd handles, if I'm not mistaken. Do we really want this in libcmd? Not... perhaps util? I thought it was desirable to perhaps one day lessen the usage of libcmd..." I guess this should discussed outside gerrit, so what do you think about it ? I have no preference. When I wrote the code I felt libcmd was the natural place to add a generic tabular output for command-line binaries. Other extensions to this I'm thinking of would be a "-human-readable"-flag which prints numbers with the suffices kMGT etc. (like "df -h") Christof From sxw@inf.ed.ac.uk Mon May 17 21:21:49 2010 From: sxw@inf.ed.ac.uk (Simon Wilkinson) Date: Mon, 17 May 2010 21:21:49 +0100 Subject: [OpenAFS-devel] Fwd: [master] Change Id0a00d99: (openafs) Add output-table to libcmd In-Reply-To: <201005172014.41828.christof.hanke@rzg.mpg.de> References: <201005172014.41828.christof.hanke@rzg.mpg.de> Message-ID: <771C195A-2C55-48C7-9A3B-020450C3DCD3@inf.ed.ac.uk> > Other extensions to this I'm thinking of would be a = "-human-readable"-flag=20 > which prints numbers with the suffices kMGT etc. (like "df -h") There's a patch for this in RT - = http://grand.central.org/rt/Ticket/Display.html?id=3D124529 That ticket contains two patches - one to accept human readable input = (which has been applied), and the other to produce human readable output = (which seems to be slowly rotting ...) S. From jaltman@secure-endpoints.com Tue May 18 14:39:01 2010 From: jaltman@secure-endpoints.com (Jeffrey Altman) Date: Tue, 18 May 2010 09:39:01 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BF15EF6.50606@rzg.mpg.de> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> <4BED8036.8070404@secure-endpoints.com> <4BED8813.2050202@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> Message-ID: <4BF29875.8050704@secure-endpoints.com> This is a cryptographically signed message in MIME format. --------------ms070302010805060301000004 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 5/17/2010 11:21 AM, Hartmut Reuter wrote: >=20 > Finally it works. >=20 > The following changes were necessary: >=20 > in afsconfog.h (or elsewhere in a header included in rx) > #define RX_TRIMDATABUFS 1 Calls to rx_TrimDataBufs were intentionally wrapped by #ifdef RX_TRIMDATABUFS in July 2009 because Derrick and I discovered while profiling Rx that large amounts of CPU time were being consumed by the process of filling packets with data buffers only to tear them apart again as soon as the data was read from the wire. This process also required holding onto locks which reduced concurrency. The reason that the lack of rx_TrimDataBufs() was hurting the kernel build of rx is that the kernel build has no mechanism to allocate packets while reading data from the network if the free packet queue is empty. Therefore, there is logic in place that forces packets to be torn apart (reclaiming) whenever the free packet counts reach a low water mark. The other size effect is that data that is being received is dropped on the floor. This is necessary to prevent a panic. The Rx library does maintain a flag, rxi_NeedMorePackets, to indicate when additional packets need to be allocated and provides a function, rx_CheckPackets(), that if called will allocate additional packets if the flag is set. However, rx_CheckPackets() was never called after the initial rx_InitHost() call. As a result, additional packets were not being allocated when required to support the incoming or outgoing data flows. This oversight has been corrected with commit 54bf41004b901ca090d63e239768588fa90bc806 I would now expect UNIX cache managers to see lower cpu utilization and higher throughput with 1.5 (master) over 1.4.12. Jeffrey Altman --------------ms070302010805060301000004 Content-Type: application/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 AQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA1MTgxMzM5MDFaMCMGCSqGSIb3DQEJBDEWBBSVTkhg tQm6eLJM8dUvU3jA7VBSGDBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0 ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs 9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBAM6QlIah6r0x6t3CsugPhZ4ejGo8nVwhNaz3 amnIju0I+vNxS7RD5t+K34iU+kyNrWmm8c97aBMP7H2JuPKR339hGM5isldvIZC5GDeGuzIT 0HWze+w4GMdeiALgPGIvWrQw1RxoXvfm+aKMu95+PwD4XnZ/knCxY2qDeSueqaURJR4OCRGq 7NvZttNl38xlwcqVXsGhI6MZBnnjDawYU3s5C7i+Pxui0DnJPaaZYFSQB+joz6kDp1mNc9A/ IFWJQACxs+8gf+5mIxN6ywRAXgTPWcO850XlKJuIri/16IcsE0G0SvvCrVRgWCxVd815oYAt tdHtGcHKTLvNYB3ma38AAAAAAAA= --------------ms070302010805060301000004-- From jhutz@cmu.edu Tue May 18 16:16:44 2010 From: jhutz@cmu.edu (Jeffrey Hutzelman) Date: Tue, 18 May 2010 11:16:44 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BF29875.8050704@secure-endpoints.com> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> <4BED8036.8070404@secure-endpoints.com> <4BED8813.2050202@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> Message-ID: <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> --On Tuesday, May 18, 2010 09:39:01 AM -0400 Jeffrey Altman wrote: > The reason that the lack of rx_TrimDataBufs() was hurting the kernel > build of rx is that the kernel build has no mechanism to allocate > packets while reading data from the network if the free packet queue is > empty. Therefore, there is logic in place that forces packets to be > torn apart (reclaiming) whenever the free packet counts reach a low > water mark. The other size effect is that data that is being received > is dropped on the floor. This is necessary to prevent a panic. I'm concerned here that this might mean you are lying about window sizes. The reason some data buffers are allocated in advance is because you must be prepared to receive any data that can be in flight according to the advertised window size _without blocking_ or at least without blocking in a way that prevents traffic in another stream from being received and processed. Tearing apart other packets to reclaim buffers is acceptable, but not if it means you need to wait for a buffer to drain before you can receive more packets. Dropping received data on the floor when it was received within the advertised window is _not_ acceptable; that breaks flow control and exacerbates congestion. -- Jeff From shadow@gmail.com Tue May 18 16:42:18 2010 From: shadow@gmail.com (Derrick Brashear) Date: Tue, 18 May 2010 11:42:18 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> Message-ID: On Tue, May 18, 2010 at 11:16 AM, Jeffrey Hutzelman wrote: > --On Tuesday, May 18, 2010 09:39:01 AM -0400 Jeffrey Altman > wrote: > >> The reason that the lack of rx_TrimDataBufs() was hurting the kernel >> build of rx is that the kernel build has no mechanism to allocate >> packets while reading data from the network if the free packet queue is >> empty. =A0Therefore, there is logic in place that forces packets to be >> torn apart (reclaiming) whenever the free packet counts reach a low >> water mark. =A0The other size effect is that data that is being received >> is dropped on the floor. =A0This is necessary to prevent a panic. > > I'm concerned here that this might mean you are lying about window sizes. > > The reason some data buffers are allocated in advance is because you must= be > prepared to receive any data that can be in flight according to the > advertised window size _without blocking_ or at least without blocking in= a > way that prevents traffic in another stream from being received and > processed. =A0Tearing apart other packets to reclaim buffers is acceptabl= e, > but not if it means you need to wait for a buffer to drain before you can > receive more packets. =A0Dropping received data on the floor when it was > received within the advertised window is _not_ acceptable; that breaks fl= ow > control and exacerbates congestion. If we were lying, we were before, rather than now. He's describing how things did already work, not how they do now. So, perhaps, but, not a new problem. --=20 Derrick From jaltman@secure-endpoints.com Tue May 18 17:03:46 2010 From: jaltman@secure-endpoints.com (Jeffrey Altman) Date: Tue, 18 May 2010 12:03:46 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> <4BED8036.8070404@secure-endpoints.com> <4BED8813.2050202@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> Message-ID: <4BF2BA62.2080805@secure-endpoints.com> This is a cryptographically signed message in MIME format. --------------ms060908050200010705090300 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 5/18/2010 11:16 AM, Jeffrey Hutzelman wrote: > I'm concerned here that this might mean you are lying about window size= s. I (personally) am not lying about anything. I really wish that *you* could make a distinction between *me* and the open source code when making comments. The fact that I was the last person to touch the source code does not make me personally responsible for all of its warts. The Rx implementation is the product of 20+ years of various developers making modifications to it. I am not the source code and I take serious offense when *you* indicate that broken behavior in the code that I am fixing is something that *I* am doing wrong. > The reason some data buffers are allocated in advance is because you > must be prepared to receive any data that can be in flight according to= > the advertised window size _without blocking_ or at least without > blocking in a way that prevents traffic in another stream from being > received and processed. A packet is made up of multiple data buffers which are themselves packets. The window size in Rx is not measured in bytes. It is measured in packets and we have no idea how large the incoming packet might be. It can be as large as RX_MAX_PACKET_SIZE. As such, before any receive operation is performed the library must ensure that the full number of data buffers has been attached to the packet. > Tearing apart other packets to reclaim buffers > is acceptable, but not if it means you need to wait for a buffer to > drain before you can receive more packets. It is acceptable but it is also extremely inefficient because most packets are not jumbo packets and as such only require a single data buffer beyond the buffer used for the header. > Dropping received data on > the floor when it was received within the advertised window is _not_ > acceptable; that breaks flow control and exacerbates congestion. Of course it is but I believe that the early developers made a wise choice being causing a kernel panic and being inefficient on the wire. If you have to choose one, drop the data on the floor and let it be retransmitted. The goal is to ensure that we never get into this case which is why if the rxi_NeedMorePackets global variable is TRUE we must actually go and allocate more packets the next time it is safe to do so. The patch that was committed today does that for the first time in the history of Rx. Jeffrey Altman --------------ms060908050200010705090300 Content-Type: application/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 AQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA1MTgxNjAzNDZaMCMGCSqGSIb3DQEJBDEWBBQix5ro +Sa/UEtzRoHWhqmIpd6AyTBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0 ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs 9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBALM2NgmJBb+fE87UG030gP6j0Bfx9LzPoX8k vtZO/sVupoJ5ArntpBN9gCJJdbQs3VhOTnA+wmsMGcV1G5YrPMooWdfh3JxExovo3443r8Hb j5bjz3RMTApRMpCLkJmQkkfEU9M3lC8D3lx/O8U3DAwOLZS9fpjEu1lQ+2DENUlSEfOeQML4 DVRtCjezFp9lfrocTyOHN9zXo1/R0d6XFSXCXy5sxnUccDn60n7bOl41INyTIsDgrBsbuXWI rvDUGh92BohrOiNchS8czHltAqAj3KV8hacBsMQ5AbSHcL5pX87xzt1Pby5Qh+Le/w4U81db r+h8wjLu0k3ZQoqnxswAAAAAAAA= --------------ms060908050200010705090300-- From jhutz@cmu.edu Tue May 18 17:25:25 2010 From: jhutz@cmu.edu (Jeffrey Hutzelman) Date: Tue, 18 May 2010 12:25:25 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BF2BA62.2080805@secure-endpoints.com> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> <4BED8036.8070404@secure-endpoints.com> <4BED8813.2050202@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> <4BF2BA62.2080805@secure-endpoints.com> Message-ID: <2ED0D0C4BB08FCE44F2C1B6B@atlantis.pc.cs.cmu.edu> --On Tuesday, May 18, 2010 12:03:46 PM -0400 Jeffrey Altman wrote: > On 5/18/2010 11:16 AM, Jeffrey Hutzelman wrote: >> I'm concerned here that this might mean you are lying about window sizes. > > I (personally) am not lying about anything. I really wish that *you* > could make a distinction between *me* and the open source code when > making comments. Apologies. Of course I meant that the rx implementation was lying. And apparently I also misinterpreted what you wrote, because it sounded to me like you were describing changes you and Derrick made which resulted in dropping received in-window data. >> The reason some data buffers are allocated in advance is because you >> must be prepared to receive any data that can be in flight according to >> the advertised window size _without blocking_ or at least without >> blocking in a way that prevents traffic in another stream from being >> received and processed. > > A packet is made up of multiple data buffers which are themselves > packets. The window size in Rx is not measured in bytes. It is > measured in packets and we have no idea how large the incoming packet > might be. It can be as large as RX_MAX_PACKET_SIZE. As such, before > any receive operation is performed the library must ensure that the full > number of data buffers has been attached to the packet. Well, it has to have someplace to put the received UDP datagram. That doesn't necessarily mean "attached to the packet", which I gather is the part that created the concurrency problem you saw in July 2009. But doing it some other way isn't necessarily easier, since you still need to account for the total number of buffers that must be available to meet window committments. >> Tearing apart other packets to reclaim buffers >> is acceptable, but not if it means you need to wait for a buffer to >> drain before you can receive more packets. > > It is acceptable but it is also extremely inefficient because most > packets are not jumbo packets and as such only require a single data > buffer beyond the buffer used for the header. Yes. >> Dropping received data on >> the floor when it was received within the advertised window is _not_ >> acceptable; that breaks flow control and exacerbates congestion. > > Of course it is but I believe that the early developers made a wise > choice being causing a kernel panic and being inefficient on the wire. > If you have to choose one, drop the data on the floor and let it be > retransmitted. Well, sure. But the "right" way to be inefficient here is to advertise a smaller window, so that you don't get data that has to be retransmitted. Nonetheless, this is a decision that was made ages ago, and now that I realize that, there's not much benefit in debating its merits. > The goal is to ensure that we never get into this case which is why if > the rxi_NeedMorePackets global variable is TRUE we must actually go and > allocate more packets the next time it is safe to do so. > > The patch that was committed today does that for the first time in the > history of Rx. Now I'm really going to have to go back and reread things, because I examined this fairly closely a couple of months ago when I was working out fileserver tuning, and one of the conclusions I came to at the time was that at least in user mode, Rx would always allocate more packets when needed, so setting the fileserver's -rxpck parameter should never be necessary. -- Jeff From shadow@gmail.com Tue May 18 17:36:46 2010 From: shadow@gmail.com (Derrick Brashear) Date: Tue, 18 May 2010 12:36:46 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BF2BA62.2080805@secure-endpoints.com> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> <4BF2BA62.2080805@secure-endpoints.com> Message-ID: On Tue, May 18, 2010 at 12:03 PM, Jeffrey Altman wrote: > On 5/18/2010 11:16 AM, Jeffrey Hutzelman wrote: >> I'm concerned here that this might mean you are lying about window sizes= . > > I (personally) am not lying about anything. I think he meant that the software resulting from the assumptions wold lie to (peers) about window size. Not the personal you. Anyway, >> =A0Dropping received data on >> the floor when it was received within the advertised window is _not_ >> acceptable; that breaks flow control and exacerbates congestion. > > Of course it is but I believe that the early developers made a wise > choice being causing a kernel panic and being inefficient on the wire. > If you have to choose one, drop the data on the floor and let it be > retransmitted. > > The goal is to ensure that we never get into this case which is why if > the rxi_NeedMorePackets global variable is TRUE we must actually go and > allocate more packets the next time it is safe to do so. > > The patch that was committed today does that for the first time in the > history of Rx. I'm not sure I believe that, but, certainly, it improves things from where they were before. In any case, all of you seem to be talking across each other. --=20 Derrick From shadow@gmail.com Tue May 18 17:40:45 2010 From: shadow@gmail.com (Derrick Brashear) Date: Tue, 18 May 2010 12:40:45 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <2ED0D0C4BB08FCE44F2C1B6B@atlantis.pc.cs.cmu.edu> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> <4BF2BA62.2080805@secure-endpoints.com> <2ED0D0C4BB08FCE44F2C1B6B@atlantis.pc.cs.cmu.edu> Message-ID: > > >> The goal is to ensure that we never get into this case which is why if >> the rxi_NeedMorePackets global variable is TRUE we must actually go and >> allocate more packets the next time it is safe to do so. >> >> The patch that was committed today does that for the first time in the >> history of Rx. > > Now I'm really going to have to go back and reread things, because I > examined this fairly closely a couple of months ago when I was working out > fileserver tuning, and one of the conclusions I came to at the time was that > at least in user mode, Rx would always allocate more packets when needed, so > setting the fileserver's -rxpck parameter should never be necessary. And if the fileserver ran in the kernel, it would have had the same problem. So, we're all on the same page now, right? From sarawgi.aditya@gmail.com Tue May 18 18:38:51 2010 From: sarawgi.aditya@gmail.com (Aditya Sarawgi) Date: Tue, 18 May 2010 23:08:51 +0530 Subject: [OpenAFS-devel] FreeBSD build process Message-ID: <4bf2d0b0.2104720a.48ae.25f3@mx.google.com> Hi, While building openafs on FreeBSD I get a error related to opt_global.h for which I need to make a softlink at /usr/src/sys/${CPUARCH}/compile/GENERIC pointing to /usr/obj/usr/src/sys/GENERIC and then the build succeeds. So I would like to ask is there any specific reason to use /usr/src/sys/${CPUARCH}/compile/GENERIC instead of /usr/obj/usr/src/sys/GENERIC directly because by default freebsd doesn't creates a softlink over there. Thanks Aditya Sarawgi From jaltman@secure-endpoints.com Tue May 18 19:50:43 2010 From: jaltman@secure-endpoints.com (Jeffrey Altman) Date: Tue, 18 May 2010 14:50:43 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <2ED0D0C4BB08FCE44F2C1B6B@atlantis.pc.cs.cmu.edu> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> <4BED8036.8070404@secure-endpoints.com> <4BED8813.2050202@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> <4BF2BA62.2080805@secure-endpoints.com> <2ED0D0C4BB08FCE44F2C1B6B@atlantis.pc.cs.cmu.edu> Message-ID: <4BF2E183.5070805@secure-endpoints.com> This is a cryptographically signed message in MIME format. --------------ms070404050200050300090903 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 5/18/2010 12:25 PM, Jeffrey Hutzelman wrote: > --On Tuesday, May 18, 2010 12:03:46 PM -0400 Jeffrey Altman > wrote: >=20 >> On 5/18/2010 11:16 AM, Jeffrey Hutzelman wrote: >>> I'm concerned here that this might mean you are lying about window >>> sizes. >> >> I (personally) am not lying about anything. I really wish that *you* >> could make a distinction between *me* and the open source code when >> making comments. >=20 > Apologies. Of course I meant that the rx implementation was lying. > And apparently I also misinterpreted what you wrote, because it sounded= > to me like you were describing changes you and Derrick made which > resulted in dropping received in-window data. Thank you. I didn't really want to single you out but I do think that we have to be careful about what we say. I find that software engineers all too often when describing interactions among software interfaces use personal pronouns. This has the negative consequence of blurring the lines between the ability to say that the code does not meet its requirements and that the person that wrote the code is bad in some way. OpenAFS used to be a very small community of close friends. We now have more than 250 contributors over the last decade and more than 50 in the last year. Those numbers are continuously increasing as OpenAFS gains more exposure. It is critical to our ability to recruit and retain new developers that we communicate in a highly respectful manner with one another. Not just for the sake of the feelings of the people involved in the discussion at the time but to ensure that lurkers feel comfortable speaking up and becoming an active part of our community. I have certainly slipped as well. One thing working with Google Summer of Code has taught me is that its a lesson that is easy to learn and a habit that is hard to break. >>> The reason some data buffers are allocated in advance is because you >>> must be prepared to receive any data that can be in flight according = to >>> the advertised window size _without blocking_ or at least without >>> blocking in a way that prevents traffic in another stream from being >>> received and processed. >> >> A packet is made up of multiple data buffers which are themselves >> packets. The window size in Rx is not measured in bytes. It is >> measured in packets and we have no idea how large the incoming packet >> might be. It can be as large as RX_MAX_PACKET_SIZE. As such, before >> any receive operation is performed the library must ensure that the fu= ll >> number of data buffers has been attached to the packet. >=20 > Well, it has to have someplace to put the received UDP datagram. That > doesn't necessarily mean "attached to the packet", which I gather is th= e > part that created the concurrency problem you saw in July 2009. But > doing it some other way isn't necessarily easier, since you still need > to account for the total number of buffers that must be available to > meet window commitments. If the Rx window size was tracked by the number of bytes in the window, then it would be a lot easier to ensure that the right number of buffers were available for any outstanding connection/call. As you are aware, the receiver never wants to be in a position where it has to allocate memory or reclaim packet buffers at the moment it is supposed to be pulling data off the socket. >>> Tearing apart other packets to reclaim buffers >>> is acceptable, but not if it means you need to wait for a buffer to >>> drain before you can receive more packets. >> >> It is acceptable but it is also extremely inefficient because most >> packets are not jumbo packets and as such only require a single data >> buffer beyond the buffer used for the header. >=20 > Yes. >=20 >=20 >=20 >>> Dropping received data on >>> the floor when it was received within the advertised window is _not_ >>> acceptable; that breaks flow control and exacerbates congestion. >> >> Of course it is but I believe that the early developers made a wise >> choice being causing a kernel panic and being inefficient on the wire.= >> If you have to choose one, drop the data on the floor and let it be >> retransmitted. >=20 > Well, sure. But the "right" way to be inefficient here is to advertise= > a smaller window, so that you don't get data that has to be > retransmitted. Nonetheless, this is a decision that was made ages ago, > and now that I realize that, there's not much benefit in debating its > merits. And here is where the bug that was just fixed comes into play. When the window size is increased, there is a request for more packets that is signaled by setting rxi_NeedMorePackets. The assumption is that this event will trigger the allocation of more packet buffers when it is safe / efficient to do so. Unfortunately, the only function that tests to see if rxi_NeedMorePackets is non-zero, rx_CheckPackets() was never called except during rx_InitHost(). This wasn't a big problem for userland implementations because they would just allocate packets as the free packet queue became empty. However, in the kernel implementations this is not possible. The #ifdef KERNEL code in rxi_ReceiveDataPacket() is a last ditch effort to keep the overall system running when the number of free packets gets too low. What the code does is blow away the current call, reclaim the data buffers, and sets the 'rxi_NeedMorePackets' flag to TRUE. In the hopes that once this call terminates that rx_CheckPackets() would notice that more packets need to be allocated. Since rx_CheckPackets() was never called, more packets were never allocated and without performing the rx_TrimDataBuffers dance the system would eventually panic. >> The goal is to ensure that we never get into this case which is why if= >> the rxi_NeedMorePackets global variable is TRUE we must actually go an= d >> allocate more packets the next time it is safe to do so. >> >> The patch that was committed today does that for the first time in the= >> history of Rx. >=20 > Now I'm really going to have to go back and reread things, because I > examined this fairly closely a couple of months ago when I was working > out fileserver tuning, and one of the conclusions I came to at the time= > was that at least in user mode, Rx would always allocate more packets > when needed, so setting the fileserver's -rxpck parameter should never > be necessary. The rxpck parameter should not be required anywhere. It was added at a time when no one had time to profile and performance test the implementation. When Derrick and I removed the rx_TimeDataBuffers() dance we tested in userland. It was only after Hartmut noticed this problem with his kernel testing that I went back and noticed that packet counts never increase in the kernel after the initial allocation. This problem should now be created and in the future, increases in the window size should behave appropriately. As an aside, I find that when I'm working on code that was written years ago and has been in deployment for decades that I tend to make the assumption that the code must be working as designed. It never occurred to me to check whether or not rx_CheckPackets() was doing the job it was written for. rx_CheckPackets() and the rxi_NeedMorePackets variable were added in AFS 3.6. It is unfortunate that rx_CheckPackets() was not actually called back then. If someone has the RCS data from the commit that added it, I would be very interested in seeing what the log entry sa= ys. Jeffrey Altman --------------ms070404050200050300090903 Content-Type: application/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 AQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA1MTgxODUwNDNaMCMGCSqGSIb3DQEJBDEWBBQ9FNGe swk8hEy8Hmqos/OC8uMizzBfBgkqhkiG9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN AwICASgwgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0 ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl bWFpbCBJc3N1aW5nIENBAhADBfUUwhjs9edX06Ry4ofnMIGHBgsqhkiG9w0BCRACCzF4oHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhADBfUUwhjs 9edX06Ry4ofnMA0GCSqGSIb3DQEBAQUABIIBADDhDEbRmCFihSW7t/nz0MSL6lZu18SthHD0 TnHwXeHBCbKt2fI/CI4bZs2i/WBkagBIcV8qFszS29tPDH0LWfECmr7ER2CCkTzyC5ygOAmz LJe9LsNLw8g8ibje63sG5jBXHUv0HfyhvkAWeBsCEw6Yh5Yu17kuzR3PP4Cy/lHUmmJBx48Z Ml64X+IziHY8zRtxZy4V3QkuOjTqqdO2lMWPSpWSXac9p1Q+4kidzd88xa+Zs+uPSVzL6xXh uDctlDARl0is4OeESUtVhuKh5tay7pgJCp8utePmcB3NGYLoBaI1ZLCOycj5V6gqfiAGpmYY WDrtDQXwPUbS5aADPEAAAAAAAAA= --------------ms070404050200050300090903-- From kaduk@MIT.EDU Tue May 18 21:15:45 2010 From: kaduk@MIT.EDU (Benjamin Kaduk) Date: Tue, 18 May 2010 16:15:45 -0400 (EDT) Subject: [OpenAFS-devel] FreeBSD build process In-Reply-To: <4bf2d0b0.2104720a.48ae.25f3@mx.google.com> References: <4bf2d0b0.2104720a.48ae.25f3@mx.google.com> Message-ID: On Tue, 18 May 2010, Aditya Sarawgi wrote: > Hi, > > While building openafs on FreeBSD I get a error related to opt_global.h > for which I need to make a softlink at /usr/src/sys/${CPUARCH}/compile/GENERIC > pointing to /usr/obj/usr/src/sys/GENERIC and then the build succeeds. So I would > like to ask is there any specific reason to use /usr/src/sys/${CPUARCH}/compile/GENERIC > instead of /usr/obj/usr/src/sys/GENERIC directly because by default freebsd doesn't creates > a softlink over there. It looks like the /usr/src/sys/${CPUARCH}/compile/GENERIC path dates back to the first addition of that code, back in the FreeBSD 4.X days when you would still run 'config' manually to configure a kernel. We should update acinclude.m4 (BSD_KERNEL_PATH) for the modern "buildkernel" method of building a kernel. For now, instead of making a symlink, I would recommend passing the --with-bsd-kernel-headers or --with-bsd-kernel-build options to configure. -Ben Kaduk From scs@umich.edu Thu May 20 17:44:31 2010 From: scs@umich.edu (Steve Simmons) Date: Thu, 20 May 2010 12:44:31 -0400 Subject: [OpenAFS-devel] read performance 1.5.74 Linux In-Reply-To: <4BF2E183.5070805@secure-endpoints.com> References: <4BE98D6A.6040307@rzg.mpg.de> <4BEABFD3.2050800@secure-endpoints.com> <749DA5BD-9C00-4642-92B0-9637690DB3F7@umich.edu> <4BEC3BCF.2010308@secure-endpoints.com> <4BED16FE.7020802@rzg.mpg.de> <4BED8036.8070404@secure-endpoints.com> <4BED8813.2050202@rzg.mpg.de> <4BEEAE09.30401@your-file-system.com> <4BEEB2DD.5020906@secure-endpoints.com> <4BEED23D.2080706@rzg.mpg.de> <4BEEE478.9030903@your-file-system.com> <4BEFAC70.2030702@rzg.mpg.de> <4BF0086E.9010706@your-file-system.com> <4BF15EF6.50606@rzg.mpg.de> <4BF29875.8050704@secure-endpoints.com> <56092464DD55C93FA99B2790@atlantis.pc.cs.cmu.edu> <4BF2BA62.2080805@secure-endpoints.com> <2ED0D0C4BB08FCE44F2C1B6B@atlantis.pc.cs.cmu.edu> <4BF2E183.5070805@secure-endpoints.com> Message-ID: On May 18, 2010, at 2:50 PM, Jeffrey Altman wrote: > It is critical to our ability to recruit and retain new developers that > we communicate in a highly respectful manner with one another. Not just > for the sake of the feelings of the people involved in the discussion at > the time but to ensure that lurkers feel comfortable speaking up and > becoming an active part of our community. Well-said. From sanket@sanketagarwal.com Sat May 22 15:29:52 2010 From: sanket@sanketagarwal.com (Sanket Agarwal) Date: Sat, 22 May 2010 16:29:52 +0200 Subject: [OpenAFS-devel] Some doubts with Kernel Module data structures Message-ID: --00163630f3eb155bf204872fa419 Content-Type: text/plain; charset=ISO-8859-1 I am looking into the core data structures of OpenAFS kernel module for clients, of which I find that struct dcache and struct fcache will be most important. I wish to ask you a few questions here: 1. One thing that I am not able to understand on the afs caching part is what exactly is afs cached if I have a miss. Is that we afs cache the whole file from the Volume Server ? Well that seems very unreasonable because a large file then can never be read! Okay assuming it is that we afs cache chunks of some specified size. 2. What exactly does a struct dcache points to ? Is it a specific chunk and is this chunk size same as that of Page size of pages in the memory(which the kernel will ultimately load as pages in the memory). Or is it that dcache points to a specific file and keeps track of all it's chunks ? 3. What is the role played by the structure struct fcache, what does it point to ? 4. I see that dcache is stored in the memory but fcache is disk saved on disk( where , along with the afs cache ?) And why such a decision. Cheers Sanket ------------------------------ ------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------ /* kept in memory */ struct dcache { struct afs_q lruq; /* Free queue for in-memory images */ struct afs_q dirty; /* Queue of dirty entries that need written */ afs_rwlock_t lock; /* Protects validPos, some f */ afs_rwlock_t tlock; /* Atomizes updates to refCount */ afs_rwlock_t mflock; /* Atomizes accesses/updates to mflags */ afs_size_t validPos; /* number of valid bytes during fetch */ afs_int32 index; /* The index in the CacheInfo file */ short refCount; /* Associated reference count. */ char dflags; /* Data flags */ char mflags; /* Meta flags */ struct fcache f; /* disk image */ afs_int32 bucket; /* which bucket these dcache entries are in */ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- /* kept on disk and in dcache entries */ struct fcache { struct VenusFid fid; /* Fid for this file */ afs_int32 modTime; /* last time this entry was modified */ afs_hyper_t versionNo; /* Associated data version number */ afs_int32 chunk; /* Relative chunk number */ afs_dcache_id_t inode; /* Unix inode for this chunk */ afs_int32 chunkBytes; /* Num bytes in this chunk */ char states; /* Has this chunk been modified? */ }; --00163630f3eb155bf204872fa419 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable I am looking into the core data structures of OpenAFS kernel module for cli= ents, of which I find that struct dcache and struct fcache will be most important. I=20 wish to ask you a few questions here:

1. One thing that I am not able to understand on the afs caching=20 part is what exactly is afs cached if I have a miss. Is that we afs=20 cache the whole file from the Volume Server ? Well that seems very=20 unreasonable because a large file then can never be read! Okay assuming=20 it is that we afs cache chunks of some specified size.
2. What exactly does a struct dcache points to ? Is it a specific chunk=20 and is this chunk size same as that of Page size of pages in the=20 memory(which the kernel will ultimately load as pages in the memory). Or is it that dcache points to a specific file and keeps track of all it'= s chunks ?
3. What is the role played by the structure struct fcache, what does it=20 point to ?
4. I see that dcache is stored in the memory but fcache is disk saved on disk( where , along with the afs cache ?) And why such a=20 decision.

Cheers
Sanket

------------------------------
-----------------------------------------------------------= -------------------------
----------------------------------------------= --------------------------------------------------------------------

/* kept in memory */
struct dcache {
=A0=A0=A0 struct afs_q=20 lruq;=A0=A0=A0=A0=A0 /* Free queue for in-memory images */
=A0=A0=A0 str= uct afs_q=20 dirty;=A0=A0=A0=A0 /* Queue of dirty entries that need written */
=A0=A0= =A0=20 afs_rwlock_t lock;=A0=A0=A0=A0=A0 /* Protects validPos, some f */
=A0=A0=A0 afs_rwlock_t tlock;=A0=A0=A0=A0 /* Atomizes updates to refCount *= /
=A0=A0=A0=20 afs_rwlock_t mflock;=A0=A0=A0 /* Atomizes accesses/updates to mflags */
= =A0=A0=A0 afs_size_t validPos;=A0=A0=A0 /* number of valid bytes during fetch */
= =A0=A0=A0 afs_int32 index;=A0=A0=A0=A0=A0=A0=A0 /* The index in the CacheInfo file *= /
=A0=A0=A0 short refCount;=A0=A0=A0=A0 /* Associated reference count. */
= =A0=A0=A0 char=20 dflags;=A0=A0=A0=A0=A0=A0=A0 /* Data flags */
=A0=A0=A0 char mflags;=A0= =A0=A0=A0=A0=A0=A0 /* Meta flags */
=A0=A0=A0 struct fcache f;=A0=A0=A0=A0=A0=A0=A0 /* disk image */
= =A0=A0=A0 afs_int32=20 bucket;=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* which bucket these dcache entries = are in */
=A0------------------------------------------------------------------------= ---------------------------------------------------------------------------= ----------------------------------
/* kept on disk and in dcache entries */
struct fcache {
=A0=A0=A0 struct VenusFid fid;=A0=A0=A0 /* Fid for this = file */
=A0=A0=A0 afs_int32 modTime;=A0=A0=A0=A0=A0 /* last time this entry was modified */<= br>=A0=A0=A0=20 afs_hyper_t versionNo;=A0 /* Associated data version number */
=A0=A0=A0= =20 afs_int32 chunk;=A0=A0=A0=A0=A0=A0=A0 /* Relative chunk number */
=A0=A0=A0 afs_dcache_id_t inode;=A0=A0=A0=A0=A0 /* Unix inode for this chun= k */
=A0=A0=A0=20 afs_int32 chunkBytes;=A0=A0 /* Num bytes in this chunk */
=A0=A0=A0 char= =20 states;=A0=A0=A0=A0=A0=A0=A0 /* Has this chunk been modified? */
}; --00163630f3eb155bf204872fa419-- From matt@linuxbox.com Sat May 22 17:34:06 2010 From: matt@linuxbox.com (Matt W. Benjamin) Date: Sat, 22 May 2010 12:34:06 -0400 (EDT) Subject: [OpenAFS-devel] Some doubts with Kernel Module data structures In-Reply-To: <257651333.2263.1274545745145.JavaMail.root@thunderbeast.private.linuxbox.com> Message-ID: <1200885903.2265.1274546045992.JavaMail.root@thunderbeast.private.linuxbox.com> hi, ----- "Sanket Agarwal" wrote: > I am looking into the core data structures of OpenAFS kernel module > for clients, of which I find that struct dcache and struct fcache will > be most important. I wish to ask you a few questions here: struct vcache > > 1. One thing that I am not able to understand on the afs caching part > is what exactly is afs cached if I have a miss. Is that we afs cache > the whole file from the Volume Server ? from the file server; the openafs cm caches segments, not whole files, and in fact afs programs do often call these "chunks," as perhaps you noticed... > Well that seems very > unreasonable because a large file then can never be read! it might be unreasonable, but the openafs cm does not do this > Okay > assuming it is that we afs cache chunks of some specified size. no need to assume it, that's what the cm in fact does > 2. What exactly does a struct dcache points to ? Is it a specific > chunk yes > and is this chunk size same as that of Page size of pages in the > memory(which the kernel will ultimately load as pages in the memory). no, typically a chunk is 64k, but you can set an alternate chunk size when the cm is started, see AFSD(8) > Or is it that dcache points to a specific file and keeps track of all > it's chunks ? a struct vcache is a cache entry for a specific file, it may or may not be up to date (see cache state flags); there may or may not be cached segments of any specific file; if there are, each is associated with a struct dcache > 3. What is the role played by the structure struct fcache, what does > it point to ? I'm not a dcache expert, but cribbing from the code, it looks as if an fcache is involved with representing chunks in the cm's persistent file cache > 4. I see that dcache is stored in the memory but fcache is disk saved > on disk( where , along with the afs cache ?) And why such a decision. > > Cheers > Sanket > There are papers from CMU which offer some insight into the choices that were made at different stages of AFS development. An -older- stage of the cm design is discussed in this http://www.cs.cmu.edu/afs/cs/project/coda-www/ResearchWebPages/docdir/s11.pdf There is some discussion of cache structure (including struct fcache, surprisingly), here: http://web.mit.edu/lugao/MacData/afs/dev.mit.edu/user/warlord/OldFiles/openafs-test/src/doc/pdf/fscm-ispec.pdf -- Matt Benjamin The Linux Box 206 South Fifth Ave. Suite 150 Ann Arbor, MI 48104 http://linuxbox.com tel. 734-761-4689 fax. 734-769-8938 cel. 734-216-5309 From adeason@sinenomine.net Sat May 22 20:27:26 2010 From: adeason@sinenomine.net (Andrew Deason) Date: Sat, 22 May 2010 14:27:26 -0500 Subject: [OpenAFS-devel] Re: Some doubts with Kernel Module data structures References: <257651333.2263.1274545745145.JavaMail.root@thunderbeast.private.linuxbox.com> <1200885903.2265.1274546045992.JavaMail.root@thunderbeast.private.linuxbox.com> Message-ID: <20100522142726.e8c2abb0.adeason@sinenomine.net> On Sat, 22 May 2010 12:34:06 -0400 (EDT) "Matt W. Benjamin" wrote: > ----- "Sanket Agarwal" wrote: > > > I am looking into the core data structures of OpenAFS kernel module > > for clients, of which I find that struct dcache and struct fcache > > will be most important. I wish to ask you a few questions here: > > struct vcache I found this a bit confusing when I first looked at it, so a little more info... a vnode is the OS' filesystem-agnostic in-memory representation of a file. A vcache is the OpenAFS module's in-memory representation of a file. You can get a vnode from a vcache and a vcache from an AFS vnode a couple of different ways, depending on what the client OS is. That's what AFSTOV and VTOAFS are for. > > and is this chunk size same as that of Page size of pages in the > > memory(which the kernel will ultimately load as pages in the > > memory). > > no, typically a chunk is 64k, but you can set an alternate chunk size > when the cm is started, see AFSD(8) Default chunk sizes for a disk cache ranges from 256K to 1M, depending on the size of the cache. For caches smaller than around 500M, the chunksize is 256K; smaller than 1G and it's 512K. Larger and it's 1M. For memcache the default is 8k. > > 3. What is the role played by the structure struct fcache, what does > > it point to ? > > I'm not a dcache expert, but cribbing from the code, it looks as if > an fcache is involved with representing chunks in the cm's persistent > file cache > > > 4. I see that dcache is stored in the memory but fcache is disk > > saved on disk( where , along with the afs cache ?) And why such a > > decision. The CacheItems file is made up of a bunch of 'struct fcache's (each one representing a chunk, as Matt says). We need to save some information about each chunk to disk, so we can find them again. So when a client restarts and asks for file X chunk Y, we can find where that chunk is in the cache. -- Andrew Deason adeason@sinenomine.net From sanket@sanketagarwal.com Mon May 24 14:53:03 2010 From: sanket@sanketagarwal.com (Sanket Agarwal) Date: Mon, 24 May 2010 15:53:03 +0200 Subject: [OpenAFS-devel] Re: Some doubts with Kernel Module data structures In-Reply-To: <20100522142726.e8c2abb0.adeason@sinenomine.net> References: <257651333.2263.1274545745145.JavaMail.root@thunderbeast.private.linuxbox.com> <1200885903.2265.1274546045992.JavaMail.root@thunderbeast.private.linuxbox.com> <20100522142726.e8c2abb0.adeason@sinenomine.net> Message-ID: --00c09f88d1641852c80487575c93 Content-Type: text/plain; charset=ISO-8859-1 Okay, thanks for that help! It made reading the code easier. But I continue with my doubts: In lines in file src/afs/VNOPS/afs_vnop_read.c or src/afs/VNOPS/afs_vnop_write.c I am unable to track the macros for VNOP_READ and VNOP_WRITE. I do find some traces in IRIX/osi_vfs.h but that does not really helps. ---------------------------------- #ifdef AFS_SUN510_ENV { caller_context_t ct; VOP_RWLOCK(tfile->vnode, 1, &ct); code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp, &ct); VOP_RWUNLOCK(tfile->vnode, 1, &ct); } ----------------------------------- >From what I undestand this part does the OS dependent read from cache to memory and write to cache from memory. Cheers Sanket On Sat, May 22, 2010 at 9:27 PM, Andrew Deason wrote: > On Sat, 22 May 2010 12:34:06 -0400 (EDT) > "Matt W. Benjamin" wrote: > > > ----- "Sanket Agarwal" wrote: > > > > > I am looking into the core data structures of OpenAFS kernel module > > > for clients, of which I find that struct dcache and struct fcache > > > will be most important. I wish to ask you a few questions here: > > > > struct vcache > > I found this a bit confusing when I first looked at it, so a little more > info... a vnode is the OS' filesystem-agnostic in-memory representation > of a file. A vcache is the OpenAFS module's in-memory representation of > a file. You can get a vnode from a vcache and a vcache from an AFS vnode > a couple of different ways, depending on what the client OS is. That's > what AFSTOV and VTOAFS are for. > > > > and is this chunk size same as that of Page size of pages in the > > > memory(which the kernel will ultimately load as pages in the > > > memory). > > > > no, typically a chunk is 64k, but you can set an alternate chunk size > > when the cm is started, see AFSD(8) > > Default chunk sizes for a disk cache ranges from 256K to 1M, depending > on the size of the cache. For caches smaller than around 500M, the > chunksize is 256K; smaller than 1G and it's 512K. Larger and it's 1M. > > For memcache the default is 8k. > > > > 3. What is the role played by the structure struct fcache, what does > > > it point to ? > > > > I'm not a dcache expert, but cribbing from the code, it looks as if > > an fcache is involved with representing chunks in the cm's persistent > > file cache > > > > > 4. I see that dcache is stored in the memory but fcache is disk > > > saved on disk( where , along with the afs cache ?) And why such a > > > decision. > > The CacheItems file is made up of a bunch of 'struct fcache's (each one > representing a chunk, as Matt says). We need to save some information > about each chunk to disk, so we can find them again. So when a client > restarts and asks for file X chunk Y, we can find where that chunk is in > the cache. > > -- > Andrew Deason > adeason@sinenomine.net > > _______________________________________________ > OpenAFS-devel mailing list > OpenAFS-devel@openafs.org > https://lists.openafs.org/mailman/listinfo/openafs-devel > --00c09f88d1641852c80487575c93 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Okay, thanks for that help! It made reading the code easier.
But I conti= nue with my doubts:

In lines in file src/afs/VNOPS/afs_vnop_read.c o= r src/afs/VNOPS/afs_vnop_write.c I am unable to track the macros for VNOP_R= EAD and VNOP_WRITE. I do find some traces in IRIX/osi_vfs.h but that does n= ot really helps.

----------------------------------
#ifdef AFS_SUN510_ENV
=A0=A0= =A0 {
=A0=A0=A0 =A0=A0=A0 caller_context_t ct;

=A0=A0=A0 =A0=A0= =A0 VOP_RWLOCK(tfile->vnode, 1, &ct);
=A0=A0=A0 =A0=A0=A0 code = =3D VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp, &ct);
=A0=A0=A0 =A0=A0=A0 VOP_RWUNLOCK(tfile->vnode, 1, &ct);
=A0=A0=A0= }
-----------------------------------

From what I undestand this= part does the OS dependent read from cache to memory and write to cache fr= om memory.

Cheers
Sanket


On Sat, May 22, = 2010 at 9:27 PM, Andrew Deason <adeason@sinenomine.net> wrote:
On Sat, 22 May 2010 12:34:06 -0400 (EDT)
"Matt W. Benjamin" <matt@= linuxbox.com> wrote:

> ----- "Sanket Agarwal" <sanket@sanketagarwal.com> wrote:
>
> > I am looking into the core data structures of OpenAFS kernel modu= le
> > for clients, of which I find that struct dcache and struct fcache=
> > will be most important. I wish to ask you a few questions here: >
> struct vcache

I found this a bit confusing when I first looked at it, so a little m= ore
info... a vnode is the OS' filesystem-agnostic in-memory representation=
of a file. A vcache is the OpenAFS module's in-memory representation of=
a file. You can get a vnode from a vcache and a vcache from an AFS vnode a couple of different ways, depending on what the client OS is. That's<= br> what AFSTOV and VTOAFS are for.

> > and is this chunk size same as that of Page size of pages in the<= br> > > memory(which the kernel will ultimately load as pages in the
> > memory).
>
> no, typically a chunk is 64k, but you can set an alternate chunk size<= br> > when the cm is started, see AFSD(8)

Default chunk sizes for a disk cache ranges from 256K to 1M, dependin= g
on the size of the cache. For caches smaller than around 500M, the
chunksize is 256K; smaller than 1G and it's 512K. Larger and it's 1= M.

For memcache the default is 8k.

> > 3. What is the role played by the structure struct fcache, what d= oes
> > it point to ?
>
> I'm not a dcache expert, but cribbing from the code, it looks as i= f
> an fcache is involved with representing chunks in the cm's persist= ent
> file cache
>
> > 4. I see that dcache is stored in the memory but fcache is disk > > saved on disk( where , along with the afs cache ?) And why such a=
> > decision.

The CacheItems file is made up of a bunch of 'struct fcache's= (each one
representing a chunk, as Matt says). We need to save some information
about each chunk to disk, so we can find them again. So when a client
restarts and asks for file X chunk Y, we can find where that chunk is in the cache.

--
Andrew Deason
adeason@sinenomine.net

_______________________________________________
OpenAFS-devel mailing list
OpenAFS-devel@openafs.org<= br> https://lists.openafs.org/mailman/listinfo/openafs-devel

--00c09f88d1641852c80487575c93-- From adeason@sinenomine.net Mon May 24 15:20:40 2010 From: adeason@sinenomine.net (Andrew Deason) Date: Mon, 24 May 2010 09:20:40 -0500 Subject: [OpenAFS-devel] Re: Some doubts with Kernel Module data structures References: <257651333.2263.1274545745145.JavaMail.root@thunderbeast.private.linuxbox.com> <1200885903.2265.1274546045992.JavaMail.root@thunderbeast.private.linuxbox.com> <20100522142726.e8c2abb0.adeason@sinenomine.net> Message-ID: <20100524092040.ac8c59ac.adeason@sinenomine.net> On Mon, 24 May 2010 15:53:03 +0200 Sanket Agarwal wrote: > Okay, thanks for that help! It made reading the code easier. But I > continue with my doubts: > > In lines in file src/afs/VNOPS/afs_vnop_read.c or > src/afs/VNOPS/afs_vnop_write.c I am unable to track the macros for > VNOP_READ and VNOP_WRITE. VOP_* macros come from the target kernel; OpenAFS does not define them. You have to look in the headers and source (or the API documentation) for e.g. linux or opensolaris to see what they do for those platforms. Typically they just expand to a function call that calls a function pointer derived from the vnode pointer. For example, on Solaris, VOP_WRITE(vp, foo) is effectively a call to (*(vp)->v_op->vop_write)(vp, foo). When looking around for OS-defined stuff like that, convenient sites are for Linux, for Solaris, and for FreeBSD, Darwin, and others (including Linux and Solaris, but with a different interface than LXR or src.opensolaris.org). -- Andrew Deason adeason@sinenomine.net From shadow@gmail.com Mon May 24 17:19:00 2010 From: shadow@gmail.com (Derrick Brashear) Date: Mon, 24 May 2010 12:19:00 -0400 Subject: [OpenAFS-devel] Re: Some doubts with Kernel Module data structures In-Reply-To: <20100524092040.ac8c59ac.adeason@sinenomine.net> References: <257651333.2263.1274545745145.JavaMail.root@thunderbeast.private.linuxbox.com> <1200885903.2265.1274546045992.JavaMail.root@thunderbeast.private.linuxbox.com> <20100522142726.e8c2abb0.adeason@sinenomine.net> <20100524092040.ac8c59ac.adeason@sinenomine.net> Message-ID: On Mon, May 24, 2010 at 10:20 AM, Andrew Deason wr= ote: > On Mon, 24 May 2010 15:53:03 +0200 > Sanket Agarwal wrote: > >> Okay, thanks for that help! It made reading the code easier. =A0But I >> continue with my doubts: >> >> In lines in file src/afs/VNOPS/afs_vnop_read.c or >> src/afs/VNOPS/afs_vnop_write.c I am unable to track the macros for >> VNOP_READ and VNOP_WRITE. > > VOP_* macros come from the target kernel; OpenAFS does not define them. > You have to look in the headers and source (or the API documentation) > for e.g. linux or opensolaris to see what they do for those platforms. > > Typically they just expand to a function call that calls a function > pointer derived from the vnode pointer. For example, on Solaris, > VOP_WRITE(vp, foo) is effectively a call to > (*(vp)->v_op->vop_write)(vp, foo). > > When looking around for OS-defined stuff like that, convenient sites are > for Linux, for > Solaris, and for FreeBSD, Darwin, and others > (including Linux and Solaris, but with a different interface than LXR or > src.opensolaris.org). Basically, this is the I/O-to-disk. You'll want to do your work in the AFS module, which is to say, before VNOP_WRITE is called, and on reads, on the result of VNOP_READ. --=20 Derrick From sarawgi.aditya@gmail.com Mon May 24 17:46:13 2010 From: sarawgi.aditya@gmail.com (Aditya Sarawgi) Date: Mon, 24 May 2010 22:16:13 +0530 Subject: [OpenAFS-devel] Build issues on FreeBSD Message-ID: <4bfaad52.1065730a.47a3.6624@mx.google.com> Hi, After uupdating the openafs source I am unable to build openafs on FreeBSD I'm getting In file included from ./afsutil.h:27, from ./assert.c:21: /usr/include/sys/socket.h:71: error: conflicting types for 'socklen_t' /home/aditya/openafs/include/afs/stds.h:63: error: previous declaration of 'socklen_t' was here *** Error code 1 I think Change Ib5aeb600: Autoconf: Use a standard test for socklen_t http://gerrit.openafs.org/#change,1972 this commit broke the build. Please Fix Thanks Aditya Sarawgi From rra@stanford.edu Mon May 24 18:01:12 2010 From: rra@stanford.edu (Russ Allbery) Date: Mon, 24 May 2010 10:01:12 -0700 Subject: [OpenAFS-devel] Build issues on FreeBSD In-Reply-To: <4bfaad52.1065730a.47a3.6624@mx.google.com> (Aditya Sarawgi's message of "Mon, 24 May 2010 22:16:13 +0530") References: <4bfaad52.1065730a.47a3.6624@mx.google.com> Message-ID: <87k4qtxmhz.fsf@windlord.stanford.edu> Aditya Sarawgi writes: > After uupdating the openafs source I am unable to build openafs on FreeBSD > I'm getting > In file included from ./afsutil.h:27, > from ./assert.c:21: > /usr/include/sys/socket.h:71: error: conflicting types for 'socklen_t' > /home/aditya/openafs/include/afs/stds.h:63: error: previous declaration of 'socklen_t' was here > *** Error code 1 > I think > Change Ib5aeb600: Autoconf: Use a standard test for socklen_t > http://gerrit.openafs.org/#change,1972 > this commit broke the build. Please Fix Could you provide some more information, particularly the config.log output around socklen_t? For some reason, configure didn't think your system had a socklen_t type despite the fact that it does. -- Russ Allbery (rra@stanford.edu) From sxw@inf.ed.ac.uk Mon May 24 18:09:02 2010 From: sxw@inf.ed.ac.uk (Simon Wilkinson) Date: Mon, 24 May 2010 18:09:02 +0100 Subject: [OpenAFS-devel] Build issues on FreeBSD In-Reply-To: <4bfaad52.1065730a.47a3.6624@mx.google.com> References: <4bfaad52.1065730a.47a3.6624@mx.google.com> Message-ID: On 24 May 2010, at 17:46, Aditya Sarawgi wrote: > Hi, >=20 > After uupdating the openafs source I am unable to build openafs on = FreeBSD Did you run regen.sh, or otherwise regenerate the configure script after = updating your tree? S. From sarawgi.aditya@gmail.com Mon May 24 18:58:54 2010 From: sarawgi.aditya@gmail.com (Aditya Sarawgi) Date: Mon, 24 May 2010 23:28:54 +0530 Subject: [OpenAFS-devel] Build issues on FreeBSD In-Reply-To: References: <4bfaad52.1065730a.47a3.6624@mx.google.com> Message-ID: <4bfabe5b.0663730a.1ab6.7358@mx.google.com> On Mon, May 24, 2010 at 06:09:02PM +0100, Simon Wilkinson wrote: > > On 24 May 2010, at 17:46, Aditya Sarawgi wrote: > > > Hi, > > > > After uupdating the openafs source I am unable to build openafs on FreeBSD > > Did you run regen.sh, or otherwise regenerate the configure script after updating your tree? > > S. > Hi, How stupid of me :) Thanks and sorry for raising the false alarm Cheers Aditya Sarawgi From mdw@umich.edu Tue May 25 07:17:38 2010 From: mdw@umich.edu (Marcus Watts) Date: Tue, 25 May 2010 02:17:38 -0400 Subject: [OpenAFS-devel] rxk5 - may 2010 Message-ID: I had promised to have a fully separated set of patches for rxk5 by now. I don't, which is perhaps a good thing. 1. at workshop this week 2. rxk5 nearterm schedule 3. hackathon issues 4. revising the rxk5 paper ____ 1. at workshop this week So, the good news is I'll be at the OpenAFS workshop this week. If you want to talk to me about something here's your chance. I'll be driving down and back. On friday I'll have a fairly tight schedule since I hope to wind up in Rochester NY very late that night. ____ 2. rxk5 nearterm schedule So far as rxk5 goes - I expect to have a tarball containing m83 this week. Was hoping to get that at least done before the workshop, but, well, sleep is probably the best thing now. The next thing I'll be doing is partially separated patches. That is, a set of patches to go from the base version to rxk5. That will be nominally "cvs head 2009/06/21" which is nearly but not exactly 1.5.61. These will probably be a small number of *big* patches, I'm not going to put a lot of work into separating things for this. The next thing after that will be to port rxk5 forward to 1.5.74. I expect some of those changes will overlap what I've got in weird ways, which is the big reason I don't want to put much time into patch microsplitting before this. ____ 3. hackathon issues So far as other stuff goes. At last fall's hackathon and eu workshop, a number of issues got raised: 1. authenticator max_calls. I think I should have seen a proposal or test release for this by now? 2. prf rfc 4402. Want to look into this, haven't yet. 3. initial packet enc. Leaving this for rxgk. 4. k5ssl. I've heard confusing stories about what's happening with heimdal / hcrypto / afs, waiting to see what winds up in the tree. 5. ubik_SRXServerProcV2. ya ya ya. Ok, maybe I'll be putting m84 out above, if I didn't remember to do this. 6. cell_max. " " " 7. cm properties. I'll probably punt on this. What I have now works. 8. way for app to add data to authenticator. I may put this off for later, such as combining it with some form of callback channel protection or some such. 9. one fileserver at a time conversion. I spent some time thinking about this. While many parts look easy, the middle bit started looking more and more like rxgk. Since the rxgk folks will be doing this anyways, I'm not seeing a lot of value to duplicating what I understand they'll have done by september. ____ 4. revising the rxk5 paper Also I should put together some form of revised rxk5 paper. I know various folks have pointed out various minor issues; but other than what I wrote down at the hackathon I have no other recollection what those issues are. If folks could forward those issues to me I'd be grateful. Hope to see all you folks at the workshop! -Marcus Watts From mdw@umich.edu Thu May 27 21:05:08 2010 From: mdw@umich.edu (Marcus Watts) Date: Thu, 27 May 2010 16:05:08 -0400 Subject: [OpenAFS-devel] openafs rxk5 m84 - snapshot Message-ID: I've got a new snapshot for openafs rxk5 - "m84". I'm not sure which version folks would have seen last, so I'm not sure just what changes I've made since. The last few changes I've made here include: 1. rxk5 - report client principal by name not by weird number when discarding expired tokens. 2. white space fix changes. 3. 2009 hackathon issue #5 "ubik_SRXServerProcV2 and afsconf_ServerAuthV2". 4. 2009 hackathon issue #6 "cell_max 256". Normally, I'd do this as a diff, but since the base for this is "cvs 2009/06/21", and I haven't yet finished the white space diff process - I'm going to put this out as a complete self-contained source tarball. cvs 2009/06/21 is just before the git import process, so it is very nearly but not exactly 1.5.61. I'm attempting to use the original "4 space indent, 8 space tab" convention. White space in 1.5.61 is sufficiently random it was starting to annoy me. What I have here is not perfect, but it annoys me much less. Without more ado, here's the snapshot, /afs/umich.edu/group/itd/build/mdw/openafs/patches/openafs-m84.tar.bz2 I expect to have a few more code & bug fixes, updates to hopefully bring it up to 1.5.74^H5, and orthogonally to that, a split process that will result in a whole bunch of sequential diffs to go from release code to rxk5. Eventually, those sequential diffs can turn into something git understands. -Marcus Watts From mdw@umich.edu Fri May 28 07:06:26 2010 From: mdw@umich.edu (Marcus Watts) Date: Fri, 28 May 2010 02:06:26 -0400 Subject: [OpenAFS-devel] openafs rxk5 m84 - as patches Message-ID: There was some dismay about seeing a tarball at the workshop, even though I promised to have better patches "in due course". Even though I can't make those better patches yet, I can certainly make not so good patches now. In this directory, /afs/umich.edu/user/m/d/mdw/build/openafs/patches/ find openafs-20090621.tar.bz2 openafs-h20090621-m84-1-st.diff.bz2 openafs-h20090621-m84-2-r.diff.bz2 openafs-h20090621-m84-3-k5ssl.diff.bz2 openafs-h20090621-m84-4-rxk5.diff.bz2 openafs-h20090621-m84-5-other.diff.bz2 openafs-h20090621-m84-6-afskfw.diff.bz2 openafs-h20090621-m84-7-changed.diff.bz2 openafs-h20090621-m84-8-deleted.diff.bz2 result of applying these patches to the tarball "cvs head 2009/06/21" should exactly match the m84 tarball. in slightly more detail, 20090621.tar.bz2 it came from cvs 1-st whitespace (canonical tabs and trim trailing whitespace) 2-r remove register 3-k5ssl add k5ssl support 4-rxk5 add rxk5 security class 5-other other new files 6-afskfw move afskfw to here. 7-changed other file changes 8-deleted delete files that were moved or removed. The whitespace & register patches are big but mindless. k5ssl & rxk5 patches add complete directories containing self-contained code. not much sense to dividing those further. After that these patches become not so good. These patches do have one property that might not be true in later patch sets: all the intermediate versions should be buildable, albeit with files that might not be useful. -Marcus Watts From rdw@steadingsoftware.com Mon May 31 10:33:39 2010 From: rdw@steadingsoftware.com (Rod Widdowson) Date: Mon, 31 May 2010 10:33:39 +0100 Subject: [OpenAFS-devel] Building with --enable-checking Message-ID: <002e01cb00a4$5bc82130$13586390$@com> Folks, I am having some difficulty getting "configure --enable-checking" to work. I am running from the current HEAD but when I build I am flooded with warnings, so I am pretty convinced that I've missed the magical configuration step to turn on the suppression of warnings in some directories... I've googled around and had a trawl through the archives to no immediate avail; so what am I missing? Thanks /Rod From sxw@inf.ed.ac.uk Mon May 31 10:43:19 2010 From: sxw@inf.ed.ac.uk (Simon Wilkinson) Date: Mon, 31 May 2010 10:43:19 +0100 Subject: [OpenAFS-devel] Building with --enable-checking In-Reply-To: <002e01cb00a4$5bc82130$13586390$@com> References: <002e01cb00a4$5bc82130$13586390$@com> Message-ID: <40B3DE59-0DA7-43B7-A8BB-3EFF1C6FDC60@inf.ed.ac.uk> On 31 May 2010, at 10:33, Rod Widdowson wrote: >=20 > I've googled around and had a trawl through the archives to no = immediate > avail; so what am I missing? In theory, nothing ./configure --enable-checking should be all you need to turn on a checked build, with the appropriate = suppression of 'known' warnings. Now, this only works with gcc 4.2 or later. If you're running an older = version of gcc, turning on enable-checking will probably break things = (we should probably check for this in the configure script). Also, the = warnings that are produced varies by platform, and compiler. I test = regularly on Mac OS X, and Andrew and Marc pick up warnings on i386 and = x86_64 Linux. On other platforms, your mileage will vary. The best bet would probably be if you put the output from make = somewhere, so we can see the errors you're getting. Cheers, Simon. From rdw@steadingsoftware.com Mon May 31 10:48:41 2010 From: rdw@steadingsoftware.com (Rod Widdowson) Date: Mon, 31 May 2010 10:48:41 +0100 Subject: [OpenAFS-devel] Building with --enable-checking In-Reply-To: <40B3DE59-0DA7-43B7-A8BB-3EFF1C6FDC60@inf.ed.ac.uk> References: <002e01cb00a4$5bc82130$13586390$@com> <40B3DE59-0DA7-43B7-A8BB-3EFF1C6FDC60@inf.ed.ac.uk> Message-ID: <002f01cb00a6$785998e0$690ccaa0$@com> GCC 4.1.2 looks pretty much like a bad idea (another strike against Centos5). I'll upgrade to 4.2 and then report back. Thanks /R > -----Original Message----- > From: openafs-devel-admin@openafs.org [mailto:openafs-devel-admin@openafs.org] > On Behalf Of Simon Wilkinson > Sent: 31 May 2010 10:43 > To: Rod Widdowson > Cc: openafs-devel@openafs.org > Subject: Re: [OpenAFS-devel] Building with --enable-checking > > > On 31 May 2010, at 10:33, Rod Widdowson wrote: > > > > I've googled around and had a trawl through the archives to no immediate > > avail; so what am I missing? > > In theory, nothing > > ./configure --enable-checking > > should be all you need to turn on a checked build, with the appropriate > suppression of 'known' warnings. > > Now, this only works with gcc 4.2 or later. If you're running an older version > of gcc, turning on enable-checking will probably break things (we should > probably check for this in the configure script). Also, the warnings that are > produced varies by platform, and compiler. I test regularly on Mac OS X, and > Andrew and Marc pick up warnings on i386 and x86_64 Linux. On other platforms, > your mileage will vary. > > The best bet would probably be if you put the output from make somewhere, so > we can see the errors you're getting. > > Cheers, > > Simon. > > > _______________________________________________ > OpenAFS-devel mailing list > OpenAFS-devel@openafs.org > https://lists.openafs.org/mailman/listinfo/openafs-devel From sanket@sanketagarwal.com Mon May 31 14:45:35 2010 From: sanket@sanketagarwal.com (Sanket Agarwal) Date: Mon, 31 May 2010 15:45:35 +0200 Subject: [OpenAFS-devel] Encrypted Storage -- GSoC Proposal Message-ID: --00c09f88ce8146fa640487e41226 Content-Type: text/plain; charset=ISO-8859-1 Sorry to be late to let you all know about the project proposal. But here is the proposal picked up straight from socghop( I am lazy enough :D ): ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Title: Encrypted storage ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Abstract: The AFS protocol offers encryption for data transport from client to server. However, that data is stored on the server in cleartext, where it can potentially be read by the administrators of that server. This poses a real world problem for organisations who wish to outsource the provision of their file storage, whilst keeping their data confidential. This project would augment the existing AFS client to support encrypting data blocks before sending them to the file server. Proposal: As mentioned above the idea is to develop an encrypting mechanism at the client side to send cipher text data to the file servers. The scope of such encryption shall be limited to Files as Directory structure modification will need the server's support. The idea is to provide a working prototype in the given time frame of 3 months. Assuming user has a user key( a Public key pair ) a Use Case is as follows, The general work flow of the encryption mechanism would be: *) User writes to a new file on the CM side and tells the client to *encrypt* the data before being sent over the wire. *) The Client generates a Random Key and encrypts the data using an encryption algorithm. *) The Client then constructs a metadata file which contains information+random key and encrypts that using the user key. *) The Client while sending the file also sends the metadata file. This is to identify later if a file was encrypted or not. While requesting for an encrypted file: *) Cache manager checks whether the metadata file exists on the server. *) If no, then no decryption is required. *) If yes, metadata is decrypted using the private key and random key is obtained. *) Any request for a new block from the server will have to be processed through a decryption mechanism. There are several points that need to be noted: *) It is assumed that libhcrypto is available as a part of my project. I will be using it for developing the required interface. *) Regarding the metadata files, there is a GSoC based on Providing common Extended Attribute Support similar to POSIX Xattributes. The future plan would be to fold the metadata files into those xattrbs. *) OpenAFS maintains a 2 level cache, one which resides on the Secondary Memory, and one which resides in the Main Memory. If there is a new block request it is first brought in the Secondary Mem and loaded to Main Memory when User Application requests it. My scheme will be something like this: -> If a new block request is made for an encrypted file, the encrypted block will be kept *as-it-is* w/o any decryption. Only when the block is moved to the Main Memory will it be decrypted. This will avoid issues with chunking. -> Similarly if a block from Main Memory is written back to AFS cache, it'll be encrypted. Assuming MM hits are large, this would not incur much Encryption Call overhead. -> Hence there will be a logial partition b/w Secondary Cache which is on Fileserver's end and Main Cache which is at User Application end. *) In effect, what I'll be doing is adding an interface to the cache manager that allows manipulation of data in the process of it being read from the disk cache, and placed in the page cache (and similarly, when it is being written to the disk cache from the page cache) [ As directed by Simon. ] -> Firstly, a no-op interface which'll intercept the calls but make no changes to the scheme. Some debug messages may be output. -> Inspecting metadata on the disk. -> Implementing the encryption scheme. --00c09f88ce8146fa640487e41226 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Sorry to be late to let you all know about the project proposal. But here i= s the proposal picked up straight from socghop( I am lazy enough :D ):
<= br>

---------------------------------------------------------------------= ---------------------------------------------------------------------------= ----------------------------------

Title: Encrypted storage

------------------------------------------------------------------------= ---------------------------------------------------------------------------= -------------------------------

Abstract:

=A0

The AFS protocol offers encryption for data transport from client to=20 server. However, that data is stored on the server in cleartext, where=20 it can potentially be read by the administrators of that server. This=20 poses a real world problem for organisations who wish to outsource the=20 provision of their file storage, whilst keeping their data confidential. This project would augment the existing AFS client to support=20 encrypting data blocks before sending them to the file server.

=A0

Proposal:

=A0

As mentioned above the idea is to develop an encrypting mechanism at=20 the client side to send cipher text data to the file servers. The scope=20 of such encryption shall be limited to Files as Directory structure=20 modification will need the server's support. The idea is to provide a= =20 working prototype in the given time frame of 3 months.

=A0

Assuming user has a user key( a Public key pair ) a Use Case is as=20 follows,

=A0

The general work flow of the encryption mechanism would be:

=A0

*) User writes to a new file on the CM side and tells the client to=20 *encrypt* the data before being sent over the wire.

*) The Client generates a Random Key and encrypts the data using an=20 encryption algorithm.

*) The Client then constructs a metadata file which contains=20 information+random key and encrypts that using the user key.

*) The Client while=A0 sending the file also sends the metadata file.=20 This is to identify later if a file was encrypted or not.

=A0

While requesting for an encrypted file:

=A0

*) Cache manager checks whether the metadata file exists on the=20 server.

*) If no, then no decryption is required.

*) If yes, metadata is decrypted using the private key and random key is obtained.

*) Any request for a new block from the server will have to be=20 processed through a decryption mechanism.

=A0

There are several points that need to be noted:

=A0

*) It is assumed that libhcrypto is available as a part of my=20 project. I will be using it for developing the required interface.

*) Regarding the metadata files, there is a GSoC based on Providing=20 common Extended Attribute Support similar to POSIX Xattributes. The=20 future plan would be to fold the metadata files into those xattrbs.

*) OpenAFS maintains a 2 level cache, one which resides on the=20 Secondary Memory, and one which resides in the Main Memory. If there is a new block request it is first brought in the Secondary Mem and loaded=20 to Main Memory when User Application requests it. My scheme will be=20 something like this:

=A0=A0=A0 -> If a new block request is made for an encrypted file, th= e=20 encrypted block will be kept *as-it-is* w/o any decryption. Only when=20 the block is moved to the Main Memory will it be =A0=A0 =A0=A0=A0 =A0=A0=A0= =A0=A0=A0=20 =A0decrypted. This will avoid issues with chunking.

=A0=A0=A0 -> Similarly if a block from Main Memory is written back to= =20 AFS cache, it'll be encrypted. Assuming MM hits are large, this would= =20 not incur much Encryption Call overhead.

=A0=A0=A0 -> Hence there will be a logial partition b/w Secondary Cac= he=20 which is on Fileserver's end and Main Cache which is at User Applicatio= n end.

*) In effect, what I'll be doing is adding an interface to the cache= =20 manager that allows manipulation of data in the process of it being read from the disk cache, and placed in the page cache (and similarly, when=20 it is being written to the disk cache from the page cache) [ As directed by Simon. ]

=A0=A0=A0 -> Firstly, a no-op interface which'll intercept the ca= lls but make no changes to the scheme. Some debug messages may be output.

=A0=A0=A0 -> Inspecting metadata on the disk.

=A0=A0=A0 -> Implementing the encryption scheme.


--00c09f88ce8146fa640487e41226-- From joonas2_91@hotmail.com Fri May 21 08:39:24 2010 From: joonas2_91@hotmail.com (Joonas Huhtala) Date: Fri, 21 May 2010 10:39:24 +0300 Subject: [OpenAFS-devel] openAFS windows client create time problem Message-ID: --_5a7ffac7-7007-486b-864e-344daa4eec16_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable I have problem with files create times. In our system we have folders=20 in afs where files automatically remove after 10 days about that when you copy file to folder. Delete-script look files create time and delete all files witch are older than 10 days. Problem is that when I copy file from windows to afs it didn=92t change file create time to time when I=20 copy file. I have file: windows_test Files properties Windows own folder: Created 10.May 2010=2C 9:40:52 Modified: 10. May 2010=2C 9:41:32 Accessed: 21. May 2010=2C 9:49:23 When I copy file to afs folder: Created: 10. May 2010=2C 9:41:32 Modified: 10. May 2010=2C 9:41:32 Accessed: 10. May 2010=2C 9:41:32 When I copy file to other Windows own folder: Created: 21. May 2010=2C 9:56:37 Modified: 10. May 2010=2C 9:41:32 Accessed: 21. May 2010=2C 9:56:39 When I copy file from Linux to afs it change create time to time when I cop= y=20 file to afs folder. I test afs client version 1.5.6500 in windows XP and 1.5.7400 in windows 7. -Joonas Huhtala =20 _________________________________________________________________ Windows puhelimella saat enemm=E4n vastinetta rahoillesi. http://www.windowsmobile.fi= --_5a7ffac7-7007-486b-864e-344daa4eec16_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable I have problem with files create times. In our system we have folders
i= n afs where files automatically remove after 10 days about that when
you= copy file to folder. Delete-script look files create time and delete
al= l files witch are older than 10 days. Problem is that when I copy file
f= rom windows to afs it didn=92t change file create time to time when I
c= opy file.

I have file: windows_test

Files properties Windows = own folder:

Created 10.May 2010=2C 9:40:52
Modified: 10. May 2010= =2C 9:41:32
Accessed: 21. May 2010=2C 9:49:23

When I copy file to= afs folder:

Created: 10. May 2010=2C 9:41:32
Modified: 10. May 2= 010=2C 9:41:32
Accessed: 10. May 2010=2C 9:41:32

When I copy file= to other Windows own folder:

Created: 21. May 2010=2C 9:56:37
Mo= dified: 10. May 2010=2C 9:41:32
Accessed: 21. May 2010=2C 9:56:39
When I copy file from Linux to afs it change create time to time when I co= py
file to afs folder.

I test afs client version 1.5.6500 in win= dows XP and 1.5.7400 in windows 7.

-Joonas Huhtala
=
Windows puhelimella saat enemm=E4n vastinetta rahoillesi. Vertaile t=E4st=E4. = --_5a7ffac7-7007-486b-864e-344daa4eec16_-- From FBA@zurich.ibm.com Fri May 21 17:21:23 2010 From: FBA@zurich.ibm.com (Frank Bagehorn) Date: Fri, 21 May 2010 18:21:23 +0200 Subject: [OpenAFS-devel] afsd crashes SLES11 SP1 system Message-ID: This is an S/MIME signed message. ---------z1643_boundary_sign Content-Type: text/plain; charset="US-ASCII" Hi all, I upgraded one of my servers to SLES 11 SP1 (with the code that I think is the one to be released beginning of June) for testing. I have OpenAFS 1.4.12 installed (the SLES 11 RPMs from the download area). As soon as afsd starts, the machine freezes completely and needs a hard reset. I compiled the 1.5.74 version on that box and tried that, but same result. I don't see any useful messages in the log, /var/log/messages only shows the usual things about the kernel being tainted: May 21 18:04:35 erlach kernel: [ 2020.251214] libafs: module license 'http://www.openafs.org/dl/license10.html' taints kernel. May 21 18:04:35 erlach kernel: [ 2020.251222] Disabling lock debugging due to kernel taint What should I do to gather more useful information about the possible root cause of this ? The kernel in question is 2.6.32.12-0.6.2 according to Novell/SuSE numbering. Regards Frank ---------------------------------------------------------------------------- Dr. Frank Bagehorn Manager ZRL Information Services Sr. IT Architect / Certified IT Architect IBM Zurich Research Lab. Saeumerstr. 4 CH-8803 Rueschlikon Switzerland ---------------------------------------------------------------------------- SMTP: fba@zurich.ibm.com Notes: Frank Bagehorn/Zurich/IBM@IBMCH phone: ++41 (044) 724 83 23 fax: ++41 (044) 724 89 59 ---------z1643_boundary_sign 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 MIAGCSqGSIb3DQEHAqCAMIIe1AIBATELMAkGBSsOAwIaBQAwCwYJKoZIhvcNAQcBoIIbLDCCAwMw ggJsAhEAuS9gzIifoXpGCbhbcGyKrzANBgkqhkiG9w0BAQUFADCBwTELMAkGA1UEBhMCVVMxFzAV BgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENl cnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l dHdvcmswHhcNOTgwNTE4MDAwMDAwWhcNMjgwODAxMjM1OTU5WjCBwTELMAkGA1UEBhMCVVMxFzAV BgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENl cnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l dHdvcmswgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKeIASF0LOcaA/CY4Zc8DyEI8Zzbl+ma /MIEBhO+X1LIzB4sElYsuAFpLMyZH62wlq55BPITOcF7mLoILOjChBMsqmnpCfTHqQKkQsIjT0rY 8A6i+zFsyeZvmScH9eb0THiebetGhvq5hslU8rLEr9RGHFrJFTD/DWz1LQ5tzn93AgMBAAEwDQYJ KoZIhvcNAQEFBQADgYEAci75f9HxcfvEnvbFXlGKQJi4aPibHIPY4p29/+2h5mbqLwn0ytfqpSuV 9iRghk1ELoOlxC2g0654aW9y2myuCPBjkjfmu8QwF613zEk1qs/Yj9G+txiWR3NqVCI0ZC22FptZ W7RRWTqzCxT0Et9noPStMmResUZyJ4wSe8VEtK4wggMDMIICbAIRALkvYMyIn6F6Rgm4W3Bsiq8w DQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8 MDoGA1UECxMzQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt IEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz ZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoX DTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8 MDoGA1UECxMzQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt IEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz ZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUA A4GNADCBiQKBgQCniAEhdCznGgPwmOGXPA8hCPGc25fpmvzCBAYTvl9SyMweLBJWLLgBaSzMmR+t sJaueQTyEznBe5i6CCzowoQTLKpp6Qn0x6kCpELCI09K2PAOovsxbMnmb5knB/Xm9Ex4nm3rRob6 uYbJVPKyxK/URhxayRUw/w1s9S0Obc5/dwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAHIu+X/R8XH7 xJ72xV5RikCYuGj4mxyD2OKdvf/toeZm6i8J9MrX6qUrlfYkYIZNRC6DpcQtoNOueGlvctpsrgjw Y5I35rvEMBetd8xJNarP2I/RvrcYlkdzalQiNGQtthabWVu0UVk6swsU9BLfZ6D0rTJkXrFGcieM EnvFRLSuMIIFLDCCBJWgAwIBAgIQOHHBU5PI6PSfHgxNDfRmQzANBgkqhkiG9w0BAQUFADCBwTEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAyIFB1 YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAx OTk4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZl cmlTaWduIFRydXN0IE5ldHdvcmswHhcNMDMwNTA2MDAwMDAwWhcNMDgwNTA1MjM1OTU5WjCB+TEL MAkGA1UEBhMCVVMxNDAyBgNVBAoTK0ludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29y cG9yYXRpb24xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1z IG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAzMTAwLgYDVQQLEydD bGFzcyAyIE9uU2l0ZSBJbmRpdmlkdWFsIFN1YnNjcmliZXIgQ0ExJDAiBgNVBAMTG0lCTSBDZXJ0 aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1WetNd2gfv1X YdadpxfLuaONI1yc6Ldn5xdIGH25IOEIsBRR66+ge5u4DkiaskjmT90D5DQv5Y3NHs5mvhNGnDcM 6SxhL/Sj5Fnn6W4nuW1dx1WCwdTqqocOm8XWEB6Cqk3PrvQlVV9SzhOELUBp8wgEfCYluoUbgjLf 04ffugECAwEAAaOCAekwggHlMBIGA1UdEwEB/wQIMAYBAf8CAQAwRAYDVR0gBD0wOzA5BgtghkgB hvhFAQcXAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQGA1Ud HwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTItZzIuY3JsMAsGA1UdDwQE AwIBBjARBglghkgBhvhCAQEEBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVM YWJlbDItMTI3MB0GA1UdDgQWBBSRwXOwc9XZknRnzRvxURQ0MbYsWjCB6AYDVR0jBIHgMIHdoYHH pIHEMIHBMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UE CxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0G A1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29ya4IRALkvYMyIn6F6Rgm4W3Bsiq8wDQYJKoZIhvcN AQEFBQADgYEACBgFEwMbNSXwLj3nIObITvxAdLFCOSkpsnrWLQaRJgZSaRFhzdzMpSWRXex0dZ7b yy7RJE7wcqFfN9R1HYPafpSLE5GZH+2hua7GWR/CodYO81W4kPSIJXV7ZxdP2p/fy8zMyILnmVCa cKhR9ODXfWi8z9XUQjZpPXzUda7+kzwwggUsMIIElaADAgECAhA4ccFTk8jo9J8eDE0N9GZDMA0G CSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6 BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug b25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAeFw0wMzA1MDYwMDAwMDBaFw0w ODA1MDUyMzU5NTlaMIH5MQswCQYDVQQGEwJVUzE0MDIGA1UEChMrSW50ZXJuYXRpb25hbCBCdXNp bmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y azE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEg KGMpMDMxMDAuBgNVBAsTJ0NsYXNzIDIgT25TaXRlIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQTEk MCIGA1UEAxMbSUJNIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN ADCBiQKBgQDVZ6013aB+/Vdh1p2nF8u5o40jXJzot2fnF0gYfbkg4QiwFFHrr6B7m7gOSJqySOZP 3QPkNC/ljc0ezma+E0acNwzpLGEv9KPkWefpbie5bV3HVYLB1Oqqhw6bxdYQHoKqTc+u9CVVX1LO E4QtQGnzCAR8JiW6hRuCMt/Th9+6AQIDAQABo4IB6TCCAeUwEgYDVR0TAQH/BAgwBgEB/wIBADBE BgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlz aWduLmNvbS9ycGEwNAYDVR0fBC0wKzApoCegJYYjaHR0cDovL2NybC52ZXJpc2lnbi5jb20vcGNh Mi1nMi5jcmwwCwYDVR0PBAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIBBjApBgNVHREEIjAgpB4wHDEa MBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMjcwHQYDVR0OBBYEFJHBc7Bz1dmSdGfNG/FRFDQxtixa MIHoBgNVHSMEgeAwgd2hgcekgcQwgcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwg SW5jLjE8MDoGA1UECxMzQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrghEAuS9gzIifoXpG CbhbcGyKrzANBgkqhkiG9w0BAQUFAAOBgQAIGAUTAxs1JfAuPecg5shO/EB0sUI5KSmyetYtBpEm BlJpEWHN3MylJZFd7HR1ntvLLtEkTvByoV831HUdg9p+lIsTkZkf7aG5rsZZH8Kh1g7zVbiQ9Igl dXtnF0/an9/LzMzIgueZUJpwqFH04Nd9aLzP1dRCNmk9fNR1rv6TPDCCBVswggTEoAMCAQICEDNm l/4zSQSeFrdeqCvFdnEwDQYJKoZIhvcNAQEFBQAwgfkxCzAJBgNVBAYTAlVTMTQwMgYDVQQKEytJ bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uMR8wHQYDVQQLExZWZXJp U2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cu dmVyaXNpZ24uY29tL3JwYSAoYykwMzEwMC4GA1UECxMnQ2xhc3MgMiBPblNpdGUgSW5kaXZpZHVh bCBTdWJzY3JpYmVyIENBMSQwIgYDVQQDExtJQk0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN MDkwNjI5MDAwMDAwWhcNMTAwNjI5MjM1OTU5WjCBhzEuMCwGA1UEChQlSW50ZXJuYXRpb25hbCBC dXNpbmVzcyBNYWNoaW5lcyBDb3JwLjEXMBUGA1UEAwwORnJhbmsgQmFnZWhvcm4xGTAXBgoJkiaJ k/IsZAEBFAk5OTk3MzA4NDgxITAfBgkqhkiG9w0BCQEWEmZiYUB6dXJpY2guaWJtLmNvbTCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA60/mBJ48Fi694hQk3uCjIaTnnxIJ2sAHMNj2NLUUus+/ +AgDBLmRj46x8MWDZW3e2OnZTSVTKxmwbJ/+c7UGr2pxvf48TulHLQ6b7V/mRQ6ElJphlv86222q uXBJ+z+Vk2AHznt0XPjqmYWHkjVB0B6RaH9lal3rjsf5jrkuYRUCAwEAAaOCAlIwggJOMAkGA1Ud EwQCMAAwCwYDVR0PBAQDAgWgMGYGA1UdHwRfMF0wW6BZoFeGVWh0dHA6Ly9vbnNpdGVjcmwudmVy aXNpZ24uY29tL0ludGVybmF0aW9uYWxCdXNpbmVzc01hY2hpbmVzQ29ycENvcnBvcmF0ZUNJTy9M YXRlc3RDUkwwggEpBgNVHSAEggEgMIIBHDCCARgGC2CGSAGG+EUBBxcCMIIBBzArBggrBgEFBQcC ARYfaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYS1rcjCB1wYIKwYBBQUHAgIwgcoagcdOb3Rp Y2UgVGV4dD1OT1RJQ0U6IFByaXZhdGUga2V5IG1heSBiZSByZWNvdmVyZWQgYnkgVmVyaVNpZ24n cyBjdXN0b21lciB3aG8gbWF5IGJlIGFibGUgdG8gZGVjcnlwdCBtZXNzYWdlcyB5b3Ugc2VuZCB0 byBjZXJ0aWZpY2F0ZSBob2xkZXIuICBVc2UgaXMgc3ViamVjdCB0byB0ZXJtcyBhdCBodHRwczov L3d3dy52ZXJpc2lnbi5jb20vcnBhLWtyMB8GA1UdIwQYMBaAFJHBc7Bz1dmSdGfNG/FRFDQxtixa MB0GA1UdDgQWBBTQEm87nuzyRj76RN7olRROJrWETjAtBgNVHREEJjAkoCIGCisGAQQBgjcUAgOg FAwSZmJhQHp1cmljaC5pYm0uY29tMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBglg hkgBhvhCAQEEBAMCBaAwDQYJKoZIhvcNAQEFBQADgYEAfJimCPnPWPYk77bvoBNtGLzk7wcHkUbN R0gBmL5w6alO4eRdn0ELeeNEkUusIrTYR27CnwfEnUUbPDSipMzYOmPs94Fdjh0QW4z/GhAZ441Z e5sLq7BXc3UxfKchO98NICQP4vQEG10+fcltG1I10YZRk4zJVz47/mAYqURn3BwwggVbMIIExKAD AgECAhAzZpf+M0kEnha3XqgrxXZxMA0GCSqGSIb3DQEBBQUAMIH5MQswCQYDVQQGEwJVUzE0MDIG A1UEChMrSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbjEfMB0GA1UE CxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBz Oi8vd3d3LnZlcmlzaWduLmNvbS9ycGEgKGMpMDMxMDAuBgNVBAsTJ0NsYXNzIDIgT25TaXRlIElu ZGl2aWR1YWwgU3Vic2NyaWJlciBDQTEkMCIGA1UEAxMbSUJNIENlcnRpZmljYXRpb24gQXV0aG9y aXR5MB4XDTA5MDYyOTAwMDAwMFoXDTEwMDYyOTIzNTk1OVowgYcxLjAsBgNVBAoUJUludGVybmF0 aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycC4xFzAVBgNVBAMMDkZyYW5rIEJhZ2Vob3JuMRkw FwYKCZImiZPyLGQBARQJOTk5NzMwODQ4MSEwHwYJKoZIhvcNAQkBFhJmYmFAenVyaWNoLmlibS5j b20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOtP5gSePBYuveIUJN7goyGk558SCdrABzDY 9jS1FLrPv/gIAwS5kY+OsfDFg2Vt3tjp2U0lUysZsGyf/nO1Bq9qcb3+PE7pRy0Om+1f5kUOhJSa YZb/OtttqrlwSfs/lZNgB857dFz46pmFh5I1QdAekWh/ZWpd647H+Y65LmEVAgMBAAGjggJSMIIC TjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDBmBgNVHR8EXzBdMFugWaBXhlVodHRwOi8vb25zaXRl Y3JsLnZlcmlzaWduLmNvbS9JbnRlcm5hdGlvbmFsQnVzaW5lc3NNYWNoaW5lc0NvcnBDb3Jwb3Jh dGVDSU8vTGF0ZXN0Q1JMMIIBKQYDVR0gBIIBIDCCARwwggEYBgtghkgBhvhFAQcXAjCCAQcwKwYI KwYBBQUHAgEWH2h0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEta3IwgdcGCCsGAQUFBwICMIHK GoHHTm90aWNlIFRleHQ9Tk9USUNFOiBQcml2YXRlIGtleSBtYXkgYmUgcmVjb3ZlcmVkIGJ5IFZl cmlTaWduJ3MgY3VzdG9tZXIgd2hvIG1heSBiZSBhYmxlIHRvIGRlY3J5cHQgbWVzc2FnZXMgeW91 IHNlbmQgdG8gY2VydGlmaWNhdGUgaG9sZGVyLiAgVXNlIGlzIHN1YmplY3QgdG8gdGVybXMgYXQg aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYS1rcjAfBgNVHSMEGDAWgBSRwXOwc9XZknRnzRvx URQ0MbYsWjAdBgNVHQ4EFgQU0BJvO57s8kY++kTe6JUUTia1hE4wLQYDVR0RBCYwJKAiBgorBgEE AYI3FAIDoBQMEmZiYUB6dXJpY2guaWJtLmNvbTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH AwQwEQYJYIZIAYb4QgEBBAQDAgWgMA0GCSqGSIb3DQEBBQUAA4GBAHyYpgj5z1j2JO+276ATbRi8 5O8HB5FGzUdIAZi+cOmpTuHkXZ9BC3njRJFLrCK02Eduwp8HxJ1FGzw0oqTM2Dpj7PeBXY4dEFuM /xoQGeONWXubC6uwV3N1MXynITvfDSAkD+L0BBtdPn3JbRtSNdGGUZOMyVc+O/5gGKlEZ9wcMYID gzCCA38CAQEwggEOMIH5MQswCQYDVQQGEwJVUzE0MDIGA1UEChMrSW50ZXJuYXRpb25hbCBCdXNp bmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y azE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEg KGMpMDMxMDAuBgNVBAsTJ0NsYXNzIDIgT25TaXRlIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQTEk MCIGA1UEAxMbSUJNIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AhAzZpf+M0kEnha3XqgrxXZxMAkG BSsOAwIaBQCgggHJMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEw MDUyMTE2MjEyMlowIwYJKoZIhvcNAQkEMRYEFLNZzzuC2Kka8f1IMS2QdzdvQqz7MEMGCSqGSIb3 DQEJDzE2MDQwBwYFKw4DAh0wDgYIKoZIhvcNAwICAgCAMAoGCCqGSIb3DQMHMA0GCCqGSIb3DQMC AgEoMIIBIwYLKoZIhvcNAQkQAgsxggESoIIBDjCB+TELMAkGA1UEBhMCVVMxNDAyBgNVBAoTK0lu dGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlZlcmlT aWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52 ZXJpc2lnbi5jb20vcnBhIChjKTAzMTAwLgYDVQQLEydDbGFzcyAyIE9uU2l0ZSBJbmRpdmlkdWFs IFN1YnNjcmliZXIgQ0ExJDAiBgNVBAMTG0lCTSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQIQM2aX /jNJBJ4Wt16oK8V2cTANBgkqhkiG9w0BAQEFAASBgLM1UObRgOFmNtGp5STByeay3eDtyDva5kET oU1XhJ6ve/HSkC8xXjatiQ6UG+huHcwGU/LnT2pHZlmio+ip+86ikDlJIJkj90KAqzOhzpfgKJkK hRm0UUPJQu67E6i3v2J/QGqt+Fwe9hhn85Un27nIF8ttbzlHlMyb4TvehdPiAAAAAA== ---------z1643_boundary_sign-- From mattjsm@gmail.com Fri May 7 22:29:02 2010 From: mattjsm@gmail.com (Matt Smith) Date: Fri, 7 May 2010 16:29:02 -0500 Subject: [OpenAFS-devel] GSoC Intro - Matt Smith - Port Client to NetBSD 5 Message-ID: Hello OpenAFSers! I'm Matt Smith and I am currently a senior at Iowa State University with (hopefully) just one more semester left to cover. Classes officially ended today, so it's time to start really getting into this project. The project that I proposed deals with creating a functioning OpenAFS client for NetBSD 5 since there hasn't been one for awhile now. Proposal available at http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/openafs/t127230761006 I've spent quite a bit of time using both OpenAFS and NetBSD at ISU, so it's rather exciting to finally get to delve much deeper into how the client really functions. Cheers, Matt Smith