Having finally made some advances on the OpenAFS front, I had achieved a state that was able to copy, read, and write a large data set without error, hang, or crash. However, I was unable to run executables from AFS, which presented a serious obstacle to passing the lazy man’s filesystem stress test: ‘make buildworld’. This target recompiles from scratch an entire build toolchain, and uses that (updated) toolchain to rebuild the entire operating system from scratch. As such, it can put a fair bit of load on a filesystem (and a CPU, for that matter).
Asking on the freebsd-fs@FreeBSD.org mailing list, a simple suggestion was made that would account for the displayed symptoms. (This involved two different mechanisms for tracking what is effectively a file’s size, and only one of them being updated.) After applying that fix, and a workaround for some locking issues, I now have an OpenAFS installation that can survive the buildworld informal stress test.
To be fair, it’s not perfect — attempting a parallel make with simultaneous compilation processes still causes a deadlock, but it’s a big milestone, and cause for some celebration.