After further testing of mainline kernels, it seems that the bug was fixed between 2.6.32 and 2.6.33. Looking over the logs, I see no changes that were intended to fix this issue, but there were quite a number of changes to the snapshot code. I can only conclude that these inadvertently fixed the problem.