Here's the v2 of this patch. Some small bugs and inefficiencies have been fixed, but the main big difference is that the whole utime-family has been reworked to all go through utimensat, and the latter now has fallbacks for old kernels that lack the new syscall. While this increases the weight of all of these functions on modern systems that do have the legacy syscalls (and thus might lack the new one, if they're using outdated kernels) it eliminates the incentive for programmers to use the outdated libc functions to get better behavior on ancient, unsupported kernels, and puts all the fallback logic in a common place rather than splitting it out over multiple functions. Comments welcome. I'm still going to hold off a bit longer on committing this in case there are better ideas for how to do it. Rich